Last-minute integration is dangerous, although large/multi-team projects unfortunately fall into this trap all too often when crucial deadlines are looming.
Fundamental software design is almost completely missing from programming. Can we learn how to design? I think so, but not yet from the software community.