Tuesday, January 25, 2011

Perth

So I've been in Perth for six days now...

I'm staying with friends who moved here from Melbourne recently. It's been great catching up with everyone.

But overall, I'm having a pretty lazy holiday here, so in the spare time I find myself browsing Stack Exchange and other programming blogs quite a bit. I don't think I can go a single day without at least reading about programming, if not actively discussing it on a forum. I suppose this is a good sign - it shows that I definitely have a passion for it - I just burned out with the grind of nitty gritty "work", corporate politics, etc.

It's been over a week since I went on sabbatical. Two things are very clear to me now:

1) I really really really needed this.

2) There is absolutely no danger that I'll get lazy and never be able to ramp myself up to work again. - This is something that some people warn against when taking career breaks and sabbaticals - but I just don't have that lazy "eternal leisure" streak in me. Even if money was not an issue and I could do whatever I wanted forever, I'd still want some kind of routine and structure. Some reason to get up at a decent hour and do something productive every day.

Wednesday, January 19, 2011

Off to Perth!

I'm off to Perth tomorrow! The friends I'll be staying with do have a computer and an Internet connection, but I'll try to not use it at all (or at least, no more than to just check my emails and do online bookings and such).

I also just got the fanatic badge on Stack Exchange today, which was a bit of a wakeup call to how much time I spend online.

Anyhoo, last post from Melbourne in January. :)

Tuesday, January 18, 2011

Workday #2

I've been on sabbatical for two working days now...

Haven't really accomplished anything much except played a bit of WoW and got a few simple errands out of the way.

Funnily enough, even yesterday - on my very first weekday day off - I already felt a bit indulgent, lazy, and useless. I couldn't immediately understand why, but after a bit more pondering today, I think it's like this:

This is the first time ever that I've been completely voluntarily out of work, and not even looking for work. Previous stints of unemployment, vacations, and weekends were different. They were breaks that were taken within a framework where there was work being done. It didn't feel indulgent to take a day off and play WoW after spending 50 hours at the office. But it does feel a bit indulgent when I'm not doing anything anyway.

I'll be heading off on my travels in two days. But once I'm back in Melbourne fulltime, there is no way I'll be able to put up with such a productivity void. Probably not even for a week. This has been a good test, and I've already passed it. - I now know that I don't want to just sit at home playing WoW all day and being useless. In all honesty, I thought it would take weeks to get to this point, but I guess I'm glad that even a day or two was too much. :)


Friday, January 14, 2011

Officially on sabbatical!

Well, my last day has come and gone...

Mixed feelings...

Scratch that - I'm just going to miss the people. So my feelings aren't really "mixed". It's simpler than that - it's two dimensional - I'm just going to miss the people, but the rest I'm mostly relieved to leave behind.

Looking back now, when I no longer have to face even another second of that job, I don't think it was all that bad at all. Certainly better than average for a mid-sized-corporate gig. But such is burnout. In my case at least, it was a complex intersection of different frustrations. There's nothing to point as a single root cause (although one bad project from 2 years ago was probably a major catalyst), but lots of little things that built it up, over almost two years.

I don't think it's going to fully sink in until Monday, when I wake up and realise that I can just stay in bed.


Friday, January 7, 2011

Putting yourself out of work

So I was surfing Stack Exchange yesterday, and I came across this post (in a thread about "controversial opinions about programming")...




Of course, I'm sure all good programmers agree with this in principle, but how many of us have actually worked in a role where the work was clean and well-documented enough for a new programmer to come in off the street, and "be up and running within a week tops". In my last gig, the one I burned out with, the ramp-up time was more like a year. Or maybe as little as several months on a team that did the most standard and basic of work. But still, nothing like "a week tops".

What it means to "be up and running" is subjective of course, but the elephant in the room here is obvious: programming should be done in such a way that individual developers don't get stuck being the only ones who can do their job. It should be clean, well-documented, and open enough for any decent developer to be dropped into the role at relatively short notice.

I've never worked in a role which has been even remotely like this. About the best ramp-up time I've ever worked with is around six months. And yes, I have considered the possibility that I'm a 'tard and a slow learner :) - but that wasn't the case. I've watched others start at these companies, and saw the same ramp-up timeframes play out. The projects were just never done to be well maintainable, or "developer-accessible" enough. Documentation was unheard of (or woefully out of date).

I guess the reason this bothers me is that I really don't enjoy this kind of messy, open ended, maintenance-oriented work. I like the idea of clean projects - a well defined beginning, progression, and end. Some people can work on massive reams of bad, unmaintainable code, and just sit in the same role forever, constantly re-shaping the big ball of mud, relishing the job security. That's just not me. Or more accurately - that's not me in spirit, but it's a rut I often fell into in roles and environments that encouraged this approach to programming (intentionally or unintentionally).

I think Mike Hofer is quite right. And I believe there is a strong corollary at play here: companies/projects with a very long ramp up time are a bad sign. If a software project is done well, any developer should be able to come in, read the doccos, and be up and running within weeks - and probably plateau out (more or less) in basic everyday productivity within a month or two. Of course, there will always be certain details which more senior people know better than a newbie - but it shouldn't be this hidden "dark art" type of scenario where it takes years to become fully proficient and productive - because the system is full of little tricks and hacks that aren't documented anywhere, and can't be learned easily.

Of course, making yourself easily replaceable might not be very good for job security. On the other hand, this kind of "artificial job security" can easily lead to burnout - at least if one is focused on closure - rather than ongoing work and job security for its own sake.