Advice on Rebooting a Technical Career

In the last few months, I’ve had a large number of contacts get ahold of me because they were concerned about their job security, and wanted my advice on how best to proceed. It reminded me of a conversation I had with a friend much earlier this year—I thought I would share in the hopes that it will be relevant some of the techies out there who are concerned about where their next paycheck is going to come from.

These are tough times—and now is the time to reconnect with your professional network and start doing some favors. Don’t wait until you’re looking for a job.

***Friend: ***Option 1 is to stay with [my current employer, who is having financial difficulties.] I don't necessarily have all the info there. We're meeting with [major partner] next week, which should give me a good read on their intentions this budget year. Making inroads with [big potential partners]. Making some investment inroads, now that legal encumbrances have been removed. Supposedly going to close [funding] soon. [rest of conversation removed.] Second question is what type of position I should angle for at [new employer]. They've got 4 dev positions, one of which is a somewhat senior position that ***might*** pay the [amount] I'm walking in the door asking for. They've also got a much higher level position as "Sr. eCommerce Manager" – basically a person whose job is increasing retention and margin. It is an interesting problem space. The recruiter doesn't feel comfortable submitting me for that. However, through [unnamed] contact, I could probably be considered for that, as well as higher level management type positions that aren't necessarily currently open, but where a need exists I could fill. Here is my quandary – mid-level and senior management type positions pay more, and are probably more interesting long term. However, it seems to me that updating my skills as a dev and putting in some decent time again on that front gives me a more recession proof resume. Dev is something that can be more easily done remotely, which makes it easier to stay [where I am].

**JRJ Response: **This response is going to seem somewhat random because it will be sort of stream of consciousness. This isn’t a simple decision, and I don’t have enough information to provide a well-formed opinion.

[Stay] or Go:  At the moment, you’re paid up… but things are tight, paychecks are unreliable. On the other hand, there’s a bunch of stuff on the horizon with a chance to restore some sanity. This is an EXTREMELY familiar situation, except for one thing: you’re paid up. Given that, I think you’re doing the right thing– poking your head up, prairie dog style to see what options are available. You’re making connections and clearing a path that will serve as an escape route if things make a change for the worse (or fail to improve.) That being said, the result will be that soon you’ll likely receive an offer and will have to make a decision.

At least you will have bought yourself some time– keep your options open as long as you can so that you give [company] time to secure funding/revenue/etc. to keep you paid longer term.

When you come to a forced decision point, I think if it were me I would take the safer route. Which route is safer may not be obvious. There’s a lot to take into account…

  • Income - higher income gives you a larger amount of acorns to store for winter. Even a small raise of 10% can have a profound effect on your ability to save and pay down debt.
  • Job security - You are an integral part of [current employer]-- there's no way they will ever fire you as long as there is money to pay you. A new company will impart new risk in that you'll be the new guy (LIFO queue theory tends to apply to layoffs) and there may not be a great personality/skill fit. My sense based on working with you for a long time is that you'll quickly make yourself invaluable, so this is a relatively short-term exposure. However, keep in mind that even seemingly stable companies could be headed for layoffs in the short term.
  • Company security - Clearly, [current employer] is on precarious ground at the moment-- like the average American who is 2 paychecks from poverty, [they are] a month away from being discard eligible at any given time. If you're able to find a profitable company that is in good financial condition (profitable with little to no debt, good cash flow, good margins, etc.) it will increase the odds that the company will continue to be able to pay you going forward.
  • Other factors - Quality of benefits, lifestyle and ability to work at least half the week from home, etc. have a profound impact. You need to seriously consider these.

The stock situation sounds pretty good, it would be interesting to know more about the company’s numbers. For example, what is their monthly revenue vs. costs, what is the valuation that your strike price is based on, etc. It’s hard to value 2% of the company without knowing that. The vesting model is certainly reasonable.

What kind of position?

Personal opinion: code monkey is the better bet in the short run, but a more senior management role is better in the long run. Let me explain:

Writing code will give you the best lifestyle situation– it’s easy to telecommute, it’s easy to pick up side work, etc. If you need a new job 6 months from now, it will be relatively easy to find. The pay is good (but not great) and you’re (re)building some very useful, marketable skills that are objective and measurable.

Management, on the other hand, gives you the best long-term picture. I firmly believe that, through a combination of global outsourcing and higher and higher level languages, dev work is becoming expendable and less and less “skilled labor.” So, while these skills are valuable over the next 1-3 years, they will be increasingly less valuable over the next 3-10 years, gradually approaching zero. In 10 years, I guarantee a rank and file developer/programmer will not be able to earn a living wage. Architecture will be irrelevant everywhere but a few companies like Microsoft and Google– everyone else will be able to make do with cobbling together existing components. The need for skilled developers and architects, as well as technical managers will decline severely, and those who can’t easily retrain and enter a new space will be screwed.

However, every industry has  need for skilled managers with strong track record of success. People who know how to lead a team, inspire loyalty, and help their reports build their careers will be able to move from the tech industry to whatever industry they are interested in without sacrificing salary or stability. It’s a much more stable position, and is the white collar version of “waiting tables” in that you can move to any town and get a job. Expose yourself to as many non-technical facets of the business as possible so you can cater your resume to aide you in the move. The sales manager at a car dealership makes 70K a year, the manager of an olive garden makes 65K a year. A manager is a manager is a manager. It’s all about track record, experience, and “polish.” You need to be buzzword-compliant (reading a few management books will get you up to speed) but it’s the safe long-term bet.

