Software Ninja Class
Using Terence McGhee’s “Software Ninja Class Hierarchy”, today, I consider myself to be an Initiate, because I try to write code that is easy to read. I do that because I know that programmers spend more time reading code than writing code.
I’m not saying that I always write code that is easy to read. I still write messy code during trying times or during boring times or lazy times, with the intention of cleaning them up later of course . But I’m already aware, through experience, that code that is easy to read is valuable code. I also understand that later means never so if your organization insist that I should never write messy code, I will be happy to comply.
Also, I heard some people say that programmers sometimes sell themselves short. In relation to that, you might still forgive me if I consider myself a Level “Zero” Codesmith because I have little knowledge about TDD, the SOLID principles, Clean Architecture, and some Design Patterns. (Please note that in programming, “zero” could mean “initial”)
But Terence McGhee said that to be considered a codesmith one must already have the experience of “consistently applying these software-creation techniques successfully in real software.” So perhaps considering my own self as a Codesmith is just wishful thinking…
Caution: I claimed to know OOP when I applied for my first and second jobs. I passed the interviews during those times, of course. But a few years later, I realized that I barely knew what OOP is really all about. I came to this realization while listening to a talk of Uncle Bob Martin where he mentioned something about programmers claiming to know OOP when they do not truly know OOP. Ouch! I was that programmer.
This kind of realization actually gives me doubt on whether I already truly understand what OO is today. But… all I can say is that today, I know that I have a better understanding of what OO truly is.