Skip to content

Latest commit

 

History

History
178 lines (96 loc) · 35.9 KB

notes-on-a-lateral-career-move.md

File metadata and controls

178 lines (96 loc) · 35.9 KB

Notes on a lateral career move

I changed jobs recently. That's not all that uncommon for devs - in fact it's accepted wisdom that your best course of action is to switch every 2 years or so in order to maximise your salary. That may or may not be true, but it's not really the route I've taken. What was perhaps a little more unusual about my change was that I made a somewhat lateral move between fields of software engineering, from mostly web-based backend/services to embedded firmware. What I experienced during the process may be of interest to others who are thinking about overcoming the inertia of making a change, or who just want to see the good, the bad, and the ugly of the job search and interviewing merry-go-round.

It's a bit of a winding story, but covers fun topics like:

  • My disdain of recruiters
  • Elitism and gatekeepers
  • Understanding what is actually important when making tough choices
  • Looking for the signs that something is on fire

Agency work

I'll start by briefly addressing why I wanted to make a change. I haven't really job hopped in my career. I worked 2 years at a startup straight out of university building a 2D JS based game engine for a company that builds gamified medical device trainings/simulations. After that I joined an agency as a general purpose software engineer, consulting with many different clients on all kinds of projects (and levels of experience with the process). I did that for 5 years, and would honestly recommend it to new developers as it builds your skills in every area (including the all important client facing soft skills). There I worked on everything from electronic patient record / healthcare interaction prototyping for one of the worlds largest tech companies, to interactive research applications for academic institutions, a private futures trading platform spanning multiple exchanges, to an IoT platform doing everything from the PCB layout to writing the backend data ingest pipelines, plus a whole lot more that I can't possibly cover here.

Agency work is fantastic for the breadth of experience you can attain, but it's also a double edged sword; you have no true ownership over the projects you work on. With some clients, you'll need to guide them through every step - handling the project management side of things and presenting decision moments to them in an understandable way. With others, they'll know (or think they know) what they want, and refuse any advice or suggestion. This can be frustrating when you know that their insistence will create a worse product, experience, or will simply have a negative effect on the deadline. After a few years of doing this, a lot of devs will find these issues too frustrating, and seek out a position where they can work on something long-term, and with real (shared) ownership over the product. This was a large part of my reason for leaving, but it wasn't the only one.

Low level passion

I am one of those programmers you hear about that just loves programming, and I pretty much always have been (or at least, since I saw the 1995 classic Hackers and was captivated). I am, at some level of my consciousness, always thinking about code. I don't claim that to be healthy, or something developers should aspire to in order to succeed - but it is how it is for me. I taught myself most of what I know, spending countless hours in the local library to make use of their two computers (probably to the dismay of the adults wanting to actually get things done).

I am always reading, watching, and exploring new spaces in development. The process of understanding something and building it from scratch has become a bit of an obsession. At the agency the lingua franca was JavaScript (and eventually TypeScript), but we could and would use other languages when it made sense. Because of this, I developed a proficiency in the language, and would take concepts I read about or seen in other domains and implement them in JS.

At some point, I developed a fascination with the lower levels of the stack. I got interested in building virtual bytecode machines, and as anyone who has gone down that road will know, ended up learning about parsers, compilers, assemblers, and the like. I was blogging a lot at the time, not for fame or fortune, but because I wanted to share the things I'm fascinated by with others. After a while I decided to start a YouTube channel in order to communicate low level concepts to JS developers called Low Level JavaScript. I've made videos on that channel about virtual machines, assemblers, parsers, emulators, digital logic, writing userspace USB drivers, speaking hardware protocols like SPI, and a lot more. No hard sell or anything, but you should really check it out 😉 Over the years of making the channel, I've delved deep into a whole bunch of areas, including computer architecture, and kindled a love for microcontrollers and embedded software.

At some point, I found myself losing interest in the kinds of projects we were picking up at work. I had been fortunate enough to have had first pick when the embedded projects came around, but they were relatively few and far between. Not to mention I was really the only one in the company who was so inclined - and I know that you level up best when you're around other people who know a lot more than you do in a particular subject area ("if you're the smartest person in the room, then you're in the wrong room" and all that). So I made a decision to leave, and look for something specifically in embedded firmware development.

Stress, Anxiety, and Imposter Syndromefd

When I handed in my notice, I didn't have another job lined up. My daughter had been born about a year before, and as I don't need to tell any new parents out there, it takes a lot of your energy reserves! Between family life, a pretty demanding job, and knowing that I would have to focus some time on interview question preparation, I simply didn't have the mental capacity to search for, apply to, and interview for jobs alongside my regular work.

Being in the position to even make a choice like this is a privilege, and I understand that not everyone can. Still, this was quite a barrier to overcome. My girlfriend and I talked a lot about the risks involved, the financial implications, and landed on a timeline and a plan for how to proceed. I had 6 weeks from the first day of freedom to focus purely on embedded positions, after which I would begin to include positions that were essentially what I was already doing. Some of my friends and former colleagues reach out from time to time to ask if I feel like jumping ship, so I figured that I'd be able to land on my feet if the embedded search fell apart.

I had a month of notice period to fulfill (fairly typical in Europe) - winding down my involvement in projects, writing documentation, etc - and having made the step kind of gave me a renewed energy, and a sense of purpose. Although I had actually begun reaching out into my network and even had a couple of appointments arranged, I started to develop a little anxiety; Questioning whether I had made the right choice. Perhaps you're just not meant to fully enjoy your work I thought (it is work after all!). Maybe I'd made a mistake.

On top of that, for the first time in my career, I started to feel some imposter syndrome. Who was I, someone with no formal education in the field, to think that I could work in the embedded space? Embedded, the field that almost all programmers hold in high regard because of the need to adhere to the ancient principles of actually worrying about how much memory and clock cycles you have available at your disposal. Maybe I'd completely overestimated the skills I'd been teaching myself over the last few years - and anyone actually working in the industry would laugh me off as an amateur hour devboard cosplayer!

But having already jumped off the deep end, I tried not to dwell on it.

Treating the job search like work

I'm writing this article in 2022, so for any readers in a hopeful future, this was during corona time. I'd spent almost 2 full years working from home, and I had a rhythm. I knew that I needed to keep that rhythm if I was going to have a real chance of finding something within the allotted timeframe, so I continued to wake up as usual, get ready for the day, and head up to the home office, which I affectionately call my "lab", but my girlfriend calls "de zolder" (the attic). I split my day between:

  • Searching: Finding interesting positions and queueing them for later
  • Applying: Writing cover letters, customising CVs, and filling in applications
  • Interview Prep: Reading and practicing data structures and algorithms questions
  • Projects: Working on embedded projects that I could talk about and showcase in interviews

The first two felt pretty obvious. I found it useful to split the process as it allowed me to keep my mind "in gear" and reduced context switches. The interview prep part was something I was kind of dreading - knowing that companies famously suck at hiring, and as such, ask completely obtuse puzzle questions, expecting you to have spent time grinding leetcode (shudder). It's not even that I don't like this kind of stuff, or that I think it's useless - I was most worried about not having prepped something before hand being my downfall, and the interviewer not actually wanting to see me "work through the problem".

The final part - the projects - are something I don't think a lot of people do. I set aside a good chunk of time to really work on stuff that I knew I could talk about with confidence, and would cover key points in the kinds of jobs I was looking at. The main project I was working on during this time was an STM32 based GameBoy emulator in C, reading games and other data from an SD card, and rendering out to an OLED screen, with from-scratch drivers for both. I'd previously written a GB emulator in 2021, and so understood the system pretty well. I could also port the general emulator logic pretty easily, but there were problems to solve in the constrained environment like RAM limitations and general clock speed. The different approaches I was implementing to solve these problems served as a point of conversations in interviews.

