Why I’m Not Looking to Hire Computer-Science Majors
wsj.com
wsj.com
The thrust of Daniel Gelernter's argument here is that there is a shortage of programmers with a certain kind of skill set suitable for working in startups, because large businesses that grew up as successful startups have bid up the price of programmers with those skill sets. "Part of the problem is that startups have to compete with hegemons like Google and Facebook that offer extraordinary salaries for the best talent." My oldest son began working at Google a month ago, so for the last couple months family conversation has included discussion of Google's hiring process and how working for Google compares to working for other startups (my son's previous employment). The programmer job market has a lot of interesting features, but one of those features is indeed a fairly high premium on software engineers who have a love of coding (who are self-motivated, whether or not the job market rewards the motivation, in learning more and more about coding every day) and who have good problem-solving skills, a business orientation to doing work that meets customer needs and builds a profitable company, and good written and oral communication skills. There is a severe shortage at all levels of employment of software engineers who meet those other requirements.
The author's other comment to note is "The thing I don’t look for in a developer is a degree in computer science." It's empirically true that young people can get great jobs as software engineers at the most selective employers even if they don't have degrees in computer science--as long as they can handle a tough series of technical interviews. I've seen it done. Many other commenters on Hacker News have noted that software engineering, more than most occupations in the United States, has processes for finding people with actual technical skill irrespective of whether those people have college degrees. If you are looking for work, having a college degree may provide many benefits (among those the ability to gain a visa to move to another country where you would rather live), but the main thing to gain is the knowledge and experience that helps you solve actual problems in industry with code that works. Some people gain that knowledge and experience through a computer science degree program (or at least DURING a computer science degree program), but others gain it through other channels, and the smartest companies look for worker performance more than they look for degrees.
[1] https://en.wikipedia.org/wiki/David_Gelernter
[2] https://www.linkedin.com/pub/daniel-gelernter/11/a57/251
[3] http://www.wsj.com/articles/SB100014240527023032815045792222...
"[... people] who have good problem-solving skills, a business orientation to doing work that meets customer needs and builds a profitable company, and good written and oral communication skills."
Your following sentence is also true with the modification I've made in brackets:
"There is a severe shortage at all levels of employment of [people] who meet those other requirements."
With programming skills or not, people with these characteristics have always been rare. We can gather lots of them for a while for massive nation efforts like the Manhattan Project (something I've been studying in detail for the last few months), but in normal times all organizations, from Google to just another startup, have trouble finding these people who will make or break their ventures.
You wouldn't hire a food scientist to control and feed the machines that produce the bread in an industrial bakery, or even to design and build that production line. Producing code is not as closely related as one might think to the science that leads to the algorithms and design patterns that underscore the languages and frameworks that enable the tools and techniques ultimately used by those who produce code.
The sooner all concerned (me, you, academics, entrepreneurs, employers) settle on a suitable terminology for what it is that computer scientists, software engineers, and developers need to learn to do what they do, the sooner we can get past this type of article.
The problem is that even if you understand those concepts well, you're not necessarily able to apply them after most programs. If your startup is in the business of crating new algorithms to solve various problems, that's one thing, but what most want is someone who knows what existing algorithm should be used to solve a problem in the best (or at least an acceptable) way, and do so in a manner that's both expandable and maintainable. Ideally, they're looking for a craftsman, not a scientist. These roles can occasionally be found in the same person, but it's extremely rare in my experience.
Maybe I'm out of touch with the realities of the world, being an ancient 31-year old PHP/Java developer who's never written a line of something cool like Go in his life, but an expectation of $10k post-tax right out of college doesn't seem like a realistic expectation for every graduate.
I'm a developer in the Midwest, and that's pretty much it for me. I live where there are houses I can afford. I'm not much for the urban lifestyle.
None of these are exactly cheap cities (Portland might be the closest), and not everyone wants to move to a city just to do a job they could have done from home.
But pay is lower in fly-over country, certainly.
Glassdoor has an average software engineer in Chicago making $75k. Bankrate says the equivalent income in SF would be $113k, and Glassdoor has median salary in SF as $103k.
$10k is a lot of money to be sure, and you are paying a premium for SF, but it's not always so dramatic.
Employers seem to be pretty good at adjusting salaries by geography according to cost of living. You can't really "win" unless you can convince someone to pay you a Bay Area salary to live in the Midwest. And maybe you can, but if they're smart and the market is efficient, it won't last long.
And, of course, it's "cloud based". It sucks up all your email into their servers, where they get to look at it. Privacy policy? What privacy policy?
This article is nonsense, and whoever the author is, I guarantee you he has no idea what he's doing.
The article identifies who the author is. He is the leader of a startup. People who recognize his name know that he is the son of a very famous computer scientist (and the grandson of another computer scientist).
SEO baby.
That said, I personally know several academics who argue that it is simply not a university's responsibility to follow the demands of industry. While a bit extreme, I see the point they are trying to make.
Of course, this should not mean that whatever industry asks for is law - sometimes they simply get it wrong (it is usually not very difficult to realize when), which is exactly the point where universities can help by not educating students to repeat the same mistakes. Something like saving companies from themselves, I guess.
There is a real disconnect between the skills taught in college to the skills needed in the work environment. If you're going to college to learn coding so you can get a job, then you're being done a disservice by being taught things you'll never need.
I wonder how effective these "hacker" schools are. The ones I investigated didn't seem interested in best practices, it was a real focus on getting code on the screen. That can be a hugely damaging mindset working on large, complicated software.
I enjoy building hardware using microcontrollers and FPGA's. and have several open source projects on Github.
Companies put too much emphasis on credentials, and not enough emphasis on recruiting and mentoring people who build electronics and programming for fun. It is these people who build things which change the world.
On a related note I strongly believe that taking a 12-week course or a bootcamp in [insert latest flavor of the day here] does not allow you to call yourself a software engineer or a computer scientist. Anecdotally, I've noticed a marked increase in that attitude (and another term I intensely dislike - IT) since moving to New York. This attitude grossly misrepresents what it means to be a software engineer or a computer scientist, which is much more about an approach to analyzing and solving problems using a combination of experience and first principles in face of tradeoffs, than using specific tools or languages.
Rant over.
That's why other engineering disciplines have CPD and it takes several years to get to full chartered status.
It should be food for thought as we discuss this article that the author is the son of a famous computer scientist who is a professor of computer science at Yale. I think the nature of a university education and what a university education is for was probably dinner-table conversation at his home as he was growing up.
If you have only the former, you are a technician, who understands what to do and how but without a deep understanding of why. (And there are plenty of programs that turn out such people in the software field, typically through two-year degrees in community colleges.)
If you have only the latter, you are a theorist with a deep sophisticated understanding of hard problems in your field, but without the skills to build much of anything right now. You known the why, but not the how. But if that's really what you want, try a degree in math or maybe physics.
Technical undergraduate degrees are supposed to bridge this gap by teaching both the how and the why, producing people who both understand the subtleties and can do real work right now. That's really useful, which is why these graduates are so sought-after. A university that neglects either side of this span is producing people who are a whole lot less useful, and that's what Gelertner is pushing back against in his article.
This falls apart at graduation + n years, unless you accept that up-to-the-minute skills must be maintained and regathered as the minutes progress.
If it's possible for an educated mind to continue to keep up-to-date, then one must accept that an educated mind, freshly graduated with a sophisticated understanding of the field can, and probably should, pick up the up-to-the-minute skills as part of the on-the-job training any new graduate acquires.
There's always a ramp-up in any new role, especially so for someone who's never worked professionally before. Given a choice, I'd rather aim for an education providing the depth, and the up-to-the-minute ramp-up happening on the job rather than the other way around, because I've never seen a developer's day job provide any significant theoretical depth beyond what is required to get the job done. If you don't learn how compilers and operating systems and low-level memory management and design patterns and concurrency and big-O notation work before you hit the workforce, you're not very likely to pick all those up at work.
I think you can make a very solid argument that universities would do well to offer a Software Engineering track alongside CS, one that focuses less on formal mathematical analyses of algorithms and reticulating splines, and more on practical concerns of software teams -- different approaches to the SDLC, ways to work in a team, how to evolve existing code without breaking things.
But the argument he actually makes -- that universities should be teaching "iPhone or Android development" and spend multiple semesters on that... yeah, no. If you want a trade school that's narrowly focused on teaching people a job skill that's in demand this very second, I'd argue you're misguided, but whatever; either way, it's not what universities do and shouldn't be. The point of a university is to teach you things that won't be worthless a few years after you graduate.
- because everyone should be training to work for a startup?
- why not hire passionate people and train them if university trains them badly? Sounds like people are trying to find perfect developers and of course the competition for those is huge.
It would teach things such things as the SDLC, waterfall/agile, a dvcs, code maintainability, a documentation system, working with others, writing tests, qa, project management, etc, etc.
* site:wsj.com Why I’m Not Looking to Hire Computer-Science Majors
* Why I’m Not Looking to Hire Computer-Science Majors
I was able to find it copied on a unrelated site. Or at least, I assume it's the same article, but I have no idea of knowing.
I'm not sure why you couldn't get it through Google, since searching for the title works OK for me - it shows up as the featured "In the news" link at the very top of the results page. You can also try searching via news.google.com; that should also get you through the paywall.