Software development is a journey, but it's not a Sunday drive. You cannot properly know the future, past decisions weigh you down, and you need to write something to deliver now. And it needs to be simple yet changeable, secure yet flexible, well-crafted yet right now. But even with these competing constraints and uncertainty we can drive the code and drive it well. The past has lessons for us, and the future has promise. The present is where we strike the balance.
Development touches the large scale we associate with software architecture, product lifecycles, and organizations, but it is expressed in the detail of code and its associated patterns, practices, and programming paradigms. What makes software development both difficult and rewarding is that it embraces all levels of detail. Decisions made in the small can grow over time; decisions at scale constrain the possibilities of code; many design choices around modularity, decoupling, and change, however, have a common style or paradigm, no matter what scale we look at.
This talk will look at some of the practices and principles that keep code on the road: from empirical development to TDD, from coding choices to architectural decisions, from programming paradigms to architectural styles.
Bio: Kevlin is an independent consultant and trainer based in the UK. His development interests are in patterns, programming, practice, and process. He has been a columnist for various magazines and websites, including Better Software, The Register, Java Report, and the C/C++ Users Journal. Kevlin is co-author of A Pattern Language for Distributed Computing and On Patterns and Pattern Languages, two volumes in the Pattern-Oriented Software Architecture series. He is also editor of 97 Things Every Programmer Should Know.