The Vital Guide to Mobile App Developer Interviewing
“Coming together is a beginning, keeping together is progress, working together is success” – Henry Ford
It has been estimated that there is now somewhere in the region of 20 million software developers in the world, a figure that is more than double the number of 2014. Around 50% of these developers are estimated to be working on mobile app development in either a full-time or freelance capacity.
For companies and individuals who desire to create world-class mobile applications, finding the top mobile programmers in the huge pool of talent available can be an enormous challenge that is fraught with dangers. For those of us who have had our fair share of run-ins with unmotivated or inexperienced developers who we have entrusted to help us build our mobile apps, well, let’s just say it is not a pleasant experience.
Whether you are a small startup company that is looking to build its first app, an entrepreneur seeking to expand into the lucrative app market, a project and product manager, a CEO or a CTO, being aware of what to look for and how to sieve out the best from the rest is really the difference between a project getting completed on time and to specification without being infested with bugs.
In the spirit of Henry Ford’s statement that “working together is success”, we decided to share our expertise by putting together this informed guide on how to hire mobile developers who will help you make your dreams a reality.
Mobile apps are the key to success!
Back in the 1980’s, a relatively unknown computer company CEO by the name of Steve Jobs predicted that the future of computing lay in "an incredibly great computer in a book that you can carry around with you that you can learn how to use in 20 minutes."
Today, Statistic estimate that there are now 2.32 billion smartphones in use throughout the globe. That’s 1 phone for every 3 people on the planet! Smartphone ownership levels in the USA are now roughly 70% of the population. The rise of the smartphone has taken the world by storm and has been unprecedented on almost every scale. To put this into perspective, it nearly 50 years from the invention of the television for the ownership numbers to reach the same level.
“The future of mobile is incremental innovation with a transformation impact” – Rejig Pold, Telephonic UK
Remember the time when people said they would never put their personal details or credit card information into their phones? Well, those days are long gone. Today smartphone users thirst for apps like never before and now prefer them over using the app vendor’s website. This trend has certainly not gone unnoticed; the Apple App store now has nearly 2 million downloadable apps while Google play has 2.2 million apps. More than half of these apps are either pay-per-download or are designed to facilitate smartphone users to pay for goods and services. In 2016, the global app market was worth a mouthwatering $45 billion, and is expected to double in size to more than $100 billion by the year 2020.
It is safe to say that we need expert mobile developers more than ever. Though globalization has given us access to large pools of overseas developers who are often willing to work for less money, something which has helped keep costs from project managers lower, none of this matters one bit if these people are not experienced top-level developers who have both the motivation and know how to get the job done.
Never forget what Ralph Johnson said “Before software can be reusable, first is has to be usable”.
Fundamental to getting the best usable product is finding the right specialist(s) to make it happen.
Mobile developers for hire: How a good interview can help you find the best one
While hiring an app developer or dev team is not the same as taking on a new member of staff, there are many similar processes and techniques that can be used in testing out suitable candidates. Any interviewer can successfully root out the right candidate when they have the right tools at their disposal.
When it comes to interviewing app developers, the main problem that most interviewers face is the gaps in their own knowledge or experience. Certainly those with little to no background in coding usually find the prospect of trying to find the best development engineers extremely difficult.
One of the things that companies learn really fast is that being able to code is not the what makes a good developer. In most cases, the developers who apply for the position that you are offering, will almost certainly be reasonably good at writing code. A top-notch developer will obviously have no problem writing code, but will also have the all-important skills of being able to work in a team, be a good communicator, be able to admit and learn by their mistakes and most important of all, be passionate and reliable.
So how can you find all this out in an interview?
Well, the good news is that there are numerous techniques that can help you nail that perfect developer with an almost 100% chance of getting it right. After years of interviewing developers from a variety of different backgrounds, we have amassed a wealth of experience and trick to separate the bad from the good, and the good from the best.
What follows is a step by step guide on how to identify the best mobile app developers based on a number of caveats that will determine their suitability for your particular project. Don’t forget, just because one particular candidate might seem ideal at first site, after conducting an interview based on the methodology we outline here, you may well find that they are far less suitable than you originally thought. You only need to keep reading to find out what they are.
Do you have wings and can you fly? What makes a good app developer?
‘I can write good code and always get my projects completed on time’ – Sound familiar? Anyone who has ever interviewed an app developer will have heard some variation of this line. The problem is that it tells you almost nothing about the individual you are interviewing. It’s kind of like trying to tell what kind of bird you are talking to by asking ‘do you have wings and can you fly?’
To understanding how to find the best developers you must first understand what makes a great developer.
If you are new to the software development, it is easy to gaze in jealousy at other company’s apps and fall into the trap of assuming these apps were all created flawlessly with no bumps in the road as they say. This is nonsense, no app project in history has ever been developed without having at least a few problems. This is why you need a great developer who is not just good at writing code but also has the following strengths in his/her character:
Your new developer might be a code writing god but if they lack passion your project is almost certainly going to end up being a Buick rather than a Corvette. Passion breeds perfection and without it there is little chance your project will shine.
A passionate developer is the kind of person who eats, sleeps and dreams code. For these people programming is an art that allows them like engineers to build beautiful things. You can expect to find many of these passionate developers discussing the latest trends/advancements in the industry with their colleagues online and often helping others out by answering questions on forums.
If you manage to find one such developer, you can guarantee that they are the person who will stay up all night debugging code just to make sure the problem you noticed gets fixed. For these people the challenge is the ‘juice’, and for whom pride in perfection is everything.
Any developer that you are planning to hire should be excellent at writing code. To establish whether or not they can is relatively straightforward, just give them a test. Another way to be able to better judge their knowledge of programming is by checking on their experience.
Now comes the double edge sword. As a general rule, the more experience a developer has, the less likely they are going to run into unforeseen problems. This gives the project planners much more flexibility as an experienced developer will be able to quickly modify problems or build on additional features etc.
To gain a better understanding of a developer’s general experience you can ask to see examples of their past projects and coding (should someone on your staff be qualified to understand it).
A good attitude to a developer is important as water is when making cement. It is not uncommon after having raised a query/issue to find yourself in an argument or being told in one sentence that what you are asking is impossible without more money.
A good developer will always be professional and will always be happy to explain a problem and its possible solutions out in full. Note that they will always be positive in their outlook, something that makes a huge difference to getting things done.
The ability to admit mistakes quickly and put them right is also the kind of attitude a developer needs to be the best. Experienced developers, in particular, can often let things get to their head and so won't admit when they are wrong.
Work well as part of a team
In the Bible story about the Tower of Babel, mankind begins to build a great tower so that they can reach heaven. Upon seeing this, God takes away their ability to work as a team by giving them all different languages so that they can no longer communicate.
Mobile apps development is a complicated and time-consuming industry, as a result it requires numerous individuals to come together and work as a team. They all need to be able to convey requests and information to other members of the team while also working around any personality clashes otherwise this will create problems in the project.
Always meets deadlines
In any industry, project delays are one of the most frustrating and embarrassing parts that keep most managers awake late into the night. The last thing you need is an unreliable developer who doesn’t seem able to meet deadlines. The word deadline sounds so scary to emphasize the importance of the need to get things done on time.
Able to see the end picture
Interestingly, over the years it has been demonstrated time and time again that a developer who cannot full picture what the end goals and the needs of the app users will be, often ends up taking more time to complete the project. This is because they will write code without foreseeing upcoming features/requirements and changes. A good developer will know what users will need from his code and will make it happen.
What makes a good dev team?
A good dev team will be required to have the traits that make a good software developer though with a number of other additional caveats. Firstly, it is important that the dev team have a well-oiled internal development process and communication policy that helps the project run as smooth as possible. Since the project owner is entrusting the fate of the project with the dev team, these processes should allow for them to be kept in clear understanding about what exactly is going on.
All too often inexperienced dev teams neglect their clients by not keeping them regularly updated with where the project is at, failing to inform them of any problems/issues that could affect or delay the project later on down the line, and taking a long time to respond to client queries too.
Since a dev team is often a group of individuals who work together in remote locations, often dev team managers are unable to keep a project and its progress completely visible in their mind, especially as many dev teams are working on many different projects at once. This is why all the best dev teams have set processes that include regular progress reports in order to make sure everything is on course.
How to use your interview to identify top-level developers and dev teams
Ok, so now you know what makes a great mobile app developer, all you need now is to know the questions to ask to find out if they are one.
What follows is a list of questions that will help you find that perfect programmer:
Interview questions/answers to identify top-level developers
Introduction Questions: Background/Qualifications
- How would you define good code?
Generally, it pays to start light and push into the heavier stuff later. A nice icebreaker is to ask them outright to explain how they would describe good code? Their answer will tell you a lot about both how long it takes them to explain simple things and also give you an idea of their level of passion too.
Good example answer: Good code solves a problem in the simplest possible way. It doesn’t take excessive time or resources to conduct its function and can be easily understood and modified by others.
- In ascending order, what are the top 5 most important things that make a great programmer?
This will give you an insight into how the candidate regards themselves more often than not. Remember, passion should always be in there somewhere.
- How many projects have you worked on over the last 3 years?
This will give you a better idea about their background. Pay attention to the number of projects as this will give you a clearer picture of their workload. This is important as a developer with too many projects on the go at once might not be as effective at meeting deadlines. This question should prompt your candidate to volunteer information that allows you to see what similar projects they have completed that will give them more relevant experience for your project.
- Tell me about the worst project you have been involved in and what your specific role was?
Gives you a chance to see how candidate dealt with problems/frustrations.
- If you were to become a project manager tell me one thing you would do to improve the way your developers work?
This accesses creative thinking/problem solving as well as exposing candidates frustrations on past projects. If their answer focuses on poor project management, for example, then this is an area that you know to be aware of should you go ahead with them.
- What was the last forum question that you answered and how did you solve the problem?
A good question to find out how involved candidate is in the developer community in his/her own spare time. Because this is an open question it should prompt them to turn the answer into a positive even if they haven’t been active on a forum.
- What one question would you ask if you were interviewing for a mobile app developer and wanted to assess their suitability for your project?
When asked this kind of self-reflective question, candidates are tested for honesty and quick thinking. The idea of this question is not to let themselves get caught out by it but to come up with a clever way of separating the best developers from the average. Since the candidate can expect to be asked their own question, there is added pressure in this task. Try it out, you will find the more imaginative candidates come up with some pretty interesting questions.
- What are your future commitments should I offer you the chance to work on my project?
This is a very important question. Making sure that your new developer is not swamped with other projects and so can focus on yours is imperative.
Knowledge specific questions:
- Which is your preferred programming language and why?
- How many programming languages have you written code in?
- What tools do you work with? Name top 5 of them and how do you use them during the project?
- Do you know how to work using Agile methodology? If yes, how many projects have you done using Agile?
- Describe how you would go about setting up services/configurations to perform an action on the database once a day? What are some things you would take into account when deciding time of day? What gems would you use?
- A patient can have many caregivers, and each caregiver can have many patients. Patients are owned and created by a single caregiver, some caregivers that did not create the patient can modify the patient, but others cannot. How would we relate the models, what modifications would we do to tables etc.?
- Daily I want a report of top selling items, the items I sell are not identical, in fact the only similarity they have is the industry they are used in. How would we relate these items so that we can know which items are comparable? All Items are placed under a category and there will most likely be other similarities in their descriptions that can be used to find alike items.
- List your 5 favorite Ruby Gems, why are they so great?
- Describe the best way to setup a mobile API on Rails that must also serve embedded html/js on the web. Explain authentication tools/methods, API tools/methods. With some pros and cons of why this is the best way.
- Describe the most interesting tasks you accomplished in Ruby on Rails. What were the main challenges? How did you overcome them? How could you have done it better next time? How many gems did you use as part of the solution?
Test the candidate
Once you have found a candidate that you like, you should give them a test to make sure that they area as good as they say they are. If you don’t have much of a background in programming then never fear, you can use resource sites such as StackOverflow and Test4Geeks, both of which will provide tests for you.
For those who prefer to give the test themselves, here are a few examples of coding problems to help find the best candidates.
CODE CODE CODE
Where to find the best developers?
You only need to do a quick internet search for developer services and you will be inundated with sites from which to begin your search. Where you find your developer really depends on you. Some (usually development companies) recruit the best and the brightest straight out of university.
Generally, there are 2 options. You can try to track a good developer down through job posts and ‘devshow’ events like Hackathons. A really good option when trying to find the most impassioned developers is to track down those who contribute to open source software projects, though this does take a little more insider knowledge.
The most common way to find a developer is through freelancer sites such as Upwork and Toptal.com (a site which is dedicated to the top 3% freelance developers). Here you can place adverts detailing your project needs or simply browse developer’s profiles until you find the one you are looking for.
Interview questions/answers to identify top-level dev team
- With 1,000’s of dev teams in the marketplace, how have you made yours stand out?
- How many developers do you currently employ? – How do you cope when they get stretched?
- Do you regularly monitor their job success rate, if so how?
- What was the last process management improvement you have made?
- What are your hourly rates?
- What is your top 1-3 industries expertise? Briefly explain why your team is an expert in these industries.
- Outline projects you have built in these industries (3 to 10 projects with links) – the more the better.
- Are you a full stack dev team (have both very strong backend and very strong frontend developers)?
- What is your top 1 tech stack expertise? Briefly explain why your team is an expert in these tech stacks.
- How many projects have you built with your top 1 tech stack? List several of them (3 to 10 projects with links)
- Number of people on the team who have more than 3 years of development experience with your core tech stacks - Frontend
- Number of people on the team who have more than 3 years of development experience with your core tech stack - Backend
- Outline other tech stacks where you have a high-level expertise and how many projects you've completed
- Outline the list of industries you worked with (for example – healthcare, ecommerce, etc.) with 1-3 project examples per each industry
- Link 3 code examples for your #1 tech stack (both for backend and frontend)
What's the difference of working with a top-level dev team vs. individual developer?
Let’s be honest, if cost was not an issue what project manager in the world would choose to employ an individual developer rather than a dev team?
While individual developers help fill a variety of roles including allowing startups with limited budget access to the skills they need to build their app and allow dev teams to temporarily boost their staff levels during busy periods etc., a single developer is extremely limited in how much work they can do and how quickly they can do it.
A good dev team offers layers of protection to a project that greatly lower the risk of cost and time overruns that are the greatest risk to the project’s success. While a single developer’s work can be interrupted by things such as sickness and holidays, a development team will incorporate the flexibility to continue on according to agreed timelines without any problem. Another advantage of a large team is the ability of a dev team to dramatically scale up the project should it be necessary. Imagine you are mid-way through developing your mobile app and realize you can get ahead of your competitors by adding another feature such as a store. This feature will certainly greatly add to the existing workload, something that will be no problem at all for a well-run dev team.
Since a good dev team will also have a solid project management system and will be able to problem solve with other members of the group, the chance of unforeseen issues or bugs from developing is also much lower. This also has the added bonus of meaning that the chances of security issues that could be used by hackers to exploit your finished mobile app are less likely to happen too.
On the legal front, employing a reputable dev team is the safest way to protect your idea as well as your code. Just imagine if the Winklevoss twins had taken their social network idea to a professional dev team instead of to Mark Zuckerberg, how different things would have turned out? All dev teams offer legally binding contracts that protect your intellectual property and hard work.
Individual developers are great for those small scale projects but when it comes to getting the best job done, nothing beats a well-run dev team.