Whenever I would actually get an interview, I would allot specific time to prepare, doing company research, and trying to figure out how best to present myself in the context of what was mentioned in the job description.

First hit: An (embedded) Agency

I wanted to move away from agency work, but via a contact of my girlfriend, I ended up interviewing with an agency that specialised in embedded. During the first interview, I got a tour of the office, a showcase of some of the projects they had done, and finally a talk with the engineering manager. It actually went really well, and I felt a professional click. The projects were interesting and diverse, and whole place seemed filled with smart people. I emphasised that I was an autodidact coming with passion, but perhaps a lack of experience - but I was sure that I could get up to speed quickly with anything they threw at me. This turned out to be a mistake, but I'll get to that in a moment.

I did get a second interview, which was a week after the first, this time with two senior engineers. It was pretty much downhill from the beginning unfortunately. I live in the Netherlands, and while I can speak Dutch, I have never done so in a professional context (let alone a technical context!). I was told by the engineering manager that it was an English speaking company (this is common for tech companies in Europe), but it was of course a bonus that I would be able to talk to everyone in their native tongue over coffee. So when the two engineers introduced themselves in Dutch, and asked which language I preferred, I repeated: English is my preference for work, but I can speak Dutch if needed. One of the engineers, who I will call A, said "Let's do it in Dutch, and you can always fall back to English words if needed".

Perhaps that's reasonable. From my point of view, this interview was a hugely important moment where I was determined to make the best possible impression, and sell my skills and value to the company. To all of a sudden have to do that in my second language, without any kind of preparation, completely knocked my confidence. While they explained their backgrounds, I was spending 2x the regular amount of brain power to make sure I fully understood every word being said, all while trying to look casual and assured. When it came to my turn, I started speaking, but couldn't find the words fast enough. I was conscious of the struggle, which only made things worse. I stopped, and said that for me English would be better for this meeting, and I saw A check a mental checkbox.

The other engineer, B, was open - asking questions and listening to the responses. A asked questions as if trying to trap me. The strangest part about the whole thing is that I was never asked any specific technology questions, no algorithms or data structures, nothing concrete. The questions were things like:

  • "How well do you know C++?",
  • or "How quickly can you read and understand a datasheet in order to write a driver?"

There are numerous problems with questions like this:

  1. They are subjective to a fault. If I say I'm really good at C++, what does that mean exactly? Does it mean the same as if another person said exactly the same thing? What is the complexity of the part I'm dealing with when reading the datasheet?
  2. Your cultural background will have a large influence on how you answer these kinds of questions. The Dutch are direct, but I'm from the UK, where we're typically modest about proclaiming how amazing we are. Other countries and cultures are even more reserved in this way. It's a genuine challenge to answer in a way that feels honest and comfortable.

I tried my best to be charming and actually provide answers to the questions I though were being asked under the surface:

  • "Can you competently write code?"
  • "Can you work alone to figure things out?"
  • "Do you understand timeboxing, estimation, splitting work into chunks etc?"

Unfortunately the click of the first interview just wasn't there, and I could feel that I wasn't convincing A - and it seemed that A was the decision maker. What was also apparent was A's disdain for JavaScript, the web, and engineers who did not study EE or embedded at a masters level.

I had unfortunately painted myself as someone with no real experience, and the interview did not afford me the opportunity to disprove that. I got a call not too long later explaining that they didn't want to continue. It was upsetting for a day or so, but I tried my best to take it in stride and keep going. I wrote an email to the engineers and the engineering manager asking for slightly more in-depth feedback, and what they thought I could do to improve my chances for the next opportunity. I actually even inserted practical example suggestions I was already thinking of myself to make it as easy and friction free for them as possible. I received radio silence in return, until 5 weeks later, when I got an email from A that "it was on his todo list". I never heard anything else.

