Bill Gates has penned an article which has been published on the BBC WebSite - entitled "The skills you need to succeed." You can read it here.
My reaction to the article is that it's a very good and accurate article. I think he makes the point very well, and provides a nicely balanced argument in favour of computer literacy. Like the man, or loath him - this article makes sense.
One of the most telling comments in the article is the following paragraph;
Software innovation, like almost every other kind of innovation, requires the ability to collaborate and share ideas with other people, and to sit down and talk with customers and get their feedback and understand their needs.
This is relevant to both the proprietary world of Microsoft, and us "Open Sourcerers." The internet has given people, and developers especially, the ability to collaborate and share ideas. One of my recent favourite email footers quotes the following:
If you have a pound, and I have a pound, and we give each other our pounds, we both have one pound each. However, if you have an idea, and I have an idea.. and we share our ideas - then we now both have two ideas.
Although it was worded better in the email footer, it's a telling principle behind the open source and free software movement. If software is to evolve and fulfill its potential - developers need to "collaborate and innovate." Some developers may choose to develop internally - but use open standards to encourage compatibility.
These are the skills you need - a sense of community, a sense of morals, and a technical understanding of the future development of the software. I don't think Vista shared many lines of code with XP. I don't know.. (the code wasn't published for me to know). I know apple rewrote their Operating System, not only to move across to x86 chips from ppc - but to make the future development path manageable.
General-User software has only been around for circa 20 years, at least at the "Joe Public" level. As computing power increases (in line with Moore's Law) and the complexity and functional demands of the software also increase - it can't be viable to assume that one single company, not even one as big as Microsoft/Google, can manage all that change internally.
Therefore the biggest skill you need to succeed is vision. Where will my software be in ten years time.. will it look anything like my current offering? Will there be a mouse and keyboard in 10 years time. Will there even be a Desktop PC?