If someone asks you to recommend a good programmer, who comes to mind? Do you consider yourself a good programmer? What criteria do you use to judge?
In thinking about this, I realized that there are different ways that a programmer can be good. So I present to you The Four Kinds of Good Programmers. And in celebration of Whyday, I include quirky Why-styled illustrations* for your viewing pleasure!
The Philosopher
The philosopher loves to write well-defined, well-structured, beautiful code. That the program will be implemented is assumed; the elegance, robustness, and flexibility of the solution is where the philosopher’s energy goes. The philosopher cannot go an entire week without mentioning “best practicesâ€.Motivation
The philosopher is ultimately driven by a need for safety and security which is expressed through tight control. A well-ordered, predictable system that always follows clear principles is the philosopher’s beautiful vision of heaven. Chaos is anathema. Beauty is found in order.
Superpowers
- can build code that you can bet your life on
- can create an environment where the codebase stays in pristine shape, regardless of the skills of other team members
- if they build it, it will scale
The Dark Side
- is always right
- gets into petty arguments about 80-column line limits
- cares more about test coverage than customers’ problems
- is never finished
Pull Their Chain
- mix spaces and tabs
- avoid atomic commits
- sign them up for improv
The Inventor
Something quirky and cool is always coming out of the incessantly prolific inventor’s lab. No one asked for it, but that didn’t stop the inventor from making it.Motivation
The inventor is driven by a need to explore and to birth something completely new and unique into the world. Curiosity compels the “what ifs†to actualize.
Superpowers
- creates novel technology that is (sometimes) useful
- has infectious enthusiasm
- makes you say, “Gee, I never thought of using it in that way!â€
The Dark Side
Pull Their Chain
- knock down their ideas by saying, “but that’s not the industry standardâ€
The Conqueror
No problem is too hard for the conqueror. To them, programming is an odyssey of increasingly demanding Herculean challenges to overcome. The conqueror is driven and competitive, but not necessarily competitive with other people.Motivation
The harder the puzzle, the bigger the rush.
Superpowers
- can solve provably unsolvable problems
- sharper focus than a laser, more endurance than a marathon runner
- is a walking encyclopedia of algorithms
The Dark Side
- will turn a trivial problem into a complex one to make solving it more pleasurable
- is always bored
Pull Their Chain
- assign them work on a CRUD web app
- force them to use only imperative languages
- give them a sudoku puzzle book
The Problem Solver
The problem solver is goal-oriented and ruthlessly pragmatic. A well-defined problem will be solved, and solved quickly by whatever means necessary.Motivation
The problem solver is motivated by creating value, and so is less focused on the creative process and more focused on delivering the desired outcome.
Superpowers
- listens
- launches
- uses technology to solve business problems instead of to create business problems
The Dark Side
- angers programmer purists
- can be opportunistic
Pull Their Chain
- give them busy work
- assign them programming tasks with no context whatsoever
Becoming a Good Programmer
Of course, programmers don’t neatly fit into these four arbitrary categories. The point is that there are different ways to be a good programmer, and as a programmer, take the time to nurture all four of these types of programmers in yourself. You are a good programmer when, for any given situation, you are able to summon the appropriate “inner programmerâ€.
Source : http://techiferous.com/2011/08/are-you-a-good-programmer/