Human Aspects of Software Development

Every time I sit down to work on a project, from the coding side to the project tracking point of view, I always am trying to figure out what would increase my performance.  When I write performance I write in the context of many characteristics;  speed, accuracy, quality, and general overall productivity.  To know how to improve these things one has to know what the problems are with one’s performance.  I sat down recently and started looking at the issues I have and it got me wondering about what issues others might have, so seriously, comment because I know everybody has their negative issues, question is, are you focused enough on improving that you know where your weak points are?

This is the part I hate, but one has to do it to know where or what to fix.  What are my weaknesses?  For starters, I suppose one could call it ADD, ADHD, or OCD.  One or all of the above.  I’ve been said to have ADD as a child, but I ignored that, stayed fidgety, active, and didn’t take my medication.  I don’t approve or trust a lot of the psychological remedies via medications a lot of psychiatrist or doctors prescribe.  Instead I find it better and more useful to have the obsessiveness or attention deficit disorder and figure out a way to deal with it, then lose the abilities that it actually gives me.  These issues, the short attention span and obsessiveness are as much positives as they are negatives, but I have to watch out for the negatives.  I have to know how to work around them and prevent them from slowing project work, the education I seek out.  The major focus, to remedy this is to make sure that I stay on task and focused!

One of my primary ways to deal with my attention deficit while working is to keep one primary master list of to do items.  Every morning I create this list of tasks that need done by end of day.  Agile process helps immensely in this since there are daily stand up meets.  The stand up is a perfect place to discuss what is on the queue for the day.  In addition to this I might have further breakdown of tasks.  Another plus is to have somewhere to enter this information of tasks for project management reasons.  That way it serves a two fold purpose, keeping me in the know about the order of tasks, and keeping project management informed about velocity and other key metrics.

My obsessiveness is handled simply by limiting myself to X amount of time during the day on particular tasks.  This boils down to, what can I find out in one session of work.  What I mean by session is the period between breaks, which amounts to about 2-3 hours.  If I can’t find something out in 2-3 hours, then I need to either take the usable solution that is available with the knowledge gained, or bring in another developer to work through the problem and find the viable solution.

Both of these things help immensely in removing the negatives of my attention deficit and obsessive compulsive tendencies.  The positive side of these issues then help me move above and beyond the duties at hand.

So what are some other problems people have?  Things range from attention deficits, to meeting mismanagement, direct communication issues, and a whole deluge of other things.  In the field of software development fixing these issues is exponentially more important than in many fields.  The minute meetings are misused, communication breaks down even slightly, or people lose focus on the project at hand it often leads to failure.  Thus the process of continual improvement is required on many levels.  So I ask my readers, how have you dealt with your weaknesses?