There is no one true path to becoming a good coder- there is no pill you can take, or shortcut you can exploit, or quick fix to eliminate all those irritating bugs that seem to be crawling out of the walls in your code. However, here are 10 behaviours and habits which will go a long way in your journey.
1) An emotional detachment to your code
This is something which can be difficult for some, particularly when it’s a project they’ve dedicated so much time and effort to- all those long hours of burning the midnight oil and coffee-fueled insomnia…wasted. A developing coder will benefit hugely from a scientific approach to their projects and tasks. While your passion will bring you a long way in software engineering, it can occasionally blind you to the faults in the code. Sometimes the old adage is true, and it’s necessary to ‘kill your darlings.’ Sometimes it’s necessary to cut out the extraneous, or even start from scratch.
2) Be curious about the underlying framework.
You have all the practical fluency of a programming language in the world, but it goes a long way if you understand the actual structure, the actual how and why, of the framework which is supporting your code. Become both digital architect and digital engineer.
3) A fascination with technology that seems incomprehensible to you.
We all have our personal Everest- something so vast, so far away from our logical sensibilities that we’re told that we should just turn our backs and forget it, but deep down, there is an illogical fascination keeping you curious… and every now and then, you think about how you would scale your own personal Everest. Your Everest might be studying an esoteric language that you’ve never heard of, or writing your first 1,000,000 lines of code, or staring at the first page of an Abstract Algebraic Geometry textbook, and thinking, ‘I know some of these words…’
4) Incorruptible patience.
In any workplace, there will always be distractions. A project leader will be hovering over your shoulder mumbling about deadlines, someone will be trying to show you a picture of a cat who looks vaguely like Stalin, there will be company-wide emails about the office picnic, and someone will be having a nervous breakdown, lying on the cold floor of the server room. On top of all the chaos and melodrama, you must above all else, be patient with yourself. Your work demands it, and the fact that you don’t blindly rush through your work to meet a 4.55pm deadline, will save you an enormous amount of time and effort in the long run.
5) The ability to perform despite an unsuitable work environment.
It’s 3pm on a Friday, and you’ve noticed an error in the code prior to sending it on your supervisor. He neither knows nor cares what goes into the code, as long as it works. All of a sudden, the ceiling has just partially collapsed due to flood-damage. Thank God it’s an old building. You see your coding colleague emerging from a pile of foam ceiling tiles, wiping dust off his shoulder, and you know immediately- he’s seen the error too. The difference between a good coder and a great coder is decided next. He takes out his laptop and sits cross-legged on the floor, and gets back to work. It’s the willingness to go above and beyond the call of duty that will impress both your peers and employers.
“The mind is its own place, and in itself can make a heaven of hell, a hell of heaven.”
6) Understands the value of constant learning.
When the world of technology never sleeps, nor never stops turning, it can be very easy to lose place. The best programmers of your generation will constantly be testing themselves with new technologies and software. When you’re sitting in your first interview, it will go a long way when you can talk about the 3 programming languages you’re fluent in. At your next interview, it will go even further if you can talk about the 4 languages you’re fluent in. Up-skilling is a vital trait in this day and age.
Learn how to prioritise, organise, delegate, and set realistic objectives, but most of all, learn that it all means nothing if you can’t execute and deliver on those plans. It’s all well and good to write extensive, detailed schedules about how you intend you or your team to progress, but schedules amount to nothing if they don’t facilitate actual progress.
8) A willingness to experiment.
The old conventions and traditions of coding exist for a reason- they are tried and tested, but there is always a place for innovation and experimentation in the world of technology. It’s a symptom of curiosity, and curiosity is an affliction which many coders benefit enormously from. Great thinkers before you have benefited before from thinking outside the box, and challenging the established order of things. In the high age of technological innovation, adaptation and experimentation is an expected part of the process
9) Admit when you’re wrong
There are inevitably going to be office politics. You will be a lot more popular if you can graciously admit when you’re wrong, and equally popular if you don’t flaunt it when you’re right. It’s a constant process, and in team-oriented environments, the tasks at hand are much easier to achieve when one of your software engineers isn’t theatrically flipping over an office table.
10) …and finally, number 10.
One of most important things that you will ever learn in coding circles… was mentioned in the very first line of this article. There is no quick fix, there is no absolute truth, and there is certainly no comprehensive list which will hold your hand and guide you to become a better coder. At the very least, hopefully this list has hinted at certain good habits that you can cultivate, and shown that there are certain traits and behaviours that will help your constant growth as a programmer, a designer, a team member, and an employee, but at the end of the day, it’s how you invest your time, dedication and effort that will define you as a coder.