JAN12

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.

20 comments

  1. Dean Macaulay said on 14th Jan 2010

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

  2. Mel Pullen said on 15th Jan 2010

    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 on 30th Jun 2010

    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 on 4th Aug 2010

    Great post. Completely agree with your approach to development.

  5. Offshore software development company said on 5th Aug 2010

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

  6. software companies said on 10th Aug 2010

    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. artologics said on 30th Sep 2010

    Its very nice blog i have visit so many software blogs but this the best who give me a lot of information ,cool

  8. Tom said on 19th Dec 2010


    I really love your writing, unlike most blogs I actually learn things, find the content useful and it’s well written. 11/10 every time!




    Fully bespoke software - custom software development

  9. smith wills said on 1st Aug 2011

    Day-by-day the demand of software development service is resign rapidly. Great blog, its more informative than the I expected, I’ve been looking for something like this for a while.

  10. Nick said on 25th Aug 2011

    Thanks for post such as very useful and very lovely post.....

    Software Development Services: - Ampere Software, A leading commercial software application development company offering customized offshore software development and testing services with highly skilled developers and programmers.

  11. Nick said on 7th Sep 2011

    Thanks for post such as very useful and very lovely post.....

    Software Development Services: - Ampere Software, A leading commercial software application development company offering customized offshore software development and testing services with highly skilled developers and programmers.

  12. Deepak said on 17th Sep 2011

    Great post. Thanks for posting this.

    http://iweballey.com/

  13. Application Development US said on 28th Sep 2011

    Hi,

    It's look really great to read the post. well managed and informative . thanx dear

  14. iphone apps developer said on 5th Oct 2011

    To give you the confidence and knowledge you need to branch out on your own. Application development experience in any language and Experience with C-Style memory management is necessary. The iPhone and now the iPad are the most perspective next-generation mobile platform in the today's market.

    iphone apps developer

  15. testosterone said on 16th Oct 2011

    Il tuo post sul blog offre la stessa presentare come un altro autore dell'articolo, ma ho come il tuo gran lunga migliore.

  16. HannahDJackson said on 18th Oct 2011

    There are definitely ways that it can be beneficial by using IT outsourcing but you need to know what you are getting yourself into,as well.There are some cons that you need to be aware of.

  17. Yagnaum said on 10th Nov 2011

    www.Yagnaum.com – the leading software development company providing custom application Development services using PHP, .Net, Drupal, Microsoft, ATG, etc.

    Join Yagnaum at facebook @ http://www.facebook.com/pages/Yagnaum-Systems/129682527062459

  18. Breach said on 23rd Nov 2011

    I appreciate with your suggestions... impressed

    http://www.outsourcing-partners.com/software-developer.html

  19. alliedsoft said on 11th Jan 2012

    Really thanks for sharing this wonderful post. I really like it. Allied soft believes in putting passion into business and committed to expand in an ethical way. Our core values include god, passion, value, diligence, development, time and results.Call us today +23412703341 or +23412703342 or simply visit http://www.alliedsoft.com

  20. Catherine John said on 30th Jan 2012

    webdevelopment
    We Netultimate mainly focus on new technologies in web applications

    Post Comment

    About The Author

    Gavin Davies
    Gav is a Senior 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.

    We're hiring

    Want to work with people like us?

    Check out our developer vacancy.