Don't be a super hero

Published on 2013-7-25

This is a write-up of yet another Pub Rant(tm). Nothing new here, just my own take on a subject.

Picture the scene...

You're at Enterprise Company ACME1337 Ltd

Deadlines are looming, technical debt is mounting, the developers are de-motivated and you Have Solutions To Problems if only your manager would listen to you and put the work into the issue tracker to be worked on.

That feature that really needs to go in? That technical improvement that needs to take place in order for the team to remain sane - the answer hits you! If you stay late or bring a laptop home you can do it off the books and Make That Change that will save the day.

You go in the next day and people congratulate you, you feel good about yourself and perhaps do it again the next day, and the next day and the next. You start working on these things in your weekend and you feel that perhaps you're making a difference to that codebase, maybe you get promoted because you do this sort of thing often and you feel that you're helping your career and company by Making A Difference.

Maybe your friends tell you have some work/life balance issues but you take it as a complement and they're just too blind to see that you're changing things and it's for the greater good. Perhaps you feel that everybody else needs to work a little bit harder like you and why can't they see that this stuff is super important.

Perhaps you're unable to articulate to that hiearachy above you why these things are important because you feel like the technical debt is something you should be shielding from the business somehow and it's all the developers fault anyway.

I've been here, but in hindsight...

You're not solving the actual problem

The problem is probably cultural. The business has gotten used to the idea that we've placed in their heads that development is this magic box that requests go into and features come out of. The business and developers don't talk very much, there is a hieararchy of managers above development to protect them from each other and requests for "time to fix this crap" don't cut much muster.

By trying to stimmy the tide of rushed features and work, all that is happening is that Business Carries On As Usual because as far as everybody is concerned everything is fine and besides, "Alice will fix that thing at the weekend"

By making yourself available to this extra work, you're only going to be asked to do more of that extra work. Oh sure, your manager might say "Oh don't overwork yourself, take some time off", but secretly they're thinking of the next thing they can get you to rescue so they can get the credit and move to Management Level n+1 off the back of your efforts.

By patching up the symptoms, you're hiding the real problems of culture and visibility that need fixing and perhaps more importantly...

You're hurting your colleagues

How about Bob on the desk in the team next to you? How does Bob feel about this effort that you're putting in? Perhaps they're an old and wise developer and Know Better, but perhaps they're a junior developer who look at this super hero as something to emulate and aspire towards.

How do they feel when you come in from a hard weekend of work and they had the audacity to have fun instead? How do they feel when they leave the office at 18:30 and you're still slogging away on that piece of work that you'll be there until 10pm on and still not finish?

Pretty awful, that's how they'll feel - and perhaps they'll be encouraged to join you in your efforts and further hide the problem with this extra work off the books and ... well we can see where this vicious little circle goes can't we?

Be a hero by breaking the cycle

If you're a good developer, you'll quickly end up in some position in the corporate hieararchy where you're responsible for something other than bashing keys on a keyboard. This can be a good thing or a bad thing depending on how many meetings you're then going to be asked to attend outside your area of competence.

Let's go back to that original problem of asking permission off your manager to spend time "fixing this technical thing", or "upgrading this technical thing", or "training the team on something that'll help get things done better".

It doesn't work, or you're asked to "think about ways of improving the process before the next review", whatever - stop right there.

The problem is in the culture. Change the culture. You're in a position of responsibility, allocate the time as part of the daily grind and make it happen. Take responsibility to make sure that everybody who can solve important problems are solving those important problems. Don't ask permission, just do it.

You're not going to get fired because you're too important an asset to the company. If you're unable to justify the time spent after the fact you're either really bad at explaining things or you're not picking the right problems to solve.

If the team needs to learn how to do something better, then take an hour or two out over the week and spend time with the team to help them learn how to do that thing better. The company will reap the benefits of this over time and so will you because you'll be able to spend time with that partner, or dog or World of Warcraft.

The chances are that in your wonderful hieararchy of Enterprise Goodness (tm) that nobody in the business will notice - you'll still be delivering (perhaps slower to begin with), but you think they actually measure that stuff with any effectiveness? They're too busy selling selling selling because that's more important anyway. You're a black box, and what you do inside that black box is not their concern.

Don't

Do

Separation

Separation of Work and Life is important, respect it or you'll all lose in the long run.

2015 © Rob Ashton. ALL Rights Reserved.