Preparing for a Job Interview as a Programmer

After many years of studying, the next thing is to get that ultimate job that you have been working so hard for. In order to be well prepared as a developer who is entering the work life, here are a few pointers needed for you to outshine your competitors and get that job you've been dreaming of.

In this article we will explain how to prepare for that big day, what happens in the actual interview, the different views of both sides - the prospective employer and you as an employee. We will also have a look what happens after the interview.

Preparation

So, you have received that letter of invitation to take part in an interview - congratulations, that's exciting! You have achieved the first level. The next step is to prepare for the interview.

• The company. It's always a good idea to know more about the company you're interviewing with - Who are they? What do they do? You can almost always find this info on the company's website, which is typically supplemented by a page about the philosophy they follow. Also, find out where the company is located (or wherever your interview is being held) so you can tell how much time you need to travel to get there. Google Maps or OpenStreetMap are always the best places to find out this information.

• Presentation. When the day of the interview day, do yourself a favor and be presentable. Pull out your best! Presentation tells the employer that you are serious about what you do. It tells them you take yourself seriously and therefore you will also take their job seriously.

• Punctuality. It is very important you arrive on time at the interview. Rather, it is better to get there 15 minutes earlier and wait than to be late. Again, this tells employers you take your work seriously and you will not give them problems with punctuality once they employ you.

• Work samples. Gather any projects e.g. code/work samples you have done before and take them to the interview. Employers like to see what kind of experience you have, so it's always best to gather a few of the projects that you have, even during studying time - anything at all that proves you have knowledge of the work you are applying for. Because programming is such a hands-on job, employers like to know if they will need to train you extensively on the job.

• Have printed copies of your documents with you. It may be necessary that you have to look up on dates or duration for past jobs that come up in the interview, whom you worked for, an address, etc.

Your CV could contain the following information, among other things:

• About you (name, address, phone, family status)
• Education and certificates (RHCE, LPIC, Comptia+)
• Qualifications (operating systems, programming languages, further knowledge and technologies)
• Languages plus certificates if available
• Hobbies and interests
• Memberships and associations
• Contribution to open source (conferences, hackathons, projects)
• Visibility of code and knowledge (e.g. via GitHub, GitLab, Stack Exchange, Sourceforge, or your own blog)
• Work experience
• References
• Project feedback
• Publications (published research, your own blog, newspaper articles)

Certificates and references from former employers show your counterpart about the quality of your work. In many countries - like the US, Switzerland, etc. - it is expected to name the contact persons you refer to. It is common that they are interviewed about you to gain further information or reference.

• Clean up your social media platforms. Any offensive comments, political comments, or explicit material should be erased. This type of content lessens your experience and your chances of getting employed.

The Actual Interview

The most common first question you will encounter is usually something like "Tell me more about yourself?" The reason why employers ask this question is because they are trying to understand who you are, both personally and professionally. They want to know the person they are about to possibly employ is all about, and what interests you. Employers are looking for someone who is going to bring something to the table - a team player.

You should be able to demonstrate at least a minimum:

• Why are you here, and what made you want to apply? Why are you interested in their organization?
• What sets you apart from other applicants, and what are your strengths and weaknesses?
• What other attributes do you have that can be valuable to the company?

Employers also would like to know that you are a vision carrier with enthusiasm, and you are not just there to add to the numbers, but would like to grow with the business. The better you can connect your background and your knowledge to the job, the better for you. Furthermore, this leads to other work-related questions that help to assess you in a better way:

• Can you work under pressure?
• How do you interact with other people?
• How do you deal with conflicts? (This may be in or out of the work environment.)
• Have you ever been involved in legal issues?

At first sight the points named above may sound rather formal but these qualifications are as important as your IT knowledge.

Coding Part of the Interview

Be aware that your prospective employer will likely prepare one or more tasks for you. There are no strings attached behind this but to find out what you know, how you handle a situation, and how you work through problems. It typically reflects a real task that you may encounter at this job:

