Issues

Best practises can kill your work life balance

“The best laid schemes of mice and men
Go often askew,
And leave us nothing but grief and pain,
For promised joy!”

– Robby Burns, To a Mouse

Work life balance seems to be the “it” phase in the developer world at the minute but to be the hot topic it has to be something we are all interested in or something we are at least struggling with getting right. Forgive me if I add my 2 cents (should be 2 pence really but I’m keeping it international here) to the pot by talking about the role of professionalism, business and craftsmanship in our work lives and how they play a part in our enjoyment of this wonderful thing called life. Some of you might get the wrong end of the stick with this one but I ask you to give it 5 minutes before you comment in rage.

In my development career I’ve leaned heavily towards been a pragmatic developer, I like the right solution to a given problem at that given moment rather than a gold standard solution to possible problems that might never turn up, aka gold plating or premature optimisation or constant polishing or chasing rainbows.

I asked him how much bigger he was going to grow, when is enough…enough?

I’m in a rare position to have started my career as a developer and then to have worked up to owning a company and growing it to a mighty 8 people! However last week I met a friend who started a company about the same time as me, by comparison he currently has 48 staff grown over a similar time frame. He asked how I’m doing and I said “OK, growing slowly but surely”. Now he’s just blown my business accomplishments out of the water right? As ever, it depends.

He went on to tell me he’s constantly stressed, has moved into a tiny office with the other founder away from his many staff, worries about how long people are taking for smoke breaks and leaving his minions to just plough through as many WordPress sites as they can.

I asked him how much bigger he was going to grow, when is enough…enough? He just said, “just bigger, you can always get bigger”, that was it seems the driving goal.

In my office I work right next to most of my lovely staff in the same open plan office, the rest are remote so I Skype daily with them. Sometimes I even feel like a business owner! I love my team and the work they do gives me flutters, I’ve handpicked each of them to be a good fit for each other, the company and our clients. Each is what I call a paratrooper, they can hit the ground on any project, assess the situation and take out any instant threats, report back to base and hold a bridgehead until In my office I work right next to most of my lovely staff in the same open plan office, the rest are remote so I Skype daily with them. Sometimes I even feel like a business owner! I love my team and the work they do gives me flutters, I’ve handpicked each of them to be a good fit for each other, the company and our clients. Each is what I call a paratrooper, they can hit the ground on any project, assess the situation and take out any instant threats, report back to base and hold a bridgehead until re-enforcements/re-supply turn up. I don’t care how many smoke breaks they take as long as the work gets done to a standard we expect given the time allowed and that we all have a laugh while doing it.

I go home and forget about work (most of the time) and I no longer code at home, I spent the time with my family and friends. I’m happy with my work life balance and everyone else’s within Offroadcode.

I’m aware this might not scale to 48 people but right now I’m pretty happy with the setup. I go home and forget amount work (most of the time) and I no longer code at home, I spent the time with my family and friends. I’m happy with my work life balance and everyone else’s within Offroadcode.

This is great to me, by my measure I’m doing well, by my measure. My friend’s measure on the other hand sounds like it just stretches to the horizon, he can never do enough. How we calibrate our own measure is important and the topic of this post. Finding your measure, one that stretches you enough (so you grow and learn) but not too far (so you burn out) and one you can live with.

So far it sounds like I’m banging my own “look at me, ain’t my life great” drum, bear with me it all links together.

Let us take something about development, compressing assets (JavaScript/CSS) is a good one. Let’s use this as an example but I need you to read between the lines here, this post is not actually about asset compression. You should do it. You really should do it. But I’m not going to scream at you if you don’t. The web design (does anyone call it that any more) community however is different. They will tut at you and accuse you of drowning kittens for not concatenating your javascript files or minifying them. And it simply must be all done as part of a build process on a build server of course, probably using Grunt, Gulp, Fulp or whatever the cool kids are using this week (I made that last one up btw, don’t google it). If you don’t then you might as well quit now and become a carpenter or something. Computers clearly ain’t for you Mr Sloppy Developer as you’ve just WASTED 100kb of download allowance and possibly 0.5 seconds of download time, BURN IN HELL!!!

This does not make you a bad person or a BAD DEVELOPER, you have not really drowned any cats.

To be fair YOU as a developer probably WANTED to compress your assets too. You would feel complete in doing so. It is what you are meant to do after all if you are a professional and you ARE a professional right? It makes sense and it feels nice to do a job well. But sometimes you just can’t or don’t or won’t. This does not make you a bad person or a BAD DEVELOPER, you have not really drowned any cats. But you probably need to adjust your internal measure to allow for the fact you didn’t and be ok with it.

Here’s some of the reasons from the past as to why I’ve not compress those assets, let me know via the comments if you can think of anymore or if any of these sound familiar:

  • The designers promised to have the final designs handed over in 3 weeks, they took 3 sodding months and they are still incomplete but the deadline can’t slip so you now have to squeeze in the whole build in 2 weeks instead of 10.
  • Something cropped up earlier in the project (“It must also work in IE9! Sorry!”) that took a lot longer to do than estimated, the client doesn’t have any more money so something has to give so you “parked” the optimisation time.
  • The client was a complete PITA with changes coming in left and right which just sapped any slack for optimisation.
  • The client or designer was obsessed with huge HTML5 video banners and equally huge retina images which made the site weigh in at 10Mb+ on launch (you did hit the deadline though and yes you did a nice rant about how that much page weight is un-needed madness and it wasn’t for the Apple site but it still got steamrolled through, well done you), in the light of that your 100kb changes ain’t going to do that much are they?
  • Optimisation is being talked about as a possible follow up project once we’ve got this tight deadline out the way first, more coin for us and less stress all round.
  • Your Project Manager says “the client doesn’t know what this is so they struck it off the todo list to save some cash”. Ironically post launch when the client showed it to their friend “who knows about these things” they pointed out how slow the site seemed to be and now they want us to optimise it for free as they thought they had hired "professionals"! Clients don’t care about what they can’t see and certainly don’t like paying for it.
  • It is an inherited project that does some crazy magic with the assets (crazy custom compressors, undocumented command line build scripts, etc.) and you don’t want to touch a thing to do with it for fear of breaking it while you rebuild the new site (which you hope will have compress assets done by your own crazy custom compressors and undocumented command line build scripts…oh wait…).
  • It’s a website for your brother’s side project and you knocked it up in 2 days for free and will now have to support it for free for the rest of your life! Screw compressing, I’m off on a bike ride.

Now here is the thing. All of those situations are possible, I know as I’ve done them all for real. See, you are not alone in this world of poop, this stuff happens to us all. This is not just about assets either, don’t get hung up on just that bit, this could be swapped out for anything that gets your worked up, that makes you feel like you are doing a lesser job.

See, you are not alone in this world of poop, this stuff happens to us all.

However all these things (even the last one) is a business choice and not a technical choice. All of them are driven by someone (yourself, your boss, the client) making a judgement call that it was not worth spending the time/money on that bit of optimisation. It was mostly out of your hands, it was not a technical choice to leave it out more a pragmatic one driven by time or budget.

That even includes your brother’s website too, you chose not to do it, you chose that your time would be better spent with your family or playing a games console or even (gasp!) being outside in the fresh air with your family!

As I’ve made the transition from bedroom developer to businessman I’ve had to adjust my measure to allow me to see the business problem that we can help solve rather than the technical problem that I’d like to fix. I’ve been able to see it from both sides and provide a suitable and cost effective solution.

Technically yes you should do it, business wise (including the business of your spare time) you might find a reason not to. This my friends does not make you a bad developer but a productive one. But if you listened to the web design community you would think you should be struck off and banished from Internet land. The web design community has the same measure as my friend did, it stretches to the horizon. You can never do “enough”.

This lesson was taught to me many years ago by Mark Pilgrim (of dive into mark fame and also for completely disappearing from the internet some years ago never to return). I was following the W3C at the time and he was spending a ton of time trying to get XHTML to work across browsers and blogging about it. Some of the things he had to do to try to get it to all working as it should were minor on their own but when added up were simply crazy. After many months trying to get it right in a time when no one else knew what right even was (and there was no Stackoverflow.com) he eventually gave up and went back to HTML4 with much ranting about the state of XHTML but in return he found his happy place again. He re-calibrated his internal measure.

I’d been emailing him during this time asking for some advice as I was trying to follow him on the XHTML path. I’d seen everyone drinking the kool aid and wanted to know if I should do the same before I committed, sort of like asking at the bar “what’s good?” rather than just pointing to a beer pump and hoping. His responses were very understanding of the mess of the situation, the desire of us all to want to get to the promised land of “valid HTML finally!” yet totally pragmatic of the current best solution “stick with HTML4 with a valid doctype and hope they get it right with HTML5”. Years later he helped steer HTML5 and wrote the awesome Dive into HTML5 website shortly before his mythical digital disappearance.

Back to those assets, there is an itch in your brain right? You don’t like not doing the thing that you should be doing, that everyone says you should be doing, you have social and professional guilt at not doing it. You should be compressing those assets yet an outside force is stopping you, stopping you doing what you think is your job. This is the rub. You need to learn to deal with this rub and resolve it like an astronaut with an itchy cheek 20 minutes into a 6 hour spacewalk.