The lesson I learned here was that it's not my job to tell them if I think I am or am not qualified enough. If I'm not qualified, they will tell me. It's my job to sell myself, my skills, and my passion as best as I can while being completely open and honest about my background and experience when they ask. After this experience, I changed the way I wrote my CV and cover letters to not include any downplaying, but rather highlight the skills and experience that correspond to the job requirements - even if those are just personal projects.

Another take away was that sooner or later you will bump into elitists and gatekeepers. They want to maintain their preconceptions and world view, and there isn't too much you can do aside from not handing them additional ammo.

Recruiters

My opinion of recruiters wasn't particularly high before embarking on this journey, and at this point it has dropped to below zero. I'm not talking about headhunters at specific companies here - they are genuinely vested in finding good people that fit the role. I'm talking about recruiters from firms that get paid to place candidates. They are, by the nature of the dynamic, not out to help you. Their motivation is getting a candidate, who for the least amount of money will pass the probationary period. They may tell you otherwise, but remember - you are not the customer in this arrangement, you're the product.

I spoke to a few different recruiters early on; Some on the phone, some over linkedin. One thing I found is that if you don't fit an easy mold, they don't even want to bother with you. In one exchange, I explained that I was looking to make a transition, and he told me it was basically impossible, that no one would hire me on anything but the most meager salary, and wouldn't I just like to look at these other backend webdev jobs that he was sure I would fit. When I made it clear that I would like to try the embedded route in spite of all of that, he told me he had a few positions that he would send me the details of. I never heard from him again.

A similar thing happened when I spoke to a recruiter who ran her own company, specialised in high tech positions including embedded firmware. Again she told me it would be a tough pitch, but she would send me the details of a couple of companies and set up some interviews. Complete radio silence after. She was actually recommended by friend of my girlfriend who told me to mention him by name.

I applied to a job online that I thought I was a great fit for, complete with custom CV and cover letter. I got a call less than an hour later from a guy who informed me that the site I'd applied through was a recruitment company, and they had to screen me before passing my details along. I spoke with him for over an hour, answering a ton of questions, explaining my background, experience, and fitness for the job. Thankfully, he actually seemed to think I would be a fit too, but needed to arrange things with his manager in order to proceed. He said he'd call me the next day. That day came, and I did receive a call, this time from his manager, who informed me that the job I'd applied had been filled more than a month before. However, he thought he had some other positions that would fit me well too. Of course, most of those were backend webdev. Needless to say, I was pretty pissed off at having wasted my time both in the application and phone call. I expressed this, stating that I wasn't interested in those positions.

I did end up talking to a few companies via this recruitment agency (and I considered joining one of them), but working with them was generally terrible. They would call me at times I had explicitly told them I was unavailable. They would arrange in-person, on-site interviews without checking my availability. They would take the salary expectations I had given them and tell the company they set the interview up with a lower number.

When I told them I wouldn't be able to make the appointments they had booked without checking, they had the gall to act indignant, and tell me this made them look bad. I think with younger developers, or perhaps those not as outspoken, this kind of manipulation tactic would have been effective - but I wasn't having any of it. I told them outright how unprofessional and disorganised their company appeared, and that I would just as well drop the whole thing - to which they immediately backpedaled, telling me they would reschedule.

Your milage may vary, but I can honestly say that I will never waste my time with recruiters in the future. There are far better ways to find companies and talk to them directly, without having someone interject themselves into the middle in order to extract profit.

Talking directly

One of the resources that worked well for me was Linkedin's built in job search. I was able to narrow a position down to a location radius and seniority level, and pretty easily filter out things that weren't interesting. Some jobs even have an "easy apply" mode, where you simply press a button and it sends your CV - though a couple of jobs had additional checkbox style questions you'd have to answer. This was actually how I found and applied for the position I ended up taking.

