Our dev team here at Webkite is incredibly over-educated. Between us, there are graduate- and doctorate-level degrees in philosophy, political science, mathematics, geology, and electrical engineering. No, we’re not an education startup, and we don’t have an especially big budget to make lavish hires.
We’re simply located in Pittsburgh.
Pittsburgh is home to a number of great universities, but doesn’t exactly offer a huge pool of programmers like some bigger cities. What Pittsburgh does have is a lot of highly educated candidates who have strong academic backgrounds and are eager to learn and build. I work at a startup company called WebKite there, which is a data filtration platform that allows anyone to create decision engines built on top of their data. It’s a complex problem that requires a lot of abstract thinking–the kind that graduate-level students are used to.
“We’re building out an app that can be so many things to so many people,” our founder, Eric Silver, told me when we discussed the topic of this guest post. “How do you go about finding a developer who is excited to work on some of the smaller features?” His solution has been to apprentice PhDs and turn them into programmers–and we’ve had incredible success with it.
“With an apprenticeship program, you find extremely talented, interested folks and teach them how to solve these smaller problems as you teach them a craft,” says Silver. Eric Silver taught himself how to code too so he could build the earliest prototype of the WebKite platform to share with investors. This gave him the idea to institute an apprenticeship program into the structure of the company, which became the “Non-Traditional Programming Internship,” as we call it. Soon, WebKite began to bring on PhD graduates, teach them the Ruby on Rail programming language, and integrate them into WebKite’s development team with fellow developers acting as mentors.
WebKite currently has two software developers who are going through the Non-Traditional Programming Internship and one who has completed the program. Between the three of them they have PhDs in Philosophy, Mathematics, and Computer Engineering.
Greg Gates, one of our early graduates of the program, found the switch from a PhD program to the Non-Traditional Programming Internship to be exciting. Gates told me, “It’s been a really great challenge, mostly. Coding is a great skill in that it doesn’t take long before you can write code that works, but it does take a lot of practice to develop the skills to solve hard problems and to write code that’s readable and runs fast. Looking back on code I wrote two months ago always makes me want to cringe a little bit, but it’s still up there powering our application.”
It’s not always easy, but the novice programmers persevere and solve challenges as they materialize. Ying Liu, who has been with the team for over six months, recalled the friction of learning to code. “I can still remember the first two days I was struggling with setting up my work environment on my computer, while at the same time having no idea what I was installing. Not to mention having to write code in a programming language I never used before. But when I start to learn how to code and solve problems one by one, I feel real excitement.”
PhD students have turned out to be stellar junior developers. They are intellectually curious, disciplined, learn quickly, love to solve problems, and innovative when they suspect there’s a better way.
Merve Kovan-Bakan, a more recent addition to our program, spent six years in academia, but the switch to coding hasn’t been too much of a jolt. “How you’d structure your proofs for a theorem is very similar to how you’d go about writing a meaningful code,” she explains. “When you are proving theorems, you have to think about all the cases that might arise, maybe write a long and unnecessarily detailed explanation of why the theorem is true at first, and then try to make it more readable, in small beautiful chunks at the end.”
Why are folks with PhDs such great candidates? PhD programs teach students how to take a research question, set up a research program around it, and then implement a process to answer that question. If you have a PhD, you know how to complete this process. Coincidentally, these same processes are highly valued in a startup environment.
They also know how to fail. “During the PhD program, these students, at some point during their program, faced mind-numbing failure,” says Peter Meulbroek, WebKite’s CTO. “They’ve been catastrophically wrong with one underlying assumptions, and had to adapt a process to that realization. These are incredibly useful skills to the developer: To be able to design a research program and to be able to face failure and recover, and to pick up the skills necessary to solve a problem.”
“From being in academia, I’ve been responsible for setting, then meeting, deadlines and creating a structure to reach my goals,” Kovan-Bakan said of the program. “Also, I spent a lot of time thinking about questions and jumping from problem to problem–all things needed in a startup environment.”
Since many of these PhD graduates are lifelong learners, they’re willing to learn new computing skills, which is important as skills quickly become obsolete as trends in software tools evolve. Having the ability to learn systems is vital to surf these waves, and today’s skills aren’t as important as being able to learn tomorrow’s skills.
While we’re always refining the process of the Non-Traditional Programming Internship, here are some of the things we’ve learned along the way:
- Know the local educational environment from which you are hiring. WebKite has found success in understanding the PhD programs from which we are recruiting. This really helps in knowing which candidates will thrive in the program and benefit from what is has to offer.
- Create an environment where failure, support, and experimentation is encouraged. Ying Liu says, “I learned a lot through the help of my mentor. He has reviewed my code very carefully and gave me very good suggestions, including coding styles and performances. In addition, the other senior developers in WebKite are very nice and are always ready to help.” Most of the time, those who graduate from the class become mentors to the next group. They bring their knowledge and know-how to avoid many of the pitfalls that plagued their experience.
- Encourage a work culture that values all contributions and growth from team members. Gates says, “I think one of the reasons for this program’s success at WebKite is that we have a lot of people here who understand the value of cultivating individual development, and we also have a lot of people who are happy to fill a part-time mentorship role. Plus, a small startup is a great environment for someone who’s a “junior” member of the team to own important parts of the project, rather than just getting other people’s grunt work, which is a great incentive to learn fast.”
Startup companies are always eager to bring innovation and disruption to the marketplace. By innovating how we hire and train new developers, WebKite has been able to stay on the cutting edge, while maintaining our rapid development pace. If you’re curious about the program or have some questions, send me an email at Dan@WebKite.com or leave a comment. We’re always excited to talk more about the Non-Traditional Programming Internship.
Dan Tallarico currently works at WebKite, a startup in Pittsburgh, Pennsylvania, where he helps spread the word about WebKite, handles communications, and generally gets people hyped up about the product. Prior to entering the startup arena, he spent time writing about video game industry at PikiGeek.com and handling the social media for Printing Industries of America. When he’s not talking about WebKite, he’s pioneering the world of pizza journalism at PizzaWalkWithMe.com or tweeting @Woozle. You can email him at firstname.lastname@example.org.
[Image: Flickr user Orin Zebest]