The Hallmarks of Successful Graduate Software Engineers


 Last week I sat down with some Graduate Software Engineers and discussed what we were going to do for 2021, how I plan to ‘advertise & vet’ our applicants.

It started with some of the characteristics and ‘hallmarks’ I look for and have seen which has led to successful Graduates in the past, and what they should be looking out for at each step of the way.

After rattling off a few of my points I questioned if they thought my approach and expectations were fair and understood. These points form the basis of this article to be shared, considered and implemented if you are considering a career in Software Engineering.

The Application

image of an application icon

Cover Letter

I am sure you have heard this over and over again, “Make sure you have a cover letter”, but let me expand on that. Firstly, when it comes to applying for a position, there is a tonne of what I would regard as ‘the spammers’. These are clearly people that are going for the quantity over quality approach. A typical giveaway to these individuals are:

  • No Cover Letter
  • A Cover Letter addressed to another company
  • A generic cover letter full of ‘stats and facts’ — “I had a sales increase of 300%“ — when the job isn’t sales

What to look for in a Cover Letter

You introduce yourself as a human being. Right from the get-go, “My name is X and I am passionate about Y”. I have now connected your name with a personality. It really doesn’t matter what Y is either, who am I to tell you. But now I know that you care about something. If there is some connection you have made from that to the company you are applying for you are instantly getting a head start… I haven’t even looked at your CV yet.

The Cover Letter should show the ‘why they want to work for the company’ based on what they are interested in, and what the company has to offer. From there, touching on personal interest areas (even outside of technicals), side projects, university paper experiences e.g. “I did a Data Science 101 paper at university and fell in love with it”.

Basically, your cover letter shouldn’t ‘sell your skillset as a commodity’, rather show your personality and show you as a human being.

Image of a Resume

The CV / Resume

The CV can often be an interesting portion. One thing to understand as an applicant is there is a large likely-hood your CV will look like everyone else’s if you were to just add your education.

The problem with Universities is they ultimately make cookie-cutter copies of their alumni. Sure there may be variation in grades, in specific papers or Majors, but the reality is, they are much the same.

What to look for in a CV / Resume

An Introduction. This should be different from that of the Cover Letter, this is more generic and mainly speaks ina short sentence the generics about yourself.

“Throughout my time at university, I have had a growing desire to work in the field of Computer Science, my time at university has taught me the importance of time management and the necessity to discuss and consider solutions before running into them head on.”

Appropriate Skills.

Don’t list papers ranked by grade top to bottom. If the company you are applying for is heavy in Data Science, you should put a couple of relevant papers or projects associated with that down, but don’t go too heavy.

Projects, Projects, Projects.

Image of githubs logo

This is the big one, in fact. This might be the single most significant thing I look for and potentially the biggest trademark of Succesful Software Graduates I have seen. If you want to instantly put yourself above other candidates, do quality projects. Open a free account on GitHub and get active. If you can show multiple projects under a single ‘active’ GitHub account, this will allow the business to explore areas in what you have done which you may not even realize is significant.

What is a ‘quality’ project?

A quality project is one that is obviously not a tutorial. The amount of React Todo lists I have seen makes the mind boggle. While this may should a willingness to learn a language and ‘do tutorials’, the reality is all this shows is you followed instructions.

Extending on tutorials is good. Going off-road and doing something with that skill to try something new and interesting is gold.