But I also used this search method (as well as searching on recruitment websites) to find positions that sounded interesting but didn't explicitly mention the company by name. I found that you could often google part of the job description, and find it posted elsewhere, with the companies name attached. That gives you an open to go straight to the source; Either applying directly on their website, or writing an email with your CV and bespoke cover letter.

Some places are hiring because everything is on fire

Hiring is often not an internal priority for a company, and they will actually wait until things are already in dire straits to actually begin the process. I experienced this in the agency I worked for, as well as multiple companies I spoke to.

One position sounded incredibly promising. It was at an industrial robotics company, where they built custom automated lab setups for the agriculture and petro-chemical sectors. When I got there, I was surprised to find out they we're a pretty small shop - just one tech guy (the founder), a business guy who handled all the operations and sales, plus a few mechanical and electrical folks who would build the hardware. The tech guy, who I'll call C, was a genius - no doubt about it. He had designed and built the first robots, wrote all of the control code, programmed the PLCs, and built the client facing desktop software that queued the experiments and logged results. He'd been working on this for near on 20 years, pretty much entirely alone. It's actually an incredible achievement, and I truly admire the dedication and spirit it took.

In the interview, it was clear that they'd never interviewed a software developer before. They asked me some of the questions that appear on a cursory google search of "interview questions". I don't hold this against them at all actually - hiring is hard, and I think most people are bad at it. I took it as an opportunity to ask a lot of questions about the job itself, the technologies, the methodologies, approach to deadlines, planning - all of the stuff you actually brush up against day to day. I also used the pretty open space to describe my skills in terms of the projects I'd worked on - personal and professional - as well as discussing my YouTube channel. In a kind of hilarious twist, the business guy - let's call him D - had never heard of YouTube before, and I found myself explaining the concept of people making video content, posting it online, and how it can, in some cases be used as a profitable source of income (though I wouldn't say LLJS falls into that category). They also took me to lunch to end the interview, which was very nice actually. They made it clear that they really liked me as a candidate, and would take some time between the two of them to talk it over.

For me however, there was quite a big issue; namely, it wasn't an embedded firmware job at all. Most of the electronics control was done in commercial off the shelf PLCs. The job was really about maintaining the 20 year old Delphi codebase, perhaps with the idea of slowly rewriting parts of it in more modern languages. This software, which handled the experiment queuing, data ingest, and eventual processing. It also had effectively no documentation, and quite some tech debt (though they didn't call it that). And while both C and D assured me that there would, in some future, be possibilities to incorporate custom embedded solutions, any initial focus would be on maintenance work, refactoring, and generally servicing active and new clients.

There was also a second troubling point - C was sick. One of the reasons they needed to hire someone right now was because he needed to be away in order to receive treatment. At the point when D was telling me this, C was in visible discomfort, though not from pain. It seemed that he was almost ashamed that he would have to stop with his life's work for something as petty as illness. He assured me it was not as bad as it sounded, and that he would be around and available to help me through things, and fully back within a few months. I really appreciate that they were open about it - a lot of places wouldn't be.

I don't want to come off as insensitive here, C's situation brought back some pretty rough memories of my own fathers fight with a sudden cancer diagnosis. He was also one of the most self-motivated people I've ever known, and wanted to continue working on building his business until his dying day. That said, while you can never predict this kind of turn of events, the idea of the bus factor is very well known. The entire business, active for 2 decades, hinged on a single man. All the knowledge, code, processes, exceptions, workarounds - everything - was in his head, and there was no time left to write any of it down.

From a personal stand point, I wanted to help. I could see that this was a place that, despite the unfortunate circumstances and any chaos that would be thrown my way, it was somewhere I could have a big impact. They had made it clear that I would be able to form my own team and develop myself in any direction that I saw fit. From a professional stand point, taking a step back, it could easily also be a volatile place, where at any moment way too much responsibility and pressure could fall onto my shoulders before I was ready for it.

