Software Ninja Class

I’m an Initiate; perhaps a beginner Codesmith

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 :grin:. 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. :laughing:

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.

… So be cautious about me claiming to be an Initiate already. Perhaps I am still a Chump Coder, or an Expanded Chump, in which case all I can say is, “Teach me master…”