In the last four years I have interviewed or been present during the interview process of more that 300 developers in Kosovo, Macedonia and Albania. Less that 15% of these interviews have been successful. I want to share this experience with you so maybe it can help you during your interviewing process in LinkPlus ( where I work) or in any other company working with international projects. I have made a short list of the most important things that you need to know, learn and improve based on my personal experience.
Improve your English
To understand English or to talk time to time with a friend is not the same as taking a technical interview. Practice and learn English as much as you can so you can express yourself faster and better. I am not saying you should be perfect and yes you can make mistakes but I have seen a lot of good developers fail the interview because they could not express what they knew.
Learn how to read you resume
If you made it to the interview, it means someone liked it or saw something interesting in it. The important thing now is to know how to talk about your resume. Most of the interviews will start with “ Based on your resume, tell us something about yourself and your career”. It is your chance to shine. It is your chance to talk about the things you should be comfortable about and try to go into details as much as possible.
Object Oriented Principles
You have to know how to explain these principles with practical examples. I have seen a lot of developers with 4–5 years of work experience having problem with this. Remember — A PIE.
The weakest point in most interviews. It is true that there are a lot of design patterns and learning them is not easy if you didn’t have the chance to work in bigger projects but you need to read, learn and practice so you think in a “patterned way”. Some patterns that are usually asked in interviews:
- Template method — Behavioral
- Strategy — Behavioral
- Factory method — Creational
- Adapter — Structural
- Composite — Structural
- Facade — Structural
- Singleton — Creational
Five principles of “good programming” are usually asked in every professional interview. You have to know how to explain them in theory but also with practical examples.
Project and task management tools
Use as many tools as you can that will help you during the development and management of the project. Experience and knowledge of these tools will help during the interview process as everyone wants you to at least have some knowledge about the tools that you are going to use in the new job. Easy to learn as they are very similar to each other and most of them are free.
- IDE — IntelliJ, Eclipse, Xcode, Visual Studio, etc.
- Task Management — Jira, Asana, Trello, etc.
- Build Management — Maven, Ant, etc.
- Source Control Management — GitHub, Bitbucket, SourceTree etc.
- Continuous Integration Tools — Jenkins. Bamboo, Strider, etc.
In LinkPlus we mainly used Atlassian tools.
Agile and/or Scrum
I am not saying that Agile is the best methodology or suggesting that you should use Scrum. Maybe “story points” are not the way to show progress but chances are that you will be asked about them in general.
It’s 2016 and you need to understand Cloud. If you didn’t have the chance to work in cloud environment, than read and test as much as you can with AWS, Azure etc. I am not saying you should be a Sys Admin but a good experience with Could environment is a big plus and in some cases a must.
Still in most cases just a big plus but Hadoop (with MapReduce) or Spark will be some of the most needed technologies in the near future. The biggest problem to learn and practice is setting up the system or cluster but you can still read papers, books and research material to prepare yourself.
In LinkPlus we have open positions for Java Developers with experience in Hadoop.
It does not matter if you are applying as a FrontEnd, Mobile and especially BackEnd developer, in every technical interview there will be questions about DBs. In 2016 you also need to know at least one NoSQL framework (MongoDB, Cassandra, CouchDB)
You need to understand ACID principles
Some of the usual questions:
- Stored procedures
- Different type of JOINs.
- Key, primary key, candidate key etc
- Unions and sections
We had some interviews where it was required to know Reactive Programming. Right now we are working on a project where the complete mobile environment is changing to Reactive. My tip is to start learning asap.
Also one of the weakest points in most developers. It does not matter if you are doing TDD or not, Unit Testing is an important part of every project and it is going to be an important part of every interview. Period.
Self confidence and determination
Nobody wants to hire a person who does not believe in himself. Programming is more than StackOverflow. I have seen too many developers quit after they could not find a solution in Stack.
These are only some general tips that will help you for any programming position. The interview is also very dependent on the specific job position and the project that you will be involved in.