What's a real engineer anyways? | Fanis Tharropoulos retro
retro
Back to writing I always have had this sensation that a real engineer isn’t a CRUD monkey. I got a Msc in Electrical and Computer Engineering, I loved maths and I used to consider myself smart, or at least competent enough to be a “real engineer”. When I transitioned into Software Engineering, a term I used to call a fancy “programmer” who wanted to consider themselves an engineer, I told myself I should be above the rest of the pack and focus on research, or at least get myself into a project that has real impact, and not just blindly learn to use concepts that people much smarter than me put into reality. This comes off as narcissistic, but I was molded through engineering school to have this unrelenting pride for my craft, even though I hadn’t proven my worth with anything tangible, apart from some throwaway school projects that I have now long thrown to the private repo list on my GitHub profile.
The made-up field
I’m Greek, and in Greece, there’s this notion that calling one an engineer is a heavy word. It’s the five-year diploma, the Technical Chamber, and 17yos treat it as the prestigious degree. Civil, mechanical, electrical, disciplines with the hard maths and the exams that thin the room out (although there’s conflict even between the different engineering disciplines, and even between which school you went to). Software engineering, to some of people there, is a made-up term. It’s what “CS majors call themselves when they want to go into web and put a title on it that the rest of the school doesn’t think is theirs to take”.
Inside Electrical Engineering there’s a quieter version of the same idea. Software was where you ended up when you couldn’t hack the rest of it. The signals, the control systems, the electromagnetics, the stuff that’s for actual smart people. If you drifted toward software, the read on you was that you bounced to the easier thing because you weren’t enough for the hard one.
When I say I was molded to have pride for my craft, this is the mold I’m talking about. From the time you start thinking about University, you walk through the part of picking engineering, getting into the “best” University, getting into the “best” engineering discipline, and after all that, you have to get into the “hard” stuff! From teachers, to students of other schools, to your classmates, for the first couple of years of school, you live through it all.
The internship
When I first started writing .NET for my internship, things were novel. I was learning new things, I was building stuff I could show to my friends and they would click on buttons and things would happen. Even though I was just going through the motions, not fully understanding how anything there worked, it felt so fun. But I kept reminding myself that I wanted to be a “real engineer”. The fun almost felt like proof of something, like I was enjoying the easy thing the school had warned me about.
Moving to Typesense
Typesense is an in-memory search engine. Fully built on C++, no real external dependencies, everything there is smart people stuff. When I joined, I couldn’t even read through the code and get a glimpse of how anything worked. And so my “real engineer” view collapsed a couple of months into my new job.
I was doing stuff around the search engine, even fixed some bugs here and there, but I really didn’t understand what happened in it. It took months for me to be comfortable enough to push changes to the codebase and have some agency as to why I did what I did.
As I got more familiar with the project and everything that went around our client libraries, our integrations, learning a couple of things about bundling for JS and having support for both Node and the browser, something hit me. I was neither a real engineer, nor a CRUD monkey. I couldn’t build CRUD apps reliably, and I wasn’t cutting it for Typesense core yet. I was in this in-between state. Not knowing C++ enough to be proud of my contributions to the core search engine, not knowing enough user-facing stuff to just build an app and ship it to end users, just knowing subsets of everything. Enough to hold a conversation with people on either side, but not enough to feel like I was part of either.
I had left for the field the polytechnic looked down on, and then I quietly built the same ladder again inside it. Real engineer at the top, CRUD monkey at the bottom, me somewhere in the middle worrying about which one I was. Same sorting, one level down. I dragged the whole thing across the border with me.
Knowing basically nothing
The honest version of where I am is that I feel like I know basically nothing. The maths I was so proud of is mostly gone. Ask me to set up a control loop or work through the transforms I used to breeze past, and I’d be starting from close to zero. And I still don’t know enough to feel like a real software engineer either, not the way the people I look up to are. So I’m...