Note: This post was originally published on Doug’s website on July 20, 2021.
Last week, I had the privilege to give the opening keynote at the 2021 Nebraska.Code() conference. My topic was Musings on Developer Maturity and Growth where I laid out a model for creating developer maturity proto-personas using IEEE’s Guide to the Software Engineering Body of Knowledge, or SWEBOK for short.
I mentioned as I introduced this idea to use the SWEBOK as a knowledge map that I suspected most people had never heard of this document. Someone later tweeted that, based upon the number of people in the audience that took a picture of my slide showing the SWEBOK cover and URL, he suspected my assertion was correct. While I was not surprised by this fact, I feel that it is unfortunate that this is true. In a room of nearly 400 developers, most had not heard of a resource that is devoted to characterizing the content of the software engineering discipline that they are a part of.
To be clear, the SWEBOK does not contain the whole software engineering body of knowledge. Rather, it provides an overview of the scope of the body of knowledge and then provides topical access to other authoritative resources (books, textbooks, papers, etc.) that, collectively, document the body of knowledge. The current/latest version (3.0) is divided into 15 knowledge areas:
- Software Requirements
- Software Design
- Software Construction
- Software Testing
- Software Maintenance
- Software Configuration Management
- Software Engineering Management
- Software Engineering Process
- Software Engineering Models and Methods
- Software Quality
- Software Engineering Professional Practice
- Software Engineering Economics
- Computing Foundations
- Mathematical Foundations
- Engineering Foundations
As you can see, the guide is comprehensive. It covers the whole software development lifecycle. It also includes sections covering engineering topics around management, processes, modeling, quality, as well as engineering ethics and economics. It even includes sections on foundational topics in computing, math, and engineering. I have known about this guide for a number of years now. It is safe to say it has played a significant role in my own personal education journey and was a trusted resource as I worked on my recently released book, Lean Software Systems Engineering for Developers, which I co-authored with my Don’t Panic Labs colleague Chad Michel.
I have often mentioned that if I could only have one reference book on software development, I would select Steve McConnell’s Code Complete. I still think that is a great starting point for building your reference library (it happens to be highly cited in SWEBOK). Fortunately, we are not restricted to only a single resource, so we are all free to leverage the SWEBOK as a guide to gaining the broad understanding we need to have to be effective in this industry.
Each of us would be wise to spend some time getting to know this great resource. The sooner we all can have a shared view of what software engineering is, the sooner our industry, as a whole, can start practicing software development as an engineering discipline.