Trying to get a Remote Front-End Software Engineering Role in 2024 — Part 2: Self-Assessment

Maxwell Benton
12 min readJun 4, 2024

--

a ball of yarn about to be unravelled

Overview

Thinking about finding a new job is easily overwhelming. What sort of jobs should I go for? Are there new technologies I need to make sure I’m familiar with? How should I prepare for the interviews? How am I even going to get my foot in the door and get interviews? What if I’m actually not good at what I do, and have just been lucky so far?

I find this very anxiety inducing. As soon as I am juggling more than a few open questions in my head, I quickly want to procrastinate.

But, I’ve been in this state enough times now that I can recognize it. In general, humans can only hold around 7 things in our working memory at any given time. For me, that number seems less, but either way, when I’m trying to juggle too many things, in my head, I count them as 1.. 2.. 3… many. As soon as there are more than a few items, my brain groups them all together (at least, I think), and grouping a bunch of unknown things, each with their own potential stressors, makes them feel much bigger than they are.

That is the overwhelming feeling of the unknown, and it is often my main obstacle in front of achieving things — all sorts of things. It is possible to elicit this feeling on command — it is the feeling of trying to solve the New York Times Sunday crossword when you’re not an avid crossworder. A quick spike of anxiety and a strong urge to go do something else (oooo hey look, it’s my phone!).

The feeling can manifest ahead of any task my brain thinks is big— looking for a job, moving out of state, learning a new skill, building a garden, organizing the garage. I’ve experienced it many times, and even though I usually recognize it, it is still a hurdle.

The solution for me is often the same — find a loose thread and pull — identify any small first steps that can be taken to help unravel the anxiety. For a crossword, the first small step is trying to answer any of the clues you possibly can and use those answers to help with the clues nearby. If the task is learning a new skill, a good, small first step might be to find some introductory materials and start reading. If the task is building a garden, maybe the first step is pulling weeds. I’m not convinced that any one particular task to start is better than another at the beginning — what is more important is that you have a mechanism for starting.

When it comes to looking for a new job, writing seems to be a good first step for me. I need to get all the top-of-mind things onto a page, offload them from my mind, and, like the first answers in a crossword, use these as a starting point for further exploration. Roughly, the process I use looks like this:

  • Create a starting point. Open up a blank document on your computer and type out any relevant information that is bouncing around in your head. Writing by hand also works, but being able to copy, paste, and edit during this exercise is particularly helpful.
  • Brainstorm. I usually write out individual ideas and concepts as well as categories or topics that seem relevant. I may bounce around from subject to subject at this point, and that is fine.
  • Organize. Given the written data, map data and categories together into a structured set of topics. Sometimes naming categories first can also help spur on additional ideas.
  • Rest. Walk away for a little bit and enjoy the feeling of relief now that you’ve captured some of those anxious thoughts.
  • Review and refine. Come back to the list and remove junk, re-categorize, rephrase, and revise.
  • Iterate. Repeat the last two steps a couple of times until your juice feels squeezed.

I won’t show the whole process as I go through this exercise— the full record is in the edit history of this document. Instead, I will show you the result — a rough list of categories related to where I think I currently am in my career and where I want to go; my goals, experiences, skills, and areas of growth included.

This list isn’t a plan. It is closer to brainstorming than anything else, but it will serve as a starting point to help me figure out what to do. It also isn’t interview prep, but when I do start preparing for interviews, I will pull from this list to put together answers for some common questions that may be asked.

Note: I’ve omitted direct references to where I work as I am still employed there. I will generally refer to ‘the company I contract for’ instead.

My Self-Assessment

Primary Goals

I want to secure a remote software engineering position that:

  • is fully remote or remote-first with minimal travel
  • offers benefits that are good for my family
  • pays more in overall compensation than what I currently make
  • is a step forward in my career

Long Term Goals

  • End up in a job where I can maximize my time with my family
  • Mix my enjoyment of programming with my other interests in a financially lucrative way
  • Build gardens and a food forest around my house
  • Learn how to build robots
  • Achieve full financial independence

Experience

Ordered by relevance:

  • 1 1/2 years of experience in product architecture and engineering leadership roles, designing web applications, leading the engineering work to create them, and training and mentoring a team of junior and senior engineers
  • 2 years experience as a senior front-end engineer, maintaining and updating live products, assisting in the launch of new products
  • 1 year of engineering experience focused on building tools for maintaining and serving open-source software engineering curriculum content
  • 3 years of designing and writing software engineering curriculum content for JavaScript, React, Ruby, and Rails
  • 1 year of experience teaching JavaScript, React, Ruby, and Rails
  • 6 years of experience in retail management
  • 10 years of experience working in various customer service roles
  • 4 years of experience tutoring and teaching

