The Life of a Software Developer

There are quite a few myths about the profession of software developer. Most people find the profession hard to describe. So what is the ‘essence of software development’? For me it’s a mix of creativity, struggle and craftsmanship and love of technology. Striving for the perfect solution in an imperfect environment.

I like to view it as a creative endeavor where I need freedom to shout boisterously with my fellow developers while writing great (if not brilliant) software. Non-developers will probably view this style of working as chaotic and most of all loud. Some of the projects I’ve done had a high noise level and some pieces of software really cannot be modified in silence. This style of development fits me pretty well, but I don’t know if it’s the best way to develop for everyone.

Quite another way of looking at it, is to view the developer as a craftsman. This invokes images of carpenters and sculptors that pass on their wisdom from generation to generation. The love of the trade and the product is central. Good tools and quality of the product. A long day of coding does sometimes feel like sculpting, carving out (deleting) large pieces of material from a massive brick (legacy code) to reveal a deceptively simple result.

Anyway you look at it, a good software developer has a love for technology and systems. There would be no other way she/he would endure all the fiddly syntax issues, obscure error messages and paradoxical problems. It’s like trying to write a sentence, but while you keep trying to end the sentence, the computer keeps saying ‘wrong syntax’. Most developer problems have to deal with this frustrating trail and error cycle. Somehow developers can endure this and find fulfillment in fixing the problem after a long struggle. The worst thing you can ask a developer after such an endeavor is: “Why didn’t you just do it right the first time?”.

What I haven’t figured out yet, is whether software development really needs making lots of mistakes. Do we need to debate the software product and examine it from all different angles? Or is development much more a matter of technology, tools and discipline, the perfect developer being someone who can turn a specification into working software without making mistakes?

I believe software development is a weird combination of creativity and discipline. The software we create needs to work in complex environments with unpredictable scenarios and users. The computer, on the other hand, is nothing like its environment, it’s ruthlessly strict. One misplaced bracket or statement can be enough to bring down an entire system. The world of the system is  linear, where everything is black or white, true or false and nothing in between.

Bridging the gap between the organic world where the problem lies and the computer system where (part of) the solution lies is the essence of a developers life. Not many people understand this nature of software development, including developers themselves. Software development will always be a profession made up of conflicts and challenges. I will need to be creative to find a simple solution for hard problems. But I will also long for that perfect program or technology  that will be able to solve all problems and situations.

Advertisements
The Life of a Software Developer

3 thoughts on “The Life of a Software Developer

  1. Mary says:

    Your post helps me to understand the life of a developer and your passion for the job.
    It confirms the way I thought and what most developers say about it when I ask them; when they really give it enough thought.
    The combination of creativity (art) and discipline (work ethics) makes it craftsmanship to me.
    John Ruskin said:
    When love and skill work together, expect a masterpiece.
    I wish you many masterpieces! And if not: an adequate solution

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s