Additional profile information on Alfred Thompson at Google+
I read a very interesting article in a recent edition of the Communications of the ACM entitled "Does Personality Matter?" The basic idea under discussion was that some personality types are better at debugging code than others. In the tests that were run the authors found that intuitive thinkers found a higher percentage of bugs in some sample code than non-intuitive thinkers.
I'm a little skeptical of Myers-Briggs and similar tests but they do provide a common base for discussion of some things. Likewise the sample size of this test was a little small to comfortably extrapolate to the whole population for my tastes. Still it was thought provoking to think about the effects of personality on programming in general and debugging in particular. I'd like to see more research in the area. While the personality of people who are good at debugging is interesting I also wonder what sort of personality creates fewer bugs in the first place?
My first reaction to the question "does personality matter" is "well, yes, of course one should have a personality." A bit flip perhaps but it seems as though the personality, or perceived lack there of, is part of the problem we have in the field of computer science these days. We are perceived as having a sort mono-culture of personality types. Worse still the perceived personality of computer people is not one that most people want to be part of. Clearly to me we need to see more variety in the personalities we coax into computer science. I also think that we have a lot more diversity in personality in computer science than people think but that is grist for another post someday.
I see personality as something that has an impact on how people do any job. But more important to me is learning how to teach to people with different personalities and learning styles. The students in the study from the CACM article had taken the same training and were fairly fresh into the whole learning computer science thing. I wonder if the real benefit of studying the effects, or influence, of personality type might be in finding better ways to teach people the skills they need.
In education a lot of time these days is spent on understanding learning styles and how to customize education for the various ways people learn. I don't think we do enough of that sort of thinking with regards to training computer scientists or even basic programming skills. There are few graduate programs in computer science education though there are lots of graduate programs in teaching of reading, math or general science. We're missing something there I think.
Mark Hendrickson from O'Reilly has an interesting review of the market for computer books in a four part series. The fourth part examines the programming language book market. I have no doubt that it is a valuable discussion for people who are thinking about what sort of programming language book to write but I'd be careful about extrapolating it too far for other things.
I'm particularly interested in some of the languages that make the list as "Irrelevant Programming Languages". Specifically Ada, Alice, LabView and FORTRAN. Relevance is a relative term in this case. I think there are markets, parts of the computer industry, where Ada, LabView and FORTRAN are still important and highly relevant. Do they have the sort of market share that the .NET languages, Java or C++ have? No, but in the markets where they are important they are critically important.
I suspect that for some military and aerospace contractors having Ada on ones resume is going to open a lot of doors. Likewise, LabView is being used in a lot of embedded and robotics applications. FORTRAN still seems to be the language of choice for a lot of mathematical and scientific programming especially where parallel processors are involved. But no, there is not a huge market for books that teach those languages. National Instruments has a lot of training materials for LabView. And the shelves of companies that use FORTRAN and Ada are no doubt heavily loaded with all the reference and learning materials for those languages that one could possibly want. In fact my own bookshelves in my home office are fairly well equipped with older FORTRAN books.
And Alice (and Squeak which is on the list and Scratch which isn't) are not industry languages as much as they are teaching languages. learning them is not an end in themselves but a tool or stepping stone to other things. Does that make them irrelevant? It depends on your definition of relevant.
In the long run deciding what languages one learns is more complicated than just looking at what programming language books are selling the most copies. All software development is not created equal in the sense that they use the same programming languages. One needs to take a holistic approach. What sort of development do you want to do?
If you want to do systems programming (operating systems, compilers, etc) then C/C++/C# are where you want to focus. Are you a math/science person? You'll want at least some familiarity with FORTRAN even if it isn't your main thing. Likewise if you are thinking that finance/banking/insurance/accounting are your thing you should know COBOL if only to understand existing systems. Are you thinking your life is all about the user interface? Best learn some Visual Basic. I wouldn't avoid Expression either - that is where UI is going in my opinion. I think you get the picture.
And of course one thing you'll really want to do if you hope for a long career is to learn as much about different programming structures and paradigms as possible. I highly recommend a course or two in Programming Languages as a topic. Learn the things you need to learn to learn what ever comes next. because the future is coming quicker than you think.
I created a couple of web pages today. I fired up Notepad and started entering raw HTML instructions. Now granted these were simple pages that merely redirected people to actual interesting exciting web pages but still I felt comfortable and at home. I'm pretty old school when it comes to the world wide web. I've had my own domain for about 8 years and have been writing web pages in one form or another for around 12 years. Back then it was all simple as long as you were fine with markup languages. Of course not everyone was fine with markup languages.
But things are moving fast. At one point I learned FrontPage and have used that to maintain most of my domain web site for quite some time. I like it. It's simple. But things are moving on. I have used some of the web programming features of Visual Studio and experimented with Visual Web Developer Express. I like it. It's powerful. Its not quite so simple though.
But things are moving fast. Expression Web is out and I've installed it. I'm going to be spending some time learning it over the next couple of weeks. It looks fun and easy. It's going to replace FrontPage for me and for a great many others. Silverlight, another recent product announcement for web development, looks like an amazing and powerful tool for web development as well.
Today Microsoft announced PopFly. PopFly is a web mashup tool. It lets one create mashups, web pages and web applications quickly and easily. It has been designed for non-professional developers as a way to empower them to do powerful things quickly and easily. It's built on Silverlight BTW. IT could probably never been developed so easily and quickly without it.
PopFly is also going to have a community built around it so over time there should be a lot of help for people getting started.
The world wide web made the Internet accessible for a lot of non-technical (or at least less technical) people. Increasingly new tools are making web page creation more easy, more powerful, more flexible - really just more of everything. As blogging tools made some sorts of Internet publication more easily tools like Silverlight and PopFly are potentially taking things to a whole new level. Where are we going to go with it? I have no idea but it is going to be quite some ride!
I'm just having trouble keeping up. Oh to be young and energetic enough to learn all this stuff as fast as it comes out.