In 2013, I became demoralized in my career. I had left a fulfilling role as a web applications and services developer in the non-profit sector because I knew that my organization didn't follow good practices. After I had joined a software company in the hopes of learning how real software companies improve code quality, I instead found that it was not much better in the software industry than elsewhere.
A large majority of people working on software simply aren't aware of how to build large pieces of software in teams successfully. The Standish Group's 2015 CHAOS report shows that over a dataset of 50,000 projects worldwide, only 29% are considered successful. There are a lot of competing efforts to evangelize practices such as TDD, frequent commits, and continuous delivery, but even those interested in such practices don't often actually, well, practice them. I noticed that during one of Jez Humble's talks on continuous integration, he asks the audience how many of them are actually practicing it, and three people put their hands up.
I was lucky enough that at this low point in my career, a colleague recommended the book Professional Software Development by Steve McConnell. (Thanks Mark!) Among other things, McConnell uses the pages to differentiate software engineering from computer science, and makes a great argument why professional software engineers should have a professional education. Here is one of the things he says, which I have permanently bookmarked in my copy:
When workers educated as computer scientists begin working on production systems, they often design and build software that is too frail for production use, or that's unsafe . . . The typical computer science graduate typically needs several years of on-the-job training to accumulate enough practical knowledge to build minimally satisfactory production software without supervision. Without appropriate formal education, some software developers work their entire careers without acquiring this knowledge.
This was hard to swallow at first. I had my bachelors in computer science and six years experience. Wasn't that good enough? But McConnell seemed to have put his finger on something I had witnessed time and time again in my own career. The experience of deploying software and seeing it melt down in front of users is something that is hard to learn in a computer science class. He had planted a seed that kept growing in my mind. Before long, the seed sprouted and I began looking to attend a software engineering program.
If you are a working software professional who is thinking about doing a master's degree, consider looking for a software engineering instead of a computer science program. Computer science is great; don't get me wrong. You will learn deeply interesting theoretical aspects of computing. But if you want practical skills you can take back to your job, if you care about how to scale up software and software teams, if you want to learn what has worked in practice, in the actual industry, then a software engineering program is definitely something to check out. It was great for me, and I don't think you can possibly go wrong.
This past June, I graduated with my Master of Software Engineering from Seattle University--exactly the same masters degree that Steve McConnell has, from the same program. It took a lot of work, sacrifice from my wife and children, and a not insignificant amount of money, but the price was well worth it.
The program exposed me to things I would have never encountered on the job, no matter how long I worked in software. I unexpectedly have experience with user interaction design, software finance, and software security risk management. I also have a deeper arsenal of principles, patterns, and practices for the activities associated with designing, implementing, testing, and delivering software.
Should everybody who works in a software team get a Master of Software Engineering? I won't go that far, but I can say that it was deeply beneficial for me, even after first having more than five years' experience in the industry.
Would it be good for you?
Of course, only you can decide.