They called me less than a week later for a second meeting - a video call - where they both offered me the job, and C showed me around the codebase a little. The code wasn't bad by any means; it was pretty modular in its design, and was split into dynamic libraries, which would allow for gradually rewriting parts without throwing everything out. I told them my concerns openly (though delicately), mainly highlighting that my ambition was to move into embedded, and this really wasn't it. In the end, I said I needed some time to think it through, and we settled on 2 weeks.

Things come in threes

During the interluding period, I had some 8 interviews with 5 other companies - 2 of which ended up making me offers. Two of the others were simply not a good fit for either party.

One was a startup hiring their 8th or 9th employee, and they were looking for absolute dedication to the cause. I work 4 days per week (32 hours), which is common in Holland. One day per week I look after my daughter at home, and it's one of the things I was absolutely not willing to compromise on. The founder of the startup didn't believe that people could work effectively this way. While he is welcome to his opinion, I wholeheartedly disagree. I'm certain that I produce better results in 32 hours than I ever did in 40. Aside from that dealbreaker, they also informed me that there would be a series of 5 interviews, with multiple technical challenges, including a "half-day" take home test, and another in-person test if I got through. Honestly, that level seemed so utterly ridiculous to me that I probably would have declined on that basis alone.

Another interview was with an embedded consultancy - one where the employees are shipped out to companies to work for anywhere from 6 months to several years. The interview went great, and I liked the directness of the owner, but it was just a little too far away travel-wise for me to really consider it.

The other unaccounted company was a large producer of 3D printers. I spoke to their in house recruiter, who - surprise surprise - tried to push me towards the webdev/application dev jobs they had open rather than the embedded position I was interviewing for. I politely pushed back and made my case - and I actually had the impression she got where I was coming from. She told me she would schedule my next interview with the engineering manager, but he was out with a mild case of corona. I never heard anything from them again. It's such a strange thing when you consider that even with dozens of candidates, sending a pre-written rejection message would take a few seconds to send. I understand why it isn't done, but I really think it's a bad look.

For the two that I ended up with offers from, one came via the unprofessional recruitment company. This company was also a startup, but with a few more employees, and a more concrete proof of concept. Without saying too much, they wanted someone to come in and write highly secure, smart card based applications for extremely low-level, low-latency control of a critical communication system. When I turned up to the interview, they made it clear they had done their research on me, my open source code, the projects on my YouTube channel, and they believed that from a technical stand point, they were sure that I would fit the bill. The interview mostly consisted of them explaining that this project is R&D, and that they needed someone who was ready to dive into a subject area that only a few people worldwide were currently versed in, using tech with little to no open documentation. Whatever information was out there would be hard to find, and under a pile of NDAs. I could tell they wanted to get a closer look at my character and my drive - to know if I was someone who could bash my head against the problem until something finally came loose.

Honestly, it sounded like a dream job. They were even willing to pay quite a bit higher than the (wrong) number the recruitment agency had given them, plus equity in the company. The founder was clear that he wanted to get the tech to an MVP level, and sell the company to one of the industry giants, who were already very interested in the idea. But it would be something I would be more or less working on alone. I asked him to send me a written offer, outlining all the parameters, and to give me some time to mull it over.

I was simultaneously speaking with the company I ended up joining - a power electronics firm, most active in the marine market, and already around for more than two decades. The first interview was with the engineering manager and the software lead over a video call, and was mostly introductory. They told me about the company, what kind of products they make, the markets they're active in, and what the job would consist of day-to-day. I told them about my background, passion, projects, and all the rest. The lead software engineer asked a few technical questions that were purely to filter out the those who really had no idea what they were doing - what kinds of architectures was I familiar with, how would I approach debugging, what kinds of protocols I had experience with. My answers were apparently satisfactory because within a day or so I was scheduled for an in-person meeting with the software lead and another veteran software engineer who had been at the company almost from the beginning.

