Good Coder or Great Coder? From beginner, to intermediate, to expert.
You’ve just demonstrated your worth to a future employer with a perfect first interview. You coded intelligently and very casually aced the ‘Hello, World!’ test You made the two developers across the table from you laugh at a terrible joke (which you stole from Dilbert). You complimented the baby picture displayed, accidentally calling one of their infant sons an adorable little girl, and after all was said and done, you’ve been called back for a second technical interview. If all things fall into alignment, and you’re as good at programming as you believe you are, it won’t be long until you enter your 6 month probationary period. Before you walk in the office door for the first time, there’s some established wisdom that will serve you well, in any field.
‘It’s one thing to write “Hello World,” but it’s another to understand how the words appear on the screen. By learning the “groundwork” that supports the work you do, you will become much better at it.
Why? Because you will understand why things work the way they do, what might be wrong when things are broken, and so on. You will become better by learning what happens at a lower level than your work.’
If you’re entering the field, any professional field, for the first time, it goes a long way if you understand the foundational principles upon which everything stands. You’ll hear the expression ‘information architecture’ an awful lot, but before even that, learn how the spinal column supports the body, learn why the building doesn’t sink into the sand, and essentially learn to think about the underlying structure which is maintaining some form of structural integrity. It will show, and your peers will appreciate you not asking basic questions.
Leave your prejudices, biases, and coding dogma at the door. Everyone has their own tactics and strategies, their own methodology, about how things should be done, but I think it’s very important that for the very first time you enter the office, leave your coding dogma at the door.
As a developer just starting out, you shouldn’t be the one boldly announcing about the ‘One true way’ about how to achieve the end-goal. Not only will it make you somewhat unpopular in how inflexible, arrogant even, you’re coming across as, but at the end of the day, you will be embarrassed when you’re proven wrong. Approach projects and tasks with an open mind and a willingness to accept when you’re wrong, but more importantly, approach tasks with the intention of learning from others, and past mistakes. They’re not obstructions- they’re challenges. They were all there once. The boss who just shook your hand and immediately forgot your first name, they were you once, and he or she most likely didn’t get where they are by making the mistake of being narrow-minded and opposed to new ideas- a particularly fatal error when you’re in a field that changes as constantly as technology.
‘ Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.’
– Alan Kay
Whichever way you look at it, programming demands hard work. For every technology that makes your job easier, your life easier, your phone smaller, and your computer faster, there were countless minds dedicated to providing that service. You might imagine a life of sitting at an office for hours on end isn’t physically taxing to your body, but it will be. Bad posture will lead to lower back problems, carpal tunnel syndrome might cramp your wrists, insomnia will keep you awake for days on end, and when you finally manage to fall asleep, you’re dreaming in binary. If you start seeing your colleagues as stacks of numbers compiling, it’s probably best to take a walk outside. Part of coding, but more so, part of being a coder, is your attention to detail, and your incorruptible patience. Your code is only as good as you are, so ideally, you approach the task with the due diligence it deserves.
‘ Computers are good at following instructions, but not at reading your mind.’
– Donald Knuth
Nobody wants to spend their weekends and dark evening hours under fluorescent lighting, knee deep in error messages. Learning proper testing procedures, and good habits, will save you a lot of time in the future if you start learning them immediately. Very few codes, threads composed of thousands upon thousands of written lines, will run from start to finish error-free, particularly if you haven’t afforded the process the attention it demands.
‘Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.’– Brian Kernighan
‘ It’s hard enough to find an error in your code when you’re looking for it; it’s even harder when you’ve assumed your code is error-free.’
– Steve McConnell
A final piece of advice, applicable to us all – do not be afraid to up-skill yourself through constant learning. Self-teaching, reading about and discussing emerging technologies and strategies, a willingness to experiment in your own time, and a healthy curiosity about how the system works, will only benefit your future career. Learn a new language, read the code of your senior developers, dissect both your successes and your failures- they’re all equally valuable. This is particularly vital in a field which is endlessly-evolving. So, while there will be good and bad days, there will be bugs in the code, and there will be passive-aggressive company-wide emails, you should accept that your own progress, any progress, takes time. It helps if you’re passionate about what you do.