A long time ago, when pixels were larger, I used to write code with a happy hacker mentality. I wrote it like a stream of consciousness. The code did what it was supposed to do. Well, after many iterations of fixing and more fixing. Erm, after more than many iterations, countless iterations would be a better term. I was free of all worries. If it is broken I would Just Fix It. It was sufficient for me for a while.
Then something happened. I really can’t pinpoint what. Maybe it was one of the many project meetings were we looked at statistic and wondered about our quality or the lack of it. I really don’t believe in statistics except as indicators that something might be wrong. They may act as a catalyst but they also cause wrong things. Sometimes even the very things they are used to meter are skewed because people work to please the statistics. They bend the numbers in their favor.
Suddenly I was very aware of my own code quality or the lack of it. I remember once being responsible for a component that had had the most defects during the development (it was ok when released). That hurt. Did I really write that bad code? Why?
I realized that I was not proud of my work.
I did not see myself as an craftsman. If I was supposed to be proud of my work my code would have to be good. I mean really good. Exceptional. So good that I would be proud to show it to others. It should be working and beautiful at the same time. Reading it should feel like reading good prose. How would I get there?
I had to start learning and yearning for more. Working code can not suffice. The code has to be maintainable. It has to be testable. It has to be clean. It’s an endless journey, but once I started with it there was no returning. I realized that I can achieve this. By constantly striving for better code, by constantly being open for new suggestions, new ways of doing things, being open to critique and advice.
I had to be humble. There are better coders than I am. Learn from them. I can always improve my own code. I developed an appetite for learning. I am constantly reading books, blogs, websites, discussion forums, mailing lists. I have started to practice code katas at home. I am simply interested in improvement.
I have begun my journey towards being a software artist, have you?