• A programming task, and finding a solution to a problem
• To evaluate an existing solution, and propose an improvement
• To analyse code, and to detect and to resolve bugs
• To rewrite code in a different programming language
• To compare a problem and give an according solution
• To describe how you would solve a situation in a project
• To give a time and manpower analysis how long it may take to finish a task

Here are some examples of problems that come up in these interviews:

• You are given an XML file containing data, and the question is how to make both the XML data structure and the data available in an relational database.

• You are given two revisions of the same data structure, and the task is to adapt the datasets to the latest revision of the data structure. You have to figure out the changes, which elements of the dataset to keep, to add or to remove, and how to transform the dataset.

• Find duplicate elements in a list, and leave only unique elements.

• A backup system is set up to save the contents of the directories /home, /var, and /usr of a number of Linux desktop systems to a remote server. Do you agree with the current backup strategy and if not, which changes do you suggest?

• What does the following code snippet do:

places = []

with open('listfile.txt', 'r') as filehandle:
for line in filehandle:
places.append(line[:-1])

print (places)


Practicing coding problems that you may encounter in a programming interview is extremely important. This process can be a bit stressful since the typical programmer doesn't have someone looking over their shoulder and they usually have many resources readily available. To prepare for this, try out a service like Daily Coding Problem to get used to the problem format and to see the many types of problems you may encounter.

Expectations as an Employee

The interview consists of two parties, and your questions are equally important. To get familiar with the company, find out what the company is like, and what their vision is, or way of thinking (culture).

• How are they organized - deep, or a rather flat hierarchy?
• Who is part of the team? Do you know the people who work there?
• How long has the company been in business?
• What exactly will you be working on?

You should be able to answer the questions listed above, or at least to know your expectations - what you expect, tolerate or disagree with. It helps to have knowledge about these points:

• Your ideal workspace / working environment (atmosphere, noise, smell, space, light, organization, connectivity, colours)
• Your preferred working times to be productive
• The working methods you are familiar with, and that work for you (ex: Kanban)
• The programming styles and methods
• The basic principles and algorithms (sorting, comparing and searching)
• How to document your work
• How to use a revision control system like CVS, SVN, or Git
• Finding and evaluating information

Understanding your own personal preferences and what will be expected of you by your potential employer will make the whole process much easier on both you and the interviewer. Ask questions and discuss the type of work environment you'd prefer.

Do's

• Turn your cellphone off.
• Take any docs that you think might interest the prospective employer that are related to the position you are applying for.
• Remember the name of the person who invited you.
• Answer clearly, and get straight to the point.
• Pay full attention to the person you are speaking with - keep eye contact.

Dont's

• Do not eat chewing gum.
• Do not arrive late.
• Do not touch things, or fidget.
• Do not try to win buzzword bingo with your interviewer. Talk about only the technologies you fully know - in case you get tested. It is not a weakness if you do not know about certain tech-languages. People appreciate if you are honest and say exactly what you know.
• Do not say anything negative about your previous employers.

After the Interview

So, how do you find out if you got the job? Normally companies will let you know when you will get response about the results of the interview, via email or phone call. However, in countries like South Africa it is very common for companies to go quiet. Reason being they have a thousand people they have interviewed and they would rather spend time responding to people who have made it into their short listing.

A lot of the time companies will let you know if there is need to follow up either by calling them or emailing - however it is common that if you haven't heard from a company after two weeks of the interview it only means your application was not successful. In contrast, in Germany and Switzerland it is common practice to give you a feedback on the results of your interview. Regardless, I'd suggest following up soon after the interview to keep in constant communication with your point of contact at the company.

Resources

There are quite a few things you can do to prepare for a coding interview, one of which is to read articles like these. But this won't be enough, so here are a few more resources for you that will help you increase your chances of landing a job:

Conclusion

Due to high rate of unemployment in some countries, and the economy being unfavorable on the working class, programmers have to do their best to pull up their socks because the competition out there is stiff. If you follow our recommendations given here your chance for a successful application is far above average.

Acknowledgement

The author would like to thank Zoleka Hatitongwe for collaborating on the article.

Berlin -- Genève -- Cape Town
IT developer, trainer, and author. Coauthor of the Debian Package Management Book (http://www.dpmb.org/).