Are You Ready to be a Professional Software Engineer?
September 10, 2020
Author: Dave CohenTechCareer
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:
- questions I ask my mentees to help clarify their job search
- a collection of resources I’ve found or made that helped my on my job search
Questions to clarify the 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.
- “Product-first” engineers are obsessed with using code to solve a user problem and they see code as just a means to an end.
- “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.
- Tips to Succeed as an Engineering Consultant - ASME
- Software Engineer’s dilemma: Work in a small Startup or a big Company? - Michael’s Coding Spot
- Startups vs large corporations: what’s right for you?
- Should You Take a Job With a Startup or Big Company? | Monster.com
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:
- Studying for technical interviews
- Working on a project
- 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
- 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.
- Did the project have a significant scope? Did it solve a unique need or were you following a tutorial?
- Did you write TESTS?
Career-related posts on this site
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.
- Tech Talk - How I’d Improve My Capstone Project
- Contributing a New Feature to Open Source: @sindresorhus/is
- How to ace your initial programming job screen
- Should junior developers work with recruiters?
- Reflections From a Coding Bootcamp Graduate
- Now Attending: Fullstack Academy
You might also like:
- Posts tagged ‘career’
- Posts tagged ‘coding-bootcamps’
- Posts tagged ‘computer-science’
- Posts tagged ‘open-source’
- Posts tagged ‘react’
- Posts tagged ‘redux’
- Posts tagged ‘sinon’
- Posts tagged ‘tech-talk’
- Posts tagged ‘testing’
Developer Roadmaps provides diagrams of technologies to be aware of across disciplines including Frontend, Backend, DevOps, Android Community, PostgreSQL DBACommunity, React, and more.
- 13 Common Technical Interview Questions (With Tips and Example Answers) | Indeed.com
- Most Common Technical Interview Questions
Networking - what’s effective?
- 66 New Ideas for Upping Your Networking Game - themuse.com
- Networking for founders - The art of having good conversations, improving your business, and helping others by focusing on relationships. - stripe.com
- http://thatjsdude.com Interview Questions for front-end-Developer
- Top 50 React Interview Questions and Answers For 2019 | Edureka
- 7 CSS Interview Questions and Answers | Indeed.com
- 30-seconds-of-interviews/README.md at master · fejes713/30-seconds-of-interviews - github
Interview - System Design
- GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
- Top 10 System Design Interview Questions for Software Engineers - hackernoon.com
Interview - General
- How to make progress while studying for coding interviews - freecodecamp
- How I got interviews at Google, Facebook, and Bridgewater and what I learned - freecodecamp
- 5 things you need to know in a programming interview - freecodecamp
- How I applied lessons learned from a failed technical interview to get 5 job offers - freecodecamp
- Most comprehensive list of interview questions of companies scraped from geeksforgeeks, CareerCup and Glassdoor - reddit
- 10 Questions to Ask in an Interview for Developers - lifehack.org
- How To Prepare For The Unknown On Your Next Coding Interview - pramp.com
- (16) How to: Work at Google — Example Coding/Engineering Interview - YouTube | https://www.youtube.com/watch?v=XKu_SEDAykw
- Technical interview with a Google engineer: Edit distance string comparison - YouTube
- REACTO: Technical Interview Prep the Fullstack Way - @sarahscode on Medium
- How I got 7 Job Offers in 8 Weeks (Part 1: Please Interview Me?) - usejournal.com
- Google Can Predict Whether You’ll Get Hired After 4 Interviews. Here’s How | michael-schneider on Inc.com