On the “Do you want to be a programmer at fifty?” thing is an interesting entry in the discussion that seems to be sprawling over the tech-blog-o-sphere, but what really caught my attention was this:
James went on to identify two kinds of programming
Type A “work(ing) out the solutions to difficult problems. That takes careful thought, but it’s the same kind of thought a novelist uses to organize a story or to write dialog that rings true. That kind of problem-solving is satisfying, even fun.”
Type B “what most programming is about – trying to come up with a working solution in a problem domain that you don’t fully understand and don’t have time to understand… skimming great oceans of APIs that you could spend years studying and learning, but the market will have moved on by then … reading between the lines of documentation and guessing at how edge cases are handled and whether or not your assumptions will still hold true two months or two years from now.. the constant evolutionary changes that occur in the language definition, the compiler, the libraries, the application framework, and the underlying operating system, that all snowball together and keep you in maintenance mode instead of making real improvements.”
I hardly know what to say about this but I think it helps explain why I had such an unsatisfying time at Google: it was almost all type-B work, which to my way of thinking isn’t really programming at all. It’s just…. API-twiddling. Meaningless, brainless, unsatisfying. Who cares if it works, if you don’t know why, if you don’t understand what you built?
I’m sort of startled and disturbed that this would be considered “most programming” – that sounds like a terrible world to live in.
I couldn’t agree more. I usually call it “line programming”, and it’s where everyone starts out in the industry. But some people never seem to move past it, regardless of how long they’ve been programming for. What’s more is that some people are content with it. I could never be content as a long-term line programmer… it boggles and terrifies my mind.
Comment by Aaron Ballman — October 25, 2012 @ 6:21 am
Well, I’m programming at fifty. But I was a late entrant into the programming business and never really had to do any type-B work. When faced with the occasional grunt task, I try to find a way to turn it into type-A work.
Comment by charles — October 29, 2012 @ 6:00 pm