Software Engineering is Actually a Profession
I was just reading yet another Twitter thread from someone1 trying to get started with programming without any prior experience, and documenting the extensive trials and tribulations they went through in the process. As a software engineer, I understand the value of being able to get up and running quickly and easily with new tools and projects; making it easy and pleasant for new developers to contribute saves time and money, improves morale, and is just the right thing to do. These same benefits apply when novices are able to pick up programming as a skill to help them solve their problems.
Keeping programming and the concerns of programmers in the mainstream can also guard against incompetent accusations (like nitwit Missouri Governor Mike Parson) and fend off possible dystopian scenarios by giving more people the knowledge to immediately understand how wrong they are. Gatekeeping doesn’t benefit the profession and serves only to stoke the egos of insecure people. Programming tools that are accessible to novices are therefore beneficial and important.
But, and this is the part that I don’t see discussed often enough, critiquing every programming tool or language based on its accessibility to novices is not valid. Programming is a skill everyone should have access to take up, but software engineering is also a profession that people dedicate their careers to. It is entirely acceptable for tools and languages to have a particular audience in mind, and that audience might be “professional software engineers with training and experience.” Consider some examples from other areas:
|Tool||Novice Version||Professional Version|
|Dirt shovel||a garden spade||hydraulic mining shovel|
|Aircraft||Piper Cub||Boeing 787|
|Timepiece||a watch||an atomic clock|
|Violin||generic Amazon model||Stradivarius|
Anyone can dig in their garden, but nobody hates on CAT for not being able to use a 500-ton mining shovel with no training. Anyone can look at a watch and tell time, but nobody complains that it’s more difficult to set up a network time server synchronized to GPS satellites with a roof-mounted antenna. The size and/or cost of these tools makes it obvious they’re intended for professionals. But with programming tools, we’ve almost become victims of the success of the open-source model: literally anyone can download and install Visual Studio Code and .NET or Node.js or Python and start using the same tools that experienced professionals at billion-dollar enterprises use for major projects.
Unfortunately, people think that because programming tools are so easy to obtain, that demands that they must also be easy to use, and that’s just a false assumption. When tools are designed and built for use by experienced professionals, accessibility to novices is simply not even relevant, and trying to make that happen can compromise utility or productivity for the very professionals they were supposedly made for in the first place.
Ultimately, people need to think about programming in similar terms to other DIY fields: anyone should be able to put together some furniture from Ikea, but building furniture from raw lumber takes some more effort and planning and if you try to just plow through it having never used power tools before, you’re in for a learning curve. This isn’t being elitist, it’s not gatekeeping, it’s just the reality that things are complicated.
I will not name the person or link to the thread because I’m critiquing the general argument, not the particular individual. ↩