DIY Development

lasik-diy-eye-surgery.jpgThe WSJ Business Technology blog has a post about “Where the Next Generation of Techies Won’t Come from“. Aside from offending my grammatical sensibilities, you know, ending a sentence with a preposition, the post interests me for a couple reasons.

The crux of the post refers to statistics published by the Computer Research Association that show the number of students receiving computer science degrees from American universities is at its lowest point in the last ten years.  According to the WSJ post:

The number of new students enrolling in computers-science programs at these schools today is only half of what it was in 2000 — 15,958 then compared to 7,915 now.

Further:

The number of students enrolling in computer-science programs dropped when the dot-com bubble burst in 2001. You might expect enrollment to shoot back up now that the “Web 2.0” renaissance is minting a new round of techie millionaires.

This is the interesting part. Stands to reason that the lure of Web 2.0 riches would put butts in the seats of computer sciences classrooms, but statistics don’t lie. That’s not happening. Why? Because we are DIY nation.

As Americans, we like to do it ourselves, i.e. D.I.Y. This probably has a little to do with the Pilgrims and the pioneer spirit, but if you look around, you can tell we value independence and self-sufficiency. This is why stores like Home Depot and Lowes flourish. If you read Engadget or Gizmodo, you’ve seen all manner of DIY electronics. We’re a curious bunch, and we like to rely on our own skills whenever possible.

Couple this spirit with some of the points made by Zed in his rant, echoed in uncov frequently (wow, I miss that blog) and you get what I’ve called the “lazyweb“. Why would an enterprising young college student waste time in computer science classes, when it’s so easy to learn and execute on your own? Languages like Rails have made it simple to build nice web apps that barriers to entry have been removed from the world of development. What you get is a generation of DIY developers who don’t see the need for computer science courses.

Pretty much anyone can design a Rails app and run it on Amazon Web Services for cheap. Is this a good thing? I took a few CS classes back in the day; remember Pascal? CS always reminded me of Calculus. A working program did not guarantee you an A; the professor often critiqued your code writing and algorithm design. This is kind of a big deal to learn because poorly design code tends to fall over when stressed.

Anyway, I’m no expert, but it seems like a disturbing trend. If anything, the WSJ should be right; more money in Web 2.0 should signal a rise in student seeking CS degrees. The fact that it doesn’t means two things: 1) there are way too many DIY developers out there because there’s no shortage of Web 2.0 apps and 2) the overall quality of developers (or people who claim to be developers) is falling.

What do you think? Do people need CS degrees to really be good at development? Is easy development on Rails driving down the overall quality of software development? Sound off in comments.

AboutJake

a.k.a.:jkuramot

