Saturday, April 25, 2009

Software Craftsman Vs Industrial Programmer

Who do you want in your team ? A Software Craftsman or a Industrial Programmer ? This is question that has provoked strong reactions on both sides.

Question 1 would be who is a Software Craftsman and who is a Industrial Programmer. Let us tackle that first.

Software Craftsman is some one who thinks that software development is not just about put some dear code together, but instead strives to believe and make other believe that it is a craft. He takes pride in his code and strives to bring best of each line of code. He is in love with the code, rather than his task on hand.

Industrial Programmer, on other hand, is someone who understand the nuances of his task. His aim is to build a software that the customer would love. They take pride in delivering value to the customer rather the best.

Neither is better than other; the IT industry needs both.

Where would I put my money on, whom who would I love to have in my team : a Craftsman or Industrial Programmer ? A tricky question.

Although I do admit that it is the later who the business units prefer as they keep mouth shut and focus on "getting things done" rather than "doing it the right way", I do have my affinity more to the Software Craftsman.

For me , a Industrial Programmer may be producing "more" business , but a craftsman would produce "valuable" business. This is because the output is a program that is more complete and optimized.

There are many traits that you could find in a Craftsman's work, particularly his irresistible desire to stick to the Kiss Principle. Keep it Simple Stupid, or the KISS principle is very special for a craftsman.
There is a famous line in "The best software designs look simple, but it takes a lot of hard work to design a simple architecture."

The power of simplicity cannot be underestimated at any field, let alone coding. One could actually feel a touch of genius every time you see most baffling problems being solved with most simplest solution. This happens only because they are so strong in their basics and understanding of the language, that it helps them get best out of each line they write.

As they say, A designer knows he has arrived at perfection not when there is no longer anything to add, but when there is no longer anything to take away. The craftsman chips away their code until there is nothing to improve further.

He also understands the benefits of polygot programming and does make it a note to take the best out of each programming language. For instance, even when developing in .Net, he could go for doing bulk of coding in C# but could extract the advantages of functional programming using F#.

Now why would I would prefer a Craftsman ? Because I do believe when someone fell in love with his code, you can be ensured that each he line he writes would invaluable asset.

As the Great Albert Einstein said, "Any fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction "