I study computer science, but I aspire to be a software engineer. As much as I respect people who have the patience and intellectual prowess to toil away at arcane topics in informatics, I know it’s not for me. I want to make things, tangible products that people can use. I’m less enthusiastic about solving P vs NP and producing research papers.
But I can’t study software engineering directly, I must first earn a degree in computer science. Now, what computer science entails depends entirely on which school you attend. At many schools, “computer science” really means data structures and Java; at others, it means honest-to-goodness computation theory and maybe some C programming. Most deans would agree, however, that the purpose of earning a degree in computer science is not to easily attain a job in tech, but to learn computer science.
And there’s nothing wrong with that. But since computer science is the de facto degree for a career in software engineering, young high school grads are every year fooled into thinking they’ll be qualified to work in industry after earning a B.S. in computer science. Unfortunately, this is largely not the case.
Many will point out that jumping from a degree in computer science to a job in software engineering simply requires some self-study and side projects (or that one need not even go to college to become a software engineer). This is true. The point I want to make is that it shouldn’t be so hard. It shouldn’t take so much extra effort just to qualify for an entry-level position. College is supposed to be a time for expanding one’s mind and exploring various subjects. I had to drop a minor in political science because I knew I’d never graduate a qualified candidate if I didn’t take more engineering electives and make time for side projects. I wish I didn’t have to make that choice—I really like political science—but I didn’t see any other way to meet the entry-level requirements that most companies are publishing nowadays.
But what if there were another way? What if engineering schools simply taught software development the same way they teach other engineering disciplines? I must admit, this isn’t an original suggestion; many schools are already offering degrees in software engineering, but a quick search reveals that most of the schools offering these degrees are outside of the top 100 schools in the United States. Indeed, not a single school listed in the top 10 for computer science offers a dedicated degree in software engineering, yet these schools produce a significant number of professional developers.
It seems reasonable to me that if physics and mechanical engineering are taught as separate disciplines, then computer science and software engineering should be too. Computer science is definitely a hard enough science to stand on its own, and software engineering is most certainly a large enough profession to warrant its own degree program. It’s not fair to computer science purists that so many students are in it just for the vocational aspects, and it’s not fair to aspiring software engineers that a computer science degree can leave one wholly unprepared to work in industry.
It’s time for software engineering to be taken seriously in academia.
With more software engineering graduates, we might have a decent shot at ending this “talent shortfall” that tech companies love to complain about.