1 Intro ↑
1.2 Introduction
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: Essays on Software Engineering, 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 book describes 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 towards the back of this work.
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.
Although I think anyone involved in software development, in any role, can benefit from the ideas contained in this work, they are undoubtedly most important for anyone involved in some sort of leadership or consulting role: architect, lead developer, project manager, line manager, department manager, customer manager, coach, program office representative, and so on.
And while many of these ideas can be useful to any developer, working on any sort of project, they will probably be most helpful for those involved in projects, and project teams, of some size.
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 in this work 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 author@softdevbigideas.com.
Seattle, Washington
August, 2016
Words from Others on this Topic
Next: The 2023 Reboot