I Applied to Five Senior Full Stack Software Engineering in Five Days
A rant on getting jobs in the software world, but then actionable training materials and questions.
Posted on April 30, 2021
So How'd It Go?
The results were... less than stellar. 🚀 <-- read as: the rare rocket crashing to earth emoji.
My feelings are still a bit raw right now, so bear with me. I'm still hopeful and reevaluating opportunities for the future.
I also want to mention up front every team and person I spoke to at each company was a blast to talk to through the whole process. Just for the sake of anonymity, I won't mention any names of any sort.
A Painting of My Current Vibe
Imagine spending the last 7 years of your life honing your craft, only to fall short, and not just in a vague context, but to have it reaffirmed 5 times.
Imagine spending 3+ hours on interviews and code tests, per positions, again, only to be shot down every time.
Starting to think if I really am a "senior" developer...
Imposter syndrome is real right now.
😞 Ugh. All these thoughts really suck right now.
Why the Full Time Position?
"What's this?! I thought you were a full time creator and indy dev, Chris! You can't go to the darkside of the corporate world!"
I know, I know, and in a perfect world I wish I could continue to do this type of stuff, but it may not be viable for the immediate future. My current life plan includes a wedding at some point, and hopefully buying a house. All of this comes with the challenge of the whole double country thing (Austria / United States), not to mention that infamous COVID character that continues to run around ruining everything.
Anyways, when looking for a houses, I've heard I need to convince banks that I have a stable income. I've heard horror stories of other makers and creators (some of whom make multiples of what I do!), still being denied a mortgage because they are defined as having a nOn-StAbLe iNcOmE. Thus the motiviation for my search.
My requirements were:
- Companies using technologies I use and love (TypeScript, React, Python, C#, PostgreSQL)
- 100% Remote (Simply easier with my complicated Austria / United States situation)
- 100K+ USD Salary (I've been writing software for 7+ years now, and categorize myself as at the senior level. This is the starting salary for these senior positions)
- Job title somewhere along the lines of "Senior Full Stack" (See above bullet)
Ultimately, I applied to 5 companies that had very enticing job descriptions and matched this criteria.
In what could be considered a positive take away, only one company rejected me flat out. With the other four opportunities, I got the second-to-last stage of the interview process, which looked like a long format (1 to 1.5 hour) technical interview with multiple team members, including live coding, schema design, and other general technical discussions.
It's clear then that my failing point in each interview was exactly this technical interview stage. Let's get into that stuff!
"What is event bubbling? What are the differences between
I want to say a question about event bubbling was asked by 2-3 of the 5 companies, so it' my first one to highlight here.
Depending on the functionality you need in the browser, you could write your event handler higher up in the tree, as events will otherwise 'bubble' all the way to the root node,
html. This of course prevents a lot of memory usage as you
"What is HTML? Can you give an overview of its structure?"
HTML is essentially a tree of elements, with each element (except the root element) having a parent node, and each element also potentially having a child element.
Flux vs Redux
I've never used Flux so I couldn't answer this in my interviews. However, after doing some research, I can provide the following answers.
With Redux you can mention:
Reducers should be pure functions that return a new state. In Redux the state should never be mutated.
One main difference between Flux and Redux is that Redux has a single global store. With Flux you can have multiple.
"What does the following output?"
Starting from the inside and working out, spread of "1" is just "1", so we have:
It is then easier to see the outermost array has a length of
1 - so the entire expression evaluates to just
Essentially you should be able to recognize a forloop is O(n), double is O(n^2), things like that. Like many of the other questions, this is usually I don't worry about or need to consider in my day to day work. I'm much more of a guy to write clean readable code that fits the business functionality, where worrying about the Big O can come later if you actually run in to performance issues. (Hint: 99% of the time you don't!)
Looking at some of these questions here in my quiet studio, with plenty of time to think, a lot of these are no brainers, or easy enought to solve. But when you have 2-3 devs watching you, and you are thinking of how to word the answer exactly as the thoughts come to your mind, it sometimes feels like the difficulty doubles.
All in all, I'd say they are kind of dumb, and don't really reflect any real world work you do day to day as a developer. I didn't like most of them.
Not All is Lost
There are a few silver outlines from my first batch attempt:
- One company kept my information on file for any future offers
- One company said they would consider me for a more junior-level position, at 55K EUR (~66K USD) per year.*
- Most teams were quite impressed with my DevOps experience - managing all parts of an application, as well as automatically breaking out testing and production environments. However, it's natural that I have such strong skills in this area because leveraging powerful CI and CD tools is the only way you'll be efficient as a solo dev or member of a two part team.
- I now know what to expect at all stages of the interview process for these types of positions!
Other General Thoughts
I have some other ideas as to why I may not have 'fit' at these companies:
- Not enough experience developing on a big team or in corporate software culture. This is probably my biggest disadvantage. My first position out of university was about 3 years as a solo developer, purely because my previous employer didn't have the resources to higher n full stack developers. Today, my current daily team is only two people - me and another senior engineer. I could totally picture the hesitation from companies with larger developer teams, concerned if I would fit into them well.
- Not enough experience in general. I have a few full stack apps (corporate and private) under my belt. Perhaps its was not enough (and something my interviewers detected). Sure I know about event queues and dispatching, and things like a hook based API, but I've never had to. I've always used a service for something like that.
Perhaps I'm just too much a "jack of all trades" - I can imagine for one position I didn't really have the styling experience they wanted to see immediately, for one I didn't have the python knowledge, and for another the deeper DOM or HTML knowledge. But I'm a bit at a loss here - you can't realistically expect a full stack software engineer to recall every example of every language they've ever written, can you?
I'm pretty toasted from the past two weeks series of events, so I'm not sure I'm quite ready for another batch. There's two ways I guess I could go from here:
Continue to brute force applications until I find a match (which will heavily affect my ability to ship here on the blog for example, or on my other SaaS products.)
Try to do some fancy referral or something like that to get a position. (Feels disingenuous and not really the way I want to do it.)
Perhaps I need to re-evaluate my position and even talk to my current colleague about his thoughts (will be a hard one, I never like leaving a position for a variety of reasons, but at the same time I've never had reservations one when I get the feeling it is time to move on from a position as well.)
Hope you pulled a few tidbits out of this post, especially from some of the technical aspects. It certainly helped me organize my thoughts and think about the next steps I should take.