Preparing a New Generation of Developers
Recently, Microsoft unveiled their Elevate America initiative. The idea behind the site is simple - provide resources to help workers in the US gain technical skills to help their jobseeking efforts. As well as helping expand skills, including the basics, it also helps students to plan their future careers. This is a step in the right direction to creating a more substainable, knowledge-based global economy. But it's only the beginning, and we need to focus a lot on the next generation of software developers.
Outliers
An interesting part of the latest Malcom Gladwell book, Outliers, explains the 10,000 hour principle: that the really successful people are those who have been able to invest a lot of time into their profession. Bill Gates, for instance, was lucky enough to attend a Seattle school that had a computer club and to live near the University of Washington, giving him access to computing equipment. He got experience, and lots of it, early - simple as that.
It got me around to thinking about education systems that exist at the moment for students. Traditionally, it's not every primary level school that has access to computers. And even when they do, the student:computer ratio is generally not sufficient to allow everyone to have adequate time. On secondary level it's probably better, but usually students are being thought the basics such as word processing and just general familiarity with the operating system. I had good access to computers in my secondary school, and had an interest in programming, so I thought myself some very basic BASIC. It still wasn't enough to prepare me for university though.
A Plan Of Action
There are two things that are required. One part is to provide more focussed classes on problem solving in primary and secondary school. Maths is an alright subject, but a lot of people fail to get excited about it. Contrary to popular opinion, being a maths wiz is not a pre-requisite for being a good software developer - especially in these days of higher level languages.
The second, and more important part, is to make software development seem more accessible to students. That's easier than it sounds thanks to a proliferation of educational-styled IDEs, programs such as Elevate America and the iPhone.
The iPhone might seem like the odd one out, but think about it for a while. Writing applications for your iPhone (or Android!) is immediately rewarding. You get your game working on your own personal device, rather than needing to use a PC to run the app. Plugins for your favourite social networking site, or even games for your XBox360 can be written from home. If students were first introduced to these possibilities, it might trigger a greater interest in software development.
On the IDE front, BlueJ has been around for a very long time. The latest version even provides support for JavaME development. I've also been talking to Wayne Beaton at Eclipse about their IDE4EDU proposal. While it's aimed at University level students, it's a great idea that can easily be extended to suit earlier stages of education. Stripping Eclipse of the complications that cause a steep learning curve. They're considering working with organisations such as CoFFEE, with their classroom teaching tool to make the offering more applicable, and appealling to educational establishments. I think this could be a great project, and it will be interesting to see where it goes.
I have no statistics to hand, and my personal experience makes we wonder if these IDEs are present in schools. But I really hope I'm wrong - that these tools are being installed in the computers in high/secondary level schools at the very least. I'm interested to hear your opinions and experiences with preparing a new generation of software developers in advance of high school.
James is a DZone Zone Leader and has posted 231 posts at DZone. You can read more from them at their website.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)










Comments
javawerks replied on Thu, 2009/02/26 - 10:33am
Jens Schauder replied on Thu, 2009/02/26 - 4:51pm
Jeroen Wenting replied on Sat, 2009/02/28 - 1:56pm
As it is, you end up in a job where you're blamed for everything that goes wrong with the project (whether it's your fault even remotely or not) while never getting told you did a good job.
Add to that the regular mass layoffs, jobs disappearing to Asia and eastern Europe at a rapid pace (getting better, but it still happens), and there's just no incentive to even consider working at a job that doesn't pay nearly as much as other jobs do that also require degrees in similarly hard topics. So why go to the trouble of going for that line of work?
Infernoz replied on Thu, 2009/03/05 - 4:09am
Agreed Developers, and other Computer Professionals, are under appreciated, the pure exam-based certifications did not help this attitude, at all. Proper Developers should be seen are Engineers, who have valuable experience, judgment, and skill, at the art of coding, not seen as production-line code-monkeys. Component, and glue code, based coders should be called Technicians, not Programmers or Developers, ideas like this could help clarify skill and knowledge levels in coding.
The whole dismissive attitude to Enginneering, is quite counter productive, and disrespectful, and driven by right-brain biased people, like vain arts snobs, devious lawyers, harmful politicians, ignorant business people, and stupid people; these people need to be put in their place and learn to have respect for those that make their comfortable lives possible
hookfi replied on Sun, 2009/05/31 - 8:02am