They had told me that there would be a kind of coding challenge, but not one I should worry about. "Every one of us did something similar", the software lead told me with a smile. But of course I worried about it. However, I also had a very honest and direct vibe from the conversation, and had it in my head that if I didn't make it through, it would be on me rather than on the arbitrariness of the test.

Now I won't go into details about what the exact code was (because it's still in use, but after sitting down, a piece of A4 paper was slid over the table to me to assess. They told me that this was a simplified form of a real bug they had encountered in one of their products, and that I wasn't expected to necessarily solve it. They wanted me to read the code, speaking my thought process out loud, and highlighting what could potentially go wrong. I was - surprisingly - quite calm and even excited to start. Aside from it not being the usual medium that I would consume code in, grokking code like this is something I've practiced naturally over the years. I just started walking through it, saying what I saw, and stating assumptions as I built a mental model. They were communicative throughout the process, sometimes giving me information that would tell me whether my assumption was sound, and sometimes simply letting me continue without confirming or denying - but it didn't feel at all like a hostile environment.

It turns out there were really a few bugs, and I managed to identify two of them. After I was more or less done, they brought out a more detailed version of the real code and explained the real life context. I asked how they thought I had done, and to my surprise and relief, they said it was probably the best anyone had ever done on that particular problem!

I don't want to pat myself on the back here too much, but this is a tip that people might miss otherwise: It's fine, and even very useful for you as a candidate, to ask for feedback during the process itself. In an interview situation, the candidate is missing a lot of information. You might ask a question, only to be told that they're keeping their cards close to the chest - but this shouldn't have any bearing on the interview itself. If it does, that's useful information too, and might help you dodge a bullet where an organisation values secrecy and politics over communication and openness. In my case, it gave me a huge confidence boost that I carried forward into the subsequent meetings I had that day with various departments.

I left feeling great, and within a few days they had sent me an offer.

Knowing what is important to you is key

I had to make a choice between 3 offers: The robotics company, the communications startup, and the power electronics marine firm. This was a very lucky position to be in, but quickly also became the source of a new problem: Needing to figure out how to compare and contrast 3 very different organisations; projecting your life into the future and trying to see what fits. In my opinion, the key here is to understand what is the most important to you.

For some people, it's as simple as money. I had a very high offer from the communications company, albeit one with no pension. The robotics company had also all but offered to pay me whatever I'd asked for (within the bounds of reason).

I realised that, for me, four factors were going to be paramount:

  • Travel time / ability to work partially remote
  • A real work/life balance
  • Projects where I can develop myself and cultivate experience in embedded software
  • Having a group of smart people around to learn from and share knowledge with

I just couldn't see the robotics company fulfilling these - there were too many sticking points, and I didn't want the pressure of an entire business to fall on my shoulders. And while the communications firm would certainly be an interesting challenge, it would be one I'd tackle more or less alone. On top of that, I'd be working with technology and building skills that were not all that transferable. At the power electronics company, I saw not just a cast of talented firmware engineers, but also EEs, control systems engineers, and test engineers. I saw a company culture that values quality at every stage of the design and manufacturing of products - one with the stability and structure of 2 decades of running, where people have families, and work/life balance is encouraged. Perhaps most importantly, it was close to where I live - meaning I'd be able to maximise time with my family instead of spending it traveling.

With the right lens, the choice was easy.

The happy end

Making a career move can be a daunting process. I had experienced push back throughout the process by people who wanted to place me in a box based on perceptions and judgments made in mere minutes. I learned not to sabotage myself by offering the idea that I might not be qualified. But principally, I learned that concretely identifying the things that are the most important to you, and using them as a guiding light, from beginning to end, will ultimately lead you to make the right choices when the moment comes around.

Oh, and that I really dislike recruiters.


Many thanks to Nate, Void, and Greg helping me make this document coherent (and reigning in my over-zealous use of hypens)