I want to share the two steps that I’m using to walk the path to becoming a great developer. Becoming a great developer is a constant work in progress, but it’s a pattern that I’ve seen many other great developers follow.
Step one: Write more code
This might sound easy but trust me, it’s not easy. There are an infinite number of reasons we developers don’t write code:
- I don’t have the time
- I don’t know that code base
- I don’t have the right environment setup
- I don’t know what to work on
- I’m tired
They all boil down to fear. You’re afraid of something. Afraid of wasting time, afraid of being embarrassed publicly, afraid of making a mistake, afraid of being afraid.
Let me share two stories with you about my fears:
I’ve been a contributor to Redmine for a couple of years now, but I haven’t been very active in the code base. Why? Redmine is a large complex code base and I didn’t know how everything worked. So I stayed in my corner and only committed minor changes. Yet I still found a way to break those sections. Self fulfilling prophecy?
With my product, SeeProjectRun, I have to charge users’ credit cards. Taking actual money is scary. After hearing all of the horror stories about companies screwing this up, I became deathly afraid of this and put off writing any billing code. Yes, me a developer who has written four credit card interfaces for active_merchant was afraid of writing code to bill his users. WTF is going on here?
Fear is a mistress that will steal your life if you let her. So how do you get over your fear of writing more code?
Write more code
As odd as it sounds, the only way I found to get through my fear of writing code was to crank it out like it was going out of style. The easiest way to do this? Start new side projects and contribute simple patches to Open Source. Every time you write code, you will learn something about the code, your tools, or yourself. Did you really think my 57 plus daily refactoring posts were only about fixing bad code? Nope, they are my sledgehammer against coder’s block.
Oh and the ending to my stories about fear:
I just spent last night rewriting a core component of Redmine and committed it to the project this morning. It if breaks, I’ll fix it. If it’s really crap code, I’ll revert it. No one will care and no one will remember the mistake.
And for the billing code I strapped myself down and finished the credit card billing code for SeeProjectRun in two days. Throwing two hundred test cases at it proved to me that it will work good enough to get over my fear.
Don’t let fear hold you back from writing code.
Step two: Work with great developers
Now that you’re creating code, you need to work with great developers so you can see how to they write great code.
- 1 passionate developer (you)
- 1 great developer (them)
- a dash of code
Mix well daily and after a short rise in the over, you’ll have two great developers. Feel free to add a few nuts (other great developers) and bake again.
You don’t need to search for the greatest developers of all time, you just need developers smarter and further along in their skills than yourself. This can be easy if you work in a company that has hired great developers. But what do you do if your company doesn’t hire any great developers or you are a solo freelancer like me?
Start reading great developers’ code.
I’m making it a habit to start reading great developer’s code. They put out so much code, you will find yourself reading so much of it that you start to dream about code. (Notice that the smart developers are always producing new code…. they are following step #1)
Now here’s the call to action, because you will never become a great developer without taking action.
1. Write at least one line of code in a new code base every day for a week. Switch code bases after each week.
This can be a new feature, a bugfix, a refactoring, or just monkeying around with an idea. It doesn’t matter, the act of thinking through the code and writing is what you are after. Don’t know one a good code base to start on? Do a refactoring on Redmine and tell me about it in the comments below.
2. Find a way to learn from a great developer every week.
If you are working with a great developer:
- do an informal code review their last commit
- ask to pair program with them, or
- buy them lunch and ask them about their favorite hack
If you are working solo:
- download some popular projects and read through a single class every week
- get some API documentation that shows the method’s source code inline and read the source each time you look up a method, or
- find a mentor and work with them on some real code
So whatever you do, take action today. Unless you’re afraid of becoming a great developer…
But there is plenty of room at the top.