Notable Achievements in Programming

  • Designed and led the engineering of a new web application rolling out this year to business customers in Q3 of 2024. The application acts as both an adapter and user interface between an online checkout product owned by the company I contract for and the new version of a payment processing product owned by a competitor. This app provides a way to maintain a consistent, backwards-compatible interface for customers already using my company’s checkout product while the internal requirements for processing a transaction change. This work took around six months and required frequent communication and coordination with engineering and product leadership, UX/UI teams, and third-party stakeholders. Time was limited and this work involved a third-party product in early release, requiring a very agile approach. Designs had to be frequently revised and often changed just before engineering work was scheduled. As a result of this, I wrote the stories for this project while also being heavily involved in the engineering and standing up the CI/CD lifecycle.
  • Designed and prototyped a new online checkout product now in the process of full development. This product can be embedded into the checkout pages of online merchants (or the payment service providers that often handle checkouts), allowing merchants to provide a more seamless checkout experience where customers never have to leave their page. This work took around six months, including multiple rounds of prototyping and demonstration to product teams and executives.
  • Designed and developed a custom post-messaging package in the spirit of post-robot for maintaining a specific messaging contract between windows that are not controlled by the same party (one window owned by the company I contract for, and the other owned by a business partner).
  • Designed the front-end implementation of a post-cookie consumer recognition solution in response to third-party HTTP cookie limitations applied by Safari and soon to be applied by Chrome.
  • Assisted in the engineering of a major product initiative, now live on shop.com and other online retailers — the launch of a pay-in-installments service similar to Klarna or PayPal. This work involved the launch of multiple web applications that worked in concert with third-party lenders.
  • Assisted in the launch and ongoing feature development of an online checkout product, now live in 35 countries. This product is a JavaScript SDK that an online merchant or PSP can incorporate into their checkout pages, enabling a secure card-on-file type of experience directly on the merchant’s page.
  • Maintained and extended an SDK aggregation product designed to abstract communication with the third-party JavaScript libraries of different credit card networks.
  • Designed and created a content migration tool, github-to-canvas, for automating the transformation of curriculum content written in markdown files on GitHub into full courses on the Canvas learning management system.
  • Wrote and maintained educational materials on the fundamentals of JavaScript, React, Ruby, and Rails. These materials were used by the Flatiron School as the written curriculum of its software engineering boot camp.

Technical Skills

  • Web development
  • Service architecture and web application design
  • Translation of product requirements into application designs
  • Translation of application designs into project roadmaps and stories for engineers
  • Debugging and troubleshooting
  • Technical writing and research
  • Source control and git

Languages and Frameworks

  • JavaScript
  • TypeScript
  • React
  • Vue
  • Ruby
  • Rails

Non-Technical Skills

  • Project management
  • Leadership
  • Written communication
  • Editing
  • Documentation
  • Teaching and training

Likes

  • Learning
  • Early childhood education
  • Gardening
  • AI
  • Robotics
  • The future
  • Fixing things

Dislikes

  • Event planning
  • Return to office mandates
  • Ticks and mosquitoes
  • Breaking things

Strengths

  • I am calm and patient. In general, I tend to be on the quieter side and am comfortable with silence. Working with customers and students for many years has also helped me to develop a good amount of self-restraint, even in stressful scenarios.
  • I like teaching others and I’m pretty good at it. I enjoy listening to others and helping them work through challenges. I do not mind repeatedly re-explaining. I learned long ago that teaching is one of the best ways to solidify your knowledge of a concept and will help identify where your gaps in understanding are. I also find a lot of satisfaction in being a force multiplier through teaching.
  • I love learning. When I lived in NYC, I was always thrilled when I was walking around an unfamiliar neighborhood and realized I had been there before, just underground, on the subway. I always liked this because the realization created a bridge between two disconnected parts of my internal map of the city. There are equivalent feelings when it comes to learning. I have an internal map of JavaScript, for example, and I feel comfortable enough with it (and its peculiarities) that it feels exciting to walk new ground and bridge it back to what I know. I want to keep improving and honing my skills because it is fun.
  • I love programming. I like to draw and paint. I like to write. I love programming. For me, coding, particularly for the web, is just as expressive and complex as drawing, painting, and writing. Maybe more so, in that programming allows the possibility of creating things that take on a life of their own.

