There are various parameters to judge a developer but for me the number one criteria is efficiency. Ahem…I don’t mean efficiency of writing bad code or providing sub optimal solutions. Far from it.
I mean the efficiency to write good code. Readable Code. Extremely Flexible Code. A highly maintainable code.
It’s the efficiency with which they passionately latch on problems and solve them. They are efficient because they understand the underpinnings of the programming framework and the toolset they use every day. So, how does one become efficient at developing software or be “The Good Developer”?
I’m not sure if you loved Physics or if you ever understood Einstein’s famous mass-energy equivalence. Well, the one where he proved that mass of a body is a measure of its energy and they are connected by a constant.
I hope Einstein forgives me for this. But, in our little software development world, it means
- = Efficiency
- = (intrinsically) motivated
- = Cluefulness
Thus, efficiency of a developer can be defined as their level of motivation to excel times the square of their cluefulness.
True. Seriously. Don’t believe me? Ask Einstein. Can you? You can’t, can you? Then, you really have to trust me on it 🙂
What is Cluefulness? It can be defined as one’s expertise and capabilities in developing software. Please read this extremely insightful post by Eric Sink if you want to learn about Cluefulness and how to increase it.
If you one of the developers who are extrinsically motivated by rewards, all-the-things-money-can-buy-kind-of-salary, free beer to write code – tough luck in this life. On the other hand, if you are intrinsically motivated to learn new frameworks, delve into complexities of algorithms and data structures, write code for fun then all you have to worry about it is how to increase your cluefulness.
I won’t repeat what Eric mentioned in his great post but I would mention few things to increase your cluefulness.
Read Code – It’s surprising how less time developers really spend reading other people’s code for learning patterns and anti-patterns. Some developers would keep on writing the code in same style that they learned in school. For real. One can either learn by working with really good developers or reading code of open source frameworks/products. I can’t emphasize enough the value of reading code – Can one become really good writer if they haven’t ever read a good book in their life?
Focus – How can one become good at their art if the first thing they were to do every morning was check their friend stream on Facebook, chat with their long lost friends on their favorite IM, check their emails, any-other-unproductive-activity-except-programming. Shouldn’t the first thing really be to focus on building great software? I doubt if Einstein would have come up with general theory of relativity if he was checking his friend feed on facebook all the time or was being bugged by other Physicists on Skype.
Be Inquisitive – One has to be curious and hungry to learn new things, ruminate on hard problems, figure out ways of doing old things in a new way. One would never learn better ways of doing things if one is happy with the status quo.
Tools are your best friend – I’m not sure if a developer could really be productive in writing ASP.NET applications using Notepad. One has to be good at Visual Studio.NET or an equivalent IDE to be really productive at building websites using the ASP.NET framework. Thus, it’s not only enough that one spends the time in learning and polishing their programming skills but also picking up tricks to use the development environment to their advantage. Learn the Shortcuts, write loads of reusable code snippets, know how to use Nuget etc. They are an aide to being efficient and solving problems faster.