The importance of setting goals in software development




Bob Slydell: You see, what we're actually trying to do here is, we're trying to get a feel for how people spend their day at work... so, if you would, would you walk us through a typical day, for you?
Peter Gibbons: Yeah.
Bob Slydell: Great.
Peter Gibbons: Well, I generally come in at least fifteen minutes late, ah, I use the side door - that way Lumbergh can't see me, heh heh - and, uh, after that I just sorta space out for about an hour.
Bob Porter: Da-uh? Space out?
Peter Gibbons: Yeah, I just stare at my desk; but it looks like I'm working. I do that for probably another hour after lunch, too. I'd say in a given week I probably only do about fifteen minutes of real, actual, work. 

- Office Space (1999)

This is how I would end up spending my working week if I didn't set myself goals ... well that may be a bit over the top, but there is some truth to it.  

I think setting goals in all aspects of life has its value, but in this post I will talk about it from the perspective of a software developer.

Setting yourself well defined goals will make your a much more productive developer and enable you to stay focused on the job at hand, as well as giving you something to strive for.  It gives you a way to measure success and failure.  Without goals, there is no clear indication of what your next step should be. 

Goals should be set at different scopes, which I'm sure you've heard thousands of times before - short, medium and long term goals.

In software development your long term goals may be a company you want to work for, a role you want to play or a position you want to be in, in years to come.

However, the goals that we have to think about more often are the short and medium term goals.  I think of medium term goals in terms of the things I want to achieve in an 'iteration' of an Agile project.  This should be thought through and scoped out in the Planning game at the beginning of the iteration, and constantly refined on a daily basis.  This will be something like "what stories do I want to implement?", or "what technology do I want to experiment with?" or "what pattern do I want to try?".  The short term goals can be what features will I implement today.  

If you practice TDD, you are constantly setting yourself "mini-goals".  Write a test, and your goal is to make it pass.  Make it pass, and then your goal becomes to make your solution elegant and simple.

Without goals, its so easy to lose focus.  Leading to you spending half your day swapping between open windows, recompiling your code for no particular reason, pondering how to get past that big daddy in the next level of Bioshock or watching yet another video on youtube. 

Having goals will enable you to focus your energy and make efficient use of your limited time - which leads to a productive day as a software developer.  A good way to gauge whether you have ever achieved this, is when you get yourself "in the zone" - you are usually your most productive, and this is usually a result of having a clear and concise goals.

When I am coding I have found that keeping a notepad on my desk with a list of tests I need to write is a great way to keep yourself on track.  As I think of new tests that will need to be written, I add it to the list, and when I have completed the test, I cross it off.  When everything is crossed off, I am done and its time to move onto the next goal.

For the software projects at work, we use a program called OnTime2007 to keep track of the goals of the project, and we constantly refine them through stand up meetings and general discussions over coffee.  A great side effect of explicitly setting goals in a team like this is that your (and your team members) estimation skills will improve.

For my personal goals as a software developer, I have a combination of notes on my computer and ideas floating around in my head.  I am constantly refining my skills and always trying to find a better way.  By doing this I am always setting myself goals to achieve a new skill or improve an existing one.

So the next time you find yourself lacking direction and "spacing out" during a work day or - on a grander scale - your career, take some time out to think about what it is you really want to achieve, and then do it.




 del.icio.us  Stumbleupon  Technorati  Digg 

 

What did you think of this article?




Trackbacks
  • No trackbacks exist for this entry.
Comments

  • 28 November 2007, 12:27 AM Dutt wrote:
    Excellent writing.
    Thanks for this post.

    Could you please let me know more about OnTime2007, is it something like Microsoft Project software for SDLC.

    Dutt
    http://msdotnetsupport.blogspot.com
    Reply to this
  • 3 December 2007, 4:09 PM mattcalla wrote:
    I haven't used Microsoft Project for years now so I can't compare the two products.

    OnTime2007 is described as a 'Defect and Feature Management System'.  It allows you to categorise your work under 'Defects', 'Features', 'Tasks', 'Incidents', 'Work Logs' and 'Audit Trails'.  Each of these work items can then be assigned to someone, given a priority, estimation, due dates and have a whole range of extra pieces of information attached to it. 

    You can also add your own custom fields - so you can basically attach any attribute you want to a work item.  An example of this is a field I recently added called 'Iteration' - so we could keep track of which iteration the work was completed in.

    It then has a reporting/dashboard side to it where you can track project progress and report on a variety of criteria.

    There is a demo edition of it available for download on their website if you are interested to try it out.
    Reply to this
  • 13 February 2009, 7:24 PM PPC Services wrote:
    Great post Thanks for sharing your thoughts.
    Reply to this
  • 17 February 2009, 4:44 PM Mag Studios wrote:
    Great Post on The importance of setting goals in software development thanks for sharing with us.
    Reply to this
  • 9 June 2009, 4:35 PM r4 ds wrote:
    Hi,



    However, one of the challenges with software development in a software development company is that the processes, procedures, technologies, and techniques are generally more ingrained and, as a result, changes to the process are more fiercely contested, making integrating new process improvements more difficult to accomplish.

    The final component of the software development company is that they typically have a system for measuring customer satisfaction with their products and facilitating the capture of that customer satisfaction rating system. This allows for a continuous feedback cycle designed to push the software development process to improve, despite the natural resistance to any kind of process change.
    r4 ds
    Reply to this
  • 26 September 2009, 12:13 PM Make Money Online wrote:
    Great overview. Your style of writing is really a joy to read.
    Reply to this
  • 16 November 2009, 5:19 PM Computer Security Software wrote:
    Hi,

    Excellent post.I want to thank you for this informative read, I really appreciate sharing this great post. Keep up your work…
    Reply to this
  • 5 January 2010, 3:47 AM One Way Link Building wrote:
    Its always good to learn tips like you share for blog posting. As I just started posting comments for blog and facing problem of lots of rejections. I think your suggestion would be helpful for me. I will let you know if its work for me too.
    Thanks and keep post such a informative blogs.
    Reply to this
  • 10 January 2010, 12:24 AM Bulk SMS wrote:
    Hi! everyone,
    Really i am impressed from this post, here is very very useful information for all,
    thanks and regards to all,
    Reply to this
  • 11 January 2010, 8:37 AM NXKirsten wrote:
    To my mind, writing services make essay writing referring to this good post. Thus, that is a chance to buy essay to get an academic success.
    Reply to this
  • 14 January 2010, 1:27 AM Bulk sms wrote:
    hi! mattcalla, you really have a great sense of posting. thats great just keep it up.
    Reply to this
  • 10 March 2010, 2:06 AM Laurel wrote:
    A very good article. Have you ever done a Rapidshare Search( http://www.rapidsharemix.com ) before? I recommend to try it.
    Reply to this
Leave a comment

 Enter the above security code (required)

 Name

 Email (will not be published)

 Website

Your comment is 0 characters limited to 3000 characters.