How Important is Coding Speed?
I was watching a documentary the other day about the International Chopin Piano Competition held in Poland every 5 years. I have always been intrigued with the piano as an instrument so it was fascinating to see up close and personal footage of these talented young pianists work wonders with it. They work enormously hard as well as dedicate so much of their lives to it. The rollercoaster of emotions they go through for their craft was utterly compelling.
They will practice parts of a piece over and over again until it is completely engrained into their muscle memory
One thing that struck me was how they go about their practice. These young virtuosos will practice parts of a piece over and over again until it is completely engrained into their muscle memory. They can play it without thinking which is the level one needs to get to in order for the “soul” of the pianist to come through in the music.
I related this back to the profession of Software Development and specifically coding. We’re not working at a concert pianist level and we don’t need to perform but we do work with a keyboard and there are repetitive actions we do day in day out.
The more we know about the language the more diverse our options of implementation are and the quicker we can implement one of these options.
The whole idea of a text editor is to allow us as developers to capture our thoughts in a specific coding language. We think first what we want to do and translate that into whichever language we happen to be writing and type that into a keyboard so it appears in our text editor. The more we know about the language the more diverse our options of implementation are and the quicker we can implement one of these options.
There is much to learn to become a skilled Software Developer, the same as there is much to learn to become a great pianist. But how much purposeful dedicated time do we spend on the skill of becoming very proficient at using our text editor and how important is it really?
Skills Needed as a Software Developer
As a software developer I would classify the skills required (I am sure I will miss some) into the following groups:
- Good knowledge of language/s regularly worked in
- Knowledge of systems regularly used — Git, Jira, CI CD Pipelines, Operating Systems
- Text Editor
- Planning and predicting
- Soft Skills
- Algorithms
- Data structures
Text Editor as a Separate Skill
You notice I didn’t include the Text Editor in the group of “Systems regularly used”. This is because as a developer you spend so much of your time in your editor. It’s easy to justify dedicating some deliberate time to learning the ins and outs of it. Regardless of which text editor you use, you should know it top to bottom.
I just learnt as I went along. Some things naturally got quicker and occasionally I would stumble across a new keyboard shortcut and realised I had been doing something very inefficiently for the last 6 months.
However, I don’t know any developer who actively sets aside time to work on their “Text Editor skills”. It’s almost once you pick an editor (usually based on some popular opinion on the internet at that time) it’s relatively easy to get up and running and then you make do with learning as you go.
This is what I did for many a year. I picked up VSCode as all my colleagues were using it. It was easy to install and easy to click around with a mouse and get things done. But I didn’t have any lessons. I didn’t dedicate any time to practising or learning keyboard shortcuts to improve my ability and efficiencies in the tool. I just learnt as I went along. Some things naturally got quicker and occasionally I would stumble across a new keyboard shortcut and realised I had been doing something very inefficiently for the last 6 months.
How Much Time Would It Actually Save?
Let’s say hypothetically, that you did dedicate some time everyday to learning your text editors inside out. Like a pianist who practices their scales, you would learn and practice your keyboard shortcuts. You would build up your muscle memory and discover different ways to work quicker and faster in your editor. Would it be worth it and what would be the actual benefits gained?
I would make the argument that if you intend to be a software developer for at least the next 10 years then it probably is worth dedicating some time to really learning and understanding the full capabilities of your text editor. Also, it would be worth your time at getting really proficient at the common use cases you run into in a normal working day. Things like:
- Renaming and moving a file
- Refactoring the contents of a function
- Search and replace
- Opening different panes to run tests quickly
- Changing a variable name throughout your codebase
- Getting to a specific line in a file quickly
When you really concentrate on what you do, there are a whole host of things you do each day that if you became proficient in these specific actions you would ultimately change the way you work.
I mean it’s one thing to be quick and efficient but if you’re writing out absolute garbage then it really doesn’t matter how quick you are.
Opportunity Cost
Having said all this, there are other skills that are equally, if not more important than pure speed and efficiency. I mean it’s one thing to be quick and efficient but if you’re writing out absolute garbage then it really doesn’t matter how quick you are. Dedicating time to learning the language you are working in is obviously more critical, especially if you are at the beginning of your career.
There are enough Senior developers out there advising you to learn common algorithms and data-structures that this should be taken seriously.
Soft skills are also a completely underrated skill as a Software Developer. You need to know how to do technical implementations and to build and improve applications but if you can’t speak or communicate with people then you’re going to have a difficult career.
Considering all the other skills needed in order to be a well rounded Software Developer does it really matter if you implement some code in 45 mins instead of 40 mins? Ultimately if you implement a solid solution that will stand the test of time this is the most important thing.
Conclusion
I think we can take some inspiration from pianists and the way they approach their profession. However, there are some fundamental differences with the main one being pianists are training for that special one-off “performance”. Software developers however have no equivalent, they “perform” everyday but obviously not under the same conditions or scrutiny.
Having said that, I do still feel developers should spend some deliberate time just playing around with their text editor. Practicing some common keyboard shortcuts, exploring all the nocks and crannies. Spend time discovering other potentially useful shortcuts and evolving the keyboard mappings. This will all aid in improving the process of getting their thoughts from inside their heads onto the file inside the code editor in a more timely and efficient manner.
About me
I am a Frontend Developer working mainly with React and Typescript in my day-to-day professional life. I love exploring new tools and libraries and love the Javascript Ecosystem.
I like to write blog posts that share exciting new tools I’ve discovered, how-to articles, and also the occasional opinion piece.
I live in Prague in the Czech Republic with my family.
Check out the original blog post on my blog.