Note: This is about brain memory, not CPU memory!
A stereotype of people who code or who work closely with computers may appear to be someone techy, geeky, nerdy.. . When you hear this you might think a requirement for programmers is to be ‘smart’ (whatever you define that to be) and probably to have a super memory!
However, if you work with programmers you’ll know this stereotype has no basis and we are all diverse when it comes to backgrounds, personalities and strengths.
At the core of coding is using programming languages with a set of keywords and syntaxes that must be put together to produce a functioning program. However, understanding how to effectively assemble functioning code that gets the job done is more important than your memorisation of these keywords and syntax.
It’s far more beneficial for programmers to possess analytical skills and traits of resilience than thinking you need to have a good memory to code. Placing efforts in developing these characteristics will be more effective than attempting to improve your memory.
I’m here to debunk any misconceptions that having a good memory to code is essential.
I’ll do this by showing how programmers instead rely on our tools and utilities rather than memory, as part of the process of producing functioning software programs.
We all know Google and whether you’re a developer or not, you likely reach for Google (or your preferred search engine) when you have questions on.. anything…
But Google is especially the best friend for every developer.
Compile error? Ask Google. Don’t know how to use a library function? Ask Google. Can’t remember the syntax of a while loop? Ask Google.
“Never memorize something that you can look up.” – Albert Einstein
The combination of the internet and the existence of powerful search engines simply means most of the things we do as developers don’t need to be memorised. You don’t have to worry about forgetting how to do something as it can be easily obtained by a quick search.
I know the first thing I usually do when trying to solve a blocker in a development task is to Google my problem. And most of the time, Google doesn’t disappoint!
Therefore, our reliance on search engines is just one factor that negates the absolute need to have a good memory to code effectively.
Allow your tools to do the heavy lifting
In the process of writing software, programmers may use a wide variety of programming languages, frameworks, libraries, tools, utilities and so on.
For programs to functions, this in turn requires correct use of each part. For example, you have to use correct syntaxes, keywords, commands, dependencies, formatting, etc…
The need to work with a variety of instructions and rules when writing a program can cause confusion and is where our memory can fail us at times.
If you wanted to use all these parts and actively worked on memorising proper use of each, your memory is likely to let you down at times.
But why worry about remembering all those details? After all, that’s what your dev tools are there for!
Let them take care of those details that we tend to forget or get confused about due to working with multiple entities at once.
As an example, I’m currency writing applications in both C and Python and frequently switch between these languages. As a result, I sometimes get confused and unconsciously find myself using semicolons in my Python code and not declaring my variables in my C code.
However, thanks to the linting checks I use with my code editors and IDEs, this is not a problem. Code analysis tools like linters do a great job of highlighting any syntax issues immediately as I’m writing code. This allows me to correct mistakes like these effortlessly.
Use of source control tools like git also allows developers to reliably track changes of our files without having to keep a mental track ourselves. Such tools have become an essential part of the development process regardless of whether you have a good memory or not!
So let your tools take care of those details rather than worrying over being flawless and remembering every minute detail of everything you need to use to write software.
Knowing how to use these tools and utilities to assist you in the development process is more important than a good memory for your productivity. Another reason why having a good memory to code is not essential.
Cheatsheets, Cheatsheets everywhere...
If you’re like me, then you’ve probably googled ‘how to push a git commit to remote’ way too many times to admit!
Although I try to remember my most commonly used commands, sometimes I just can’t 100% recall a specific command for a specific tool.
This is where cheatsheets come to the rescue.
Make cheatsheets your go-to place for quickly referencing anything you use regularly as part of your development activities.
For example, if you know more than one language you don’t need to stress yourself trying to memorise and distinguish minute details of their syntax differences. Remembering such differences can especially a problem if you regularly work with languages closely matching in syntax and rules. For example, C and C++.
Having a readily available cheatsheet will allow you to quickly reference what you need when writing applications in a language or using a specific tool.
If you’re naturally able to remember such things then great! But it’s also okay if you can’t recall the syntax of how to write a for loop in 5 different languages!
So have your cheatsheets readily available. Make your own cheatsheets and place them in an easily accessible location like a GitHub repo. Or just simply place them in a plain word document or PDF.
You can also make use of the countless available cheatsheets resources available on the net.
A quick Google search of ‘cheatsheet for X’ will surely provide some free to download cheatsheets for all things dev related.
To get you started here’s an awesome collection of cheatsheets for developers published on DEV.to.
So if someone ever says you need a good memory to code properly, ask them why they need all their cheatsheets 😉.
Use organisation tools as your second brain
Going beyond standard tools most developers need such as code editors, there are other tools available that can assist in keeping yourself organised. These can also be used to ensure you don’t forget anything critical relating to your tasks.
For example, if you’re working on a project, consider using a project management tool to track important activities and todo lists.
These can be things like your feature list, bugs tracker, backlog, product roadmap and so on.
I’m a personal fan of Trello, an online organisational tool that is simple but flexible and enables you to effectively prioritise and organise your projects.
Trello has been extremely impactful in keeping my self organised when it comes to managing my projects! I even wrote a blog post you can checkout here about Trello and how it can help developers stay organised with their tasks.
Organisational tools like Trello are essential if you tend to forget things easily or if you don’t want to rely on memory alone to remember critical pieces of information (which is wise in any case).
As soon as an important information comes up make sure to write them down somewhere.
Describe that bug you just came across and detail out any relevant information that will help when you’re debugging it later. Or document those tricky steps you took to get that framework running.
Not only are you helping you future self by documenting things like this and keeping them in an accessible location, but you’re also helping out anyone else involved in the project, either now or in the future.
“The horror of that moment,” the King went on, “I shall never forget!”. “You will, though,” the Queen said, “if you don’t make a memorandum of it.” – Lewis Carroll (Through the looking glass)
The topics of tools can create much discussion amongst developers as we all have our preferences. Find the tools that work for you and ones that naturally enable you to be more efficient at carrying out your tasks.
Using organisation tools effectively will help track things that are important for your development tasks and reduces the requirement of needing a good memory to code.
While having a good memory is certainly advantageous, in this post we highlight that it’s not a requirement for developers to have a good memory to code efficiently.
So if you’re just getting started coding and wondered what ideal traits of developers are. Or you’re one who questioned your ability to code because of your memory, the points discussed in this post should help get rid of those doubts.
If there’s one thing to remember, just remember that having a good memory to code is not an absolute requirement to become a proficient developer (and remember to Google things also!).
Do you have any opinions of whether having a good memory to code is essential? Let us know in the comments.
Checkout other articles you may be interested in: