I’m often asked the question, “Where do you find great developers?”. The truth is: I don’t find them — I create them. At gskinner.com we rarely hire experienced developers; most of our new hires are fresh out of school.
We select smart, creative, and responsible new developers who exhibit a real passion for interactive technology and mesh well with our corporate culture. While we do require a minimum level of coding ability, technical expertise is one of the least important criteria. Teaching someone to become a great coder takes time, but it’s relatively trivial compared to trying to instill a love for the work or teaching someone to be a great problem solver, reliable worker, or cohesive member of the team.
This approach allows us to train our new hires exactly the way we want to, without having to convince them to unlearn incompatible practices. It also means they learn our process and integrate well with the rest of the team.
Over the past six years of running gskinner.com, I’ve developed a system for training and evaluating new hires, and recently formalized it into a documented process. We just successfully finished taking our first two devs through the full three month process, and while it’s still not perfect, I’m quite happy with the results.
I thought it might be worthwhile to share an overview of our approach with the community, and will do so in a series of blog posts (eight total, I think) over the next few weeks.
It’s worth noting in advance that this process is only valuable to companies that hire for the long-term. We invest a lot of resources into developing every new hire, so they can become valuable, permanent (as much as possible) members of our team. We treat everyone with respect, maintain a very reasonable work week (never exceeding 40 hrs), provide benefits & performance bonuses, and have very low turnover. If you hire & fire on a project basis, or have high turnover, this process will not help you at all.
Continue to Creating Great Developers part 2: Hiring.
Thanks for the article! Looking forward to read the sequels.
Happy Programmer’s Day ! 🙂
When, next one? 🙂
If I only lived in Edmonton 🙂
Great. Waiting for the next article (;
And if they leave you after you “create them”?
Isn’t too much investment lost?
Henrique – that’s a risk, but as I stated, I try very hard to create a company and environment that people want to stay at long term. It obviously doesn’t work for everyone, but I’ve never had anyone quit because they were unhappy.
I love the idea of never exceeding 40 hours a week. Unfortunately most of our clients think we are robots 🙁
when are you next hiring? 🙂
I hear you. It’s a bit of a chicken & egg scenario. If you can establish a good enough reputation, based on having a really strong team, clients can generally be convinced to work according to your schedule. It’s mostly about them having the trust that things will work out well.
Unfortunately, working your team to death makes it hard to retain people, tricky to train them, and I think it reduces the quality of work you get out of them
Daniel – ha! We hire opportunistically. We hire people when we think they are a good fit, train them, then find work to keep them busy, as opposed to hiring people only because we have too much work, then scrambling to try to get them up to speed and stressing over the quality of their output.
A lot of places don’t take this sort of thing to heart and they should.
Which is why I’m not looking for a job these days. I’m creating my own. The most I miss is a team and people to talk with and build things with.
I do about 20 to 30 hours a week on work for clients and I don’t even like 40 hour work weeks. More needs to be done on the personal project side of things, too… which is where the 5 or so hours usually comes in. 🙂
I would love a place where I could stay that wasn’t cramping work styles and feeling like I’m just churning out things… not really taking what I’m learning from the experiences more… which is why I’m doing what I’m doing.
Sometimes, from being different from most designers and developers it’s been difficult even finding proper places to work. I know where I want to be isn’t the norm, which only enforces in my mind where I am right now.
I do like when someone notices that it’s the environment in which one works that matters most in the work. Wish other people in town would notice that. It’s how you get happy people working on excellent projects.
For sure will be a very interesting series.
Since i’m very curious of the real application, and to better figuring out the scenario, i would like to ask you to share some, imho important, details about your company:
– how many are you ?
– how many “pure” developer (mean only codes) ?
– when you talk about performance benefits, what exactly do you mean ? (do you give benefits specific for each developer (so different between them) ?
– when you said “out of school” which school do you mean ?
– how you describe the difficult of the avg level of the company projects on the developer side (from 0 to 10 where 10 is max)
tnx a lot
I’ll try to answer your questions:
– we are 12 people
– 8 are nearly 100% code, only 1 is a non-coder (our office manager), the other 3 (including me) are mixed role.
– we have benefits (which are universal) and performance bonuses (which are loosely based of profit sharing & assigned based on individual performance)
– various schools, mostly local
– I’d say they range all over the place, like 4-8 (we’re not building shuttle launch systems, or giant financial analysis tools)
I’m not one to pick fights, and your team’s output speaks for itself – you’re clearly one of the most talented teams on the planet for what you do – but I still can’t help feeling there’s a better way to express what you do than “I create them”. “Train”, “nurture”, something. Just kinda gave me the willies is all.
Nigel – The cloning vats are in part 3. Once we hire ’em and train ’em, then we clone ’em. 😉
Seriously though, I know what you mean. I debated using “create” for awhile – I’m more concerned it sounds arrogant. I just didn’t find anything I liked better that wasn’t long winded. I considered train, nurture, grow, build, mature, etc. but none of them convey what I want in a single word. Create doesn’t really do it either, but you have to admit it’s a bit more attention grabbing. 🙂
Maybe “crystallize”? I kind of like that.
I would be interested to know whether you use methodologies such as Kanban, Agile & Scrum etc.
Or have you organically developed your own ways of working incorporating aspects of the above?
I think some of the more HR aspects of what you’re describing – well managed timescales, good rewards based on performance within a healthy environment reap their own results.
Maybe it’s taking the holistic, long term view that is the real lesson here?
BTW It’s excellent that you are sharing this – I’ll be interested to see how the series progresses.
Huw – actually, you put it perfectly: we have “organically developed your own ways of working incorporating aspects” of a variety of existing methodologies.
This series will focus entirely on our training process, but I’m considering writing another series on dev process. We used to have our process documented, but it’s fallen a bit out of date. It might be a good exercise to try to formalize it again.
Interesting.. developing developers.
If I were someone who would look for a dayjob I would surely go to a company like yours. But I think freelancing is still the best choice for. But it surely depends on what kind of person you are.
Looking forward to this series Grant. It seems that our philosophies are still compatible and it is interesting to see how all of it works in real life.
How do you keep connected to the great talent just coming out of school?
Great, I am looking forward for this series:)
I think if you could just stop using the term “serfs” for your team, that’s a step in the right direction.
Hugh – I’ve actually started calling them “peons” instead. I think it’s more respectful. 😉
I half agree, but also half disagree. The disagree part of me believes that your techniques and knowledge will become (if not already) incestuous and dated.
I’ve worked with / at some of the top agencies here in NYC, and some have the ‘we grow our own’ and some have a developer ‘free for all’ where each developer already had ‘baggage’.
The ‘we grow our own’ had much more camaraderie and mutual respect among devs – which lead to more ‘getting along’ but these teams were also the slowest to adopt new techniques and on the whole were a bit behind other agencies when it came to novel problem solving.
The ‘free for all’ scenario was very antagonistic and difficult at times but in the end, as long as no one is an utter asshole, it would be interesting to learn how radically different each of us would solve a particular problem.
I believe I learned more when the teams of developers already had baggage and experience – cause we’d all compare different ways of doing things and projects and teams we had worked on in the past.
However – as a company you’d prob be better off with the home grown. While I grew more as a developer in the ‘free for all scenario’ I got more done within the ‘we grow our own’ scenario.
What think you Grant?
I thought we were “skinions”? 😉
I was looking for such an article from a very long time.
From your personal point of view as a much respected developer what is the minimal time to someone become acclaimed as a flash developer, with the needed skills and coding experience. And what are the chances for someone who self-trained himself, without any field-related highschool diplomas to became a good developer/coder? I’m asking this questions, because i’m such a person.
I’ve started to learn AS3 at the beginning of this year. I’m very convinced that today there are so many talented bloggers who are sharing their knowledge, is a good resource for learning, but what You think it’s possible to master this field without working at a creative office?
Thanks, and looking for Your answer.
I like the way your company is thinking about hiring fresher, intelligent people for long term.
I like that you control the work hours to 40 per week. However, not all established programmers have large egos and baggage. Many would like the opportunity that you give your ‘fresh’ talent.
I have found the college graduates get leverage that actually spoils them into the programmers that we dread to hire.
Em – agreed. We do hire the occasional experienced developer, but most of our hires are recent grads (often from 2 yr interactive dev/design programs).
Great stuff. Thank you for sharing this with the community!
Fresh intelligent people, where do you find them?
Oh man, the amount of clueless-ness and pumped up egos is excruciating.
The most fun we have when you discover after some months that people have successfully hidden an enormous knowledge gap or a fundamental lack of insight.
I wish we could hire some robots, or clone our veteran developers like 40 times, it would safe so much time and energy.
I like the term “minions” but that’s probably why I don’t have any. Please teach me the ways.
I think your method works because you command respect by reputation. Finding the right type of inexperienced person and then molding them into a productive dev works well if you have something to teach them. But not all managers are rockstar developers like you Grant… I’m looking forward to reading further.