I’ve noticed a pattern in the programming world at large both with programmers and with managers. We define things how we want them to be for our organization and not how they are. We are like Humpty Dumpty who says, “When I use a word … it means just what I choose it to mean — neither more nor less.”
There are two places where I see this pattern manifesting. The Agile movement and Design Patterns.
Emotions are a weird element of being human. They can propel us forward or hold us back. Sometimes they are violent. Most of the time they whisper.
Several events have occurred recently that have me thinking about this more.
To start with, I’ve started paying more attention to my health. There were a lot of things holding me back from this in the past. But it turns out, most of what was holding me back was just a lie.
I’ve started interviewing again. The nature of what I do means I get to do this a lot. You’d think I’d get used to it. But, I don’t like the interview process. I don’t like changing jobs. I really don’t like code interviews. But, I do them because I like having money.
Some of the interviews I’ve been on have revealed that managers think in similar short-term ways that I have. Short-term thinking is so easy to see when it is someone else.
It isn’t what you think. Being an awesome programmer, or being awesome at anything has a lot less to do with any given topic: programming, boxing, writing. It has a lot to do with being a healthy human. So, the simple answer to the question of “How to be an awesome programmer” is simply, “be healthy.”
But what does healthy look like?
I really couldn’t tell you what got me started, but I’ve been reading an experimenting with Brain Hacks, Diet, Exercise, and Social Skills for over a year now. Turns out, they are all related.
Now, most of my audience has less than 5 years of experience. I can say that because most of the programming population has less than 5 years of experience, so I’m going on the assumption that the people who read this blog, are a small representation of the global population. Many symptoms I will reference are going to be things you may not suffer with … yet. If you fall in that group, think of this post as a letter from your older self. I was young once too. I remember, I thought I was immune to some of these issues and if I wasn’t, there wasn’t much I could do.
But we’ve learned SO much in the last 20 years. Much of what we’ve thought was “normal” really isn’t. We are just proverbial frogs in a pan of water being heated to death.
This past week I was talking to a guy who is graduating from College and looking for a job. He asked me what most people ask at that point in their career. “Everyone wants experience, but how do you get experience if no one will give it to you?”
What is interesting is that for all the advances in the 30 years since I started my career, that question is still the main question every graduate asks.
Now, before I get started, I want to make sure we are clear. These tips may or may not work for you. They are what I would do, and in large part are what I did 30 years ago, just updated to be appropriate to the current technology. How well they work for you are going to depend on a lot of different factors, not least of which is how much effort you apply. They are also very much based on my culture here in the USA. If you are looking for a job in another country that is dissimilar culturally, you may want to ignore this advice completely. But, I’ll also say this. If what you are currently doing isn’t working, what do you have to lose?
There are two twin evils that I see in the programming community. The first is the programmer who knows what he knows and has no desire to learn more. I call these, “coasters”. And then there are the programmers who are so curious that they try to learn every new thing that comes along, with no focus. The interesting thing is, both of these types of people end up at the same place. Out of work. The cure for both is the same. Being Awesome.