If you are thinking about developing an app, you will have to hire an app developer
Hiring an app developer is made very easy by multiple platforms on the Internet. You can choose different types of app developers:
- Freelancers – those are developers that are used to work alone. This usually means lower work culture – they are not used to maintaining software or testing it. The code they write is usually not maintainable by any other developer, as it will have a lot of individual hacks. it will work, but will not be maintainable nor upgradeable if your product gets successful.
- Outstaffing agencies – companies that vet the best of the best on the market, and sell them for a 2x-3x premium on the hourly price. One might think this is expensive, but the app developers hired from such agencies usually have a lot of enterprise experience and will make you a much better quality product than freelancers for the same amount of money. Of course, if you are not an IT expert yourself – then you can find a freelancer and invest your own time and energy to get a product of acceptable quality. But your own time also costs time, so it’s up to you to decide how you spend it!
- Software development agencies – companies that have a full team of software developers, graphical designers, copywriters, QA testers, etc. Such companies will give you all-round results with experts working on every aspect of the product. A lot of such agencies work from Eastern Europe with relatively cheap talent, so the price of their work is comparable to one US-based app developer with an outstaffing agency. If you want to spend the least of your time building the product and spend it on marketing instead, this should be your best bet. But of course, since all texts and graphics are handled by other people, you will get less control over the look and feel of the app, unless you put a clear specification on the table
Software app specification
After you have decided which type of app developer you want to hire, it’s time to prepare a specification. You have to answer the following questions in the specification:
- Target platforms – PC, web, iOS, Android, etc
- Main screens and functionality – you have to provide them at least in sketches, so the developer knows what you want. Never leave it to the developer, as the app’s look and feel is your main intellectual property until the app is released
- Main requirements to the app performance – for example
- It needs to support up to 1000 people using the app simultaneously
- It needs to handle up to 100k user accounts
- It needs to support audio and video calls with Internet bandwidth of at least 2mbit/s
- etc, you can search app specifications on the web to see which requirements can be
- Maintainability – you can add a few more points about the app’s future if you plan to support the version for some period
- Scalability – should the app be easily scaled? Do you plan to throw in another server when the first is full? The app’s architecture should support this from day one, otherwise adding such functionality might mean rewriting the whole app
- Cloud-based – should the app be cloud-based? This might require a more skilled app developer, but you will win a lot in scalability, performance, and stability
- New features – if you plan to add new features, it’s a very good idea to have your plan for at least a year forward. Many features actually require app developers to keep them in mind when implementing the most basic parts of the app
- New developers – you do not have to disclose to your current developer if you plan a replacement down the road, or adding new team members. What you can ask is having a repo at all times, with daily commits (you will have to check that! When not controlled, 95% of freelance developers do not commit daily). Also, once in a while, every 6 weeks, ask to rebuild the infrastructure from scratch – even a bad developer will end up having scripts and manuals on recreating the infrastructure. Otherwise, you risk being left with a bunch of code that nobody knows how to deploy
Software app development NDA
Even though many developers do not take NDA seriously because it is extremely hard and costly to prove that one app copies another app without having access to the source codes of both apps, an NDA will still allow you and your app developer to be on the same page about what you consider a commercial secret. Oftentimes, leaks are accidental and could be prevented just by better communication between a customer and an app developer.
You might need to use an IT consulting company to prepare you a good NDA
How to test an app developer
Let’s consider different ways of testing an app developer. Probably the worst you can do is judge by soft skills, as many awesome developers lack them. And it’s understood – most of the day they spend in front of the screen, writing code, implementing features, testing the code and deploying it. This is not a very communicative work, so it attracts a lot of introverts.
Of course it’s good to have a rapport with your app developer. If you just hate each other and usually exchange toxic comments instead of productive discussion, this is something to avoid as well.
But if you feel like you do not have a deep connection with your app developer, this is just fine and not a reason to worry! All you have to make sure is that you have an awesome app idea that is most interesting and entertaining to work on – software app developers are most often attracted by interesting projects.
There are a few different common ways to test an app developer:
- review previous projects
- a simple 30-60 minute project
- a larger 4-8 hours project
- codility test
- online quiz
- a theoretical interview
- pair coding
There are a lot of them, right? Let’s look at each of them closer with a detailed review
Review previous projects
Do developers welcome this kind of interview: very much
What will it test:
- general communication skills
- what exactly the developer did in the previous projects
- does the developer tell the truth or tends to emphasize the accomplishments. Answering all the questions below will make the developer contradict him/herself so that even if you know nothing about software, you will understand that
What to ask:
- what was the hardest challenge? If there were none – it’s a good question why. There are no challenges only if the project is as simple as a school homework
- how many developers were there on the team? Were there architects, UI designers, testers, devops, project managers? What did you do exactly?
- did they use gitflow?
- did they have pull requests and peer reviews?
- go into the very minor details of the project:
- The timeline – did the developer join in the beginning of the project or in the middle
- When was the first release? Did it happen at all?
- Who was doing the deployments, how often did they deploy new version
- Did they have manual and automatic tests, if yes – how many, what they tested, how often did they run the tesets
- What platforms were used
- Who provided the UI design of the app. How many screens were there roughly? What was the most problematic screen?
- Who provided the architecture of the app. If the developer did it – how long did it take to draw? Which design patterns were used?
- Did the solution use any cloud technology? If yes, which platform – Google Cloud, AWS, or something else? What was the reason for choosing a particular platform? Which services did they use?
- What was the reason for leaving?
What not to ask (provocative questions):
- salary on the previous project
- can you show me the code? (if answer is yes, it means that the developer will also disclose YOUR code at the first request)
- did you have any other work in parallel (if answer is yes, it means that the developer stretches the deadlines as it’s impossible to work 40 hour workweeks on two jobs)
A simple 30-60 minute project
Do developers welcome this kind of interview: not really, expect 30-50% of possible candidates no to ever come back with a solution
- If you do this while on the call with the developer, you will get a higher conversion rate, thought it will transform to the “pair coding” test
What to ask:
- To get a good 30-60 minute task that will test what you need from the developer, consult a developer you can trust, or some independent developer. The task has to be relatively simple but have a few spots where an effective solution is needed
- Some ideas of what to test:
- browser rendering performance – ask to create thousands of objects quickly
- algorithmical thinking – ask to create a simple sorting algorithm, or search algorithm
- frontend skills – ask to code a webpage based on some Photoshop UI design that you have
- Some websites where you can get task ideas:
What not to ask:
- Generic tasks, solutions to which can be easily downloaded from the Internet
A larger 4-8 hours project
What we hear a lot is the frustration of IT candidates with all the theory and live coding tests. This is not how the real work is done, then why the test should be like this? In the end, what is even tested? Some theoretical knowledge of the language possibilities? Speed of thinking and skill of finding quick solutions? This is certainly not what is valued in real work. In real work, companies value the fundamental and quality-oriented approach that very rarely goes hand by hand with good results in online coding assignments.
It would be right to say that theory and live coding tests often are much easier for college grads than for experienced workers who are usually aged 35+. The more mature specialists value their mental state more and will have a strong denial reaction when you will try to stress-test them. They have had enough burnouts in their lives not to have one more right here and right now.
So here comes a real work sample project. If you are ready to pay for it as for real work, you can expect that almost any developer will agree to start. If you are not ready to pay, you should expect that only the neediest will complete the assignment (around 10% of all candidates).
- we seriously recommend paying for the test work, as selecting among those that spend their 8 hours for free with no guarantee, will bring you an enthusiastic fellow that is less into long-lasting stable relationships than a good old work-for-money type
What to ask:
- Ask something pretty simple but what can be useful to your project. A good example would be building the landing page for your project or implementing some simple feature if you already have your app working.
- You can also ask to copy some existing software like Instagram feed or even Windows calculator. The level of detail is what’s important here
- Make sure that each candidate gets THE SAME task, not different
- Try to come up with well-defined criteria for assessing the work and communicating those criteria to the candidates, so you are not the reason of their bad result
What not to ask:
- Do not expect production-level quality. Mark a few important things that you will pay attention to, and you shouldn’t pay attention to anything else. That’s how you will see if the candidate hears you and understands what’s important to you and what is not