July 24th, 2024

Software engineers are not (and should not be) technicians

The article delves into the distinction between software engineers and technicians, advocating for automation in software development. It warns against prioritizing predictability over automation to foster innovation and efficiency.

Read original articleLink Icon
Software engineers are not (and should not be) technicians

The article discusses the distinction between software engineers and technicians, emphasizing the importance of automation in software development. The author argues that predictability in software engineering is not desirable as it often leads to anti-automation practices. A case study is presented where a developer's predictable manual tasks were automated, resulting in increased efficiency and value for the business. The author suggests that tech companies should not prioritize predictability and should avoid cultivating technicians who shy away from automation. Instead, they should encourage engineers to automate repetitive tasks, leading to more challenging and ambitious projects. The article highlights the risk of over-hiring and decreased productivity when companies focus on predictability over automation. The discussion also touches on the role of engineers in tackling unpredictable tasks and the need to avoid becoming overly reliant on manual labor.

Link Icon 23 comments
By @kjellsbells - 3 months
A less generous take on this post is that an elite engineering team drove a perfectly competent developer out of the company by minimizing the perceived value of their contribution. I don't think that was good management, if so.

Fred Brooks, in the Mythical Man Month, identified the value of "toolmakers" to the "surgeons" many years ago. I think that model applies here too.

Seems to me that a better path would have been to ask the developer in question to lead the automation project, and generally push them over time to look for, and implement, improvements across the development chain that increase efficiency. The elite devs get to keep on doing what they do, but now the whole boat is lifted, and the dev gets to put some real wins on their resume.

By @_benj - 3 months
I have a story about engineer vs technician. In my very first technology job (title was web assistant, so, very much technician) we updated our online education platform and suddenly all our course were breaking.

After some investigation we found that one line in an xml inside the course zip file needed changing. So, my manager planned how to do it. We'll divide the 40k courses into batches, different individuals would tackles certain batches and it all would be done in about 4-6 weeks...

Well, probably my ADHD brain or just being lazy but that sounded like an awful lot of repetitive work that I didn't want to do (change file extension to .zip, decompress, go to file X, find line with XYZ and replace for ABC, save, compress, change file extension back to proprietary format), so after talking with my boss and asking permission I got a week to try to automate that.

Back then I knew almost nothing about software development but I was aware of bash and python... so I cobbled together a janky script that would likely make me cry if I saw it now, tested it on 1 course, then on 10, then on 100... and then shared with my boss. It all worked perfectly! We still batches of about 1k courses at a time to confirm that everything was working ok, and in the end the job took about 2 days and 1 person (as opposed to 4-6 weeks and 5 people).

I was very proud of that accomplishment and very likely marked my perception of the value of software as a tool to decrease human effort (nobody got laid off or leaved, is not like we didn't have A TON of work apart from that migration).

Anyways, just wanted to share :-)

By @sevensor - 3 months
I’ve worked as a non software engineer with non software technicians, and I’ve spent a lot of time thinking about the differences. Most of the work done by engineers was also quite repetitive; in our case the big difference had more to do with whether you turned a wrench during the day, which mainly resulted from differences in your degree of formal education. I was quite junior at the time, however. Where experienced engineers made a difference was in their ability to change how we used the machines, where technicians generally did not. (Sometimes they did, and jumped onto the engineer or management track as a result.)

All of which is to say that I formulate a spectrum from technicians through engineers, to scientists. Technicians use technology, engineers devise new technologies using scientific facts about the world, and scientists discover new science. All three parties end up spending a lot of time on repetitive tasks, however.

Perhaps what makes computer science unique here is that it’s a science of automation, and as such it actually offers us the opportunity to reduce repetitive work.

By @constantcrying - 3 months
I like the distinction between technician and engineering. So much of software development is just technician work and has nothing at all to do with engineering.

Unlike other countries in the US you can call yourself an engineer as a job description without any restrictions, so far too many people have taken on that job description, even if it does not make any sense.

By @Smaug123 - 3 months
The SREs have the word "toil" for work-that-has-the-technician-nature. Relevant page of the SRE book is https://sre.google/sre-book/eliminating-toil/ .
By @bluefirebrand - 3 months
I like this distinction between engineer and technician

However, I think if the tech industry adopted this distinction formally, the outcome is that there would be far fewer software engineers and far more software technicians.

Which would probably actually be a good thing overall. Most solutions being built out in the world don't seem to need software engineers imo

By @agentultra - 3 months
In my country software engineer is a protected term. People get sued for calling themselves software engineers if they are not licensed. For me the difference between “software engineer” and “technician” is that the latter has a limited scope of work and is supervised by the former.

I think it’s a good idea to have a mix of both. There is a certain amount of toil involved in large systems and automating every single task is not always worth the effort. It’s nice to have technicians around to help with that toil.

