Skip to content

Courage

March 31, 2009 by Janusz Marcin Gorycki

Photo (c) Janusz Gorycki

Extreme Programming postulates, that courage is one of the fundamentally important virtues of an agile developer. I would augment this postulate and claim that it is, together with talent, THE most important one.

Why? Simple. Courage lets you overcome any and all obstacles that may stand in a way of developing a fine piece of software.

For example, I have seen a lot of cases where a programmer would shy away from an interesting project, because thay claim that thay lacked knowledge and expertise in the particular area. Or – the subject matter seemed too hard. They felt not „worthy” to try. Let me be a bit controversial and say: lack of knowledge does not matter. The courage to learn new stuff does. I will let you in on a secret: the „experts” in any given field have usually just read one HOWTO more than you have. And they are maybe 2-3 months more „seasoned” then you are. If they have more experience in a given technology than a couple of months, the technology is probably obsolete already anyway. In this day and age, you are typically able to google the answer to any and all questions within a couple of minutes. And learn the required technology in a couple of hours. Granted – you won't (yet) be as proficient as the others, who learned this before you. But you will know enough to get started, and then may actually be enough to get things done. And what if google does not know the answer? Ah, that's when the fun begins! That's when you know that you found yourself on the edge of the undiscovered, the uncharted territory. Excitement! Drama! Don't we all want to be first doing the pioneer's work? You just need the courage to try.

Another typical example: some people are afraid to „break something”. They fear that if they touch some unknown code, it will blow up at them. I say – so what? Let it explode. Let it break. It is fun to watch stuff disintegrate. That's how you learn how things work. Introduced some new bug because you tweaked the wrong dial? Bummer – but you have learned something in the process. If you are working the agile way (and do read around this site to learn how – ample advice within on what safeguards to put in place and how to control destructive tendencies), the damage will be easily fixable. If worst comes to worst, you can always revert to the previous revision of your code, can't you?

Last but not least, let me let you in on a secret – as developers, we have an easy job. It amounts to solving relatively simple logical and mathematical problems to get stuff done. There is nothing to it. The puzzles to solve are, for the most part – trivially easy. Also – the bareer for entry is very, very low – the cost of a very potent workstation is much less than a thousand dollars these days, and often times all of your software tools are free. You can actually build a very successful software company out of you parents' basement, sacrificing nothing more than a chunk of your spare time. What other proffesion can claim that? Compare software development to, say, construction or biotechnology, or pretty much any other technology-related discipline, where you need the whole set of very very costly tools and materials just to get you started. Developing software is definitely not the most complicated and demanding way to make money. Compared to, say – designing a microprocessor, launching satellites, performing heart surgery – we have it really easy. Yet, there exists an aura of „complicatedness” surrounding software development („You know how to program computers? Gosh, you must be so smart”), which I guess is maintained by some geeks types with low self esteem – which unfortunately often backfires at them badly, because they start to believe that what they are doing is oh so difficult, that even they don't know how to do it any more.

AttachmentSize
courage.jpg52.79 KB

About the Author: Janusz is a software developer and team manager with over 15 years of experience. He has been working for a long time for multi-national corporations, mainly in the telecommunication and embedded systems industries, He is now a co-owner of SPARTEZ - an independent agile consulting and software development company

Comments

Courage is not enough

March 31, 2009 by Wojtek (not verified), 2 years 44 weeks ago
Comment id: 2421

Great photo again!

I have an impression that you think courage is something which can save you.
I mention talent, but then it gets lost in the further part of your post.

I agree that courage is one of the most important values of agile development. But by itself it will not to help you overcome anything. Courage will help you ask difficult questions, challenge strange or rigid processes, challenge the validity of old crappy code. I will help you start doing some new things, playing with some technology, etc.
But it by itself won't help you to finish such activities, make your product successful and reliable, make your customers happy. To do this you have to support courage with talent (mentioned by you), endurance and patience.

I've witnessed to often people which had only enough courage to start diving into new technology, new toy projects or to start serious refactoring on given piece of software, to abandon it when they felt bored or just lost courage after facing more problems.

It's worth mentioning that courage can be supported and increased by other agile practices. I found unit and functional test increasing my courage a lot. I found decent automated build environment (on all supported platforms) makes me braver. I found that addressing bigger problem (or story) in smaller chunks makes me more courageous. I found that dog fooding or QA before release makes me forgetting about my fears. I found that courage get stronger when I have good people on team, when I am getting stronger in domain and technology used for the product.

I totally disagree that software development is a simple thing to earn for your living. Sure the entrance barrier is very low (which is good), but from knowing and trying out some new cool technology to applying it in reality in a product which solves concrete problems of the people, the product which is maintainable and extensible, the product which is flexible and robust (design and architecture comes here to my mind) - then you need much talent and experience.

This is also way so many startups and ideas fail and small portion of products become successful. Courage is not enough.

not the most dificult != simple

March 31, 2009 by Janusz Gorycki, 2 years 44 weeks ago
Comment id: 2422

Wojtek,

I did not say software development is easy. What I said is that it is not the most complicated discipline of all - as many geeks seem to think (probably in order to boost their self esteem). Sure you need talent and experience to successfuly deliver a piece of software - but so does the architect, the surgeon, the chip designer and the guitar player. Hell - learning how to make photographs like the I attached to this post and you liked it so much is a tougher thing than writing most of the software that I write every day.

Cheers
Janusz

Perhaps not sufficient but necessary....

April 3, 2009 by Don S (not verified), 2 years 43 weeks ago
Comment id: 2432

Thanks for the essay, Janusz, I sent a link around to my friends because it says something about some of the major barriers to being productive - fear and (sometimes) modesty.

Lot's of times the people you believe know more than you are simply more glib - or have read a couple more howtos as you say. But the real answer to most problems is to get yourself started. The sooner you start the sooner you achieve the level of expertise you need to succeed. Doesn't mean you don't need TDD, acceptance tests, or QA, because those give you the confidence that risk has been minimized, and also help you keep forward momentum.

trackback:

April 18, 2009 by Anonymous (not verified), 2 years 41 weeks ago
Comment id: 2465

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.

Best of AgileSoftwareDevelopment.com