Louis Cares

Am I an Engineer?

My first experience with computers was when my step-dad taught me BASIC on an old Amstrad. When I was 11, I got a "Learn Visual Basic 5.0" book (complete with CD-ROM!) for Christmas. I learned. I have a degree in "Computer Science with Artificial Intelligence", and I've committed hundreds of thousands of lines of code over the 10+ years I've been employed as a software engineer. I even managed to get a tiny change to the way hardware RNGs are used to seed system entropy upstreamed in the Linux kernel. You get the idea.

So, why then do I feel like I'm not actually, really, an engineer?

Not a rhetorical question. This is going to be another self-help post so feel free to move on.

I told someone last year that I think there are two types of engineers:

I think I was perhaps wrong, and there is only one type of engineer: people who like solving coding problems.

The thing is, people who like solving coding problems tend to need a bit of wrangling to make sure that they're solving the right coding problems - the ones that are going to result in the product/business/whatever requirements being met (preferably, without spending too much time over-engineering things). That's not a good or bad thing, it's just a thing. It's expensive to context switch from coding to people-stuff, so if you can avoid it, you should.

So who does the wrangling? Well, it's usually the people who like solving problems with code. They might or not have manager in their title, but the universal requirement is to be able to wrangle the people who like solving coding problems. And to be able to do that well - surprise - you need to be able to solve coding problems!

So, there are two types of engineers:

Maybe?

Software Engineering is weird, perhaps because it's relatively new as an industry, maybe because it keeps changing so much, and I suppose the businesses and company structures that it enables are also novel.

In current industry terms "Software Engineer" could mean you spend all day every day writing code and hardly any time interacting with other people, or it could mean the exact opposite. You could get promoted by solving some fiendishly difficult technical problem, or by building consensus across two teams that hate each other. I don't know many other jobs where that is true.

The one thing that is common across all "Software Engineers" is that you can write code. Whether or not you actually do is what changes.

So we've established through my modest blurb above that I can write code, and I often have, but I also have to recognise that given a choice, I often don't. Given a choice between figuring out in broad strokes how we're going to ship the next milestone, and who on the team is best suited to each task, or putting my headphones on and just writing some code, I'll usually pick the former. I'm a wrangler at heart.

Ok so if I'm not someone who likes solving coding problems, that kinda rules out any IC roles. It's not that I can't do these jobs, it's that I don't find them particularly motivating or enjoyable, and I end up landing somewhere fairly average on the performance distribution.

Luckily, I am fairly good at wrangling. Even more luckily, that is a job. It's got lots of names, but I'm going to call it TL. I've done this, I enjoy it, and I think the people I was wrangling had an ok time of it.

The problem is that at some point you end up faced with the choice to either stop there, or pick up the Manager hat, and guess what, even though 98% of your day is spent doing the same stuff with the same people - the job is not the same, at all. As soon as you are the person that controls how much money people are going to get paid, you're no longer one of them. Because you're not.

I've done this too, and I don't love it. "Progress" means moving ever further away from the people solving the coding problems and ever closer to the politics and people problems. Which, yea, is nothing to do with engineering, or even wrangling engineers at that point. It's just about wrangling egos and corporate machinery. Your title probably still has "Software Engineer" in it though!

So, um, what? I want to not actually write code myself, but I do still want to be in that world. and, I do want to work directly with people who solve coding problems. And I don't want to manage anyone. And, I do want to feel a sense of progression and growth (exert ever-expanding control!).

Easy?

The good news is that (I think!) this job exists in places doing work that is technically very complex. Finance, AI, and maybe a handful of other fields?

The bad news is that if I wanted that job now, I should have started in those fields 10 years ago.

The worse news is that if I ever want that job, I probably need to spend 10 years solving coding problems first. And as we've established, that is not my favourite. I have immense respect for anyone who can take that journey and excel in both roles.

So where does that leave me?

Fester in the low-mid levels of some tech company, or suck it up and solve coding problems for 10 years?

...or? Get a job that doesn't include the words "Software Engineer"?