I’m a Hiring Manager. Here’s My Advice for Software Developers Entering the Job Market.
Recently graduated software developers sometimes ask what my company is looking for in an entry-level hire. I can answer that question in one word: potential.
It is much easier for us to hire for senior or highly specialized roles because in these roles a candidate’s achievements paint a picture of their capabilities and what drives them. But entry-level tech workers are a blank slate with short resumes. Identifying entry-level developers who are likely to become an integral part of the team is an art and a science.
How Hiring Managers Assess Potential
I’ve seen a lot of managers skate around this issue by leaning on attributes that are easier to measure: “Did they attend a top university?” “Did they intern at a major tech company?” Putting aside the negative societal implications of that approach, it’s a poor predictor of success — one which would have excluded some of the brightest engineers I’ve been fortunate enough to work with.
If you’ve recently graduated from a top 20 global university, congratulations — you’re likely to find a plum job. But if you’re interviewing with me, it’s not a foregone conclusion you’ll be hired.
There are characteristics that are more predictive of success than access to education, and you don’t usually need a fleet of diagnostic tools to identify them. It comes down to an open-mindedness for learning and a passion to gain a deeper understanding about the internal workings of technology.
It is easier to exhibit these traits today than in the past. Most people have a computer network running at home (Wi-Fi, mobile devices, gaming consoles, even doorbells and lightbulbs are all connected) — have you tinkered with it? Everybody carries a smartphone in their pocket. Have you built something for it?
And are you up to date with recent trends and technology tools? What do you like about them? In what situations would you use a certain technology and why? Have you contributed to an open source project or maybe even created one yourself?
Also, the basics are still important. Even though technology is changing rapidly, most of the time it is layers of abstraction on top of existing fundamentals. Networking protocols, networking layers, load balancing algorithms and solutions, security best practices, filesystems and CPU architectures are great places to start. A strong understanding of any of these fundamentals will enable a new team member to grow.
For example, if someone knows how to work with Linux-based VMs, they will easily figure out how to work with containers, be it Docker or containerd. Add strong networking knowledge on top of that, and Kubernetes is a breeze.
Nailing the Interview
Look into the background of probably 90 percent of the engineers whose work you admire, and there was a job interview early in their career that made them very nervous. My advice is to pay attention to more than just the technical requirements of the role.
Even as a developer, soft skills matter. New tech graduates — like new graduates in any field — need to be great listeners. I also value follow through and a willingness to be part of a team and learn. In short, I’m hoping to see aptitude, initiative and humility.
True story: We were interviewing a candidate for an entry-level role. One of my engineers asked him a question about containers, and he did not know the answer.
The next interview was scheduled for the following day with another one of our team members. The second interviewer asked a similar question about containers and the candidate not only answered properly but was forthcoming and clarified that he was asked a similar question the day before and looked into it afterward, due to being curious about the technology.
It impressed me. Taking the time to educate themselves, but also being honest that they did not know the answer before — it left such a positive impression on me. That person is now a member of our team.
Succeeding at the Job
After you land that first role, you’re not out of the woods. You still have to prove yourself and fit into the team’s culture. Chances are the team has certain structures in place, like processes, tools, responsibilities, and pace. These structures constitute the framework under which the team’s priorities and work style are set.
Entry-level workers should try to observe how it all comes together, and not rush to judgment if the team operates in ways they haven’t learned about — there might be a reason why adaptations to accepted best practices are better for that particular group. You should adopt recommended tools, write code in the existing style guide, and generally follow the team’s heartbeat.
Critical thinking and problem-solving are crucial. If the role requires coding, programming languages do not matter that much — clean, concise thinking does. Junior hires need to make sure code can be read and extended by other people. The team’s output is more important than any one person’s.
Be self-driven and look for ways to add value. If there are open tickets on a bug tracking portal, offer to investigate a few. Even if you cannot find a solution, you’ll learn from the experience.
It is also vital to be able to give and accept feedback. Being adept at giving and accepting feedback without hurt feelings can help propel you into management roles.
Finally, you should not hesitate to ask lots of questions. It may feel silly for a moment, but knowledge is forever. Especially coming in fresh out of school, people will expect your curiosity.
It’s a great time to be a software developer. Follow these steps, and you’ll be on your way to a great career.