Monday, February 14, 2005

Death of the corporate developer

I'd like to pose a question ... what is the career outlook for 30-something corporate developers in the U.S.? Is it possible the same folks that were being wooed by "head hunters" with lavish compensation packages just 5 years ago are now at risk of becoming dinosaurs? Could the careers of business application developers mirror those of textile and steelworkers of the 1970s?

I've been "rolling" code professionally for almost 15 years now. In my early days it was PL/1 and COBOL apps for the mainframe, then web development with lots of stuff including Perl, Cold Fusion and Javascript. Today, it's primarily Java/J2EE applications using the WebLogic application server and lots of useful open source frameworks (props to the Apache group and numerous sf.net contributors much more ambitious than I am).

On the personal side, since the dawn of my career, I've married, am now the Father of two boys, and have a small house in the burbs (I'm still holding out on the dog and white picket fence). I even managed to get an MBA in the interim ... a testament to stubborn will power and determination rather than a particular interest in business (I knew after my first year of grad school that I wanted to stay technical).

That said, I return to my original ponderings ... where do I go from here? I'm earning a nice salary and still enjoy logic problems, technical challenges and learning! My resolve remains to resist going into management (at least corporate management) at all costs. Company politics gives me a rash ... I must resist that which I do not respect ... the dreaded phb (pointy haired boss) metamorphosis. I'll save my musings on what defines a phb, and the "top 10" characteristics there of, for a future post ... if you don't already know, you're probably not going to grok much from my blog entries anyhow (consult Scott Adams for insight). Anyway, let's look at some trends in enterprise development today:

Software development as a commodity - the quest for cheap labor
I was recently discussing the topic of outsourcing with an Indian friend (and fellow developer) I've known for years. He informed me that Google recently opened an R&D center in Bangalore. It doesn't surprise me, as India is quickly becoming the global leader in technology service exports. Consider the following statistics gathered by itfacts.biz:
  • 6 of the top 10 corporations receiving U.S. patents in 2004, were foreign multi-nationals
  • According to a UK ZDNet survey (9/04), 30% of IT executives will be outsourcing their computing infrastructure within 12 months, 30% more are "analyzing the idea"
  • Gartner estimates that the BPO (Business Process Outsourcing) market will reach $131 bln in 2004, and that represents nearly an 8% increase over the $121 bln figure for 2003
  • At a CAGR (compound annual growth rate) of 17.3%, India is expected to be the fastest growing IT services market for the foreseeable future ... the global average is 6% (Gartner)
  • According to the New York Times, exports of advanced technology products are down 21%, while imports are up 28% in 2004

I've talked with colleagues and developer gurus alike on this subject. Most feel it's either a flawed model that will inevitably be relegated to niche contexts, or a trend that will level off and stabilize itself soon. I think we may be wearing the proverbial "rose colored glasses" in this instance. I wonder what textile workers thought of manufacturing stability in the face of increasing imports in the early 70s? How many highly skilled (albeit blue collar) production workers and supervisors actually thought their industry would be literally "ravaged" within a 10 - 15 year time span?

Is business inherently evil for outsourcing software development services? Are American companies permanently destroying highly skilled, white-collar jobs or just forcing a "shift in focus" for the affected professionals? Certainly, businesses in a capitalistic democracy will always search for a better ROI for their "investment buck". However, in today's world, the pace at which trends to this end are birthed and evolve continues to increase. What will be the long term affects on our economy and the health of our nation's families under such stressful circumstances (ok, I'm waxing a bit philosophical here)?

Code "monkeys" trump pragmatic craftsmen
What's the latest "buzz" in corporate software development (Micro$oft crowd excluded)? ESB (Enterprise Service Bus) and SOA (Service Oriented Architecture), Spring - a middleware framework to replace j2ee middleware, ORM (Object Relational Mapping) frameworks - yes, these keep on coming (Hibernate, iBatis, JDO). We're awash in Middleware and tools, they're coming out our ears ... we've got frameworks of frameworks (Spring again). Additionally, there are countless open source utilities and libraries to perform all sorts of technical tasks applicable within business software. There are "boat loads" of development tools intended (apparently) to boost the efficiency of the "lowly" biz app developer. The best of these tools are often open source as well (e.g., the Eclipse IDE).

What should we do with this "stuff" ... how should the diligent developer use his time? The classic IT sales pitch goes something like this ... "With {fill in name here} software, you'll be able to focus on "business requirements" and spend less time on software infrastructure.

In 2002, at a BEA dev2dev seminar (4 hours of product "blather" for IT geeks and their bosses), more than one presenter discussed the ability for any junior programmer to integrate legacy systems into a complex SOA with their latest wysiwyg front end. When pressed on the role of Senior developers and architects, one presenter actually said, "you really don't need them". Needless to say, the product that was to render these miracles (WebLogic Workshop) was open sourced as "Beehive" and released to the Apache group last year. BEA in this case, clearly lost sight of their product users. If seasoned j2ee developers and Java OO experts had wanted wysiwyg development, they likely would have stuck with VB early in their careers (or migrated to .NET). That said, the perceived "hook" BEA used with this product reflects the mentality of an increasing number corporate COTS vendors today. Essentially, the thinking is that complex, modern software architectures can be developed without paying the traditional pricetag for senior professionals. Of course, corporations that buy into this line of thinking often "pay through the nose" for support contracts when something inevitably breaks and the $40k compsci newbie doesn't have a clue.

Where is the appreciation for sound software design and craftsmanship? Are corporate in-house development shops forgetting the long term price (with regard to maintainability, flexibility, etc.) of application development in favor of "quicker" time to market? Should developers spend much of their time learning the "latest and greatest" framework API and/or development tool, rather than re-factoring code or creatively applying their brain power to the problems/tasks at hand?

I'd like to pose an answer
... to my original question. I think there are lots of choices for my own career which may be applicable to today's corporate developer as well. Here's the short list:
  1. Keep my head down and hope I make it to retirement before my skills become un-marketable
  2. Throw myself into an open source project, write a book, and begin touring for speaking engagements and light consulting
  3. Start my own IT service/consulting company (Beltway-Bandits-R-Us).
  4. Morph into a manager dolt and hope I'm able to ascend beyond the masses of middle management with my dignity (and brown nose) in tact.
  5. Sell the house and begin touring the country (with the family) in a "mondo" RV ... seaching for career enlightenment and a campground with trailer hookups.
  6. Convince Krispy Kreme to open just one more U.S. francise location, and reduce their ownership guidelines (just this once), so you I can get in.
  7. Hook up with some COTS vendor and contribute to the glut that is IT middleware for those "lowly" biz app developers.
  8. Go back to grad school for an MS in compsci and try to land a job doing AI stuff (really cool). Maybe even land a spot at Google NYC ... sweet.

No comments: