JAN 12

Software Development: Doing It Scared

“I can’t do it, I’m scared”, I would say to my mum as a youngster. She would always give me the same advice: “do it scared”. What I learned is that if something is worth doing, it’s worth doing even if it scares you at first – this is also true in software development.

In software, we are often faced with things that can seem intimidating. We may be assigned a project that we know nothing about. We may have to use a new tool or environment. We may be working with people who can seem intimidating. The natural temptation is to retreat to a place of safety, but that won’t get the job done. So how can we, as software developers, overcome the instinct to cower when projects seem daunting? I’ll go over a few things that have worked for me under these circumstances; your mileage may vary. If there are any tips you have, please add them in the comments section.

Organisation and Decomposition

The most important thing is to make a project manageable, to stop it from looming over our heads and cut it down to size. Most of us can’t fit every detail of a complex system inside our heads at once. This is why, no matter the scope of a project, it is useful to have a planning phase. I don’t quite buy the “the code itself is the specification” tenet some developers hold and prefer to break the problem down early from the customer’s requirements into sets of technical tasks. I create them as tickets in a bug tracking application such as Unfuddle or Trac. From these tickets, I can generate a technical specification document if required and assign tasks to colleagues. At this stage, I cross reference my tasks with the business requirements to make absolutely sure I am delivering a system that actually meets the customer’s needs, rather than being “broken as designed”, which is the worst kind of broken.

Having tickets helps me feel comfortable with the project and gives me attainable short-term goals and mid-term milestones. Working this way, allows me to feel a growing sense of accomplishment as I proceed.

Use the Skills Around You

No one person can store all knowledge in his or her head and we all have strengths and weaknesses. Asking questions on tech sites such as Stack Overflow or talking through your plans with colleagues can be daunting but you will generally find that people are helpful. In a software team, I’d say that our differences can actually be one of our greatest strengths. We should not expect to be (or be expected by others to be) entirely self sufficient; that’s why we work in teams.

Sometimes you may have to deal with a colleague who makes you feel two inches tall when you ask for help. Such people often have a lot of specialist knowledge they jealously guard, and they may feel defensive and perhaps even insecure, as if surrendering this treasure somehow lowers their worth. This can be hurtful but it’s worth persisting and perhaps the person needs encouragement just as much as you do. In this circumstance, I ask the question politely and appropriately and if I get a flippant response I persist until I get the help I need.

Safety Net

Once I know exactly what I’m shooting for, half the battle is over I can start coding. Test Driven Development (TDD) helps me to feel comfortable and is a form of programming by contract. When I am using TDD, I develop much more quickly because I don’t have to compile/bootstrap a whole system with every minor change. The code I produce via TDD is cleaner and more robust, and other developers can refer to the unit tests to see examples of its use. With TDD, I know as soon as I’ve broken something in the system, or if another developer breaks it.

Martin Fowler’s Refactoring and Kent Beck’s Test Driven Development make even more compelling arguments to use TDD, to the point where I feel that development without unit tests is actually irresponsible.

What Not To Do

  • Don’t be a “hero”: Working insane hours to deliver a project may be necessary once in a while, but if you do it as a matter of course you will burn out. Furthermore, your working day will be unfocused. Try to stick to a reasonable schedule.
  • Don’t lose perspective: Keep up with your sports, your friendships, your hobbies and interests. If you let a project consume your life, you actually risk losing focus and doing a substandard job, particularly if it is long-running.
  • Don’t keep it all inside: If a project is affecting you negatively, seek help from your colleagues or line manager.
  • Don’t let fear hold you back: Can you do the same few things for the rest of your career? Probably not, technology and culture move on.

The Wrap-Up

Software can seem overwhelming. The more we learn, the more we realise how much there is to learn - more than one person can possibly know. As software developers, we will always face fresh challenges. Nevertheless, a life worth living will take you out of your comfort zone time and time again and positive thinking, teamwork, good practise and organisation can help tackle daunting tasks.

Don’t let fear hold you back.

Do it scared.

Comments

7 comments

  1. Dean Macaulay said... 14th Jan 2010, 11:14

    Great post! Its very reassuring to see that others are having similar experiences.

  2. Mel Pullen said... 15th Jan 2010, 02:19

    So: "I cross reference my tasks with the business requirements"

    That's waterfall.

    And: "If a project is affecting you negatively, seek help from your colleagues or line manager. "

    That's a hierarchy.

    I have only one word to say: Scrum

  3. data recovery services said... 30th Jun 2010, 10:31

    Hello,
    Really nice post. The understanding of what exactly we have to do is very necessary and following some steps makes the task relatively easy.
    Thanks

  4. Ben Tidy said... 4th Aug 2010, 14:46

    Great post. Completely agree with your approach to development.

  5. Offshore software development company said... 5th Aug 2010, 16:51

    Thanks for sharing this article on Software development. It was very nice. Looking for more..................Please continue writing.

  6. software companies said... 10th Aug 2010, 12:22

    Excellent site, keep up the good work. I read a lot of blogs on a daily basis and for the most part, people lack substance but, I just wanted to make a quick comment to say I’m glad I found your blog. Thanks
    ==============

  7. black nike air max shoes said... 25th Aug 2010, 06:46

    Once we get there, so many wonderful dreams will come true and the pieces of our black nike air max shoes lives will fit together like a completed jigsaw puzzle. http://www.sellnikeairmax.com/

Post Comment

[This form does not accept any HTML]

Anti Spam *

About The Author

Gavin Davies

Gav is a developer at Box UK, with an interest in Java, design patterns and test driven development. He plays in a cheesy weddings band, climbs mountains in winter and trains in mixed martial arts. His favourite animal is the kitty, followed by the puffin.

Social Bookmarks

Box UK Twitter Feed

  • Woohoo! Smashing Magazine tweeted our post "Using Sketchboards to design User Interfaces quickly" - http://bit.ly/cVaion #ux #ui #sketching Posted on 27th Aug by Box UK