Thursday, August 29, 2013

The banality of the "CS" degree

I recently mentioned a Portland Code School meeting I attended, at CorSource in downtown Portland, to a friend of mine. It started an interesting conversation.

Here's some context: Portland Code School is a crash-course, 12-week program where students work about 90 hours per week to rapidly learn web app coding, expand their portfolios (by deploying web apps onto Heroku), and try to enter the workforce as a junior developer. Top students are regularly recruited by area companies.

The meeting I went to included a presentation of PCS grad projects, a panel discussion, and a presentation from TAO president Skip Newberry

Talking about this program, and my experience at the meeting, sparked a whole conversation about industry habits and how junior developers are educated and hired.

What is a CS degree?

Like I said, this sparked a conversation with my friend, an employee down at MPulse Software in the Silicon Shire (pka Eugene). He's not a programmer, but is extremely tech-savvy and as such as free to focus on industry trends rather than just code. Here are some excerpts:
Friend: I think you would agree that as technology has progressed programming has gotten more and more complex, and thus the logic and languages can be more complex—not to mention the number of lines of code. As such, to keep CS to a four year program which has been deemed standard, they have to cut practical knowledge in favor of theory and abstract concepts perhaps. What is needed is an increase in length of schooling for a fully qualified CS degree.
Me: Most CS degrees take 5 and sometimes even 6 years to complete, at a reasonable rate. But you're right. Like most universities do, they tend to focus on the conceptual end of things, rather than practical applications—because universities function as enclaves for conceptual-level thinking, where it doesn't have to attach to real-world problems. Many universities such as PSU attempt to integrate with the real world, through things like capstone projects and industry internship programs like MECOP or CECOP. But for the most part, education is limited to the abstract.
Shamelessly borrowed from upstartHR
My friend's point is a good one: so many CS graduates don't really know what they're doing. In fact, many industry representatives tell universities that their graduates don't know what they're getting in to. This is very frustrating for HR departments, who obviously want the hiring process to be as easy as possible.

Vague Job Titles

A panel member at the PCS event, went so far as to express his frustration with the hiring process (paraphrasing): "'Endocrinologist' means something. But what's a 'software architect?'"

This is a good point. We use phrases like "computer science" and "software architect" without really attaching it to a real job. It floats around as an abstract concept—"software architects are to software as architects are to buildings"—without tying it down and anchoring it to real practices.

And my friend had the same sentiment...
Friend: I think another problem is the influx of the hiring process being handled and dictated by HR, a sub set of people that don't really know what they are looking for in candidates—they just look for meaningless industry buzzwords.
Whether this is true, I can't say; I haven't been involved with hiring anybody. But it's a pretty good insight. When the people hiring don't really know what they want, you're bound to be disappointed.

"Buzzwords" and "Jargon"


Just a few of the many things the blanket term
"Computer Science" might involve.
When the same panel rep I mentioned earlier expressed his frustration to me, I had a bit of a realization. Industry jargons such as "endocrinologist" are terms which are typically formalized by the university. And medicine has been around as a university college for a very long time. Computer science, however, is still an infant: you can get a BS, MS and PhD in "Computer Science" at Portland State University. But what does that mean?

This term is so overused that it's becoming banal, and many companies opt out of hiring CS graduates and junior developers because they "don't know what they're doing." It's a hard sell, having a banal title to your name. At least a senior developer, with 7 years of experience, knows what s/he is doing.

Regardless, it seems clear that, in order to help alleviate frustration of both potential employees and potential employers, the industry and university need to work together to help discretely define the different jobs.

What can be done?

First of all, employers need to take a critical look at what they want, and what they produce, in terms of human resources. When you hire a new developer, what does he or she become after five years of working at your company? What are his or her skills, and what would you then call that person's role? All of these factors play in to what you're really looking for in a new employee.

Second, it is important not to forget the beauty of the junior developer. We're like wet concrete, unfired clay. We have raw ability, and sometimes still no strong opinion about what we want to do. Employers often cite this as "not knowing what you're doing," because it seems obvious that someone should have drive and direction.

I highly recommend this
program to young
professionals.
But half of the problem is that we don't know what's out there, because your job titles are just as banal as our degrees! Consider this 'lack of drive' instead as a 'willingness to go any direction.' And instead of turning these sorts of applicants away, think of ways to ensure that this potential employee has the skills you need, and the personality to fit the role you want. Refer back to "first of all."

I'm going to close by praising Portland Code School for its wonderful effort. In their short program, expose their students directly to industry by directly asking what skills are sought after. Then PCS teaches to those skills: AngularJS, Ruby on Rails, MySQL, Moodle, and so forth.

And the results were impressive. Here's an example of the kind of project a PCS grad can add to their portfolio, and an example online portfolio webpage PCS students make during the course.

No comments:

Post a Comment