“My job is harder than typing, and I don’t make that much!” she said. This acquaintance overheard a discussion she shouldn’t have heard. It was about my salary at a new job. She was a nurse. I agree that her job is probably more stressful and physically more demanding. Harder? That’s subjective.
It’s unfortunate that to write and build software products its required to type so much. This is 2011. We shouldn’t type this much. Not just because it is inefficient but because it makes us look like typists. There isn’t anything wrong with typists or the data entry professions but it is just not what we do. At all. I was trying to think of some other profession where it looks like you’re doing something completely different but can’t really come up with anything. Building a credit card processing system is not about typing, but anybody doing that just appears to be typing.
Lawyers study in law books. They’re still studying, even though they’re not reading. It’s related. We don’t have that relation. Right now as I write this my wife would have to look at cues (my posture and body language) or just ask.
Even between categories of software there is such a wide variety of skills. The differences between cryptography or eCommerce cataloging is so wide, but it still looks the same. Just typing.
I have been blessed with a very wide career swath covering desktop applications, embedded systems, backend service development and web applications. With my background I can safely say that the learning curve between each broad category of software type is huge. I would imagine it to be much larger than other professions, but I don’t know. My only other jobs were a brief stint in customer support and some manual labor. I’ve been very lucky.
Any good developer is not a software engineer. The word “developer” means something very different than the word engineer. When you’re talking about software engineering as developing products, its not even real science. It’s sort of science. It really is Research. Research and Development (see, it flows so well!).
Every time a developer writes something it’s the first time. Always. Anything I create is essentially a research project that I learn from. Sometimes it immediately passes the crash test, but most the time it fails. Hopefully it fail before a real person falls victim to my mistakes. This is not science. Science has proofs. It has exact metrics of success. Developing products is too personal. It’s too opinionated.
It’s very important to understand that all developers are constantly experimenting. The worst developer is the one that doesn’t experiment or try new techniques. When a developer says, “I’ve done this before” they mean only in concept. They’ve never done that specific thing before. If they did they wouldn’t be needed. The software would be purchased and setup by an administrator.
More importantly, a solid developer will never stop. Ever. A core fiber of being that is nearly a curse. We don’t have off hours. We’re always on. We may go home but our brains continue working. We’re not typing when we work, we’re solving an abstract problem.
We may have brief pauses but our inspiration and thoughts continue long into the evening after we leave the office. Even at events we should be paying attention to. Going on a cruise? Well, I’ll be thinking about how to handle local and remote data sources and how to sync them in against a remote API. That’s how I roll. My wife still puts up with me which is the most surprising thing.
I have weird behaviors because of this. I will abruptly stop what I’m doing to sketch something out. Sometimes even running into my office or grabbing my laptop. Mid-sentence. Bam, here I go to write some code that may or may not work. I’ll come back and pick up the conversation, but my mood will be drastically altered. I’ll be happier than I’ve been all day or more sullen than all week.
I will even wake up in the middle of the night on rare occasion, running downstairs to hack up something that I dreamt about. I dream about what I do. I’m not alone in this.
We are developers. We research problems and try to solve them in the best way. These problems are abstract and opinionated and our solutions are matching. We are not commodities and we are not equal.