Thursday, April 12, 2012

Lack of fundamentals in web programming education - Michael Kimsal

Lack of fundamentals in web programming education - Michael Kimsal:
Wasn’t sure what to name this entry, but have had a few discussions with some people over the past month or so about their experiences.  All of them were finishing up “web development” degree programs (under somewhat different nams) at institutions in the area, and all were talking about looking for jobs.
I was dismayed (but not necessarily shocked) at how little understanding they had about the basics trade skills that are necessary for most real world webdev work.  Now, I’m obviously passing my own judgement here, but bear with me.
Task/project breakdown – the idea of taking a project requirement and breaking it down in to written steps – whether inline documentation, external ‘requirements’ doc, or tracking in an issue database.  This was not something that any of these people indicated was covered in their classes or coursework.  Whether you’re working alone or on a team, this is a fundamental basic skill that is missing in most jr devs I meet – loading an editor and starting to code is the default mode.
Version control – none of the people I spoke with had any version control in their class work.  One knew *of* version control, but his internship mentor didn’t feel it was useful because there was just two of them working, and they could easily schedule time to edit the same files on an FTP server without stepping on each other’s changes.  I don’t expect someone to be an svn master or git guru – the specific technologies may change.  One company may use clearcase, another MS TFS, another git, and so on.  The nuances of each will be different, and the dynamics of the projects will be different.  But the core value of using version control, even on projects for yourself, isn’t even being mentioned in some of these courses.
Testing – this is going to be different based on the project, of course, but a ‘web degree program’ that doesn’t expose students to some testing tools – selenium being the one I’d default do – is doing a poor job of equipping these students to be proficient in their craft.  Put another way, students from a degree program that exposes them to testing concepts will produce better, more desirable/employable students.  However, if *no* programs do this, then the bar is uniformly low across the board.  Exposing students to the concept of unit testing their code – xUnit style – and understanding that code is more testable when it has fewer hard coded stuff in it – these are things that should be being taught.

Note that, excepting for a ref to selenium, I’m not really advocating a particular technology (and not really even in that case), but concepts.  The need for Android developers may be gone in 5 years (at least, Android as we know it know).  The need for “PHP5 developers” may be radically lower in 5 years.  The need for Ruby3 developers may be through the roof in 5 years, and there’s not even any degree programs *talking* about Ruby3, because it doesn’t exist yet.  The need for developers who understand testing and version control will definitely be strong in 5 years.  It was strong 10 years ago, although the tools were different.  It will be strong 10 years from now.
These universal lifelong skills that are *fundamental* to the practice of good software development are not seeming to be taught in software development courses at a college/university level.  Some programs will have an emphasis on data structure and algorithms – certainly nothing *wrong* with them – they’re universal truisms too.  But there seems to be an ignoring of the realities of day to day work.  And I’m not just talking about the 4 year ‘big league’ schools – local community colleges that traditionally have a more practical emphasis on ‘vocational skills’ are seemingly ignoring this.
I don’t remember any of these skills being in course descriptions 20 years ago in my university, and I’m not seeing much reference to the few colleges I searched about for recently, and certainly not getting this from talking to people about to graduate from “web developer” degree programs.  Is this your experience too?  Or am I just getting a statistically skewed sample?

No comments:

Post a Comment

Thank's!