25 comments

  1. Pingback: DIY Development
  2. Just focusing on webbased applications I dont think a CS degree is always necessary (I’m only 12 units off but was all math which I never use anyway) though sometimes is helpful.

    You need design skills or at least enough that you can hire and critic a good designer. You need business skills or at least enough that you can argue this years set of MBA’s from doing something stupid (agian), you need social skills or at least enough to keep a meeting on track, etc etc.

    I think a good Web Developer should be a jack of all trades or for the more cultured a Renaissance Man / Woman.

    Now when you get into things like JVM’s or database engines or Image analysis engines ….. then yeah a CS degree would be sorely needed.

    PS. I ended up with a geography degree specializing in Remote Sensing (working with satellite data) and GIS so what your degree is in doesn’t always show what your proficient at.

  3. Just focusing on webbased applications I dont think a CS degree is always necessary (I’m only 12 units off but was all math which I never use anyway) though sometimes is helpful.

    You need design skills or at least enough that you can hire and critic a good designer. You need business skills or at least enough that you can argue this years set of MBA’s from doing something stupid (agian), you need social skills or at least enough to keep a meeting on track, etc etc.

    I think a good Web Developer should be a jack of all trades or for the more cultured a Renaissance Man / Woman.

    Now when you get into things like JVM’s or database engines or Image analysis engines ….. then yeah a CS degree would be sorely needed.

    PS. I ended up with a geography degree specializing in Remote Sensing (working with satellite data) and GIS so what your degree is in doesn’t always show what your proficient at.

  4. @Carl: I’m not saying a CS degree is a necessity for a good developer. I am saying it really helps to build fundamentals that translate to any language.

    Just because someone can write code that works, doesn’t mean it’s good code. I would know. I have an economics degree, and I can write code that works. However, you’d be wasting your money if you paid me to write your production code.

  5. @Carl: I’m not saying a CS degree is a necessity for a good developer. I am saying it really helps to build fundamentals that translate to any language.

    Just because someone can write code that works, doesn’t mean it’s good code. I would know. I have an economics degree, and I can write code that works. However, you’d be wasting your money if you paid me to write your production code.

  6. I totally agree, knowing programing logic and how to build standard logical constructs is absolutely key, doesn’t really matter what the language ,Pascal , Basic , Lisp (I hated Lisp!) that’s just experience.

    I’m just saying there is much more to successful applications than just the code though bad code can ruin everything.

  7. I totally agree, knowing programing logic and how to build standard logical constructs is absolutely key, doesn’t really matter what the language ,Pascal , Basic , Lisp (I hated Lisp!) that’s just experience.

    I’m just saying there is much more to successful applications than just the code though bad code can ruin everything.

  8. I’ve worked at too many organisations and government departments where somebody who thinks they know something about computing (normally a PhD) has built some system (in my personal experience a database), which at some stage then needs to be integrated into the rest of the organisation. It quickly becomes apparent the original “guru” had no idea about normalisation (in terms of RDBMSs), change control, scalability, coding standards, standard software selection, security etc etc etc…. where do you want me to stop? And then the IT departments get stuck with the #*@!, the politics of trying to educate others why it’s #*@!, and then the maintenance of a system that they didn’t build in the first place. Lucky IT.

    I wont admit to a CS grad will give you this stuff, but the hackers out there certainly don’t. They should stick to playing with their iPods.

    (hopefully this doesn’t sound like too much of a bitter and twisted Sunday morning post 😉

    CM.

  9. I’ve worked at too many organisations and government departments where somebody who thinks they know something about computing (normally a PhD) has built some system (in my personal experience a database), which at some stage then needs to be integrated into the rest of the organisation. It quickly becomes apparent the original “guru” had no idea about normalisation (in terms of RDBMSs), change control, scalability, coding standards, standard software selection, security etc etc etc…. where do you want me to stop? And then the IT departments get stuck with the #*@!, the politics of trying to educate others why it’s #*@!, and then the maintenance of a system that they didn’t build in the first place. Lucky IT.

    I wont admit to a CS grad will give you this stuff, but the hackers out there certainly don’t. They should stick to playing with their iPods.

    (hopefully this doesn’t sound like too much of a bitter and twisted Sunday morning post 😉

    CM.

  10. @Carl: I agree that cross-functional skills make a person better at X. Where X equals just about every job or activity.

    My focus for this post was on code writing and quality alone, i.e. making it easy to write and deploy crappy code is a bad thing.

    @Chris: This is pretty much was I’m getting at, applied to inside a company. I think it’s probably worse outside though, i.e. in startups.

    It’s hard to have this conversation without sounding bitter because there is a generational undertone by definition. When I was in college, we studied Pascal, C, and C++, which you could learn from a book, but the benefit of in class training was critique.

    Now, the curriculum must be different. If I were a student today, why would I study Rails or PHP in a class when I could get access to experts in these languages for free, along with code to deconstruct (thank you Interwebs). It seems like a waste of time.

    I agree that hacking has its limits, and at some point, a formal education in code structure and function is required to make the leap.

  11. @Carl: I agree that cross-functional skills make a person better at X. Where X equals just about every job or activity.

    My focus for this post was on code writing and quality alone, i.e. making it easy to write and deploy crappy code is a bad thing.

    @Chris: This is pretty much was I’m getting at, applied to inside a company. I think it’s probably worse outside though, i.e. in startups.

    It’s hard to have this conversation without sounding bitter because there is a generational undertone by definition. When I was in college, we studied Pascal, C, and C++, which you could learn from a book, but the benefit of in class training was critique.

    Now, the curriculum must be different. If I were a student today, why would I study Rails or PHP in a class when I could get access to experts in these languages for free, along with code to deconstruct (thank you Interwebs). It seems like a waste of time.

    I agree that hacking has its limits, and at some point, a formal education in code structure and function is required to make the leap.

  12. Jake,

    This is certainly a true observation, but I think it’s worth keeping in mind that while a CS degree is probably the most structured and predictable way of learning to have the software design discipline to do the things Chris mentions, it’s not the only way.

    Self-study and critique through mentorship is another route, but one that takes significant motivation and a drive to “get it done right” rather than just “get it done.” The later is certainly the predominant approach in a lot of software today (web-based, desktop, and even enterprise!!), and that could be attributed to lack of CS training, but it’s more likely attributable to the way that commitment to quality is distributed itself along the continuum from slouch to guru.

    Come to think of it, if “get it done right” isn’t your focus, a CS degree probably won’t help you a ton. Even experienced developers will encounter situations demanding unfamiliar approaches, and at that point you’ve got to be willing to put in the work to learn to get it right.

    In any case, I can’t claim a CS degree for myself. I’m just a hack, but one who much prefers to get the hack done right 🙂

  13. Jake,

    This is certainly a true observation, but I think it’s worth keeping in mind that while a CS degree is probably the most structured and predictable way of learning to have the software design discipline to do the things Chris mentions, it’s not the only way.

    Self-study and critique through mentorship is another route, but one that takes significant motivation and a drive to “get it done right” rather than just “get it done.” The later is certainly the predominant approach in a lot of software today (web-based, desktop, and even enterprise!!), and that could be attributed to lack of CS training, but it’s more likely attributable to the way that commitment to quality is distributed itself along the continuum from slouch to guru.

    Come to think of it, if “get it done right” isn’t your focus, a CS degree probably won’t help you a ton. Even experienced developers will encounter situations demanding unfamiliar approaches, and at that point you’ve got to be willing to put in the work to learn to get it right.

    In any case, I can’t claim a CS degree for myself. I’m just a hack, but one who much prefers to get the hack done right 🙂

  14. @Ethan: “Self-study and critique through mentorship” sounds an awful lot like the CS classes I took 🙂

    BTW, I am a predominately self-taught hacker and have nothing against learning on your own and self-motivation.

    The bottom line for me is what’s behind the numbers. There are 50% fewer students enrolling in CS courses now versus 2000. Assume: 1) the population of students has not declined by 50% and 2) the number of classes has not declined by 50%. This equates to a sharp decline in the number of college students with exposure to CS.

    I’d further posit that the number of people claiming to be developers has not declined 50% either. All this points to an overall decline in the quality of developers, IMHO.

    Development interviews typically consist of algorithm problems and code quizzing. What happens when you can’t find anyone to give the answers you want?

    a) Don’t hire anyone and do the work in-house, spreading additional labor across your resources.
    b) Outsource the work, possibly offshore.
    c) Look to hire offshore.
    d) Keep looking.
    e) Repurpose and train an internal resource.

    Are there others? These are all time-intensive options, some requiring investment too. I dunno, seems like a crappy situation. I’d like to have a handful of qualified applicants from which to choose.

    So, my point is: CS is good, hacking is good, cross-functional knowledge is good. When any of these decline, that’s bad. What if CRA said hacking was down 50% since 2000? Still bad. You need all these pieces to succeed.

  15. @Ethan: “Self-study and critique through mentorship” sounds an awful lot like the CS classes I took 🙂

    BTW, I am a predominately self-taught hacker and have nothing against learning on your own and self-motivation.

    The bottom line for me is what’s behind the numbers. There are 50% fewer students enrolling in CS courses now versus 2000. Assume: 1) the population of students has not declined by 50% and 2) the number of classes has not declined by 50%. This equates to a sharp decline in the number of college students with exposure to CS.

    I’d further posit that the number of people claiming to be developers has not declined 50% either. All this points to an overall decline in the quality of developers, IMHO.

    Development interviews typically consist of algorithm problems and code quizzing. What happens when you can’t find anyone to give the answers you want?

    a) Don’t hire anyone and do the work in-house, spreading additional labor across your resources.
    b) Outsource the work, possibly offshore.
    c) Look to hire offshore.
    d) Keep looking.
    e) Repurpose and train an internal resource.

    Are there others? These are all time-intensive options, some requiring investment too. I dunno, seems like a crappy situation. I’d like to have a handful of qualified applicants from which to choose.

    So, my point is: CS is good, hacking is good, cross-functional knowledge is good. When any of these decline, that’s bad. What if CRA said hacking was down 50% since 2000? Still bad. You need all these pieces to succeed.

  16. “more money in Web 2.0 should signal a rise in student seeking CS degrees”. That’s a bit short-sighted. Yes, there might be more money this year or next, but what about a few years down the track after you graduate ? What about ten years after that when there’s a new paradigm ? And when your product is a stream of data, how sure are you about where the jobs will be ?

    I’m not sure I’d recommend IT as a long-term career path. Plumber, electrician, engineer, architect…..

  17. “more money in Web 2.0 should signal a rise in student seeking CS degrees”. That’s a bit short-sighted. Yes, there might be more money this year or next, but what about a few years down the track after you graduate ? What about ten years after that when there’s a new paradigm ? And when your product is a stream of data, how sure are you about where the jobs will be ?

    I’m not sure I’d recommend IT as a long-term career path. Plumber, electrician, engineer, architect…..

  18. @gary: Short-sighted maybe, but that was the trend in the 90s, i.e. more kids in CS classes because of the money tech jobs were paying.

    Technically speaking developer isn’t different than the careers you mention. It’s a specialized skill that applies in areas other than just IT, and it translates to commercial and residential applications.

    Besides, high tech isn’t going away. If anything, we’re more dependent on software and hardware every year, making a CS degree a sound investment.

  19. @gary: Short-sighted maybe, but that was the trend in the 90s, i.e. more kids in CS classes because of the money tech jobs were paying.

    Technically speaking developer isn’t different than the careers you mention. It’s a specialized skill that applies in areas other than just IT, and it translates to commercial and residential applications.

    Besides, high tech isn’t going away. If anything, we’re more dependent on software and hardware every year, making a CS degree a sound investment.

  20. Jake, Interesting thoughts on this one for me as 1) I don’t have a CS degree and somehow manage to be in development and 2) I was just talking with my dad last week mentioning that I don’t see this as a career path that my children will have available to them, at least not the way it was for me.

    I think your point about US being DIY oriented is valid but not the whole point. I think that software as an industry is changing. I think this is a reflection of that. In the US we like careers that have a large monetary upside. At least when we are young and idealistic/greedy. Thus the boom of MBAs in the 80’s when we were told Greed is good and the boom in CS when the dot-com era was upon us. I think that is the real force at play here.

  21. Jake, Interesting thoughts on this one for me as 1) I don’t have a CS degree and somehow manage to be in development and 2) I was just talking with my dad last week mentioning that I don’t see this as a career path that my children will have available to them, at least not the way it was for me.

    I think your point about US being DIY oriented is valid but not the whole point. I think that software as an industry is changing. I think this is a reflection of that. In the US we like careers that have a large monetary upside. At least when we are young and idealistic/greedy. Thus the boom of MBAs in the 80’s when we were told Greed is good and the boom in CS when the dot-com era was upon us. I think that is the real force at play here.

  22. @Meg: Well, VC says the money is still there, i.e. in tech, specifically New Web. So, sure greed is the driver. DIY means it drives young capitalists to Rails, skipping the CS degree. Better investment b/c you realize gains faster w/less in sunk costs (education).

    The industry is changing, specifically b/c of DIY. I say, when taken as a single point, a lower percentage of CS trained-developers is a bad thing for overall quality.

    So greed is still driving career choice, and thanks to DIY, developers can skip the fundamentals. Not good.

  23. @Meg: Well, VC says the money is still there, i.e. in tech, specifically New Web. So, sure greed is the driver. DIY means it drives young capitalists to Rails, skipping the CS degree. Better investment b/c you realize gains faster w/less in sunk costs (education).

    The industry is changing, specifically b/c of DIY. I say, when taken as a single point, a lower percentage of CS trained-developers is a bad thing for overall quality.

    So greed is still driving career choice, and thanks to DIY, developers can skip the fundamentals. Not good.

  24. Well, i think CS degree is certainly not necessary to be good a developer. although, it is a good platform to develop that logic for coding. Nevertheless, CS degree will always be beneficial.

Leave a Reply

Your email address will not be published. Required fields are marked *