General software engineering principles include rigor and formality, separation of concerns, modularity, abstraction, anticipation of change, …
Issues for distributed systems:
Naming
Communication
Software structure
System architecture
Workload allocation
Consistency maintenance