We all have been through the process of hiring. We have been participating in interviews and have tried to sell ourselves. Our aim is to show our skills set and to advertise the professional individuals we are. We want to shine, we want to be appreciated, we want to prove we are capable of doing the company’s work and will be beneficial for the business growth.
The more experience we gain, the more different the hiring process becomes. We want to measure whether the company we are applying for will align with our understanding, our way of thinking about the process and the business at all, will the company give us the desired satisfaction of the work, will the environment be as we imagine it to be, and so on and so forth.
That means the interview becomes two-way process.
After all, the company is seeking for a professional and the professional is looking for a professional environment to fit in the ecosystem.
The question here is – how to find such person / how to find such company, aligned with mine or company’s ideals?
Identifying a professional is not an easy task.
A professional is a composition of lots of qualities and habits an individual must have.
A professional is a person who is dedicated to the work he/she is producing.
He/she is always up to date with the current technologies, platforms and practices.
This person knows and appropriately apply software development principles and architectural and design patterns.
A professional always develops his/her technical skills and practices to keep his/her brain sharp.
He/she knows the domain he/she is working on and has a good view of the big picture as well as of the details.
A professional is a team player and has good social skills.
Such person takes the responsibility of his work.
There is a lot written on that topic in books such as:
- The pragmatic programmer: From Journeyman to Master by Andy Hunt and Dave Thomas
- Clean code: A Handbook of Agile Software Craftsmanship by Robert C. Martin (Uncle Bob)
I highly recommend both of them for a detailed overview what a professional is and how to become one.
Let’s imagine we have reаd all the books, we have spoken to many people and we know who is professional and who is not. But how can we determine that with just one interview? Is one hour enough? Or even two or three, or four hours?
I have met people who are perfect in interviews. They study interview questions, they read a lot and speak a lot. But when it comes to the actual work, to the responsibilities and performance, then they are not the right people. Some folks can talk to you for hours and at the same time they could not bring any value to the company.
On the other hand I also know people who have very good technical skills, with a lot of knowledge and sharp mind but with no soft skills. After all, the team work environment is highly appreciated and the whole team is responsible for the final product. So it is crucial for a successful release to have a strong collective of people collaborating with each other.
After all, the basis of Agile methodologies are collaboration, discussion and a team work.
So it seems it is a hard job to identify the true professional.
Some companies make their interview process in stages. One stage is to determine the communication skills, another is for the technical knowledge.
But for me it is not enough to measure the soft skills of a person by one hour chat.
As for the technical part – some are giving more algorithmic problems to see how the person thinks and is he/she capable of writing code under stress. (I can recommend here this book: Cracking the coding interview by Gayle Laakmann McDowell)
Others are more interested about the best practices and principles in coding and the architectural and design aspects.
Some are more focused on a particular technology, where others are interested in the general principles.
Some likes to ask you to compare stuff, others to describe, and third to explain your thoughts about topics.
For the technical part there is also not enough time to cover all the topics and to filter the needed for the company. You can not know for sure whether the person will fit in the job role for a particular project.
As a conclusion, I’d say that it seems a bit objective to filter the candidate and to choose the one who will fit in a team and is within the Company values. So every candidate should think positive and learn from the interview experience no matter what the outcome is.
I can give you one more good reference, a book about techniques and practices for a professional software developer’s life, what to do to be more successful and how to have an advantage in interviews – Soft Skills: The Software Developer’s Life Manual by John Sonmez.
From the candidate point of view, it is good to be active with the questions and the impressions and insights you can get during the interview, also before and after it.
- Before the interview: as a candidate to join a specific company and to spend most of our time there we first of all have to research some details about the company – browse their web site, read articles and forum comments about them, speak with people working there and after that apply for an interview.
- During the interview: ask as many questions as you think of for the working process, technologies, practices, local teams, foreign teams, etc.
- After the interview: ask to meet somebody from the team you could potentially work with, ask to see your potential working place, feel the atmosphere.
- After an offer: continue to research, think about your impressions, write down the pros and cons, what can you learn, what can you receive and what you have to give, and give yourself a day to re-think and feel whether this is the place for you.