[Update: 11 May 2017]
my friend Joshua posted a valuable comment after reading my blog post. so, instead of include the points in my original post, I think it is better to enclose at the end for everyone to read as well.
thanks Joshua !
F5 Works (and 42 Labs, my previous company) hire non Computer Science graduates (and non university graduates) which most companies in Hong Kong won't. I received lots of questions regarding the reasons and feasibility behind. Here are some of the highlights of the conversations.
Developer job requires Computer Science degree ?
- hiring manager thinks employees should at least know the basics that are being taught in University curriculum.
- they believe candidates after going through the university years has better mind set on doing real development work.
- most of the "knowledge" and "training" in university curriculum are not applicable in real world development.
- mind set and decision making training is more effective in real world development environment, which may take only few months to achieve certain level.
Cost of hiring "fresh" developer
Most companies won't hire "fresh" developer
- They don't want to invest too much resources on training, and then the employee leaves
- Most employers expect the candidates to be productive on day 1
- Company don't know how to train developers
We hire "fresh" developer and train by ourselves
- Investing in fresh developer takes time in terms of return, but worth
- Fresh developer has not been polluted by bad managers
- Fresh developer are trained to learn and work in our preferred way
- Fresh developer are trained to be productive in our context
- Fresh developer is more self-motivated when you give them real life development tasks
- We have experience in training developers (we self-taught ourselves, we ran courses before and we have trained many developers for our companies and other startup clients)
How do we evaluate candidates ?
during coding test and face-to-face interview, we usually ask / look for:
- cultural fit (this one is very subjective ... need another post to describe)
- have built any software before ?
- self-learnt any programming languages before ?
- good at problem solving ?
- like picking up responsibilities ?
- like learning and reading ?
- know what he/she is doing ?
- know what he/she is looking for ?
For those you hired before, what are their background ?
We do have around 50% developers having Computer Science degree most of the time (mainly because 3 of the founders are HKUST Computer Science graduates). The rest are
- Accounting degree graduate
- Mathematics degree graduate
- Marketing degree graduate
- multiple secondary school graduates
- international school graduate (working as internship before she goes to university)
Are they still with you ? Where are they working now ?
Most of them have left when we close 42 Labs. Almost everyone of them became full stack by the time they left and immediately being hired (well paid $$$) by other local tech teams. They have the skill and mindset that every tech team wants. I am so so glad.
How we train beginners
for 100% fresh candidates
we send free online courses to them and ask them to finish in a defined timeframe. Some take few days, some take few months. After proving themselves having the self-learning capability and attitudes, we would hire them as junior.
for candidates that are ready to be junior
- start with basic client project web development tasks, frontend or backend depends on his/her personally and skill set
- code review done by seniors in the same project
- learn by reading our code
- learn by internal technical discussion
- involve them in client meetings and other communications
- continuous reading and self-learning
Our tech stack
It may matters to the subject we are talking about too, so let me include this topic here as well.
Everyone in the team has to know web development. Most of our mobile projects also use web tech to build (:heart: Ionic).
- Angular 1 - 4
- Ionic 1 - 3
- Ruby on Rails
- Mac / Unix
- Chrome for development, test and debug
- Elixir on Phoenix [not everyone]
- Swift(iOS) and Java(Android) [not everyone]
The reason I think it may matter as well, because once the junior developer has picked up a subset of skill (e.g. CSS positioning), then he can be immediately be productive in several projects.
How do we justify "ready" and "productive"
There are lots of consideration in both the candidate capability, current company situation and faith. But fundamentally it is more a business thing. General rule is that we believe candidate's * output > input, in reasonable period of time*.
output = calculate\_generated\_revenue\_by(candidate.completed\_tasks)
input = salary + other company expenses + our cost on training
reasonable_period = 1.month to 3.month
How do we find them ?
hm ... we did have some job posts on some free job boards but most of them found us directly or through friends of friends.
Most of our founders teach programming courses and attend coding events regularly, most of the people we met know that we are training developers from scratch.
Why it works for us ?
- we have experience in training developers
- we are willing to invest what we can afford in return for potential huge gain
- it is kind of the give back to the community thingy to us
- everyone here wants to learn from each other and grow together
We did have candidates not able to be "productive" after 3 - 6 months. We explained the situation to them, let them go and even help them to find another more appropriate development jobs for them.
Why it may not work for you ?
- you may not want to take the risk
- you may not be capable of training effectively
- you treat your staff as pure financial assets
- you have little tasks that "fresh" developers can do
- other team members do not like training people
Team formation for reference
Wanna join us ?
Post Blog Post Comments
from Joshua Ritterman: