This book contains a collection of the best state-of-the-art development techniques learned directly from personal hands-on experience. The content balances a high-level conceptual viewpoint with actual down-to-earth development strategies. This book is a must for any developer or manager that realizes that they are missing the big picture and want to understand the key principles required for successful projects. This work starts with three key topics: complexity, abstraction and data. Using these concepts as a foundation, it provides answers to frequent development issues such as design, estimations, staffing, implementations, bug fixing and extending the design.