Monday, April 7, 2014

A Plan for Funemployment



Up until last Tuesday I had worked 2.5 years for a large semiconductor company that shall remain nameless. They're a household name. Their CPUs are in your laptops & desktops... but the problem that's causing them much consternation is that their CPUs are very likely not in your phone or tablet. OK, you know who I'm talking about now, but I'll refer to them as MegaCorpCo in this post.

So why the heck would I leave my job at MegaCorpCo? Especially since they're working on some of the most interesting projects in the area?  MegaCorpCo with it's 100,000+ employees was the largest company I had ever worked for by at least 2 orders of magnitude.  In a word, I think the main reason was bureaucracy That bureaucracy was primarily fed by a quaint kind of 20th century security paranoia that made it very difficult to share information internally (code, documents, etc.). This security paranoia led to very real delays and frustrations. It's as if they never got the memo about the benefits of sharing information openly.

The other part of working at a mega corporation is that you work on such a small piece of the puzzle that it's kind of tough to get your arms around the product and when the product is done you don't get to actually "play" with the it (and the product was actually very interesting, I must admit).

Let me be clear that the people I worked with and for were great. And I think my manager was certainly one of the better managers I've had; MegaCorpCo seems to do a great job with manager training. 

But there was the gnawing sense on Sunday afternoons that Monday morning was coming which led a sense of dis-ease (BTW: check out Kent Beck's excellent talk on experiencing Ease at Work ). Then last summer my appendix burst and that gave me about a month to think as I recovered. And by the time I went back to work I had concluded that I need to probably be somewhere else. Someplace a lot smaller.

Enough 

Around that time I started reading the excellent Mr. Money Mustache blog where the topic is generally about early retirement. Not "retirement" as in the cessation of all work. More like working on things you want to be working on - sometimes for even for money. I went through some of the calculations and figured that if we were very frugal I could probably have enough saved to "retire" (to work on projects of my choosing not necessarily for money) in 5 to 7 years. So for a while I figured maybe I could tough it out for 5 to 7 years (MegaCorpCo did pay pretty well, after all).

Then early in the year there were beginning to be rumblings & rumors of layoffs at MegaCorpCo. This goes back to the lack of success in getting their CPUs into mobile products that I mentioned earlier. In February that was formalized. We were told that it would be X% of our supergroup. (where X is actually quite a bit larger than the numbers published externally, which is why I'm keeping it as X here). Then we were given an offer of a voluntary severance package (N months of pay and M months of paid insurance). It was a pretty generous offer given my short tenure, so I decided to apply for the VSP which was billed as a sort of lottery.

It wasn't that I was worried about being laid off, it was more that it seemed that after laying off X% of the group that it would become a much less pleasant place to be. That and my general dis-satisfaction as outlined above led to the decision. Near the end of March I found I had been selected \o/ and that my last day was to be April 1. 

Of course, I don't yet have enough to really "retire" for good - Like I said that would take another 5 to 7 years of working for pay. But who says that "retirement" period has to happen all at once? Another way to look at it is that I really only have to work for money for another 5 to 7 years.  Why not mix periods of funemployment with paid employment?

This is quite possible now because the Affordable Care Act breaks the tie between insurance and a job. Prior to the ACA, once you were in your 40s or 50s it could be very difficult and expensive to obtain insurance. By the time people turn 50 pretty much everyone has had some pre-existing condition that would disqualify them from getting insurance under the old regime. And this kept people tied to their jobs.

The fun part

As programmers, we have certain advantages over other occupations when it comes to times of unemployment. We can start or contribute to open source projects and by doing so build our portfolios on sites like GitHub. Future employers can examine these portfolios.  I can't imagine that accountants, for example, can or would work on accounting in their spare time and put the results up on a GitHub for accountants. ( But who knows, maybe it happens, some accountant decides to audit some corporation's quarterly report and finds discrepancies and blogs it - I suppose that could happen, but it doesn't seem very likely). 

As a programmer it seems to me that we're living in a sort of golden age. So many open source projects out there. So many new languages to learn. So many new frameworks to try out. So many free classes (MOOCs). Now that I've got some time, I'm really looking forward to digging into learning. I'm taking the Coursera Machine Learning class now, for example, and plan to take a few others.  I'm also looking forward to reading more. And I plan to dust off some long dormant programming projects and start some new ones. 

Of course, having the Spring and Summer off means I can also do a lot of outdoor activities that I wouldn't have as much time for if I was working in a job for money and I plan to do some of that as well. 

The Plan

I'm aiming for a 4 to 6 month period of "funemployment". I suppose that if the perfect job comes along after 2 months I'd probably accept the offer, but at this point I'm not planning to start looking around much in the first 3 months and figure it could easily take 3 months to find a good fit (given the current good job market for developers - if it slows, it could take significantly longer). I'm planning to do at least one blog post per week related to programming. I'm also looking forward to playing with my Parallella board when it arrives (hopefully in the next few weeks). And I want to play with Mirage OS as well.

Plans can change, of course. I did something similar back in the Summer of 2001. I figured it was time for a break after paying off the mortgage of our first house. I quit a job I had had for 8 years to take 6 months off. Yeah, the Dot-com bubble was bursting, but these things generally only lasted about 6 months, right? Heh. Then there was 9/11 a couple of months later and the economy got really slow. The six-month-off plan turned into 10 months off (and even then when I went back to paid work it was only a 4-month contract gig... though it was also one of the most interesting, enjoyable gigs I've had and I learned a ton.).  I can recall going to user-group meetings in Portland back in 2002, 2003 and asking for a show of hands of who was working and it wasn't unusual to only see half the hands go up. But on the positive side, due to the slow economy I decided to go back to school and get a Masters degree and related to that I got to go do research in Italy for 3 months back in '04. Money was definitely tight during those years, but they were also very good years.  

So while plans are good, one has to remain flexible.  


Sunday, February 16, 2014

A follow up on the interview anxiety post

First off, I'm really surprised how many views yesterday's post got: over 17,000 views in about 24 hours.  It also got a surprising number of upvotes on Reddit as well as Hacker News.  I was expecting views to be in the hundreds at best, so it seems my post struck a nerve out there.

As for the responses they seem to fall mainly into the following categories:

"Why don't you medicate?"

I'm really hesitant to go down the medication route at this point. My concern is that I don't need to take medication to cope on a daily or regular basis and I don't want to have to. I guess I'd worry that popping a Xanax once for an interview might actually feel too good and I might be tempted to start taking it in other situations. In the past when I experienced situational anxiety issues around more common activities (driving for example) I decided very early on that any kind of drug that would take that feeling away would also become necessary.  I figured that if it really worked I'd quickly become dependent and never want to leave home without it. That's why I went with a cognitive approach to work through it. It's not as fast as a pill, but it eventually worked and I didn't need a prescription. I realize there are people who do take these medications and I do not want to sound like I'm saying that no one should take them. This was what I decided was best for me. Your mileage may vary.

"Therapy?"

I think it's a very mixed bag. Works for some, other go through years of therapy and don't see much difference. What does seem to work, in my experience, is talking to others who struggle with the same issue. It helps to realize you're not the only one. It also helps to share ideas about what has worked and not worked. I guess it comes down to this: if the therapist has never experienced a panic attack, I really don't think they have the cred to talk me through it. I'd rather talk with someone who has gone through it (therapist or not) and come out the other side.

Of course, I can hear the arguments now: "But if you had pneumonia you'd go to a doctor for treatment whether or not that doctor had had pneumonia before." Sure, that's absolutely true, you don't care if the doc has had disease X as long as they can treat you for it. But when it comes to something like anxiety it just seems quite different. I think someone who has struggled with the same kind of issue can actually be a lot more helpful than someone who hasn't.

"Blame the interviewer!"

There were some responses like: "An interviewer shouldn't ask certain kinds of algorithmic questions in an interview, you should refuse to answer!". I have to say that I absolutely do not agree with that. The interviewer is trying to find the right candidate for the job and most programming jobs require that you write code. So the interviewer has every right to ask. 

Other responses had to do with the attitude of the interviewer. Situations where the interviewer is being a jerk or trying to purposely stress out the interviewee. But in my experience, that's generally not been the case. Some interviewers have actually been quite accommodating. 

Ultimately, it's my issue. I own it. I need to work through it. Putting the blame elsewhere only prolongs that process.

"I'm an interviewer, how can I help you have a good interview?"

These responses were very gratifying. My motivation for the post was mainly to raise awareness and a response like that show that there are interviewers who want to be aware. So I really commend the folks who had that kind of response.

As for the answer to that question, it's going to vary depending on the anxious interviewee. I think in my case the following could be helpful:
  • A coding problem given prior to the interview. Then go over the resulting program in the interview.
  • A written 'test' with a few different questions delivered by the interviewer. Interviewer then says, "I'm going to head out for a coffee, I'll be back in 30 minutes or so to see how you're doing."  I had an interview where that happened and it was fine and apparently I did well on the test.  I think there were a couple of factors here: No one was looking over my shoulder while I tried to solve the problems. If I got stuck on one question, I could go on to another and come back to the problematic question later. 
  • REPL instead of whiteboard.
  • Walking and talking outside. Walking, especially outside, calms me down.  A walking conversation actually sounds quite nice. 
  • Going over code in my github, perhaps?

"I've had exactly the same (or similar) experience."

There were lots of these. It's not an uncommon story. It's good to know you're not alone. 

Saturday, February 15, 2014

Interviewing for the anxious programmer

Hi. My name is Phil and I have situational anxiety related to technical interviews - specifically, the coding part of the interview. Now, of course, everyone has this to some extent, but maybe I should clarify: I panic when the interviewer says "Could you code this algorithm on the whiteboard". And when I say panic, I mean PANIC: racing thoughts of doom, impending death, doubt about my abilities, dizziness, difficulty breathing, feeling like I'm gonna pass out - the classic panic attack.

As I step up to that whiteboard, my brain launches several spinning thought-processes that suck up the vast majority of my processing power. First thought-process: "Oh, no, what if I can't do this? What if I look stupid?". Followed quickly by: "Try not to hyperventilate! Hold it together, man!". And then several others: "My heart is pounding!", "I feel dizzy!", "My stomach, it's in knots and I feel nauseous - don't get sick in an interview!". I call these spinning thought-processes because they're sort of like processes running in different threads on a CPU. They run in loops.  Now, of course, all of this makes it difficult to actually work on the coding problem posed by the interviewer. From the outside, from the interviewer's perspective, it probably looks like I've locked up. Stumped by the problem itself. When really, the posed problem is only getting about 10% of the mental CPU at this point. 

How did all this start? Well, I think I've always had a propensity towards anxiety even in childhood. I can recall in high school having full on hyperventilating panic attacks in my senior year around that time when I needed to decide where to go to college, etc. Of course, at that time I had no idea what they were - I'd be taken to the school nurse and she'd have me lay down for a while and pretty soon it would pass. After I went off to college they didn't happen anymore. But then after college at some point when I had a job where I needed to travel some, I recall a particularly bumpy flight where I had that kind of feeling again - now I would characterize it as a panic attack. And a bit later I had some health issues that also caused similar anxieties to resurface. This was about 20 years ago. At some point it developed to the point where just driving to the store to shop became quite a challenge. By then I realized that these episodes were panic attacks. I read up on the topic and basically went through a lot of cognitive self-therapy and after a year or so I was able to drive without issues and life was good again.

I think I've always been a bit nervous in interviews (who isn't?) but a few years ago, I had an interview in a small, stuffy room with no windows. The interviewer asked me to code some algorithm on the whiteboard and I suddenly broke out in profuse sweat and... well, the whole thought process thing I outlined above took over. As I felt quite physically ill at this point, I had to ask for a 10 minute break. After the break I came back and gave it another try, but by then I was just too run down by all of the stress hormones rushing through my bloodstream and I had to just call it off and leave immediately. And that was, I think, the interview that triggered the association. Since then, I've had mixed results. Some interviews have gone OK. Others have been close calls, and still others have gone about as badly.

So why am I blogging about this in... public? Let me clarify that my motivation isn't to elicit sympathy or to somehow get a pass on interviewing. Interviews are kind of a necessary thing. Sure there are alternatives like auditions, but even then you need to have some kind of interview to figure out who you're going to audition. No, my motivation here is to try to take some of the power out of the anxiety. Part of the fear is that people around you will discover that you're having a problem with anxiety and that they'll judge you for that. Well, if I tell them up front, then that takes some of power out of that fear.


Strategies for coping

In some cases, I've noticed that perhaps low blood sugar has played a part, so I tend to take some kind of snack along - nuts, energy bars, etc. The brain uses a lot of glucose and needs to be well supplied in order to function well. Usually, an interview lasts about an hour and you get a little break in between - I try to snack some during those breaks. 

Another factor can be endurance. I've definitely noticed that things are more likely to go downhill near the end of a day (or even 1/2 day) of interviews. So now I try to ask that a full day of interviews be broken into 2 half days instead. Sometimes I even think I should ask that a 1/2 day of interviews be broken up into even smaller chunks over a couple of days.

I also try supplements like l-theanine and GABA, but I can't exactly say that the results have been consistently good. I think they help take the edge off, but they certainly don't completely eliminate the problem.

Ultimately, I think I just need to practice more. Whereas I overcame anxiety issues related to everyday issues (like driving) in the past, it's a bit tougher to work through interview-triggered anxiety as you don't get an opportunity to interview every day.