“Software Engineering”, a field of interest launched in 1968 that aimed to bring product design and construction skills to computer scientists by having very clever computer scientists think about what product design and construction might be like and not ask anybody. – Graham Lee
The idea of certification and licensing for software engineers came up in a Slack I’m on. Of course I accidentally ended up writing a wall of text that really needed to be a blog post, so here we are.
I think those algorithm coding white board tests used by many tech companies to vet potential employees are meant to be some kind of measured standard. However, as an industry it’s been collectively decided (mostly by default rather than intent) that there should be alternate paths to a career, which makes that kind of standardization feel like more like gate-keeping.
Additionally, the vast array of technologies available make it hard to quantify knowledge like that. Are you certifying for front end, backend, general knowledge? Say you’re going to have multiple certificates. If it’s front end, are you standardizing a particular language or even framework? How long would such a thing be valid for?
Setting standards also means being able to take a step back and evaluate the industry as a whole. It would surely slow progress of new technologies, but then I don’t necessarily feel that’s a bad thing, if I’m being honest. Move fast and break things was meant to be an approach to solving problems in new ways (yes, and make money fast and easy) but unfortunately seems to have taken the discipline of writing software along with it.
It’s all something to think about, and standards, if not licensing as other engineering disciplines have, is not the worst idea I’ve ever heard. I even say this as someone who didn’t graduate college. If licensing was put into place, I’d be out of the running and at the same time I feel that so much software is built in a way that’s harmful to users and maintainers alike that something should probably change.
The web development field is a mess. Tutorials only 6 months old are out of date. I’m dependent on stack overflow for answers to everything. I spend more time fighting config files and setups than I do writing code.
I wouldn’t want to scare anyone away, but I would be tempted to give dire warnings to folks looking to get into web dev right now. There is a shit ton of bs involved that has nothing to do with building apps or changing tech culture. Our tools are busted & confusing as fuck. It’s only because I’ve been at this so long that I can calmly navigate this quagmire.
I don’t mind learning new things, but that learning needs to feel like I’m getting something sustainable out of my time. Honestly, I don’t think “always be learning” is healthy. It’s the nature of the beast, but I don’t think we’re built for it. I just would like the industry to get to a point where there’s a sense that any of this is learnable with consistency.
I’ve literally lost interest in React before I’ve even built my first app in the framework and that’s entirely to do with the amount of learning that has to go on that has nothing to do with what I’m trying to build.
I’m just looking at all this and seriously questioning what we’re getting out of it. How is this better than the PHP apps we were building 10 years ago? It’s a slightly better experience for the end users? Maybe, but there have been other related innovations that make things faster. I mean, I built this site on WordPress for a reason. It’s fast, it’s got a stable UI, it does predictable things.
Are these web apps we’re building really anything more than html forms and pages? Is this really any more straightforward (and powerful) than what we were using a few years ago? I was working through a React course last week and the instructor half-jokingly said he called himself a “professional forms developer” which is scarily accurate for what many of us are actually doing.
All of this complexity is supposed to make the “developer experience” better. We’re meant to be more productive and write better, more stable code by using these frameworks. I’m just not seeing that play out so far in practice. If we’re not even having a better experience doing the work, then what is the point of all this, really?
At the end of the day, I like building things. I really do. Today is just one of those days where the barrier between what I’m doing (and where the industry keeps going) and being able to build things is very very high.