Four Levels of Great Software Development
Great software development proceeds on four levels. 1st Level - Actual Code: Simple - we need the best people to write good code. It does not matter whether we are talking about Java, .Net, Symbian, or Web programming we need good coders. What is good code: it does what it is supposed to do, solves problems, code that is as simple as possible but not one bit simpler, code that is elegant but not over engineered. 2nd level - Team Software Development. Directing great coders and other specialists to deliver value together. Here we harness the development team and customer to work together towards a common goal. Typically when we talk about software development process it is about this level. Second level ensures that everybody knows what needs to be done, when, and how. Second level also provides transparency and visibility to all stakeholders such as team members, management, and customers. One of the best ways to coordinate team efforts are various agile methods such as Scrum because a) they focus on people, the one doing the actual work b) they also support levels 3 and 4. 3rd Level - Specifying What is Done = Optimising the Value of the Software. Third level optimises delivered value within given constraints. Typically the obvious constraints are calendar time and budget but in practice there are numerous other constraints such as existing systems and available skills. This is where the application vision is molded into concrete designs that optimise value to the customer and user within existing constraints. This is where great engineering trade-offs are done in regard to e.g. balance between 1) user experience, 2) development efforts required to achieve the desired user experience and 3) the need for QA for the approach. This is the place for engineering trade-offs but this is very much the level for innovation. How can we deliver more value within existing constraints. Can we perhaps provide almost identical user experience but with approach that is 1/10 of development and testing effort than compared to a initial idea. 4th Level - Continuous Improvement. Great software development embraces continuous improvement both during the project and generally within organisation. Iterative methods provide excellent framework to support learning during the project as software development is fundamentally creating new, much is learned during project: We learn what is important to the user, we learn what is easy to implement and what is not, we learn what are the actual challenges and these learnings must be taken into account during the project. Great software development embraces all four levels. Great software development also keeps in mind the question of value on all levels: How can we provide the most value with least efforts.