This was just too beautiful not to share, so here it is, almost in it's entirety.
From The Day Programmer vs. The Night Programmer:
Over the years I've come to the belief that there are two kinds of programmer in the world, no matter what technology they work with, lets call them:
- Day Programmers
- Night Programmers
Now - day programmers are the most prevalent in this industry, and you find them mostly in organisations which have historically tolerated a certain amount of inefficiency. Day programmers have the following characteristics:
- They are mostly led and seldom lead.
- The have trouble coping with complexity.
- They cannot visualise a solution.
- They don't load their development tools at home.
- Typically don't participate in the development community.
- See programming as "just a job".
If you are a night programmer, you probably have trouble understanding why a day programmer even entered the industry, and the reason is because they are motivated by different things than you are. The characteristics of a night programmer are:
- They mostly lead (or drag kicking and screaming).
- They develop deep understandings of complex things.
- They can visualise a solution and have a sixth sense around design.
- They load the alpha/ctp/beta version of tools at home.
- They participate in user groups and mailing lists.
- See programming is as vital to them as breathing air.
If you are a day programmer, you look at the night programmer and think that they don't have a life. And you laugh at them when they come in excited about some cool new trick they can do in the framework.
I definately fall in the Night Programmer category. I do, in fact, often have trouble understanding why a day programmer even entered the industry.
There is also a further post in that blog on clarifications of the first post.

