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 during lazy times — most especially when I’m working on a legacy code base where trying to write clean code is much harder to do than when writing code from scratch — but that comes 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 insists that I should never write messy code, I will be happy to comply. It might take more time, of course.
Also, I heard some people say that programmers sometimes sell themselves short. So 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.
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 seeing 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.