Gant Software Systems

Instability Is The Default Plan For It

As a few of you know, I was briefly employed from the tail end of February until late last Thursday, when I got downsized. It was an excellent group to work with and I plan to stay in contact with those guys. While I can’t get into too many of the details, it wasn’t due to performance or anything like that. It’s just that the sort of clients I work with sometimes have things change out from under them and things go in different directions. It stinks, but life is full of surprises. If I wanted a boring, perfectly safe job, I’d get that tomorrow (and some HR algorithm would probably reject me, but let’s just go with the optimistic case for now). That’s not what I do though. I’ll go back and work for them again in a heartbeat if the opportunity presents itself.

That said, the process of “getting canned” is always an awkward one, and I often wonder why it has to be that way. Nobody gets a job in this industry with the expectation of retiring there (unless they are very close to the end of their career). So, why does it always feel awful, from both sides of the table? Well, in a word (make that two words), normalcy bias. We have the expectation that things aren’t going to change, even in this industry where change is just about the only constant left. It’s really a bit of strange spot we all find ourselves in; we immerse ourselves in a sea of constant change in terms of what we deal with in work tasks, yet we are remarkably easy to catch unawares in real life. We expect the gig to be there tomorrow, even though it might not be, in the same sense that we expect the sun to rise in the east, when the probability is a darned sight lower than that.

So what do we do? Well, perhaps it would be instructive to look back at the way we handle failure modes in our software, as very similar models can applied to regular life. Much of what you learn in developing large scale applications applies very well to handling shocks in your life as well. Let’s look at a few.

  • Fault tolerance. In a perfect world, you can rely on a single basket to hold all your eggs, because nobody drops the basket. No one lives in a perfect world. This is part of the reason why I recommend that developers past the junior level get engaged with some side projects (junior devs are better off quickly developing their skillset in my experience – that might mean side projects, but not necessarily). Does this cut into your free time and social life? Absolutely. Can you avoid it? Probably not. You can and should, however, limit the number of hours spent on it to something low and reasonable. But there’s nothing better than having a side project that pays $500 or better a month when everything goes sideways with the main job. It opens up the option of being able to expand the project to a full-time gig (what I did after this downsizing) and possibly can help you through the gap otherwise. It will also help you improve skills that you might use in your day job, perhaps making you less likely to get let go in the first place.

  • Ability to withstand transient errors. This is a big one. I see a lot of folks that, if their paycheck is delayed by a single day, they are totally screwed. They have more month than they do money, every month. That’s an atrocious place to find yourself, as it limits your ability to be somewhat choosy about your next engagement. And there is nothing so bad as going into a job interview, smelling of desperation. Life is much easier if you have a little bit of runway before you start panicking. At the very least, having the equivalent of one month’s net income will limit the risk posed by short term problems (such as a mailed paycheck never arriving, a short term job loss, and the like), but six months to a year of savings is even better. In addition, I do usually have at least a couple of weeks worth of food in the freezer, pretty much at all times. This isn’t from the perspective of one of those wild-eyed prepper folks, but rather because not having to worry about going out and getting food (or worse, buying it when money is tight) makes things easier. I currently have about four gallons of stew in the freezer – I might get sick of it, but it keeps me from tensing up about the cost of my food, since it’s already paid for. Just taking that variable off the plate helps a lot with my mental state more than it does with finances. It also helps when ice storms come through and shut the roads down for a week, like what happened last month.

  • Configured to avoid failure cascade conditions. One thing you learn very quickly about building large pieces of enterprise software is that large system outages come in two flavors, those being the nuclear explosion and the forest fire. The former is best avoided through fault tolerant practices, such as not having all your eggs in one basket. The latter is more insidious, in that a failure in one part of the system can create conditions in another part of the system that relies on it, eventually taking the second part of the system down, whose failure causes conditions that take down and a third and a fourth, until the whole thing has fallen over. Financial situations are like this as well. If you don’t have spending under control, you should get there now. Debt is one of the best ways to have the financial equivalent of a cascading failure. Let’s say you are out of a job for a couple of weeks. At that point, are you in a situation where you’d be out of a place to live, or where your car would get repossessed? Would such a situation result in financial penalties that are going to cause financial difficulties even after you are employed again? If so, you’d be better off trying to get those handled, instead of getting the new iPhone. That might mean not getting a bigger house as soon as you want one, but it beats getting the bigger house and having to struggle to keep it.

  • Have a disaster recovery plan. Do you have a plan for what you do when you get laid off? I do. It’s the same one I follow each time. First, I update my resume on LinkedIn. That immediately gets me a little jump in traffic, including some recruiters and former employers I may not have talked to in a while. I also let a few friends who are senior developers know what is going on, because they often know of open positions (and if they don’t, they frequently hear about them). After that, I go home and chill out for at least a day before scheduling any interviews, applying to any jobs, etc. The reason I do this is to let myself settle down emotionally from the job loss before I start looking, as the pressure cooker of an interview is no place to find out that you are more bothered by the job loss than you thought you were. Following that, I start applying to jobs and/or talking to recruiters. This is true even if I’m doing just contract work, by the way, although the time window between getting cut and getting started looking for more work should be shorter (because you should be a little more comfortable with the volatility).

  • Have the things in place that you need to implement your disaster recovery plan. Every six months, I get a google calendar reminder to update my resume. I do it. I used to update it on LinkedIn, but then I discovered that resume updates trigger traffic, as well as questions from employers and clients. I want to control when that traffic happens, so I keep the updates in a document in dropbox and only apply them when things change. When I get the resume warning message, I also go and make sure my suit still fits me, as the last thing you want when you’ve just gotten downsized is to discover that you have to go get an alteration before you are ready to interview. Finally, I also try to take some time every few months to sit and think about the direction I want my career to take. A lot of times, this can inform the sort of jobs I look for whenever something happens. You don’t want to try to do this introspection when you are freshly unemployed, as your mental state won’t be ready for it and you’ll likely still be a little emotionally raw from being let go.

  • Have heuristics in place to know when something may be about to happen that is going to harm you. Most of these are not reasons to jump ship, but they are a good reason to know where the lifeboats are. There are frequently loads of signs that something is coming. If you are starting to see a lot of closed door meetings with high level folks where there weren’t any before, that is frequently an indicator that something major may be coming. If lots of people you’ve never seen before are walking around in suits, that almost certainly indicates something. If your boss leaves and someone else takes their place, that can often herald a coming job change for you as well. Just pay attention for things out of the ordinary – they frequently show what’s coming before it hits. This is all assuming that you are about to get laid off, not fired. Getting fired comes with an entirely different set of pre-indicators.

It’s tricky to know where your career is going to go. Lots of stuff can change, and constant turmoil is pretty much the default state of the industry and has been for a long time. You have to expect it and have appropriate systems in place to deal with it when it happens. When you do, a lot of that queasy, panicky feeling that you get when a contract (or a job) ends goes away. You’re sad for a bit because you know you’re going to miss hanging out with the people you worked with, but you’re not in panic mode, which helps you get the situation resolved much more smoothly.