On days like this when there is lots of snow on the ground I used to fire up my forge, heat the horseshoes red hot, warm my hands and make special handmade forged clips on the horseshoes.
After 5+ years of shoeing horses full time for a living, I began to wonder if this was all there was for me, could I be anything different. I wasn't like the other redneck tobacco chewing, drinking farriers, I'd never worn a cowboy hat, or ridden a bull, but I longed to know more, be more and do more.
After making the switch to development almost 7 months ago, I have been emailed hundreds of times by people asking my advice on how to become a junior developer and also how to know if they are cut out to be a developer.
Here are 7 traits that I have observed the best developers I work with and know personally all have in common:
1) Attention to detail, especially the smallest of details.
The old saying that 'almost' and 'close' only count in horseshoes and hand grenades is true, in development getting something 95% correct is still not going to work, a method that 'almost' works or a Css rule that has an image centered 'close' will not work. It's that extra 5% of effort to get things right that really counts and makes the difference.
««« If you hate details, then you might not want to be a developer.
2) Learning ALL the time.
At first this sounds sexy, your like AWESOME! I love learning new things! Especially if you come from a boring job or something that never changes like horseshoeing =-) After a while though, it becomes a steady stream of knowledge, and if you don't like water, it will feel like you are stuck in a never ending, never knowing enough waterfall of learning that just won't stop. I literally learn 10 - 20 little new things every single day and I love it! My brother wants things that don't change and are consistent, he has told me he wouldn't ever want to learn how to code.
««« If you don't like constantly having to learn new things just to keep up in an ever changing field, then you might not want to be a developer.
3) Handle pressure, stress, and deadlines.
Yes everyone loves USING apps, but how about meeting business time lines, deadlines, and goals? When will this be done? How long is this going to take? Can we do more of these in this amount of time? Now remember the attention to detail? What are you going to do, hurry? Rush through your work and hope it's close enough? In a perfect world coding is so much fun, let's write some code that does something cool, eat pizza and have a coke. In real life there can be stress, not all the time, but it is VERY different then simply doing an online 30 minute tutorial. I love being pushed to my limits and I want to grow and become a better developer so I don't mind.
««« How are you at time lines and working under pressure? If you tend to shutdown under stress, then you might not want to be a developer.
Now I know a lot of messy developers, who could SEEM unorganized, but what I am talking about is the ability to have an organized work flow. Meaning can you find how to do something on your computer easily and quickly? The good developers I know are usually able to quickly locate what file they need or have a built in alias or script to do tedious tasks, it's all about efficiently.
««« If you learn something new, do you write it down, or figure out a way to be able to repeat the same procedure? Can you organize a lot of different tasks? If not, then you might not want to be a developer.
5) Extremely inquisitive
When I was a teenager, a lady at the church I attended would tell me probably once a month, that I needed to STOP asking SO many questions and that it could be annoying. Although offended at first, I've come to realize that the best developers are always asking 'why'? Whether it's how a new app works or the way a building is being built across the street. Conversations around developers can always be heard starting with: " I wonder why they did it that way...?" I used to feel like I was weird when I would ask lots of questions, but I see now, that at least in development, it is a good trait to have.
««« Do things that you don't understand making you curious? Do new things excite you to figure them out? If you don't have at least some level of natural curiosity, then you might not want to be a developer.
6) Self taught
Yes I know many developers come from colleges and great schools, but that's not what I mean. Great developers are always looking up code samples or documentation to learn how something works, they don't knock on the bosses office and say: "We need a corporate training class for this new software". Good developers are constantly learning and figuring out things on their own, whether they have no degree or 5 degrees.
««« if you need someone to train you or are waiting to take the 'perfect' class to learn something, then you might not want to be a developer.
7) People skills
This is not a common trait among developers, the truly great ones do have good people skills, but the vast majority don't. If you can get along with people, your boss and the business side of the company will love you for your ability to communicate and not look down on the rest of the world because they can't code.
««« If you hate people and have a hard time getting along with others, then you might not want to be a developer.