I’ve just about finished reading Steve McConnell’s Professional Software Development book. I’m far enough in to the book to know that I’m not going to get nearly as much out of it as I did from Code Complete. Which isn’t to say that there isn’t anything valuable in it.
One of main points that McConnell makes in this book is that software developers need to focus more on being like engineers. That is, software engineering is more directly valuable to businesses and society than computer science.
The distinction between computer science and software engineering wasn’t clear to me until reading this book. McConnell provides a dictionary definition: “Software engineering is the application of scientific and mathematical principals toward practical ends.” The key part of this definition is “practical ends”. Computer science, on the other hand, is more focused on theoretical concepts that although important, don’t necessarily have a practical use. And because most universities teach computer science rather than software engineering, McConnell contends that there is a shortage of true software engineers.
Even though I have a computer science degree, I have to agree with McConnell’s analysis. I was fortunate enough to have come across some great books and worked with some good people early in my career such that I became aware of the deficiencies in my education. So for many years I have worked towards filling in the gaps and I have to say that most of the gaps match those that McConnell has identified. My guess is that a good portion of my fellow software developers weren’t as lucky.