I am seeing a growing gap between the technology used by mega
corporations and by small/medium/large companies. The latest evidence of this
is Port 80's recent survey showing Microsoft IIS
in complete domination of the Fortune 1000's public Web sites. My initial
reaction was to be quite surprised; after all, it is a well known fact that
Apache runs the majority of Web sites out there. I was suspicious because
Port80 is a Microsoft partner, and surveys and studies funded by Microsoft
require rigorous inspection. The first thing I did was to check Port80's
methodology. Their measurement technique was simple, direct, and effective:
they simply pulled a Web site by the main site URL and checked the HTTP
headers. While it is always possible that some servers have masked or modified
their headers, it is doubtful that it would not account for the disparity between
IIS and Apache.
Of course, a large part of Apache's apparent market domination is the
number of free/cheap Web hosts that have thousands of domains on one server,
none of which get more than a few visitors a month, and to reduce costs they
run Apache on a free *Nix. But IIS having over 50% market share in the F1000
for over three years now shows the differences between the corporate IT
mentality and the smaller company's IT approach.
It is always interesting to me to see this difference when looking at
job ads; the huge companies (think insurance companies, banks, pharmaceutical
companies, etc.) look for skills like .Net, IIS, Windows 2003 Server, Oracle,
DB2, Solaris (not until recently was Solaris Open Source), and other
proprietary, closed source pieces of software that you cannot learn without
paying money and cannot use without paying money. Smaller companies seem to ask
for Linux, Apache, PHP, and other FOSS solutions.
At the end of the day, what this means is that there is a gulf between
the skills you need in the big company and the skills you need for the smaller
company. Gone are the days when HTML and CGI/Perl could get you a Web
development job at any company out there, or C++ could get you in the door as
an application developer. Now, your skill set needs to be tailored to what
environment you want to work in.
Sure, there are plenty of larger companies out there running *Nix or
the LAMP stack, or FOSS in general. Similarly, there are plenty of small
companies using .Net, IIS, Windows server, Oracle, and other proprietary
solutions. But by and large, when I encounter a large company using a FOSS
solution, it is frequently a company that was a startup only a few years ago.
The "old line" companies tend to be closed source, VAR supplied, consultant
installed, maintenance contract paying shops. It is baked into their culture,
and it is hard to change it.
As a developer for some time now, I have watched my skill set change
over time as I move from job to job working with different customers. When I was
working with startups and dot-coms and other companies that were looking to
save money or had a lot of employees that loved technology for technology's
sake, I was using Perl, the Apache, PHP, MySQL, and other FOSS solutions. At my
current job (we perform contract coding for the pharmaceutical industry), it
nearly 100% non-FOSS software. Even our customers using *Nix are using Oracle
on Solaris or similar combinations of "big iron" with "big iron OS's" and "big
iron databases" and other pricey solutions. I spend my days with Microsoft
technologies because they all (except for one, who we do not write any
applications for) use IIS.
So as a developer, you really need to tie your choice of skill sets to
your choice in work environments. The next time I am on a job search, I am sure
that all of my recent experience with .Net, Oracle, SQL Server, Windows Server
2003, and other "big bucks" systems will win me attention from the big boys. At
the same time, I make sure that I have a *Nix (FreeBSD, in this case, I like
the BAMP stack) server in the mix, and work hard with it, so that my skills
with FOSS solutions are kept tip-top. I am lucky; as the sole IT person, I get
to call the shots. Not many HR people are going to care if you read a lot of
MSDN Magazine if you have never touched Visual Studio, or that you have an old
laptop at home running Linux in a desktop environment if you are unable to
install a piece of code that did not code in an RPM package. They want real
world, hands on experience. That means that your choice in skills today affects
where you work tomorrow, and where you work today will affect what you learn.
Think carefully before you take a job, because you can end up locked into an
industry or career path that you are not happy about, and may end up taking a
pay cut or demotion to work in an environment you prefer with the tools you
Justin James is an OutSystems MVP, architect, and developer with expertise in SaaS applications and enterprise applications.