by Ben Cheng
I don’t care what tools a developer uses. I hire based on fundamentals.
People often say Hong Kong is a tech wasteland. They say the city suffers from developer brain drain. That all top-tier developers are lured to Silicon Valley. Well, I think that’s crap.
There’s more to engineering than just money, or offices like the Googleplex, or just geeking-out with people in the Bay Area.
In this article, I’ll show you how my company — a 9-year-old development agency founded by 3 technical co-founders — has recruited and grown a development team to 30+ people in Hong Kong and Taipei.
Together, we’ve built App Store-featured apps with millions of downloads, right in the comfort of our own home city of Hong Kong.
Of course, our alumni have also moved on to Apple and Google, and we’re proud of them! But first, here’s how we find these talented developers.
The first thing you should look for in a developer
Finding an awesome developer requires that you are clear on what you’re looking for. Do you want a full-stack or a front end / back end person? Do you need specific skills like knowledge of AI, blockchain, or big data?
Unless you have a specific reason, don’t hire technology-specific. Instead, hire based on fundamental knowledge.
Over the years, I’ve interviewed hundreds of developers. One of my biggest learnings is that there can be no assumptions. I’ve interviewed people with a Masters in Computer Science who had trouble writing a for-loop that iterated through an array.
So the first rule is to hire people who (preferably) have fundamental knowledge, coding experience, and a willingness to constantly learn new languages and skills.
Our hiring process.
Technologies always change. Our hiring process is meant to test for three things:
- Can this person write clean code?
- Do they have fundamental technical understanding?
- Can they do teamwork and applied problem solving on iOS, Android, the web, or whatever platform the app needs to be built on?
Remote Coding Test
The first thing is to ensure basic coding skills to reduce our interview workload. We have 40+ applications per month that we need to get back to. The talented developers won’t just wait around. And we don’t want to miss them because our process was too slow.
We use remoteinterview.io for remote testing.
We divide the technical questions into 4 parts:
- Algorithm and data structures
- Network and web
- Server side knowledge
- Specific technology based on candidate’s background
For algorithms and data structures, we don’t really care whether the candidate can do algorithm optimization or in-depth PhD topics, because we’re mostly doing mobile and web applications. Instead, we focus on basic understanding of the concepts behind common data structures.
We avoid asking textbook questions and we look for a proper understanding of complexity.
For network and web, we try to ask questions related to concepts that frameworks generally encapsulate. This way, we can be certain that the candidate has a proper understanding of things like the HTTP protocol and DOM structure work.
For server side knowledge, we try to ask architecture / design questions, so we have a sense of how much experience the candidate has and if they can communicate technical design well.
If someone says they have a background in sections 1–3, they should be able to demonstrate it in section 4. If those sections aren’t their area of specialty, we still want to see that they have a general understanding of other factors to optimize an app. For example, we would like a backend developer to demonstrate some front end knowledge, so that their API will likely be better optimized.
Pair-Programming and Take-Home Exercises
I think this is pretty standard in the industry. Provided the candidate has passed all the technical tests, we want to see how this developer works with the team in a real-life setting. Can they communicate well, and does the team feel comfortable working with this person? Does the candidate have great problem solving skills?
If pair-programming in the office is too resource-intensive for you and your team, you can give the candidate a take-home exercise. Try to be as specific as possible with the take-home exercise, and explain what you plan to evaluate them on.
Here’s a list of criteria we usually look for in take home exercise submissions:
- Accuracy of the implementation especially design details (for front end positions)
- Usability of the interactive elements (for front end position)
- Readability of the code
- Logical and readable Git commit messages
Why great developers work with us instead of going to work at Apple or Google?
Actually, the main reason is that we’re in Hong Kong, and many of the developers who interview with Oursky often want to stay here instead of going abroad. Also, some developers prefer to work for a boutique agency and build a succession of products.
Of course, some people decide to move on to bigger companies and we support them for their choice of direction to grow. Many of our developers want to contribute more to open-source projects, which Oursky is committed to.
Through this hiring process that emphasizes general skills over knowledge of specific technologies, we’ve discovered a lot of talented developers. For us, it all comes down to asking the right interview questions.
By creating a strong company culture through our hiring practices, we’ve been able to retain lots of great Hong Kong developers who would have otherwise gone overseas.