Contact Info
- Lilongwe, Malawi
- +265 899 25 21 95 (Whatsapp)
- contact@webmobyle.com
- Working Days: Monday - Friday
Download Audio: Coding Not About Memorisation
Coding is a seemingly complex feat. In order to produce a working and practical piece of software, thousands or even millions of lines of code have to be committed to file. But what does it mean for the mind?
The automatic response to this question, is to think that the software developer has to do a lot of memorisation to achieve the feat of creating working software. Although this line of thinking is logical, nothing is further from the truth.
Of course, it helps if you have a remarkably powerful memory, but you will find that even with an average capacity for recall, a software developer does not require to have a substantive memory to get the job done.
Complexity is the name of the game, when it comes to developing software. There are a lot of variables to consider, even outside the coding paradigm itself. The developer has to deal with complexity that can quickly reach exponential orders of magnitude.
What needs to be understood, is the difference between complex and complicated. Complicated implies that something is difficult to understand, but can be achieved with time and effort.
Complex on the other hand speaks to how the number of interactions between components within a software project increase, to the point where it is difficult to understand and manage them all.
The ideas that inspire a software development project are often not very complicated, and in most cases are easy to understand. In software development, it is complexity that needs to be handled, rather than complicated concepts, to the extent that strong memory is a good thing to have, but not necessarily a requirement.
The first thing to understand when considering and dealing with complexity in software development, is to realise that there are fundamental rules to how programming works. Just like how there are rules of nature that apply to our universe and everyday life, there are also universal laws applicable to software development.
No matter which programming language you are looking into, the rules are universal. There are slight differences in the different programming languages, but these pale in comparison to the similarities.
The rules of programming are classified as either comprising syntax or semantics. Syntax are rules that govern the structure of a programming language: that is how different phrases are combined, in order to consider that documents are well and correctly formed in that particular programming language. You may think of correct syntax as analogous to not using “broken English”.
Semantics on the other hand is a consideration that is concerned with the meaning that can be derived from correctly formed syntax. It is concerned with the computational considerations of the problem at hand.
Understanding the rules, is the first step to comprehending why memorisation is not a strong requirement. The rules of programming are a smaller body of knowledge compared to the programming language itself, which means that less recall is necessary in order to code, as long as the software developer understands the syntax and semantics.
Another idea that dispels the requirement for strong recall on the part of the software developer, is that there are tools that transfer the memory demands needed for a developer to code, to a machine.
Computers are inherently much more capable of storing substantial amounts of data, compared to their human counterparts. In fact, the order of magnitude by which computers outperform humans in memory and recall, is by comparison, almost infinite.
I often use various tools ranging from a simple text editor to keep track of my thoughts and ideas, to the more robust Trello: an online project management tool. It should be obvious that saving your ideas to file is an efficient way to compensate for shortfalls arising from human memory limitations.
There are other tools out there that lighten the memory load on the developer indirectly. The first thought that comes to mind is the text editor as well as Integrated Development Environments, IDE.
A text editor is a software development tool that often has syntax highlighting. With syntax highlighting, the text editor checks the code that the software developer is writing for syntactic errors. It then flags those errors, and even offers suggestions. Some programming text editors will offer an auto-complete function, which means the developer does not need to memorise the exact expressions they need.
An IDE is a text editor coupled with a software project management tool. As discussed above, software development projects can get very complex, and this can happen very quickly. Before you know it, the number of individual files in a project can grow rapidly, and it becomes extremely difficult to keep track of it all. This is where an Integrated Development Environment Becomes indispensable.
Before reaching maturity, software has to go through several iterations, to refine it and remove errors. Complexity is often compounded by the fact that, most big software is developed within teams rather than by individuals.
Even on small projects, whether working in a team or as an individual, it quickly becomes apparent how critical it is to know who made what changes to which part of the software, and at what time the changes were made. Obviously the ability to do this without the appropriate software tools also quickly becomes apparent.
This is why version control is an essential requirement in any software development project. Version control software, the most popular and my favourite being GIT, allows software developers to track and commit their changes. They can navigate their change history to see who performed which changes, and at what time, and also have the ability to revert to older versions of the software.
There are many considerations supporting the idea that although strong memory is a plus for a software developer, it is not a strong requirement, but perhaps, the Internet is the most significant.
The Internet is what used to be called the “Information Superhighway”: strange I no longer hear this term being thrown around. My point stands though. The Internet is a numerous resource for information, you can easily find information on anything you require, more so with regards to coding.
In the first instance, the Internet is a great reference library. With powerful search engines like Google, as they have evolved today. A simple and quick search will yield relevant results within fractions of a second.
Aside from search, there are forums and communities of developers who are willing and able, to support other developers when they get stuck. The most prominent of these is Stack Overflow.
With the Internet as a resource, it is clear that a weak memory recall capacity should not be a valid reason for holding a developer back.
Looking at a finished software project, and even with a basic understanding of software development, it can be intimidating to imagine how much work had gone into developing the software. The shock can become even more accentuated if you inspect the code behind the software.
Conventional wisdom would dictate that panic should set in, when considering how much memorisation had to be undertaken by the developers of the software. If you slow down and think for a moment, you should come to the realisation that, just as Rome was not built in a day, the software did not materialise overnight.
It is an accumulation of effort over a period of time, with the developer having a firm grasp of the fundamentals of the programming language used. Developers utilise tools at their disposal, and leverage knowledge sources online, to get the job done, rather than relying on the prowess of superior memory and recall.
Want to hear some more from the Webmobyle Blog? Please
Leave A Comment