The skills and talents of individual programmers are the main determinant of software quality. No amount of management, methodology, or high-level architecture astronautism can compensate for a poor quality team.
The motivation and empowerment of programmers has a direct and strong relationship to the quality of the software.
Hard deadlines, especially micro-deadlines will result in poor quality software that will take longer to deliver.
The consequences of poor design decisions multiply rapidly.
It will usually take multiple attempts to arrive at a viable design.
You should make it easy to throw away code and start again.
Latency kills. Short feedback loops to measurable outcomes create good software.
Estimates are guess-timates; they are mostly useless. There is a geometric relationship between the length of an estimate and its inaccuracy.
Software does not scale. Software teams do not scale. Architecture should be as much about enabling small teams to work on small components as the technical requirements of the software. Coconut Headphones: Why Agile Has Failed