Tuesday 21 June 2011

100% Coverage is not enough

Unless you’ve been living under a rock you’ll have heard about code coverage in relation to test driven development or unit tests depending on if your writing the tests first or not.

Now a lot of people who evangelise TDD will often also talk in the same way about code coverage telling you that if you don’t know what code your tests are actually exercising then how can you be sure your code is correct? I have also had conversations with people who believe in TDD but think that code coverage is just a figure and you shouldn’t pay special attention to it.

Wednesday 15 June 2011

DDDSW 3

So Saturday just gone was the 3rd instalment of DDD SW which is held in Bristol at University of West of England where I was lucky enough to have been picked to to give a session on Kanban.
In previous years the weather has been very hot which has caused its own unique issues but this year although the day was nice it was fairly cool which was a welcome relief.
This year also saw coffee on arrival along with rather nice danish pastries which was just what was needed to get you going on a Saturday morning.

Sunday 12 June 2011

Kanban? What is it and how can it help?–DDDSW Presentation

Yesterday I gave my presentation on Kanban at Developer! Developer! Developer! South West explaining what it is, where it came from, how it could help and how to go about using it.
This is just a quick post to list the resources I mentioned at the end of my presentation.
I hope that everybody who saw the presentation enjoyed it and feel free to tweet or email me any questions you have.

Tuesday 7 June 2011

The Guathon 2011

This was the first (and only?) guathon of this year with Scott Guthrie providing sessions on Asp.Net MVC3 and Windows Azure and Steve Sanderson providing sessions on his JavaScript library Knockout and the Async functionality coming in Asp.Net vNext.

The day kicked off with a short introduction from Phil Winstanley about the day and what was being covered and there was a short “pitch” by Paul Stack on Give Camp UK which is a charity event coming up later in the year where developers can pledge time to help create applications for various charities.

With the intro over it was straight into the sessions….

Saturday 4 June 2011

Balance – some closing thoughts

Better learn balance. Balance is key. Balance good, karate good. Everything good.
Balance bad, better pack up, go home.
Mr Miyagi - Karate Kid
I started the week with this quote and I’ve repeated it here as I do sincerely believe that it sums up balance; be it karate or coding if you don’t sort out how to balance the various forces that act on you then you can quickly find things overwhelming you and it can be difficult to get yourself back on an even keel.

Friday 3 June 2011

Balance - Tech

So I know what you’re thinking “what is he on about? how does balance apply to the technology I use?”, well bear with me and I’ll explain.
A lot of developers will learn to code on one particular platform be it .Net, Java, Ruby, etc and frequently they’ll only look at one small part of that library and unless they are made to either look at different parts of the platform or use a different technology they will generally stay with what they first learned.

Thursday 2 June 2011

Balance – Work

Work

For many people work/life balance is a constant struggle, in the previous posts on balance I covered balance at home and socially but you need to crack balancing work with everything else since you spend so much of your life in work.

Because there is so much that I could cover in relation to work I’m just going to focus on a few of things that I feel are important namely your job, passion and burn out.

Your Job

You spend most of your waking hours at your job and it should be where you get paid to ‘geek out’ and exercise your passion for code. It is important that you enjoy where you work and what you do, if not you’ll most likely find your dissatisfaction spilling over into other aspects of your life.

I speak here with very real experience where I had a job that I didn’t really enjoy, oh I could do the job perfectly well but I just didn’t get any real enjoyment out of it and it was noticeable both inside and outside of work.

If you find a job you love it will help with balancing out the other things you need to deal with as it can reduce the amount of coding you feel you have to do outside of work to keep yourself happy, if you find that you are spending more time out of work doing what you love than in work in my humble opinion I would suggest you need to find a new job to give you time to do other things.

Passion

So Paul Stack wrote a blog post on Passion a while back about why he likes working with passionate developers and for him what extra they bring to the table over the person that simply views development as a job. I would consider myself a passionate developer, I love coding, even when not coding I am often thinking about coding and although the stuff I'm thinking about is not complex algorithm's or clever solutions to technical challenges I'm still thinking about it in my own time.

However there is a darker side to passion when it becomes all consuming. A passionate developer can become a thorn in a teams side they may be argumentative, intractable, disruptive and in the worst case bullying. This may be justified by the developer themselves saying that they are only trying to help the other members of the team, they only want the team to do it ‘the right way’, etc.

Now I’m sure that most passionate developers have been guilty of the darker side at one time or another, the question is how do you deal with it? Hopefully you work in a good team who will tell you when you’re going to far allowing you to ‘dial it back’ since you need to continue to work with them but if you notice you are guilty of ‘the dark side’ and your team aren’t telling you then you may want to look at your behaviour, nobody wants to work with somebody like that and you could find yourself isolated.

Balance your passion to do good work in the best way with bringing others along for the ride and although not everybody will be happy all of the time you are more likely to have a better working environment.

Burn out

This a dreaded topic for many geeks, for some its like the bogey man for others its a badge of honour, but whichever one it is its never nice.

So what is burn out? it will vary from geek to geek but often its when you reach a place where you simply cannot bear to touch a computer or think about coding no matter how passionate you are about it and for some geeks that continue to push it when in this state it could mean ending up having a breakdown, which could very well be game over. A lot of geeks fall into the trap of feeling that they have to “beat the project” and it then becomes a personal challenge to ensure that they “win” but unfortunately this attitude can accelerate you towards burning out.

I believe I managed to avoid it a few years ago (only my friends and family could tell you if I did or not) when I was on a death march project and attending a computer science course at college part time, it got to the point where I simply didn’t want to be in front of a computer which when you’re job is to develop software is a bit of a problem, luckily for me the project came to an end at roughly the same time as my college course allowing me time to “take my foot of the gas” and when I wasn’t in work just not touch a PC and relax.  This Stack Overflow question about what causes burnout elicited some really good answers including some peoples personal experiences of burnout.

The sad thing is that burn out is completely avoidable, it may be difficult to see it when you’re in the grip of some death march project but if you can see the signs you can do something about it.

One of the obvious signs is the amount of hours you are working, as these start to rise you are becoming more out of balance, then you have the out of hours working that effects your family and/or social life all signs that things are going wrong and I’m not even considering things like not sleeping well or other physical symptoms.

So how do you handle this and avoid burn out? well assuming you are working for a company and not yourself you talk to your boss, its not in their interest or yours to have you burn out since hiring a replacement is likely to cost the company more time and money than allowing you to work normal hours plus you working longer hours should be a red flag to management that the project needs looking at. But what do I do if they won’t listen I hear you cry, well then in all seriousness find another job, if the company don’t value you enough to take your concerns seriously and are happy for you to burn yourself out its up to you to look after yourself and vote with your feet.

If you’re working for yourself its much more difficult but I would suggest that you need to look at your longer term goals as “killing” yourself over a project isn’t going to help your business grow in the future, only by balancing your need to work vs. your need for down time can you make the business a success.

Next

I turn to the tech you use and how balance can play a part there as well, even if you don’t see how it can.

Wednesday 1 June 2011

Balance – Social

So you’re a geek but that doesn’t mean you don’t have a social life, sure some of us aren’t great in crowds of people but we all like to get out and enjoy ourselves and should do so to keep us in balance.

It can be very easy to stay in front of the PC/Laptop and lose yourself in coding or gaming and not actually leave the house much apart from going to work and if you’re single possibly not seeing many people. When I was a lad gaming was generally a solitary past time but nowadays with online gaming you can be part of a much larger community of people and you do get to talk to other people but it isn’t the same as actually interacting with people.

People need to socialise and various psychological studies have shown this, possibly the best well know is Maslows “hierarchy of needs” which usually shown as a pyramid which has 5 levels:

  1. Physiological (base of pyramid) – what you need to live: air, water, food
  2. Safety – safe place to live, job, etc.
  3. Social – friendship, belonging to a group
  4. Esteem – recognition, social status
  5. Self Actualisation (top of pyramid) – quest to reach your full potential

Now with Maslows theory you cannot move up the pyramid unless you fulfil the lower levels i.e. unless you fulfil Safety you cannot move to Social. As you can see social is slap bang in the middle of the pyramid, people need to socialise and feel that they belong to a group.

You’re probably asking yourself ‘and?’, my point is that to have balance in your life you need to be interacting with other people, to grow as a person both professionally and personally social interaction helps you in many ways such as improving communication skills, empathy, etc these are all things that will help you inside and outside of work.

Networking

In a recent discussion at DDD Scotland one of the attendees was telling me how he was having to introduce himself as his twitter handle as that was how people knew him. This was backed up later when a comment was made in the “Ask the speakers” session that for a lot of people twitter has become where they most interacted with other people.

Now there’s nothing wrong with having an online network but if you only rely on this and nothing else then in my opinion I believe you are missing out.

If you take the time to go to a local user group or alt.beers you get a better balance between the electronic and social networks and you’ll be surprised who you meet.  Attending a group you more likely to grow your network of contacts and you are you’ll get to see good presentations or at the very least get away from a screen and have a beer with like minded geeks and talk tech & gadgets.

Focus on who you’re with

In my post about balance and family I mentioned a quote by Scott Hanselman’s wife in the disconnecting episode of “This Developers Life” which, paraphrasing,  is about you effectively saying you value the people online more than the people you are with.  This particular quote came back to me at the dinner held before DDD9 when talking to Guy Smith-Ferrier who observed that he looked around the table and out of the 10 people 8 were on their phones twittering away rather than talking to the person next to them!

Guy’s point was that people should actually talk to one another when they were together, a sentiment echoed in the comments to this blog post where the blogger believed it perfectly acceptable to effectively ignore the people he was with to “check his phone” but I think you’ll find that the majority of people believe the opposite, just read the comments to see what I mean.

When you are out with friends/colleagues they may well understand the need to keep up to date with twitter but just do it in moderation and balance it with interacting with the people around you and never whilst in the middle of a conversation.

Next…

Next up I’m covering balance in work including the subject of burnout.