Everything I have ever done as a programmmer has been things I knew little or nothing about when I started, yet I've always been able to master them and deliver great software. But after 30 years of this I find it incredibly difficult to be hired to do anything.
I think when I started if you needed a programmer you hired someone who knew or could write programs. Today it seems specialists rule, at least in terms of breaking through the recruiter wall. If you can do anything or have done a long list of things you are consigned to the pot of people who can do nothing.
That's the one change I have trouble dealing with.
It's not like I am an old Cobol programmer (though today that's a speciality!). In the past 12 years I spent 9 of them as a Java architect, wrote 4 iOS apps (including one released this week), worked for a game company working on a cross platform MMO client (Mac/Windows) in C++. I spent a year as a Documentum architect, introduced Ajax to a financial services company, led a consulting firm to drop WebObjects and move to Java, saved CheapTickets from losing all their customers due to a horrible refund system and saved SABRE millions of dollars in airline fees. I built a meta search engine for new vehicle configurations in 4 weeks under enormous pressure (Consumers Digest's long dead website).
During the mid 80's to 90's I built a different kind of spreadsheet program (Trapeze) and made it onto a kind of spreadsheet hall of fame page; worked on Persuasio n which kicked Powerpoint's butt (but got killed because PP was "free") and led the development of Deltagraph which changed how people built charts for print (WSJ, USA Today, etc) due to its use of Postscript and Illustrator export. Heck I even wrote a C++ memory allocator/debug library that forced Microquill/SmartHeap to abandon the Mac market.
Even at my first job at General Dynamics the President wanted to read email at home (this was 1983) on his Apple ][+ and it turned out in all of GD I was the only person with the willingness to write 6502 assembly language and build a terminal emulator in a week, while 2 VPs and a Director watched me code. Talk about learning under pressure. And it worked.
Virtually every one of these things involved doing something I knew nothing about when I started. I wasn't interviewed for any of these, didn't have to prove I was a rock star to work on them. Yet somehow every one of these things turned out great anyway.
It's the nature of any good programmer (or developer or engineer or coder or whatever you want to call it) - we can program anything.
In today's marketplace it seems you are only as knowledgeable as your last job or two. I worked for a game company so I must not know business stuff. Of course a game company will look one job past and see business stuff so I must not be good at game stuff. I have 4 apps in the App Store but not as a job so I must be terrible at it.
It's like the old story about the blind men and the elephant, each one grabs a different part and thinks the elephant is a rope or a tree or a building; they can't see past what is immediately in front of them so they can't look at the whole.
Since no one believes anything you put in a resume sometimes I feel like making it all up just so I can get an interview. I don't, stupidly honest person that I am. I don't even lie about my 30 years of experience which probably scares 99% of people away too.
Yet I don't see anything out there that I know I can't master. Programming is not rocket science. You read documentation, check out examples, ask questions and finally apply all that experience of having done it over and over. Until programing involves electrical connections to the brain and 3 eyes and an IQ of 250 I think I can master anything.
The story with having to be just like the job requirements is always that they want you to hit the ground running, but this never happens except in the most unusual of circumstances. Every job or project has inertia. Every job or project also has different elements that make them unlike the last project. Every company winds up doing things that require new technology or represent something never done before.
Every place I've ever worked, whether IT or software or consulting, I've always volunteered for the oddball, the new, the scary stuff no one else wanted to do. Even in developing software I've looked for new technologies, like Postscript for Deltagraph (when we started there were 3 or 4 Postscript based applications in the world) or Ajax at the Financial Services company (where everyone though I had bought some weird new technology). It's in my nature to seek out bold new worlds or whatever Star Trek's opening tag is.
But no matter what I've done the message is lost and finding real work escapes me at the moment. Often I wish for the one year I lived in the Bay Area (just before the dotcom explosion) I had stuck around instead of coming back to Texas. I bet I would have worked for a Google or even stuck with Apple and not been in this hole.
Oh well. If 30 years of knowledge and ability goes down the drain I guess I can take up cooking. I also make a mean Marinara.
But I still love to write code more than sling pasta.
For whatever reason, my post Am I Too Old To Be A Programmer is my most popular article coming from Google searches. I guess I am not alone.