I was chatting with a friend today on how difficult it has been for his startup to hire. They’re competing against startups flush with Series A/B cash, IPO-candidate companies offering equity with some weight, and public companies that are willingly overpaying for talented new college grads. He seemed resigned to have to match the increasingly high wages for an engineer to help him with the product vision.
It’s not a surprise that there is now a reactionary jump in CS major enrollment and various hack houses/classrooms/academies that promise to teach software development via intense, condensed curricula. New CS grads are more of a known quality at this point, but it’s been interesting to gauge the grads from these coding-centric programs; they’re trained in modern frameworks, but have much less in experience with computer science concepts and theory.
But hundreds of interviews have convinced me that neither group can replace the technical expertise of a software engineer with years of experience. The path to software development from computer science is common, but not exclusive or causal; many non-CS majors have worked their way to become extremely good software engineers, and I’ve known some top computer science students who opted to do something else completely. Writing good software and building robust architecture isn’t taught in an educational vacuum.
As someone who had to go through a fairly rigorous and competitive CS program, I can understand the appeal of elevating the value of that degree, and claiming that there are certain advantages it confers which would make a CS-backed candidate much more valuable than one from an accelerated program. Our interview and vetting processes also reinforce this desire: “smart”, in the context of a hiring candidate, usually means having the ability of working through lower-division CS course material.
Then again, as someone who also isn’t that great at constructing clever algorithms on the fly and doesn’t immerse in a technology and hobby projects, I’ve had a pretty good run of software development gigs. Having had the fortune of helping build quality, scalable software with great folks, I’ve appreciated that their expertise was not determined from their first years in the industry but through years of persistence and curiosity. Sometimes we forget that the beginning of a career is just that.
I disagree. I’m graduating this Friday (CS from Virginia Tech) and we did not learn any modern framework in school. I did that on my own. Yesterday, I just submitted my operating system which I built this year. Now that’s not modern, and requires extensive knowledge in C and CS fundamentals.
Two questions:
– How many new grads build OSs in their spare time?
– Why build your own operating system? How does a new operating system built only in a year a better alternative than what we have currently?
– It wasn’t in my spare time. It was a class. I took three consecutive OS classes (so spent a year and a half).
– Educational purposes? Submitted. Meaning, submitted for the class. You’re complaining grads have no CS fundamentals. I’m showing you that there are grads out there who can build OSs, hence, strong in CS fundamentals.
My point was that CS grads mostly only have CS fundamentals, and that’s not quite enough for production software development.
Agreed. But that’s why they join in junior developer positions. I learned more during my internships that in school about software development. A good company can pick out eager and motivated grads who’ve had some experience (but not enough) who can become great at production software development in a short timespan.
I see you work at Square. I was there a few months ago actually. You guys do it better than others, but still not quite I believe. But again, you probably receive hundreds of applications (I believe I was selected out of 200 people – they picked 8) so it’s tough.