Get with the Program
Hey, looking for a somewhat recession-proof job with a relatively high income. Become a programmer.
I’m not talking only to recent college graduates here, who most likely were exposed to some code at least to fulfill a science requirement. Rather, I’m speaking to folks my age—mid-career folks, whose careers may have been derailed by the recession.
Programming is today’s “plastics!” But you don’t have to master a dozen coding languages and be the sharpest tack in the bunch; learning even some JavaScript, used for actions on Web pages that take place in the browser, can get you far ahead.
As many people are forced to reconsider what they’re doing with the rest of the lives, bumping up the pay grade and the indispensability curve through some programming knowledge could be a good move.
Look at the recent Microsoft layoffs: 1,400 severed, another few thousand to go, contractors not renewed, and so forth. Did you hear the word "developer" or "programmer" mentioned in that context? resources, press relations, and support services, yes; the folks who write the code that drives the Microsoft cash machine, not so much.
Programmers have become vital to many different parts of business, government, and academia, where code writers are key parts of how institutions function. Just think how many Web-specific workers you knew of a few years; now every company has to have a Web strategy, someone to maintain the site, and even small firms have freelance or on-staff programmers and Web managers.
Even if you don’t program much, having an understanding of code could let you manage programmers, talking their talk, and understanding what’s possible. You can be a code-savvy manager and not the pointy-haired boss from Dilbert. (“I think mauve has more RAM,” he says in one strip.)
I'm not saying that either everyone can write code or that it's a universal method to avoid unemployment or stagnant wages. Rather, that it's a far less seasonal occupation than nearly any other category you can imagine.
Myself, I started programming at age 11, spurred by a class my dad was taking. I learned machine code, strings of numbers that take you very close to the computer's processor, and later higher-level languages like BASIC, FORTRAN, and C; and scripting languages like JavaScript, PHP, and perl.
My dad, 69, picked up some HTML skills in the 1990s, and has been creating Web sites for a decade for authors and small businesses. I’m still trying to get him up a notch, to learn some JavaScript, but he’s happy with his current skills.
So I'm not advocating you become an expert, overnight or otherwise, but rather that if you have the interest and aptitude, learning some form of coding at any level could help your prospects.
You can divide coding into a few broad categories.
There are high level languages used to build operating systems, rich desktop application software, and corporate software; these include languages like C, C++, C#, Java, and Visual Basic. (Java is a funny one: released originally by Sun Microsystems to bring richer applications that run on desktops within Web browsers, it's used far more widely to write programs that run on Web servers. There's an irony there.)
These languages are typically written and tested before being turned into machine code--compiled into binary applications--that are distributed as packages that run on consumer operating systems, mobile handsets, and business servers.
Scripting languages come next in the pecking order, though many who use them claim that's an artificial and snooty distinction spread by computer-science academics. As someone who mostly scripts, I don't have a particular stance.
Scripts are most commonly used to power parts of Web sites. I learned perl (purposely all lower case, yes) way back in 1994, and have developed a rich appreciation for the language, even though I probably use it with about 30 percent efficiency. Perl, PHP, and Python—perhaps coincidentally all P names--are the most popular Web scripting languages. (In a common and nearly lame programming joke, PHP stands for PHP Hypertext Preprocessor. Yes, PHP is a recursive acronym.)
It's relatively easy to learn scripting languages, because they assume a lot of the overhead that's not implicit in higher-level languages. There's a kind of framework, a scaffolding, that supports you when scripting. Scripts are also mostly run interactively: You write or change something, and run the script or visit a Web page to have the script run. This encourages sloppiness, but also rapid iterative revisions.
JavaScript is also a scripting language, one that typically runs inside a browser. That is, a browser downloads a script embedded in a Web page or an externally referenced script file, and then the browser itself executes the commands in the program when the page loads or you click an object. If you've heard the term AJAX, that's simply JavaScript "talking" to a server without reloading a page: this makes a single Web page appear more interactive, like a standalone program, and it's the approach behind Google Docs.
Finally, there are formatting languages like HTML (Hypertext Markup Language) and XML (Extensible Markup Language). These are technically not programming languages as such, because the markup code you write performs tasks within an extremely narrow range.
HTML is designed for Web browsers, which read in the code and turn code into a page; XML can be used with Web browsers, but is a more generic way to structure information for passing between different software.
How can you get started? The usual ways, of course: books, classes, and online learning. Almost any book on learning to program or script from O'Reilly Media or Peachpit Press, two publishers I've had a long acquaintanceship and working relationship with, can get you started.
For starting out with HTML, I'd recommend Elizabeth Castro's HTML, XHTML, and CSS, Sixth Edition, a pretty remarkable guide that's been refined year after year. For JavaScript, try my good friends' Dori Smith and Tom Negrino's JavaScript and Ajax for the Web. For perl, consult this Web site for a list of great books and resources.
Most of our fine community colleges around the Puget Sound offer both full-time, part-time, and adult extension programming courses of varying sorts. Seattle Central, as just one example, has a whole Web Development certificate and degree program.
It's best to get a referral to a teacher and class, or to call a teacher or school to find out the depth of the material. Some teachers may find it impossible to convey programming concepts to those starting out; others may be particularly marvelous at that, and then hand you off to books or other teachers when you start to fly.
Finally, type in "learning [fill in the blank]" into Google, and you'll be overwhelmed by the amount of free and useful material that people have compiled to teach courses, to gain viewers, or to just give back knowledge.
I don't believe that everyone is cut out to be a programmer, nor should everyone try. But it's not a bad career path for those who like a regular paycheck or the lure of project-based work, and it's become the world's greatest fallback job.