Perspective on XML: A custom-fit career in app development
|The current economic downturn has put many application developers at an unexpected juncture in their careers. Many have lost work and discovered that the numbers game of finding another job has changed and no longer favors them. Others remain in their jobs, but find they have to reinvent those very jobs to gain security. And college graduates are now discovering that there is no longer a magic carpet ride into a pleasant posting with excellent prospects.|
While this is an ugly time for many individuals, I believe it is a very healthy time for the computing profession as a whole. We had settled down to a perfunctory system of recruitment and career development by the numbers. You wait for a technology to reach critical mass and then gain the right certifications, decorating your resume with the right scout badges. Elsewhere, a project manager decides that it is time to pick up a few good folks with certain scout badges, and dispatches a recruiter to hire them. The recruiter goes through a simple pattern-matching regimen to present candidates to the hiring manager. The experience at the job they’ve landed promotes their scout badges to the next level, and so they advance, regardless of basic programming aptitude and overall ability.
This is all well and predictable, but the problem is that the science of software development is nowhere near being so perfunctory and predictable. The status quo of software development careers has recently come about largely as if writing applications does not still need a good deal of flexibility, creativity and understanding of core computing principles. There is no realistic erector set for software, and none appears on the horizon. Each task requires special attention and crafting. By assigning people to development tasks as if it is just a matter of plugging a few well-defined pieces together, our industry has condemned itself to astounding project failure rates and relatively low credibility. This stigma, unfortunately, redounds on all developers regardless of ability.
Now that the market for talent is saturated -- and all the “senior DBA,” “experienced UML designer” and “expert Java/C++ programmer” scout honor badges in the world won’t make a difference in the career-building exercise -- developers planning to continue in the profession for the long haul should take this opportunity to free their careers from the numbers game.
I have always counted myself as one of the lucky people who have been able to work with the most “right” technologies for any job, whether or not they lay in the mainstream, while growing my career at a very healthy pace. My own circumstances will, of course, always be different from others’, but perhaps some of my own experience will be useful to those looking for greater flexibility in their profession.
First, you don’t have a stark choice between the mainstream and more interesting technologies. Sometimes you’re lucky and the richest technologies do rise to the mainstream. In other cases, you may be able to use the intersection between technologies while at work. If you are very interested in LISP-like programming languages, and you need to process XML for a project, you might do some of the XML processing in CL-XML or another LISP-like XML processing tool. This would probably create additional work for you, as you may then need to write bindings from the CL-XML tool to a Java process for the immediate benefit of your more conventional colleagues, but you would learn even more about the fundamentals of all three technologies in the process.
But it is all about learning. It is not about diplomas, degrees and certifications, which capture but a sliver of what it means to learn skills in any profession, including software development; it is about curiosity, experimentation and the willingness to take risks. The fundamentals of computer science, from discrete mathematics to algorithmic complexity theory, come up again and again in all but the most trivial development tasks. If your background is weak on such matters, you will end up losing in efficiency much more than the time it would have taken you to familiarize yourself with such foundational matters.
True, no recruiter ever put “understands big-Oh notation” in any job requisition, and so you may consider this to be a bit of theory that is not worth wasting your time on, but the recruiter is only the first part of the story. Imagine that you get past the recruiter and go to the interview for a plain old “Java/JSP/SQL developer”; you’re one of hundreds who have applied and that have just those scout badges. When you get the inevitable interview question “Tell us about some challenge you faced in the past, and how you overcame it,” you’ll have a story such as the following to tell:
You once had a deadline to produce some code to search files for particular patterns, and the initial performance was unacceptable. You were facing a tight deadline, so you had no time for trial and error. Instead, you took a careful look at your approach with a good understanding of its algorithmic characteristics in mind, and used that knowledge to tune it to good performance, meeting the deadline.
Imagine how that story would set you apart from your competitors for the job. And even more, imagine how the use of such basic skills would raise your value in whatever post you occupy, to the extent that you needn’t be looking for a job on anyone else’s terms in the first place.
And setting your own terms for your career is the Holy Grail. Having a solid professional network that can help you to bypass the job-factory industry and its rigidities is the most important ticket to a custom-fit career. This means that you should be active in the communities of the technologies that interest you, even on your limited spare time, and be willing to help others. Some of your colleagues in these communities, and those you help, may be in a position to recommend you for dream jobs. If you are currently out of work, such activity may even be more productive than sending your resume to every recruiter out there and then tediously following up on each one.
This takes some social skills, and you won’t escape the need for these skills. Not every hiring manager will be willing or able to consider your merits beyond the numbers, so you will have to complement your tailored skills with good social tools. Many people throughout the hiring process will care more about your scout badges than your fundamental skills, but they will pay attention to your social cues more than any other measure, whether or not they admit it.
You will have to pay for the privilege of charting your own career course by learning how to sell yourself. This does not mean anything too slick or smarmy. It simply means you will anticipate the likely candidate screening and interview questions and rehearse answers that will put your non-mainstream preferences in a positive rather than negative light. This rehearsal will improve your confidence and how you communicate such matters.
Even when soundly in a job, you may have to learn how to pitch the right way of doing things to management over the expected ways. Many developers find it distasteful to put on a salesman’s garb, even temporarily, but most developers are perfectly capable of it, given sufficient practice. Such practice, grating as it may be, is the price of relative freedom.
Not everyone is worried about long-term prospects, nor does everyone have to be. It takes all levels of commitment to round out a profession. However, I do believe that those committed to a long-term career in the profession produce more high-quality work and tend to have more job security. Perhaps these slow times will encourage more of us to migrate from careers by the numbers to something that fits us more closely.
To read more columns by Uche Ogbuji, click here.
Uche Ogbuji is a consultant and co-founder
at Fourthought Inc. in Boulder, Colo.
He may be contacted at firstname.lastname@example.org.