We all worry about our careers, and wonder about our future. But trying to find our way in the career marketplace is not always easy. When we want to study for the future, where should we focus our attention? Is learning a language with big marketing clout like C# or Java necessarily better than learning "small fry" scripting languages like Python or Perl? Is it even true that Python or Perl are less popular than C#? The answers to these questions are not as simple as they might seem.
It is undeniably true that Java is a safe career move at this time, and certainly C# and Visual Basic are at least decent career moves. However, I am not sure that they are as safe as Perl or PHP, and they are not necessarily a better career move than Python. In general, it is wrong to gauge the popularity of a language by the marketing hype generated by a big company. Microsoft has a lot of marketing muscle, but that does not mean that they have a correspondingly large developer mind share. Furthermore, bigger is not always better.
Ranking the Languages
There is of course no definitive way to pin down which languages are most popular. For instance, many developers believe that C# is among the most popular languages in the world. But it is hard to find facts to back that up. Go to this site: http://www.tiobe.com/tpci.htm, and other sites similar to it. At the tiobe site, you will see that C# has only a sixth of the market share of a language like Java or C, and that it ranks just a hair above Python, and well behind Perl or PHP. These statistics are based mostly on web presence. They show VB.NET to be about 1/20th the size of a big language like C or Java, and only 1/6th the size of its little brother, Visual Basic.
As I say, the statistics I show here are not definitive, but neither are they meaningless. To help put them in perspective, go over to Amazon.com and see the ranking of the most popular technical books. You will see a similar story to the one laid out on tiobe.
Six of the top twenty books at this time are about Java, and two are about .NET. The most important one about .NET is at the bottom of the stack, ranking number 20 in the list of top 20 books. The second most popular book, "Head First Design Patterns," is focused mostly on Java programming. If I include this book, which I will not, then 7 of the top 20 books are about Java. Also included in the top 20 are "Code Complete," and "The Art of Project Management," both of which focus on Microsoft, but neither of which hones in on a Microsoft language.
Most of the rest of the popular books are about HTML and CSS. One of these books, "Professional DotNetNuke ASP.NET Portals," is the second book that goes into the Microsoft column, but not as a hard core programming book. There is no hardcore C# or VB.NET equivalent in the top 20. Another perennial best seller, "Programming Perl," is ranked at number 17. The closest thing to it is Jesse Liberty’s successful book on C#, which ranks at number 25, just behind a book on DreamWeaver, and just ahead of a second book on Perl. On this particular day, one has to go all the way down to number 76 to find a book on Python, but the intervening ranks are filled with books on Java, C/C++, HTML and PHP, with only a scattering of books on Visual Basic and almost nothing on C#.
The Amazon lists change constantly, with books moving up and down the hierarchy several times a day.
Cross Platform and/or Open Source: (Java, PHP, Perl, Python)
Closed source, Microsoft Platform Specific
In this list, I am rightfully focusing on hard core programming books. However, scattered amid these books are many volumes on HTML, CSS, Security, Linux, Microsoft Office, and managing Microsoft operating systems. I do not mean to imply that Microsoft does not have a lot of books in the top 100 technical books on Amazon.com. They do. The point is that most of them are about managing the Windows OS, or using Microsoft office. When it comes to programming, the focus is on Java and open source scripting languages such as Perl, Python or PHP.
As you can see, there is little evidence on the net to support the idea that Microsoft is anything like the primary focus of the programming world. The desktop world they own, even if the competition is fiercer than it used to be. But the programming world does not belong to Microsoft at this time, though their marketing department is trying their best to lay claim to it.
Is The Most Popular Language the Best for Your Career?
There is more to a programming career than simply searching for the most popular language. During the happy years when I worked at Borland, I focused on Delphi, a product that definitely did not have the same clout in the marketplace as C++ or Visual Basic. However, many people stuck with Delphi because they believed in it. For many of the people I knew, that turned out to be a great career move. Being a big fish in a relatively small pond can be a happier fate than being a minnow who swims with the big sharks that rule the billion dollar companies.
Many people who use Delphi consider it their secret weapon. When I worked for Borland I talked to many developers who loved it when a competitor came in and tried to build a project in C++. After they flailed around for a bit, the Delphi guys would come in and build the same product in half the time with twice the features. Products like Python, Perl or PHP can do the same kind of thing for you.
Python is both easier to use and more human in size and scale than a big language like Java, C++ or C#. I can get more work done, more quickly, using Python, than I can in any other language that I personally know. I find the majority of its classes and methods easier to use, and simpler to understand, than the classes and technologies found in C++, C# or Java. Like Perl, you can be productive in Python after just a few hours or days of study. But if you focus on the language for months or years, you will find that it is much more powerful than you might at first suppose.
Can Python match a product like Java or C# in all cases in terms of functionality? Probably not. On the other hand, scripting languages like Perl or Python can be lighter, and faster, and easier to use than a big full blown language like Java or C#. This is a version of the 90/10 rule. Python can do 90 percent of the things that Java and C# can do, but it can do them much more quickly and much easier. At the same time, 90 percent of the projects in this world can be written in Python. So most of the time, it makes sense to use Python, and by the same measure, 90 percent of the time Java or C# are overkill.
You can accomplish most programming tasks in Python, but there are some tasks that you might want to do in another language. The same is true of Delphi. Most of the time, the smart money is on products like Delphi and Python, and only the marketing challenged believe that Java or C# are really better solutions to real world programming problems.
It is not wise to underestimate Python. Excellent, powerful, and quite complex products like Zope and Plone are built in Python. Related scripting languages such as PHP, are surprisingly popular, as you can see from visiting this site: http://www.php.net/usage.php. Just think of the figures you see on that page: "20,478,778 Domains and 1,299,068 IP Addresses" If there are twenty million domains that use PHP, it would definitely be a great career move to learn a little PHP, especially since it is a language that is so much more popular than either Visual Basic or C#, and so vastly more popular than VB.NET. Notice also that PHP is growing in popularity. Like Linux, the use of PHP is increasing over time, not decreasing.
The key point to grasp here is that marketers can render a sharp sighted person blind in minutes. Microsoft has a huge advantage in desktop computing. The dollars earned by Windows and Microsoft office give the Microsoft team a huge degree of marketing clout. But when it comes to the programming world, things are not nearly as simple. Microsoft can bring its billions of dollars in marketing muscle to the table and try to convince you that it rules the programming world in general, and the web in particular. But if you abandon the virtual marketing world, and get out in the real world and start digging up some real life statistics, you will find that even a small language like Python is a much better career move than it might appear at first. Certainly .NET languages such as VB.NET or C# have a long way to go before they catch up with Java, C++ or even PHP in terms of popularity.
I want to emphasize here that no one knows exactly how many programmers of which type are working where at this time. The statistics and data that I discuss here are not meant to be definitive. Nevertheless, I think they obviously point toward overarching trends in the industry. For instance, you can see that C# is growing in popularity, and that Visual Basic is still huge, but appears to be shrinking. Is the growing C# mind share mostly just Microsoft C++ and VB programmers who have migrated to C#, or is there a movement from Java to C#? No one knows the answer to a question like that. But bigger trends, such as the overall dominance of the open source and free software movement, are fairly clear.