The standard for ‘entry level’ in software development has raised significantly, and a lot of new grads are caught off guard by these unwritten expectations. My goal is to educate those entering the workforce, or changing roles, on how to better prepare themselves for the future.
I broke the hiring process down to five sections: experience, application, resume, the interview, and the technical interview.
These days, every company is a technology company, and in most-population centres there are more development jobs open than eligible candidates. Simple common sense would determine that the demand exceeds supply, so getting a job should be easy. It is, if you are a qualified candidate.
We live in an era and work in an industry where the equivalent of post-secondary education can be accessed for free, anytime, and from anywhere. Going to university is not a bad idea, there are still plenty of good reasons. But understand you are entering a market where you are not only competing with your graduating peers, but every other person in the world.
A degree or a diploma is not enough. You also need relevant experience. Lucky for you, no other professional industry comes close to easily getting experience.
Training employees is expensive. Not only do we have to pay and wait for you to become productive, but we also have to pay a more senior employee, a lot more money, to get you up to speed. Training is important and belongs in every organization. A senior person teaching the fundamentals is a waste when the fundamentals can be learned for next to nothing. Anything you can do to reduce that upfront training cost makes you more appealing to an employer.
We could argue on end whether the responsibility of the skill gap is on education institutions, the candidate, or on the employer. I’m sure as the industry matures it will naturally close. Regardless, you should be doing everything in your power to get ahead, today.
At this point you should have a good idea of the job market. You should know what employers are currently hiring, the positions they are hiring for and the tech stacks they use. Have you noticed a pattern in the tech stacks used? Is there a clear winner that is universal between most of them? That’s a great starting point.¹
Sign up for an online course on that technology.² Finish the course. Now, be creative and build your own application/service using what you have learned. Then, build another one using all the things you did wrong last time around to improve it.
Next, find an open-source project to contribute to. What frameworks/plugins/packages did you use in your own projects, are there any open issues in those? Find the low hanging fruit, are there any spelling mistakes you can fix? Are any tests failing? Start a conversation with the maintainer and ask if theres anything you, as a rookie, could do. There are learning opportunities in even the smallest of issues.
This is what “looking for work” now looks like. Applying for jobs is not just filling out forms and emailing resumes. Between those applications you must be learning new skills and reinforcing old ones.
Always Be Coding.
Everyone knows the process. A resume gets you an interview. An interview gets you a technical interview. And a technical interview gets you a job offer.
What happens when “apply online” does not work?
Your network is key. Employers are always looking for good developers. Employers want to hire employees that work well together. If you come recommended by your peers, you get to bypass filling out online forms and updating your linkedIn profile.
What do you think is easier for an employer: Sifting through hundreds of online applications, or a warm intro from one of their top performers? “I think my friend would be a good fit for this role” is infinitely easier and more effective than “You have 452 new applications to read”.
Get involved in your local development or startup community. Don’t have one? Then start one. Be friends with your classmates and professors. Join the slack groups and message boards. Attend hackathons, conferences, tech talks, and industry networking events.
Resume / cv
Relevancy is important. Conciseness is important.
You want to be showcasing what you know and what you have done.
Do not lie. The hiring process is about building a relationship. You wouldn’t date someone that lied about their age. Lying about technology you know will be found out in the technical interview, any discrepancies will be noticed and your credibility and integrity will go out the window.
When a skill or technology is listed on a resume, I am expecting intermediate, or at the least — fundamental proficiency — in the subject matter. If you list Python, I am expecting you to have developed, released, or maintained multiple applications/scripts. If you just “took a python course” I am going to be disappointed and I will question every other aspect of your cv. Taking a python course is good, list that, but you don’t know Python yet. Also, there is no need to list irrelevant or outdated skillsets. Microsoft Windows or Microsoft Office? Congrats, you, and the rest of the western world.
If you are missing job experience, this is a great opportunity to list that self-learning you have been doing. What projects did you build as a result of those courses?
There are many great resume building resources out there. Above all, keep it simple. What have you done, what did you use, how long did you do it, and what do you want to do next?
The first real interview might be preceded by a screen. The screen is meant to rule out candidates so the interview team doesn’t waste their time. The screen is usually a call that attempts to establish if you are a real person, you can communicate in the organization’s primary language, and that you understand the position you are applying for.
The actual interview is about figuring out if you are a good fit. Workplace culture and cultural fit is the most important aspect in the hiring process. It doesn’t matter how smart you are, how much you know, how qualified or how much experience you have. If you don’t “fit in” you will not be hired. Does it appear that you work well with others? Are you someone that your future team want to be around the majority of their lives? Are you hygienic or unhygienic? Do you appear to grasp social norms and queues? Do you make people uncomfortable, or are you fun to be around?
The interview is your opportunity to demonstrate the value you can bring to our organization. And this is our opportunity to try and figure you out, and to dig deeper into your cv.
Care about software development. If you are trying to enter this industry with anything other than, “I enjoy developing software,” you are going to have a bad time. The industry is experiencing a gold rush: “I can make how much money if I move to the Bay Area?”. Apathetic candidates just looking for a job will not succeed. Will this prevent you from obtaining work? No, the market will fill its needs. But a bad attitude is easy to spot and if we are given two candidates — we are going to pick the one that’s stoked on writing code.
Be honest. When you talk about something you don’t understand, it’s not what you say about the topic that gives it away — it’s what you don’t say. If you don’t know something, say you don’t know. If you don’t know something well, try communicate your level of understanding. Don’t feel ashamed about what you don’t know, but be confident in the things you do know.
The Technical Interview
This is where you are on your own. It’s our last line of defence to verify you know what you said you know and to get an idea of what you are like to work with.
I could talk to you all day about the intricacies of Formula One race cars. Like how the front wing is designed so air presses downward, increasing the vertical forces on the tires, thus creating more grip and hence faster cornering speed. But put me behind the steering wheel and I would not be able to get it out of neutral. That is why we do technical interviews, if you can talk the talk, you better walk the walk.
Every organization does this differently. You might spend an entire day with several engineering teams answering skill testing problems or designing abstract systems. On computers, or paper, or whiteboards. You might be asked to submit a take home project. Regardless of the tasks, you should be prepared to do some work. There are many resources available for technical interview preparation, I would suggest going through them.
As a candidate this is stressful and highly uncomfortable, and everyone in the room knows that. Getting the right answer is important, but it is the least important. We are trying to assess you and how you work. How do you handle the awkwardness? Do you shutdown and panic? Do you ask for clarifications? When you don’t know something, do you ask? Can you break down complex problems into smaller, simpler ones? We want to know how you think, so explain your thought process.
In some cases, organizations will forego a technical interview in exchange for a probationary period — can you get up to speed and be productive in ~3 months? Yes? You can keep your job.
tl;dr: Be friends with other developers and get involved in your community. Be honest about what you don’t know, be confident in what you do know. Practice and prepare for your interviews, and remember your ABCs. Always be coding.
 A well rounded developer should have familiarity with the majority of these topics:
- a high-level statically typed language (C#, Java… )
- a REST API built using a framework (.NET, express.js, Spring…)
- a relational database (SQL Server, MySQL, Postgres..)
- a touch/mobile framework (Cocoa [iOS], Android, react-native…)
 I recommend taking a well reviewed course on a website such as coursera or udemy. While YouTube courses are helpful, sometimes their quality and longevity is questionable.