I’ve shamefully ripped off the title for this blog post from what I expect will be a phenomenal session given by Ed Finkler at php[tek] 2014. Sadly, I haven’t seen the session and may not be present at the conference. However, I’ve spoken with Ed and seen him give sessions on several occasions, so I know he sets the bar pretty high.
If you’ve not considered attending the conference and his session, I highly recommend doing so. Ed has plenty of insightful things to say about being a great developer. Today, the subject coincidentally crossed my mind and I realized I had a few things to say on the matter that may also prove useful to others.
A friend of mine who had some previous programming experience, but was not a developer, recently set out to learn more about what it’s like to be one. This led to many conversations between the two of us that reiterated a few things to me: this person is very intelligent and very determined, and while they felt quite out of their element in this pursuit, they were iteratively making progress toward their goal of understanding what being a developer is like.
This same person recently told me that, over the course of this pursuit, I was the only person they interacted with regarding it who, in their own words, didn’t make them feel like an idiot when they approached me. While I was glad that they had someone like this, I was sad that I was the only one who fit that description.
One thing I have learned over the course of my life is that “genius” is a very relative term: it all depends on who you’re sitting next to. I can name people who make me feel fairly smart just as I can name others who make me feel fairly dumb. I know these people well enough that I can say the latter don’t do this intentionally. Nevertheless, the sentiment keeps my ego in check, which I believe is a good thing.
We all start at the bottom of the totem pole. It benefits you to never forget this and to empathize with those who are going through that journey. Be open to learning from everyone, whether that person is perceived as a master or an apprentice. Nikola Tesla once said, “Our senses enable us to perceive only a minute portion of the outside world.” His words are worth remembering in the context of the limits of our individual knowledge.
Whether it’s with troublesome technology, difficult people, learning newbies, or even yourself as you go through the process of being a newbie once again to pick up a new skill, you will invariably feel frustrated by one thing or another in the process of being a developer. You have to learn to recognize when frustration is transient, when you can use it as motivation to continue and succeed, and to recognize when it’s a sign that you’ve done all you can do and that you should move on.
There is no silver bullet for anything. This applies as much to one’s technology stack or personal tool belt of choice as to one’s self. There is no state of enlightenment that a developer eventually attains. As cliché as it sounds, being a developer is more about the journey than the destination. The best goal you can set for yourself is to be better at what you do than you were yesterday. Compete with yourself, not with others. Aim to solve problems and be pragmatic, not dogmatic, in how you approach them.
These are things I’ve learned from my own experiences. I state them here realizing that they may be more applicable to me than they are to you. You must form your own opinions and find your own wisdom. I’ve said before what and who make me love what I do. I hope you share in some of that, and in some of what I’ve spoken about in this post. In the end, you must find your own path. Regardless of what that path is, I hope you find the passion shared by myself and those who inspire me and I wish you well in your pursuits.