Areas of Growth

  • I like to be solution-oriented, but I tend to start thinking of solutions for a problem before I’ve considered the validity of the problem. Something I’ve learned in my current role is that sometimes the best answer to a request is to push back and say No. On a live B2B product, customers can sometimes make requests that are counter to the product’s design or use case. Accommodating these feature requests may resolve an immediate need, but can cause bigger issues in the future. Every accommodation will likely result in future maintenance and legacy support. Similarly, sometimes, a bad feature decision can force a product down a specific path that will be costly to get out of. These are the things I try to remind myself of now, but it takes practice.
  • I am too easily swayed by time pressure. Development timelines can have very short runways and missing deadlines is not good. However, shipping bad code is usually worse. A few times, I’ve caught myself feeling the pressure to approve a piece of work (a ‘pull request’ in the biz) simply because there is no more time for feedback. I try to remember what some of my leaders have conveyed to me — your stamp of approval carries weight and being careless with it devalues your approval in the future. It is generally better to ship late and learn from the experience than ship something that will break in the hands of your customers.
  • I avoid discomfort. This plays a role in my other two areas of growth, and goes back to the idea of overwhelming anxiety, too. I think this is probably a natural thing — everyone wants to be comfortable. However, something that is clear to me now is that growth generally only happens from a place of discomfort. Progress requires voluntary movement out of a comfort zone, and I am actively trying to get better at recognizing when I am avoiding a task simply because it is not comfortable.

What I am Out of Practice In

  • React — I’ve been working mainly in Vue for the last few years, with a couple of small forays into React. I know enough to talk about the basic concepts and throw together a small application. I’ve learned a lot about the overall process of programming a web application in my current role, and I need to now apply that knowledge to React.
  • Ruby and Rails — I like writing in Ruby and I’ve always felt I didn’t give Rails enough attention as it is a very powerful framework. Given React’s popularity these days, however, I think I may not have a lot of time or energy to revisit unless I find a specific company that uses Rails.
  • Interviewing — when I worked in customer service, I interviewed a lot for promotions, and eventually conducted a lot of interviews as a manager. However, the substance of interviews for software engineering jobs is much different. Interview styles vary from company to company, and there is usually a technical portion. I’ll need to prepare a lot for these.

What Sort of Projects Do I Want to Work On?

I would love to get involved with something that advances access to education or is related to something else I’m interested in. If that isn’t available, I want to work on projects that will help me advance my skills or put me in a good position for future career moves.

What Sort of Projects Do I Not Want to Work On?

Applications that cause harm or that are predatory.

What Industries Do I Find Appealing?

Tech, education, gaming, robotics, entertainment, manufacturing, agriculture, anything locally oriented.

What Industries Do I Find Unappealing?

Weapons and chemical manufacturing, oil & gas, real estate.

Company Size

It could be pretty fun to get involved in a smaller company, but I have grown to appreciate the structure and stability of larger companies, so I think I’d prefer them. Given the job market, I also feel like I’ll have a better chance of finding open roles at companies that have larger engineering budgets. This isn’t a deal breaker, though, so we’ll have to see what is out there.

Ideal Features of a Company I’d Like to Work For

The company has a remote-friendly culture. I think people should be able to work wherever they feel most comfortable. I can understand why some companies feel the need for an office-first culture — for example, some things come for free in the office that take conscious effort on distributed teams. However, I know I work better when working remotely, and remote work has fundamentally improved my life.

I don’t live around a tech hub anymore and the idea of regularly flying to work just to fulfill a days-in-office requirement sounds ridiculous. I guess I would consider it for a position that was worth it, but it isn’t where I’m looking first.

The company is keeping up with front-end tech trends. I’ve been putting my eggs in the front-end basket for the last few years and I like the work. If I can continue to specialize in the area, I think it would be good for my career. With that in mind, I doubt I’d be interested in working for a company that is not interested in newer front-end frameworks. Given the current trends, it seems like I should be locking in a deeper understanding of React more than anything else.

The company is healthy and growing. In every job I’ve worked as an adult, I’ve aimed to grow within the company. I like the challenge of new roles and of taking on increasing responsibilities. I want to advance my career, and, in my experience, promotions are the easiest way to make progress. Working at a company where there is not much growth means the main way to grow my career is by leaving to work somewhere else.

Companies I Think I’d Like to Work For

Considering the above, I searched around the web and wrote down the companies that I think I’d like:

  • Airbnb, Atlassian, Block, Cisco, Coinbase, Confluent, Crowdstrike, Discord, Figma, GitHub, Hubspot, Indeed, Microsoft, Netflix, Nvidia, Pinterest, Slack, Spotify

I’m sure there are other companies I’ll come across in the next few months, but I think these are plenty to focus on as starting targets.

Conclusion

I could keep writing but I think I’ve achieved my goals with this self-assessment.

  • I’ve unloaded some of the things in my head
  • I’ve written out some general targets for my job search
  • I’ve unraveled much of the ball in my head that felt like a boulder

Now that I’ve given myself some space to reflect on what I’m trying to do, it is time to work out how I am going to do this.

It is time to build a plan!

--

--

Maxwell Benton

I am a senior software engineer on the look out for new opportunities. In this blog, I'll be sharing a bit of the process required to land my next job