As many of you might know Jeff Atwood’s great post about The Ten Commandments of Egoless Programming already touched upon the code review process. However I decided to write my own take on it and hopefully supplement the current description.
I think the best way to start this post is to clarify why all of us are in this business called software development.
The answer that most would give will have passion at its root. Without passion it is not even worth perusing this career (or any for that matter), because it will drain the life out of you. The question remains however… is it really WHY we are all in this and if so is it the right reason?
Passion is what makes us stick around and refactor an awfully written code, it is passion that makes us stay until 6AM in the morning working on a problem if we have to, it is passion that makes us read books upon books and put in time and energy everyday to sharpen our skills, and it is the same passion that makes us combative and emotional when another person reviews and constructively criticizes our code…
Passion used correctly, will reward you with personal and professional growth. Used wrongly and it will lead you into a downward spiral.
Passion is very tightly coupled with one’s actions. You are passionate about a certain thing, you put most of your energy into taking action towards that certain thing.
I think of the action as an indestructible, heavy, vehicle. I think of passion as a source of energy that fuels this vehicle.
As long as we have passion the vehicle will destroy anything on its way and go forward… but where? I believe this is where we need to ask our initial question again.
Why ARE we software developers? Is it only passion for building things and solving problems or is it something more than that?
In my humble opinion the missing piece of the puzzle is vision. More specifically vision towards mastery of the craft.
I frankly believe that passion in any field is just to get one started, but without a vision for mastery one will either stagnate, become negative when criticized or simply not be able to make the jump from good to great.
This is such a simple paradigm shift, yet it is so powerful.
When you are just passionate about software development you become very identified with your work. Your code is a representation of your worth as a person at times. Now imagine if someone takes this code apart…
When you add the vision towards mastery the thought pattern changes. When someone criticizes your code you realize that you can be doing a lot better. It motivates you, it makes you want to improve your skills, makes you more aware of your mistakes.
Note that in both cases there is emotional pain to some degree, however the difference is in how this pain is used afterwards.
Someone, who just has passion with no interest in mastering the craft overtime generates a very nasty ego. This ego doesn’t like to be challenged because it already thinks it knows everything. It is not fluid.
An individual with a vision towards mastery of the craft always has a mind of an apprentice, always looking for ways to grow, always looking for ways to improve his or her skills.
At this point code review becomes yet another tool for sharpening up one’s skills and continuing the journey towards mastery of the craft.