I once had software engineering defined to me as multiperson, multi-version programming. Whilst that sounds obvious and simple, the multi-person and multiversion parts make everything so much harder. With time and a team you have a whole slew of problems to figure out and work through.
Software engineering can be thought of as a team sport - and almost all the lessons from sports teams can apply to software teams. Pick up any book from an ex sports team captain or coach and read it and you'll find yourself nodding along the whole way, even if you've never played that sport.
Heads up: As with any terse bit of advice, there will be exceptions of course, and subtleties and nuance that can't possibly be captured in a Byte of Wisdom. This has been what I've experienced, I'd love to hear yours in the comments too!
You can catch up with all the other bytes at http://bytesofwisdom.com/