I have been practicing software development for more than four decades now, and over that time, in addition to writing a lot of code, and being part of numerous projects in varying capacities, I’ve done a fair amount of reading on the topic. In fact, I have shelves full of books on the subject, starting with classics like The Mythical Man Month, proceeding through the CMM period and then on into the Lean/Agile years.
And, of course, the number of new words written on the topic increases daily.
How can a software developer keep up?
I’m a firm believer that new ideas are generated from time to time, and that it is worthwhile to read about software development as well as to do it; on the other hand, I’m now at the point of wondering whether it wouldn’t be possible to communicate the most important ideas about the field in a simpler, more concise, more easily accessible fashion.
And so I am setting off to test my hypothesis by trying to document the Big Ideas in Software Development in a concrete, manageable, sequential list.
Some of these ideas are specific to software development, but many have broader application; my primary intent is to include ideas that I’ve found most helpful over the years, and that I would want to recommend to others working in the field.
This site describes Big Ideas, and not specific practices. Practices are important, but my experience has been that even the best practices can be misapplied and produce poor results if leaders and developers lack a solid understanding of these ideas, and so I’ve tried to focus on the ideas behind the practices.
Many of these ideas overlap and reinforce each other, but hopefully each adds something new and important to the collection as a whole.
I’ve included liberal citations from many of my favorite authors and works. In some cases I’ve incorporated these into my text and commented on them, but in others I’ve simply left them at the bottom of a relevant page for readers to enjoy, trusting that their pertinence to the ideas at hand will prove to be easily discernible. I’ve collected the sources of these citations into a generous bibliography that can be found in the Reference section.
I should warn readers up front that those who align themselves with a particular methodology or movement, such as Lean, Agile or Waterfall, may well be disappointed by some of what they find here. My own strong sense is that we’ve reached a point in the evolution of our thinking where these sorts of labels do more harm than good, and that it is time to rally around a set of shared ideas because they make sense, and because they have generally been found to work, without regard to what sort of branding they have been associated with in the past.
My intended audience for this work includes both those relatively new to the field of software development, as well as those who have been practicing this trade for many years. For the former, I hope it may provide a concise introduction to some of these ideas and, for the latter, I hope it may provide a useful reminder. In both cases, my intent is to offer a fairly complete, concise and balanced list of the ideas that bear careful consideration in any software development effort.
Software development is one of the riskiest human activities yet conceived: projects are often late or over budget, frequently canceled, and in many cases fail to find an appreciative audience even when they do reach a state of completion. Nothing I offer on this site can guarantee the success of your next effort, but I do think that sincere and thoughtful consideration of the ideas presented here can increase your chances of success.
In any case, though, I’d be happy to hear your feedback on the site. Correspondence may be directed to email@example.com.
Great minds discuss ideas, average ones discuss events, and small minds discuss people.
Those of us who have been true readers all our life seldom fully realize the enormous extension of our being which we owe to authors. We realize it best when we talk with an unliterary friend. He may be full of goodness and good sense but he inhabits a tiny world. In it, we should be suffocated. The man who is contented to be only himself, and therefore less a self, is in prison. My own eyes are not enough for me, I will see through those of others.
With the exception of a few hysterical CASE vendors and religious zealots, most software professionals would agree that there is no single silver bullet that will exorcise our software demons.
Next: This Thinking Business