However, a manager is going to tend to be locked down to a 9-5, M-F existence at an office. It’s hard to be effective without it… that’s the trade off.

You talk about the “long sales cycle” to get a job, but in my opinion, that’s only true if you’re looking for an executive (rather than management) level position. Managers are considered largely interchangeable, and are hired quickly. Directors and VPs are not. However, having been a director at a small company won’t make it harder to get a position as a manager at a larger firm.

You need to decide whether your goal is short-term stability or long-term stability. That will help you decide which direction to take.

You mentioned health issues (for you, it’s eyes… for me, it was wrists.) This is a serious consideration– it is one of the major reasons I went in the direction I did. It’s far easier for me to do my current job (floating from meeting to meeting, telling people to use good judgment) than my old job (sitting in front of a ‘puter 10 hours a day writing code) because my wrists are totally shot. Dev is something you can only do for about 10 years before your body forces you to slow down or quit. However, you’re nowhere near 10 years of sustained dev work– you could do it for another 5 years.

A good quality LCD (24” or better recommended– figure a little less than $500) at the correct height, and a good quality pair of glasses will completely eliminate eye issues. Those issues don’t exist anymore. However, wrists are still a long-term issue unless you spend thousands on ergonomics.

***Friend Response: ***All good input, and much appreciated. I'm actually not sure that you're correct about the pace or extent of coding's decline as a marketable skill. A way to look at it is what has happened to strict IT management (I actually don't know). It should be on the same curve, but a few years ahead of actual dev. It almost seems like the actual task is as complicated if not more complicated than ever. Sure, more of the stuff runs reliably under the covers, but the complexity of the products have increased to offset that savings. Did sensor equipment put auto mechanics out of business, or just change the nature of their task, and in fact raise the bar for entry in some ways? In short, I'm not convinced that software composition in the future is going to be any easier or more cost effective than software development is now. A trend that I ***do*** see is the globalization of software development such that the "going rate" for entry and mid-level coding will be whatever they are paying in eastern Europe and India. However, I don't think that this will end the need for skilled spec writers, architects, and technical managers stateside. I also am not sure where the breaking point is going to be between my arbitrary "mid-level"  category and the "high-level" category of coders who will continue to be able to draw high rates stateside.

**JRJ’s Response: **Not quite the same thing… increases in ease-of-use on the IT side have been offset by increased complexity of the systems being deployed and the number of points of interaction. Add to this that companies are doing more and more with IT deployments (i.e. automating previously paper-driven workflows, etc.) and you have a sustainable industry. IT management and workers will continue to have reasonably steady work because of this, and because they are somewhat insulated from offshoring, since you can’t easily outsource physical deployment. Additionally, companies faced with the need to cut costs will often result in INCREASED IT spending, since good IT projects tend to be very high ROI in terms of cost reduction.

Programming, on the other hand, doesn’t have any of these advantages. Putting together an e-commerce site or a content-driven web site is truly trivial now days, and connection points are explicitly supported rather than cobbled together by programmers. The amount of actual programming that has to take place to get an average site up or application shipped is reducing at a geometric rate. Also, architecture is becoming less important for the overwhelming majority of projects as more traditional architecture decisions are made for you by the underlying technology. Do you think that you’ll have to design a normalized database topology to do an elaborate web site with ecommerce, content management, and social networking in 5 years? Wrong answer. The database will be created for you automatically, and you won’t need to know anything about its structure– we’re raising the level of abstraction to the point that database design will no longer be required for the overwhelming majority of projects. That’s just one example– the same is true of object models, service interaction models, etc. This stuff will “just work” and won’t need to be designed.

The code that links all these pieces together? There won’t be any. Most web sites and client-side applications will be created without writing a single line of code. You’ve seen this reduced with each iteration of the technology to a point where when you chart it, it’s obvious it’s approaching zero.

What I’m saying is that as these trends occur, it will become far easier to teach domain experts what they need to know to cobble together an application or web site then it will be to give a developer the required domain expertise to do the same– “developer” as a specialization, at least in the U.S., will largely disappear in the next 10 years. The only exception will be true large-scale software companies, and there aren’t very many of those– certainly not enough to employ more than 10% of people who currently consider themselves “developers.” Globalization is only a part of the equation– even without it, my thesis remains the same. (Globalization only serves to accelerate the reduction in competitive wages.)

Also, keep in mind that I am speaking specifically about the roles of “Programmer” and “Dev lead/dev manager.” These will be reduced by an order of magnitude or more. I’m not talking about “program management” and “project manager” and “systems analyst” type roles– these will be reduced, but not as much as programmers… however, with 100,000 out of work programmers trying to retrain for the same program management position, it can be tougher to compete.

I’m quite serious about this– I’ve done a ton of research, and can share some specifics with you (though admittedly there is some I can’t share.)

To use a concrete example, people don’t have to hire a team of programmers to build their company’s intranet anymore– SharePoint does the job quite nicely, thank you very much– even for relatively complex workflow oriented features, it becomes an IT task, not a programming task. You’re going to see this kind of thing become more common place across all kinds of traditional programming projects.