Deal with it, or if you follow "the rules" of cycling, get some Rule 5 action going.

Ultimately you are paid/hired to solve problems that in turn solves the client’s problems. You are not paid to constantly code to ever changing best practises. Recalibrate your way of thinking, your measure.

If you get to compress those assets then winning, my point here is don’t beat yourself up about it if you don’t or even if another site didn’t.

Ultimately you are paid/hired to solve problems that in turn solves the client’s problems. You are not paid to constantly code to ever changing best practises. Recalibrate your way of thinking, your measure.

If the client’s problem is they have a fixed budget yet they only just realised they need to support IE9; after all how the hell should they know what browsers they need to support? Use the usage stats you say, well the stats say IE9 < 2.5% but they don’t point out that one chain of Travel Agents only use IE9 in house yet they bring in 40% of all agent sales, so no…it MUST support IE9 regardless of how nasty that might be to you. Then your task is to fix that problem with the constraints at hand. Sure you can rant about it, you can shout about it, you can put your headphones on and play angry music for a while and blog about how much we all hate IE but ultimately it needs to be done as it earns the client money and your company money. More money for the client might mean more projects and money for you. So really you are helping your own everyday problem, earning a living. Being good at delivering buys the company slack which means fun stuff and hopefully pay rises which means more mountain bikes and imported craft beers all round! It is all good. Let’s put it all in perspective, let’s recalibrate that measure of yours.

We suffer in this industry (programming especially) of treating it all as a craft (like being a carpenter right?) and when we can’t do that craft to the level we want due to outside forces we get grumpy and feel we’ve failed at the craft. I personally think this is quite damaging. Think of all the inner guilt and turmoil this is causing within yourself over something you have little control of, think about how it feel to be dragging that sort of crappy feelings around with you or taking it home, quit thinking about it as a craft. Recalibrate your measure, you problem solve, you don’t do craftsmanship. You make users problems go away, in fact you make any problem go away, focus on the problem not on what might have been or could have been. You can’t control some of the decisions thrust on you but you can choose how to react to them. You are just wasting precious brain power and energy doing otherwise. Fixing the problem gets you home on time (and paid) with a clear head so you can enjoy your time away from work. No one says on their deathbed they wish they had worked more. Do your job and learn to park it.

Lots of you are now freelance or thinking of going freelance. You need to learn quickly to see and understand the business need of your client before the technical one or you will be a very expensive unemployed moralistic perfectionist and won’t be freelance for very long.

Some take home today:

  • Find working practises rather than chasing best practises
  • Find little daily wins in every work day, I’d rather high five a well written “for loop” for instance and have a biscuit rather than delay my enjoyment until the end of the project (when it might turn out to not what we all hoped it would be).
  • Good enough is good enough given the situation and the judge.
  • Don’t judge if you were not there man…walk a mile in my shoes etc.
  • For a company - earning money always out trumps gold plating, remember that.
  • Learn to give zero fecks
  • Don’t carry around the weight of a bag of consequences from other people’s decisions, raise them and work with people to deal with them like the professional you are.
  • It’s ok to be annoyed at a choice out of your control, but ultimately work with what you have got but don’t let it ruin your day
  • It’s ok to put your professional opinion forward and fight for it, I’m not saying suck it up and roll over for the client’s every whim. I am saying learn what to get worked up about and what to let go. It’s a bloody website that you ain’t paying to make, get over it.
  • Be a paratrooper: self-sufficient, super keen, highly trained, expect to be under resourced and cut off behind enemy lines yet feared by the enemy (API vendors, bugs and PM’s).

What to learn some more? I highly recommend the following reading:

  • The lost art of giving zero f@#ks – Mark Manson, yes it has swear words in it but its very eye opening and a very freeing way of thinking.
  • Give it five minutes – Jason Fried, solid advice to stop yourself being a tit around new ideas
  • The Obstacle is the way – Ryan Holiday, a fantastic book for recalibrating what is important day to day
  • The pragmatic programmer – David Thomas and Andy Hunt, a classic, read it.
  • The passionate programmer – Chad Fowler, read this after you’ve read Pragmatic Programmer
  • Pegasus Bridge – Stephen E. Ambrose (he of Band of Brothers fame) Read all about what real paratroopers can do. Probably the greatest 170 pages you’ll ever read, true boy’s own hero comic book stuff but 100% real, balls of steel with a stiff upper lip!

Final words: Be amazed that we get paid to solve problems by pushing electrons around the global at light speed. What a world we live in.

See you at the bar,
Pete

Pete Duncanson

Founder and Managing Director at Offroadcode, Pete is a problem solving, project managing, new business winning developing machine who makes the company tick and ensures his team is always able to do their best work.

comments powered by Disqus