You know, I’ve spent a lot of time teaching coders technical skills. How to upload files using PHP, how to create website templates, how to hack, twist and mold WordPress to your will, and so on.
In fact, the entire site over at LearnPHP.co is about exactly this when it comes to PHP. I have an entire category on this site called Code Snippets where I do exactly that. All of my YouTube videos do the exact same thing.
But, to be honest, I’ve never really talked much about what it REALLY takes to be successful as a developer. Because, while all that technical mumbo-jumbo is cool… none of it REALLY matters.
Yes, you need to know how to do those things… but those things aren’t what MATTER most when it comes to determining the successful from the unsuccessful. Any monkey can learn to code.
And, there’s 1000s of coders out there who can do all those “cool” things who struggle to get by day after day. People “who can code” are a dime a dozen.
What’s rare is a “Coder”. An artist. Someone who has a point of view about what/how/why they code. Someone who’s so passionate about what they do they’ll not just tell you no but “hell no” when you ask them to do something that they feel violates their art.
You WANT to be one of these coders. Because you’ll make more money. Because you’ll be more appreciated. Because you’ll be happier.
What do you need to do to get there? Here’s some things I’ve picked up from the successful coders (and artists in general) I’ve been around… things I try to integrate into my work:
Be a Picky Bitch
This is my slang way of saying “have a point of view”. I see so many coders who don’t really care about the code they write. Their standard for their code is “it works”. They’ll bend to the will of any client no matter how asinine the request is.
The successful coders I know don’t do this. Meeting them… you might even think, “Man, that guy/girl is a whiny picky bitch”.
Yep. They have a point of view and own it. But, most good artists do.
My guess is if you happen to be around when Michelangelo was painting the Sistine Chapel and told him to use red instead of blue… you’d have been thrown out in a fiery rage.
Why? Because he, and only he, knew what his art was. He knew what his perspective was and he was going to express it his way regardless of what you might think of it.
All the successful coders I know are this way. Hell, all the successful anybodys I know are this way.
My boss, Stu McLaren, is this way. I don’t know how many times I’ve been working on a project with him and at some point told my wife, “Man, he’s a picky bitch”. 🙂
But, you know what… he’s almost always right. And, the stuff he does works. Because, he has a point of view based on years of practical experience and he’s willing to stand up for it.
And, in the long run… I appreciate it. I wouldn’t want to work with anyone else.
So, don’t be afraid of being a picky bitch. Be proud of it. Own it. Because, it’s based on your point of view… your art. And, in the long run, people will appreciate you for it.
Be a Megamind
For coders specifically, I believe the single most important skill you can ever develop is the ability to mentally abstract. I believe that how well you can mentally abstract is inextricably linked to how good your applications will be.
For your applications to get better, you have to get better at abstraction.
If you think about, ultimately that’s what coding is. You’re taking a specific instance of something and abstracting it out into functional code that will work across instances. The bigger your application becomes (i.e. the more it “does”) the more abstraction is required.
All the successful coders I know are wizards at this. They have this uncanny ability to simultaneously hold the full scope of their applications in their mind and focus on the fine details of any individual part.
The best example I have of what it’s like is a mind-map. If you’ve ever done any mind-mapping, you’ll know the power of it is in the ability to get a large-scope view of an entire idea while simultaneously having the fine details of any particular part available at a moment’s notice.
This is what good coders can do.
Of course, the big question is “how do you get better at it”. The answer is you code. You try building bigger and bigger applications and have the ability to keep going when you look back on old code and want to puke.
You’ll never really be completely happy with your code… ever. Especially old code. But, to others, it will seem elegant. It’s kind of like an artist who’s never fully satisfied with a particular painting (that’s why he/she keeps painting)… but to others, the painting is gorgeous.
You just have to keep coding and pushing yourself… and you’ll necessarily get better at abstracting.
Be Like a Dog on a Bone
That is, be tenacious. As a coder, you have to have a dogged persistence with details. You have to care about every last minute detail. For you, “good enough” can never be good enough.
All the successful coders I know are bloodhounds when it comes to details. They iterate over and over and over their code. They labor to make sure every character is where they think it should be at that time.
That’s not to say that they’re perfectionists that never ship. On the contrary. Good coders ship early and often… before they’re ready. But, they’re never done. You’ll find them up late at night working through a 10-line block of code to make sure it’s perfect.
And, once it is… they’ll move onto the next 10 lines.
Of course, a lot of that passion comes from having a point of view. When you have a point of view, you know exactly how you want something to look and function… and you won’t rest until it looks and functions how you want.
And, once it does… you’ll find ways to make it better.
This is the kind of tenacious attitude all good coders I know have.
You just can’t be afraid to be a little OCD. Don’t worry. You’re not weird. We’re all that way. If you can’t sleep in the middle of the night, because a certain piece of code you want to fix is driving you nuts… you’re on the right track.
At the end of the day, this is the kind of tenacity and passion your clients will appreciate.
These are a few of the biggest pieces of the puzzle I’ve identified… but by no means is this list exhaustive. I plan to add to it as I see fit. But, what characteristics have you seen in successful coders? How are they different from the coders you see struggle? How have you tried to implement those skills in your coding?
Share your thoughts in the comments below.
(photo by Ludovic Toinel)