I’m going through the legendary book, The Mythical Man-Month. I’ve already read 1/2 of it, and its a bizarrely accurate book, even by today’s standards. So what I’m going to do now is go through the chapters again and take notes on some key points. I’ll take some of those points and share them with all you non-book-reading types.
The Tar Pit
Software development is often compared to a “tar pit”, where
many great and powerful beasts have thrashed violently in it. Most have emerged with running systems–Few have met goals, schedules and budgets. Large and small, massive or wiry, team after team has become entangled in the tar
The author proposes that the first step to avoiding the tar pit scenario is to identify and understand the craft of software development
The Programming Systems Product
We sometimes hear stories of small software development teams who work out of their garages and are able to create novel pieces of software; succeeding where large corporations have failed. If the garage programmers are so awesome, then why doesn’t every company employ a small army of such garage programmers?
A part of the problem lies in the fact that the garage programmers have only succeeded in creating a single program that works on their systems. If we were to take that one product and convert it into something deploy-able, it would require as much as 3x as much effort. The program could be developed into a programming product which is generic enough to be sold in the market, this requires testing, documentation and maintenance. The program could also be developed into a programming system, a “collection of interacting programs, coordinate in function and disciplined format”. In this case, the program would required extensive system integration and testing as well.
The bottom line is that it takes a relatively small amount of effort to create a program. It takes a lot more effort to take this program and turn it into a product
The Joys of the Craft
Why do we love programming?
- Joy of making things
- Make things that are useful to other people
- Fascination of fashioning complex puzzle-like objects of interlocking moving parts
- Joy of always learning (non-repeating nature of the tasks)
- Working in a tractable medium, where the work is “only slightly removed from pure-thought-stuff”
Programming then is fun because it gratifies creative longing built deep within us and delights sensibilities we have in common with all men
The Woes of the Craft
- As humans, we must perform perfectly. A mistype could break the program!
- We are rarely in control of the circumstances of the work. More often than no, the nature of the work is dictated by others
- As software developers, we are dependent on other programs, and most of the times they suck
- Designing grand concepts is fun, debugging is just work
- Testing drags on, there is a linear (or worse, quadratic) convergence, where the last bug becomes increasingly harder to find
- The product becomes obsolete upon/before completion. This actually feels worse than it really is. Although the new and better technology makes your product obsolete, the key is that it is generally not available
2 Trackbacks
[...] Pi/Pi …but that's just one! Skip to content ProjectsCSC309 A3 – kääntää TranslationsCSC309 A1: kääntää TranslationsJump StacksGrksm To UnicodePhotosynth of BahenCSC302 Winter ‘09CSC301 Fall ‘08Project ArgoboxAbout MeContact Me « TMMM – The Tar Pit [...]
[...] TMMM – The Tar Pit | Pi/Pi [...]