Unified Theory of Software Development
July 7, 2013
At long last, we have a Grand Unified Theory demonstrating the essentially quantum nature of general relativity, which … well, strike that. Instead of bosons, fields, and Lie groups, let us discuss software. And let us remove the word "grand" and speak just of "unifying": presenting: a simple theory of programming, unifying behaviors, practices, and tools into a model that is more likely than not to result in successful delivery of desirable software products. This model owes much to many authors, and in all likelihood is in no way unique. Yet its elucidation is worthwhile, insofar as it attempts to pull several important strands into a (semi-) coherent whole, meaningful to the author if no one else.
The model can be summarized into five precepts, which carry with them sub-details that have been covered in innumerable books, lectures, and every day experiences. For the sake of acronymization, let us add a sixth ('e') and provide a clever, yet meaningless, arrangement, with brief descriptions:
- T be Test-Driven.
- Write tests before system code; use behavior specifications as requirements.
- A be Agile.
- Talk to people; plan in small increments; deliver frequent small releases with real business value.
- C be Coherent.
- Whether in code, documentation, or conversation, software developers need to be able to express themselves in logical, consistent, and clear terms. In other words: coherently.
- K be Kind.
- To your users, to your peers, to first-line technical support, even to yourself - be kind. Put yourself in others' shoes, including your future self at 2:00 AM running production support .
- L be Lean.
- Eliminate waste, learn, adapt, fail fast, etc.
- E be Elegant.
- This one is a stretch, as it is arguably redundant with coherent. Have fun and write some elegant code.
That's right - this is the TACKLE theory or model of software development, a term with absolutely no symbolic significance. Upcoming blog posts will address each of these six admonitions in greater detail. Where relevant, I'll mention my personal favorite tool; as Microsoft-oriented developer, these will of course be relevant only to other .Net programmers.
TrackBack URL: http://www.safnet.com/fcgi-bin/mt/mt-tb.cgi/108