Thursday, October 8, 2015

Software Craftsmanship


Software Craftsmanship sometimes referred to as Code Craftsmanship is a social movement that has been growing in the software developers community for sometime now.

I want to share with you some ideas on what a software craftsman is and how it might relate to other crafts.

There are many books related to this topic, for instance titles like (read them all if you can):
  • Clean Code: A Handbook of Agile Software Craftsmanship, 
  • The Clean Coder: A Code of Conduct for Professional Programmers, 
  • Software Craftsmanship: The New Imperative, 
  • The Software Craftsman: Professionalism, Pragmatism, Pride
  • The Pragmatic Programmer: From Journeyman to Master
  • Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman
  • The Craftsman

When I was a young kid, I wanted to play the keyboards, my parents were supportive and found a music school for me. I didn't do very well but still I got to learn how to read music and some basic piano technique.

Years after, I had become a teenager and tried to learn by myself how to play bass using my brother's acoustic guitar. A few months after, I was totally into electric guitar, one of the biggest passions of my life (programming and video games were some of the others).

I got to play live with some heavy metal bands as the lead guitar player, wrote some songs that ranged from "classical" music attempts to blues and latin.

Those days are gone, but taught me a lot of valuable experiences that I apply every day on my software development activities.

I can divide my experience in music in two stages

First stage (Learn to play your instrument):
I remember practicing every day, for hours and hours, trying to play songs like "Far beyond the sun", "For the love of God", "Surfing with the Alien" and so many others that is hard to remember. Despite the long hours practicing I never managed to play them well, but I got a little closer and closer and closer every day, end every lick, every trick and chord made me a better guitar player.

Hard lesson to learn: You could have the best song or composition by the best musicians, Beethoven, Bach, Puccini, Paul McCartney or Steve Vai but if you don't play it right... it will not sound good or even good enough.

Don't believe it was just their natural talent, it toke them years and years of practicing and learning every single day. Consistently trying to play better, finding that elusive note that made the symphony a master piece or that chord progression that made your mind fly.

Is not about the instruments either, the best microphone will not make you Pavaroti, but I bet he could have made the worst microphone sound like it was made in heaven.

Second (Get to play with others):
I used to think that I was the best guitar player of my age, until I started playing with others, they were better or at the same level, they knew things that I did not know and could do incredible things.

It was a very humbling experience to forget a solo in the middle of a gig, to step on my own cable and to hear the rest of the band covering up for my mistakes.

Playing with a band is one of the best things you can do to value the talents of the others. Working with other talented people teaches you that collaboration can lead to something that is much better than your own single effort and you get to learn from their talents in the process (This is a great deal!).

It is called synergy, and its so important that it can't be neglected, embrace it and enjoy it.




A software craftsman, like a painter, knows that attention to detail and constant improvement help deliver a higher value to the customer just like better and nicer music with a great show, in a nice place will make your audience and yourself happier.

As a software craftsman you want to learn about architectures, good code practices, team work and business.

Don't let go the opportunity to learn something different, to collaborate with new people and to share your craft with others.

Be brave, experiment and learn from the experiment itself.

Deliver software that you are proud of, do your best effort and make it better day after day,

Find ways to add value, remember that good value is not just to complete the project as fast as possible, there are many things that add value like reducing the maintenance cost or having a consistent development speed.

I invite you to read the Manifesto for Software Craftsmanship 

If you like this post visit my older posts also part of this blog.
Please share and comment.

Thanks for reading!


The images were found using google image search and are not my property.
Blacksmith at Hornbaek - 1875 - by Peder Severin Kroyer
reachthehighest.in
Wikipedia



0 comments :

Post a Comment