The level of technical knowledge required to read the article: ⭐⭐⭐⭐⭐ (low)
10 000 years ago, a human was solving the problem of creating a sharp spearhead to defeat a mammoth. He solved it. Today, in the digital age, we are solving other problems: how to optimise what we have learnt over the last 10 000 years. And one of the best tools for solving these problems, in our opinion, is programming!
The most expensive minus sign (“-”) in history costed $135,000,000 when Mariner 1, the first spacecraft to explore Venus, crashed shortly after launch because one of the equations was missing a minus.
Creating and debugging programmes takes considerable time, patience, human energy, and sometimes also nerves. Let’s get to the point of this article – What is programming?
What is programming?
We programmers like definitions, so I’ll start with the definition of programming: “Programming is the set of activities involved in creating a program for a digital device.”
So, to decipher the definition: programming is the set of activities devoted to producing instructions that computers can understand. The activities include designing, developing, deploying, and supporting (making sure everything works). The instructions produced during programming are called programs. Programs are very specific and deterministic. They describe what and when the computer must do to perform a task. There are four (4) basic types of programs:
- System programs, these provide basic functions such as operating systems, disk management, utilities, hardware management, and other operational needs;
- Programming programs, these are intended for programmers and provide tools such as text editors, compilers, debuggers, and other code generation tools;
- Applications (popularly known as web pages, web systems, apps, mobile apps, etc.) to help users perform tasks. For example: CRM software, warehouse management software, accounting software, online shops. Facebook, WhatsApp, Spotify and news portals are also some applications that are often used in everyday life;
- Machine applications, used to control machines and devices that are not usually considered as computers – telecommunications networks, cars, industrial robots, and more. These devices and their software can be connected as part of the Internet of Things (IoT).
What should a programmer know?
I have already mentioned that developing a program can be a time-consuming and overwhelming process. At Mitigate, we believe that in order not to get lost in the software development process, a developer should be skilled in the following disciplines:
- Gathering and analysing of requirements - for basic purposes, gathering requirements is mostly limited to a short text description of the problem to be solved, the data to be input or received, and the data that should be output from the solution.
- Building the architecture and design - in real projects, this part can mean envisioning what components the system should consist of or even extensive documentation and schematics of how the system will be implemented.
- Programming - this is the part where the code is written. At this stage, the solution is implemented in a programming language.
- Testing - this part is a whole science. In companies it is done by specialists called testers, but every programmer must understand the principles of testing and be able to test their program at a basic level.
- Debugging - programmers use various tools to find bugs in code on a daily basis. This helps to ensure the quality and efficiency of the program.
- Operation - programs need the right infrastructure to work. We often hear from programmers such words like service, database, integration, etc. To run successfully, programs need a stable, secure, and reliable infrastructure.
- Communication - especially in recent years, this quality has become a critical component in the development of any program. Misunderstandings, lack of insight, and unconstructive meetings are more and more often the cause of bad results. Mutual understanding, constructive dialogues, and precise explanations on the other hand are the basis for achieving the desired goal.
Programmers may specialise in different technologies, e.g. some work more with web systems, others with robots, but they all should possess the mentioned skills. And the better they do, the better a programmer they are. Some of this knowledge only comes with experience.
Program development process
A typical programming process consists of several sub-processes, where the programming itself, or the writing of computer instructions, is only part of the work. Often, other specialists are also involved in program development, for example:
- System analytics,
- Project managers,
And we’ll be happy to share more about that in another blog post.
What is a program and what does it consist of?
If you ask: “Is everything, absolutely everything, 100% everything really stored in zeros (0) and ones (1)?”, the answer would be: “Yes!”
Although programmers use programming languages of a higher level of abstraction in their daily lives, ultimately, all code written and all data processed by the code is expressed and stored in binary code. In such a notation, there are only two symbols, “0” and “1”, which are used to pass information in the form of commands to the computer. Since only 2 units of information can be conveyed by the two digits “0” and “1”, the binary system combines these binary digits into groups to allow the most detailed messages to be conveyed (Wałaszek, 2018). In this way, thanks to a group of binary digits expressed as a combined numeric symbol, the computer is able to perform the required operations. For example, the individual letters of the alphabet are expressed as follows (BiMatrix, 2018):
- „a” –
- „b” –
For example, the word “hello” is encoded as:
01001000 01100101 01101100 01101100 01101111
Each program has visible parts and invisible parts. The visible parts are the parts that the user (you – the person) sees and uses. But there are also invisible parts, and these hidden parts are often also the most interesting. In the illustration you can see the “iceberg” effect of a classic program:
- One programming language is better than others
- Nē, Nej, No, いいえ. We can assure you that this is not the case. Each programming language has its own features. Some are more widely used, others less so, but each has its own purpose, style, and advantages.
- Programmers only just write code
- Please see the “What should a programmer know?” section of this article.
- A programming project is successful if the team follows a previously laid out plan
- Developing a program is a complex and creative process that requires flexibility, as opposed to following a rigid plan. Planning is a must, but requirements may change and situations may arise that call for creative solutions. Program design and development is not always linear and predictable. Planning a real project needs to be broken down into small planning cycles.
- Completion of the program means the end of the project
- In reality, completing the initially conceived program is only the first step. This is followed by debugging, adding new features, changing what should work differently, etc.
- Artificial intelligence will solve all our IT problems
- We (Mitigate) may be wrong, but we don’t think it will, because it is still just code, it is still doing what someone told it to do, even if it has complex algorithms to “learn” and make decisions on its own.
- There is usually only one right way to solve a problem with programming
- This myth is blown to smithereens by one concrete and irrefutable fact: if 10 programmers are given the same task, they will end up with 10 different programs. Each programmer’s code is like a fingerprint – absolutely unique.
Jokes that aren’t jokes
- About a quarter of all the time spent programming is devoted to thinking about what the user could do wrong and how to fix it.
- A programmer is not a computer repair specialist. Although, because of ingrained stereotypes, people are constantly asked to fix computers and even household appliances.
- The user does not know what he wants until he sees what he has got – E. Yodan
- Any program is always more expensive and time-consuming than expected.
- Increasing the number of programmers in order to develop a program faster only slows down the process.
- If a program is successful and useful, then it will definitely have to be reworked.
A curious fact: as I was writing this article, I took a quick glance around me and here is what I saw:
- A computer,
- A mobile phone (smartphone),
- A Bluetooth speaker,
- An iPad,
- An ARANET4 device that measures the air quality in the room,
- A Garmin watch (smartwatch).
Six (6) devices per two (2) square metres. And they are all digital devices because they are powered by computer programs.