The best quality project I came across was a Graduate Software Engineer applicant who was passionate about the Te Reo Māori (the indigenous language of Aotearoa, New Zealand. They had used the Google Maps API to rename all of New Zealand’s street names to their Te Reo Māori equivalents. In reality, this wasn’t necessarily groundbreaking work. But from that project alone I got more information about the candidate than any other material they provided.

Let me explain.
Firstly, I am from New Zealand. In New Zealand ‘Te Reo’ is one of our three officially recognized languages, although isn’t translated onto Google Maps. The fact that someone took the time to take something like that, and use a newly learned skill to further the ability to do so and raise awareness of this fact was truly special. It spoke to the type of person they were more than any other project I have seen.

The Take-Home Test.

Image of test tickbox

Chances are, you will be given a ‘take-home test’. Not all companies do this, however, they are pretty commonplace.

When it comes to the take-home test, unless otherwise specified, do it in the language you are most comfortable in. Don’t try to ‘show off’, read the question and requirements carefully, and satisfy those needs.

Check whether they give you hints in the questions around ‘what they as a business deem important’ when it comes to code. Readability, Scalability, Simplicity, Testing. Some of these words may pop up in their spiel regarding the code they are wanting to see.

Make sure you include comments in your code where significant logic takes place, and make sure to use good naming for functions with the adequate abstraction of logic into functions, but don’t go overboard. If you find yourself doing numerous if statements throughout your main functions, consider if some validation functions could be applied.

When testing, make sure you use your functions from your code. If you find yourself needing to duplicate logic into your tests, this is a quick sign your logic should be abstracted into a function.

The cleanliness and confidence you have with your code are usually quite clear to see.

The Interview

An image of an empty chair
Photo by Daniel McCullough on Unsplash

If anything, this should be the easy part. The reality is, you have frontloaded all of their expectations of you around who you are as a human being and provided you haven’t lied about it. Now it’s just about backing it up.

The face-to-face interview will likely have two portions. A ‘more about you’ questioning section, and potentially a technical section either hands-on coding or technical questioning.

What to look for in an interview.

Honesty. The reality you are not expected to know everything, nor should you and if you pretend or think you do… you will likely not get the position.
The best thing you can do is be honest in your capabilities to which point if you don’t know how to do something when asked, or what the answer is to a question, say so. Furthermore, if you are genuinely curious about what the answer might be, ask them to tell you and pay attention.

A quick indicator as to whether a Graduate is likely to be successful or not is their ability to remove their ego from the equation, understand what they know and what they don’t, but have a desire to better themselves.

A recent success story of a Graduate applicant was that on paper they were not the best person, their take-home test by no means was the best, however when it came to talking through their test and extending upon it, they were able to take the advice and critiques back in such a way that they updated their code perfectly to what had been described.

Play to your strengths

Be sure to lean on your strengths. You will have some you are likely aware of. When you get to the conversation that covers these areas, make sure you elaborate on them, giving an example case where you have exercised that strength to an applicable purpose you could do so working as a Graduate Software Engineer.

The key reason for doing the technical take-home test in a language you are most comfortable in is often during your face-to-face interview you may be asked questions around why you used a specific language feature, or perhaps you may be asked to extend the logic on the spot.

Your ability to confident while doing this in front of a group will come off much better if you have confidence in the language you wrote it in.

What businesses want

The best thing a business can get out of interviewing a candidate is a perfect picture of what an individual is as a human, their strength and weaknesses in both soft skills and technical skills, and a solid understanding of where the individual’s passion lies. This enables a company to invest the right people in the right areas knowing that their efforts will be well received and to maximize the success of their staff.

If the business understands this, and you fit what they are looking for. You’re in.

Your First Year

Image for post
Photo by Christina @ wocintechchat.com on Unsplash

Your first year in a company may be the most important.
It sets your intentions and provides you with a stage to push forward. A piece of advice I give every Graduate Software Engineer on their first day is this.

Being a Graduate Software Engineer is a super power.
You are expected to ask questions. Any question.
When you ask for help, people will appreciate it.
When you do things you will later find boring, you will love them.
Enjoy your time knowing you are a Graduate Engineer and that awesome!
Be a sponge and learn everything you can.
Don’t say no to opportunity and surround yourself with people you respect and want to learn from.

Things to look for in Successful ‘First Year’ Graduates.

The reality is, while many businesses have Graduate Programmes and may take in hundreds to people, not all Graduates are ultimately equal.

The ability for people to take the advice above and truly apply it has shown significant success in separating the excellent Graduates from the bulk.
The thing, much like a university. People can follow the rules. Follow a program and do as they are told however to separate yourself from the bulk, apply further. Do not rely on a Graduate Programme to tell you where to go and when to go there. Build a network with the staff you are working with. Identify Senior staff who people tend to gravitate towards for questions by fellow Senior staff. Befriend them.

It is the ability to self motivate to follow your passions that will set yourself up to huge success.

Stories of Graduate Software Engineers volunteering to present their learnings around technology or do a demo on a piece of code they found interesting and optimized to their peers over lunch is not uncommon with ultimately successful engineers.
Volunteering to facilitate an Agile meeting is not uncommon simply so they are learning and see how to manage a group.
Typically these duties and expectations are left out of a classic ‘Graduate Programme’ roadmap, but it is these things that show your desire to push and apply in areas you have discovered you wish to grow.

To Sum it up.

The aim of this article was to provide some real value and real-world hallmarks of Successful Graduate Software Engineers.

The thing is, more and more in the technology space we no longer wish to work with robots. We want to work with human beings, those who are curious, those who have their strengths and weaknesses and play to them. Passionate and excited people of all ages and stages in their career are now becoming normal and it is your ability to show this in an honest way that will set you up for success.

One final point.
These hallmarks will never change.
All of these traits and hallmarks should live with you throughout your entire career. This isn’t simply the ‘Hallmarks of Successful Graduate Software Engineers’ but those of any Successful Engineer.