By @deepGem - 3 months
Predictability is great for everyone, from managers to directors to even company investors. What everyone wants to see is consistent yoy/qoq growth. We should all strive for this kind of consistency.

However, balancing this consistency with new adventures is where things get a bit tricky. I kind of like Jeremy Howard's approach to learning here. I don't know if it can be applied to a company or a team scale.

Spend 50% of your time on predictable tasks, those that you have mastery over and can do comfortably. Spend 50% of your time on frontier stuff things that break your comfort zone.

Over time the some of the latter tasks will get into the former category, thereby leading to automation organically.

The ratio of comfort:frontier tasks is personal and let's engineers choose their ratio. Some may want the ratio tilted in the comfort zone (greater predictability ) while some may choose to adventure into the frontier zone (lesser predictability ). An organization should have space for both. Even the same individual can alter these ratios based on their life stages, external circumstances.

Put rather simply, a good software engineer can also choose to be a good technician and vice versa. Why should these roles be mutually exclusive ?

By @bluGill - 3 months
All too often the cost of automation is higher than the cost of just doing the work manually each time. While the example case that doesn't seem to be true, it isn't clear if they did the analsys. if the manual project took 5 minutes every week and the automation took 2 engineers 2 weeks, it will be 2000 weeks before the automation effort pays off - will you need it that long - don't forget that if the process changes you have even more effort in automation, now add in interest on the investment...

Of course as time goes on we get better automation tools. what used to not be worth automating often is today.

Don't forget that humans tend to be good at noticing "thats funny" situations while automation will pass many of those situations because you didn't think about them and thus didn't handle that error. This is why despite being a big deliver in automated tests I still demand a large amount of time spent in manual testing everything.

By @tristor - 3 months
I have, at some point in my career, had the title of "Automation Engineer" in the past. I generally agree with the article except there is one huge oversight: Automation requires predictability as a prerequisite and complex systems are not naturally predictable. It takes effort from smart people to ensure the predictability of a system and repeat a task long enough that it can be automated.
By @Tade0 - 3 months
> But it wasn’t great for the business!

That is a pure and virtuous stance.

I typically refrain from giving management ideas of this sort. It's not a given that the pros outweigh the cons - especially in large organisations.

In any case I'm currently in a project which was supposed to be for Technicians, but I need to do a lot of Engineering due to, well, bugs and tech debt.

My take is that any sufficiently long running project, even if originally simple, creeps beyond the skillset of Technicians.

By @carapace - 3 months
The difference between technician and programmer isn't about predictability, it's about novelty.

The technician has to know the system well enough to respond correctly (or even proactively with preventive maintenance, etc.) to unpredictable problems that are "in the book".

The programmer by definition solves novel problems.

- - - -

edit to add: Beware folks who look down on technicians. It's a kind of "code smell" of the mind.

By @ianpurton - 3 months
> We wrote some code to automatically generate an HTTP API from the corresponding gRPC API

It's possible to do this without writing code. https://github.com/grpc-ecosystem/grpc-gateway

You can even get it to generate Open AI style documentation.

By @29athrowaway - 3 months
The root of all evil is beliefs in some form of exceptionalism that exempts you from having good worksmanship.

Being so special you are exempt from having to write documentation, tests, give visibility, etc.

Automation is can be partial, like series of scripts that are ran manually.

By @kleinsch - 3 months
This take makes sense in the context of the specific example, but falls apart for most other software engineering. You can't automate away defining business logic, but in many cases you can deliver it predictably.
By @drewcoo - 3 months
I use the terms "bespoke work" and "commodifiable work" to differentiate the two kinds of work in the article.

I think the article misrepresents what actual technicians do and their value.

By @iknownthing - 3 months
I wish we had a definition for machine learning engineer
By @frays - 3 months
This is like comparing DevOps engineers and Systems Administrators.

Both extremely important to the business but sysadmins are perceived at a lower level?

By @rogerthis - 3 months
Thus we don't need that much software engineers. Things should start to get cheaper (considering everything else the same).
By @jrs235 - 3 months
"I've learnt that Von Manstein (and others) paraphrased Prussian Field Marshal Helmuth Karl Bernhard Graf von Moltke (1800-1891) who categorised his officer corps into four types.

Intelligent & Lazy: I make them my Commanders because they make the right thing happen, and find the easiest way to accomplish the mission.

Intelligent & Energetic: I make them my General Staff Officers because they make intelligent plans that make the right things happen.

Stupid & Lazy: There are menial tasks that require an officer to perform.. and they follow orders without causing much harm

Stupid & Energetic: These are dangerous and must be eliminated. They cause things to happen, but the wrong things, and so cause trouble."

By @gjvc - 3 months
it is an extremely dangerous thing to think of being a "technician" as less important or lower status. until such work is automated (and I strongly believe it should be) then bad configurations will get pushed to production and bolts on doors will not be tight.

i find this article to be overly long