Are You Ready to be a Professional Software Engineer?

Updated March 21, 2021

Did you just graduate from a coding bootcamp, obtain a CS degree, or built an involved side project? How do you know when you’re ready to write software professionally?

This post has two parts:

  1. questions I ask my mentees to help clarify their job search
  2. a collection of resources I’ve found or made that helped my on my job search

There are many questions to answer that are specific to your situation and what you’re looking for.

If you had to narrow your focus to either front end or back end, which would you choose?

We can’t all know everything. Are you simultaneously weak in SQL and CSS? It’s a bit of a burden to be studying both. I made tremendous progress when I decided to focus my energy on just the front end. I stopped considering backend-only positions. If the position was full-stack, I made sure it was known that I’d be front-end focused. Sure, I’d read an article or do a few SQL exercises here and there, but I no longer pressured myself to “get good.” I controlled the communication to potential employers about what my strengths were.

If you had to narrow your focus to either product-first or code-first, which would you choose?

After reading this article, I realized that many people find the front-end/back-end distinction to be un-helpful.

  1. “Product-first” engineers are obsessed with using code to solve a user problem and they see code as just a means to an end.
  2. “Code-first” engineers are obsessed with the abstractions, architecture, tools and libraries in the code. Elegant code is the end.

I find myself on the “product” side of things. If you’re truly “code” first, you might be interested in more infrastructure-related studies.

Would you prefer to be at a startup, an agency, or a larger company?

This is a very personal decision and it would behoove you to do a little research upfront about different types of companies. Here’s an excerpt from a post on this site entitled How to ace your initial programming job screen that gives you a glimpse into why I stopped applying to agencies:

When the travel and client interaction weren’t right

An acquaintance of mine sent my resume to this company. The CTO mentioned that my acquaintance had just come back from a week-long trip to another state. He later asked if working with clients was “Yay” or a “Meh.” I gave a pretty lackluster answer. I’m fairly certain that was a dealbreaker for the CTO. In retrospect, the emphasis on travel and client interaction really doesn’t appeal to me anyways.

Resources:

How do you spend your time?

Managing time can be difficult when you’re on the job search full time. As you meditate on your strategies, make sure that the time proportions are spent in accordance to what you need to study. For instance, let’s say there are three major categories of activities:

  1. Studying for technical interviews
  2. Working on a project
  3. Applying to jobs

If you have 8 hours to dedicate to these tasks, divide them in terms of strengths. Here’s an example:

You have a great resume with at least one excellent project on it, but you don’t do well at coding challenges. Spend 75% of your time studying algorithms and doing practice problems and 25% of your time tweaking your resume and applying for jobs.

There is a danger to look out for when studying for technical interviews. It’s called “Tutorial Hell.” Read all about it:

How to escape from Tutorial Hell and never come back - DEV Community

What are your strengths and passions?

  • What are you good at?
  • What do you like doing?
  • Do you have a plan on how you can make a career out of these skills?
  • Do you like what future YOU would do every day?
  • What skills do you need to develop yourself further?

It’s ultimately up to you to decide your future and make a path to get there. Recruiters can give you a summary of the job options, but they don’t know you better than yourself.

Once you know the answers to these questions, you’ll be much better prepared for finding job opportunities that are a fit for you.

Take home challenges

Oftentimes, a company will require a candidate to complete a code exercise at home. They’ll take anywhere from 2-8 hours to complete, although some companies take a longer-term approach. You’ll receive a prompt with directions and you’ll be tasked with building those out in a working app.

Unless otherwise specified, make sure to:

  • Provide one and only one solution. This shows you value quality over quantity and the reviewer’s time. They’ll only have to review one solution. If you provide more than one it leaves more surface area to have your score reduced.
  • Make sure the solution is exactly what was asked for. Try to get clarification if you’re confused. It’ll be a strike against you if you solve the wrong problem or miss a detail. There are also risks if you add complexity and solve more problems - see above about the reviewers’ time.
  • Make sure you don’t implement your own solution to an already solved problem, i.e, don’t reinvent the wheel. If you have permission to incorporate a 3rd party library - do it. This shows that you value your time by spending the majority of it on solving the unique problems at hand.
  • Make sure your solution is very readable. Don’t play code golf. The reviewer will appreciate this essential aspect of writing code as part of a team.
  • Add a “read me” which includes a high level explanation of your approach, challenges you encountered, and decisions you made. This will show off your abilities to communicate in written English.
  • Include valid tests. Don’t bother to get 100% coverage. I’d say write 1-3 great tests that shows your ability to single out an essential domain to test. These can be unit, integration, or user acceptance tests depending on what would be most appropriate for the app. Explain your choices in the read me.
  • Nice to haves:

    • Try to write the minimum amount of code to make it work
    • add well-crafted JSDocs above each non self-explanatory function

Technical questions

  • Code Review - If someone were reviewing your code, what would you like them to address? What are the most effective ways to deliver feedback?
  • Pair Programming - Do you feel comfortable pairing with another developer? This could be whiteboarding and discussing ideas or coding out loud on a given problem.

Past projects

  • Did the project have a significant scope? Did it solve a unique need or were you following a tutorial?
  • Did you write TESTS?

Resources

I’ve written a number of posts that go into some of my experiences starting my tech career and the decisions that went into it.

You might also like:

Developer Roadmaps

front-end-roadmap.jpg

Developer Roadmaps provides diagrams of technologies to be aware of across disciplines including Frontend, Backend, DevOps, Android Community, PostgreSQL DBACommunity, React, and more.

Behavioral questions

Networking - what’s effective?

Interview - Front End, JavaScript

Interview - System Design

Interview - General