This article is an answer to an Opentalk forum post asking for suggestions and advise as to how to move a career towards the consultancy / training side of programming, and asking for suggestions as to which technologies I would recommend. It's of general interest so I've posted it here where it will get more exposure that the Opentalk thread
I've always found that the key answer to "which technology / language" when looking at a career move is about choosing something which is:
a) Suitable for use in the field you want to work in
b) Enjoyable to you
and c) has a good future / with some demand.
What you enjoy and what I enjoy may be the same, or maybe not. I'll give you some ideas / thoughts of how I am where I am, and you can then put your own spin on that and come up with the same, or different, answers.
Niche or Common use?
Personally, I enjoy working with niche languages and technologies where I'm a somewhat larger fish in a smaller pond. I really don't want to be offering - let's say - Word and Excel training, good though those products are. With something as frequently-needed as that I know there's a good training and consultancy living to be made, but there's also a great deal of competition in the market; sales fights and techniques that I know but sometimes despise as they're against the clients best interests are sometimes employed and I have better things to do with my time. BUT, it means I have to travel quite a bit - I'm writing from Saudi Arabia this week, I was in Cambridge last week and I'm in Lancashire and Ireland in the next month.
Open source or commercial?
Open source technologies have typically been chosen because they're the right technical tool for the job, and you'll find that classes are almost always enthusiastic, and the people you're consulting for very much back the choice made. You'll find they're very bright people, keen to learn, anxious to ask questions and get as much as they can out of their sessions with you.
You may enjoy this, or you may find it daunting. I teach Perl, Python and PHP, but my "ex" taught English and Drama in school; I used to say I couldn't stand
for the "I can't be bothered / I'm just waiting for my 16th Birthday so I can leave school" approach, and she used to say that she wouldn't like the pressure of being right in front of the bright, paying customer with the adrenalin having to run high all the time to get it spot-on right. But put another way, she enjoyed the somewhat more mundane-ness of the daily routine as it was less pressured and I enjoy the daily challenge.
The other aspect of Open Source is that it has typically sold itself into applications, so it has been chosen on the right grounds. I rarely find Python, Perl or PHP in use for the wrong application. But Java ... get a public course with 6 people attending and at least one or two of their applications will leave me thinking, or even saying "why on EARTH did you choose Java". Java's excellent for certain jobs - huge applications, big programming teams type stuff. It's less than ideal for research datamonging applications and yet it's often been sold into such. On consultancy / training sessions, I find that the one or two mis-users require a disproportionate amount of help and support through and I prefer challenges that are involved in getting the very best practical solutions for people rather that something that's more akin to a game of getting technology "x" to cope with requirement "j".
One or more technologies?
By contrast, let me recount one of the enduring memories I have of a Geek Cruise lecture I attended back in 2004. Rasmus Lerdorf, founding author of PHP, was on the platform taking questions from an audience of Perl, Linux and MySQL famous names - people of a similar standing to him in their own languages. "The Gods" if you like. One "God" asked Rasmus - goodness - one of the most basic of questions about why people use PHP - almost "what is PHP". I was shocked, but thinking back, this God asking the question is so much involved in his own technology and he pours all his resources in there.
You can choose to be a bit of a generalist like me - able to offer intertechnology training and consultancy, or you can choose to super-specialise. But bear in mind that Larry Wall (Perl founder and NOT the one who asked the question of Rasmus) describes Perl as being like an onion - a big vegetable made up of lots of layers, but only a tiny rhizome at the very core.
The right tool?
Language selection. The right tool for the job. It depends on what job your clients and you will be doing as to which is right.
For a complete banking system - an OO language, a heavily policed language such as Java where everything that's to be visible outside your own area is declared public, and APIs between areas are planned months in advance and heavily documented - is ideal.
Systems admin scripts, such as my trainees this week. A much quicker plug-and-play language. No compiler needed, a few lines of code written to sort out an ongoing crisis such as a denial of service attack or to filter a log file that's gone wild. And Perl is their correct choice.
For web applications, we use PHP predominantly these days. It's the only language of the ones we know that was designed for server side programming in the first place and so it's so beautifully tuned to that requirement. No bits and pieces cobbled on to make a more general language work on the web.
Take a research team. A whole lot of people who are involved in handing similar or related data types day in, day out, but in a moving world and application. Then an OO language that doesn't require the policing and compiling of Java - the wood without the trees - is what you need. And the jewel that shines out in that scenario to me is Python.
Supply, demand and future
We're getting an increased hit count for all the languages that I've mentioned in this post on our web site; they're all great, modern technologies that are buoyed by their own elegance, power, and practicality. And all of them have an intertia and an enthusiastic team behind them.
Perl is headed to Perl 6, and Guido van Rossum is now talking "Python 3000". With PHP and MySQL, new releases have been coming thick and fast.
But absolute numbers / number of programs written in a language are NOT what you should take as your director. We get about the same number of web site hits for Perl as we do for PHP; Python is a little lower, as is Java. That doesn't mean that Java is small compared to Perl - rather, it indicates that there's fewer resources per searcher
out there on Perl than on Java. And it's this supply and demand, and the balance between them, that's more important than the overall raw numbers.
Indeed - how are people going to find a small training company such as ourselves in an obscure English town? Are they going to walk past the door and think "I'll go in for a MySQL course today". No - of course not; they're going to work through word of mouth, through searches, and that's where the supply and demand comes in.
I'm conscious that I've not directly answer the "which technology" question I was asked. Rather, I've said that it's up to you based on the fields you want to work in and what you enjoy. That has to be the right decision.
After yesterday's training session, W**** stopped around and chatted for a good hour. He's just 22, and very much the youngster of the traditionally-dressed Saudi group on my course. He was telling me of how he's self-taught in Linux and how that stood him in such excellent stead for his current role. Taken on by an oil giant, working with colleagues who have far more paper qualifications than him, he's destined to be a high-flyer. He's been selected for the Perl course (and, hey, that was his employer's right decision as he's getting so much out from the course and the extras), he's off for some formal Linux certification, and the sky's the limit in a role he enjoys. (written 2006-05-23, updated 2006-06-05)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesG907 - Well House Consultants - Recruitment and Career Development 
The next generation of programmer - (2004-11-13) 
A new skill may not be quick and easy - (2005-02-02) 
Finding the right holes - (2005-03-21) 
What career opportunities for web designers - (2005-04-20) 
Tough Love - (2005-07-25) 
Can an older person learn a programming language - (2005-08-10) 
10 years C# knowledge please - (2005-11-23) 
Looking for Python staff - (2006-02-01) 
Job vacancy - double agent wanted - (2006-02-02) 
I'm answering a job applicant - (2006-05-16) 
Want to be a technical trainer in the UK? - (2006-06-08) 
Watch your Google profile - (2006-06-13) 
Staff Meeting - (2006-08-30) 
Best source to learn Java (or Perl or PHP or Python) - (2008-12-28) 
LinkedIn - Thrice Asked, and joined. - (2008-12-30) 
Why most training fails ... - (2009-03-30) 
Past PHP delegates / others - coding help needed for next 3 months - (2009-06-23) 
Can you learn to program in 4 days? - (2009-07-16) 
Research is exciting. But should routine be automated? - (2011-09-14) 
How not to call when job seeking ... - (2011-10-20) 
Back to Uni - (2012-01-26) 
Looking and Learning - even on Holiday - (2012-05-22)
Some other Articles
Perl for Systems Admin - suid scriptsWhere is a web site visitor browsing fromHotel Technology RequirementsReading the newspaper and working with other restrictionsCareer development adviceLooking ahead and behind in a Regular ExpressionA journey, an arrival, a peopleIn praise of training course delegates.Better communicationHelping mental health through diet, exercise and other lifestyle matters