Being a programmer means taking responsibility for your job and your work day.
What that means is the boss is not breathing down you neck.
Telling you what to do, how to do it, when to do it, in what order.
They leave that up to you.
Because they don't micromanage their workers.
Partly because they don't know exactly what programmers do explicitly.
They are at the mercy of the technology.
And that gives us a fair amount of freedom to complete our jobs.
And we have to manage ourselves.
Each day I go to work, I'm responsible to get my work done.
It's up to me to decide what to work on based on priorities.
And I get to decide how to tackle the project.
At what pace.
In the manner which is good for me.
You see, they give us the freedom.
And we produce quality work on time within budget.
It's pretty simple.
Yet there will always be some smart or lazy person who takes advantage of the system.
Milking the projects, blowing smoke up the bosses you know what, telling the customer's they can't have certain features or technology because they don't want to do it, not because it's not possible.
Anyhow, being a programmer has tremendous freedom inherent in the position.
That's what I like the most about being a programmer.
Oh yeah, and to be of service :)