What do programmers learn?
What should you learn and what should you not learn to become a programmer.
The hardest part of becoming a programmer is figuring out exactly what to learn and where to learn it. A human continuously learns from the day they’re born — walking, then talking, then reading and writing, then mathematics and history. And then the human is faced with the question of becoming a professional and learning is key here.
Any profession requires education. Be that hairdressing, system administration, medicine or programming. However, each profession has a different learning process with its own specifics — duration, format, educational institution, practice, etc.
Programming is a very vague term. It’d be better to be more concrete about what programming is to understand what should one learn and explore to be proficient in the profession. A programmer can be only a front end developer, a database specialist, a person who works on deeper levels of the software, a software architect and many other professionals. I think that a good programmer has to have all of the skills mentioned above, learning each to an extent that can allow them to solve the problem they’re presented with.
So, let’s begin. Everything starts at school. You should learn mathematics with all of its manifestations. Arithmetic, algebra, geometry, trigonometry, math. analysis, combinatorics and other mathematic subjects that maybe I don’t know are important. This is the hardest part of the process, because school level mathematics is the most confusing, partially because the teachers are not as competent. It’d be good if parents with a mathematic background help their future programmer children with this to be more productive.
After school, there’s the University, Programming is a profession that requires higher education, There are many universities and there are different professions in different departments. The applicant has to figure out themselves looking at older brothers, sisters and neighbors, and relatives. Every university has its problems and every person has to find a university that matches their preferences and requirements․ Sometimes self-education is also the right path. This blog also has the goal to help self-educating programmers to acquire systematic knowledge.
Higher mathematics, one of the most painful terms in the world. Many people have their eyes filled with tears when hearing this term… What can we do? It’s hard, it’s confusing, maybe delivered poorly, maybe you don’t see why you should learn it, but YOU HAVE TO learn it.
Let’s look at the mathematical analysis. For any epsilon, there’s only one delta, and for which this statement is true… All of this creates an alternate universe for the student. Epsilons and deltas, infinitely large and infinitely small, a world of borders and infinite sums. And parallel to entering this world and understanding it, an expansion of consciousness takes place. The brain starts thinking a new way, it starts thinking with the language of maths. Let’s not forget that the electronic computing machine also thinks with that language.
So the future programmer has to arm themselves with the respective mathematic weapons: math. analysis, Higher Algebra, Analytical Geometry, Complex Variable Functions, Functional Analysis, Numerical Methods, Differential, and Mathematical Equations, Mathematics Statistics, Probability Theory and the rest. Then there’s math cybernetics. This is the science that has its application in the form of the computer. This block contains such subjects and theories as discrete mathematics, the theory of graphs and hypergraphs, Boolean algebra, combinatorics, automata theory, cryptography and cryptanalysis, algorithm theory, math logic.
The combination of these subjects develops the mind and widens the outlook of the student. This exact group of subjects helps the development of algorithmic thinking which is essential for becoming a good programmer.
Let’s review the subjects directly related to programming. The first thing to do is to get acquainted with the computer hardware architecture. It’s essential to understand what a central processor is, how it works, how it works with other devices. In the meantime, you’ll deal with the concept of the operating system which you need to get acquainted with afterward. In this phase there will be a need to study a programming language, that will allow us to apply the already learned rich knowledge and see the practical benefits of it.
With the help of that language, you need to study the structure of data and algorithms through it, understand the idea of the complexity of the algorithm.
Afterward, we need to strengthen the technological fundamentals. It’s necessary to get introduced to the basics of network, then web programming, it’s necessary to learn modern ways of organizing data storage and access. And another important science — parallel programming. Today it’s mandatory as in modern times processors have more than one core and a good programmer has to be able to use them effectively.
After all of this, we can look at what’s trendy and what interests us and start studying the material necessary for these directions. Especially when entering IoT — Internet of Things, it’s required to have a deep knowledge of C++ language, GNU/Linux system and all of the technologies mentioned above. With blockchain, we need to understand cryptography and algorithms on a deep level, with machine learning — the probability theory, algebra and a lot of mathematics, etc.
Of course, this doesn’t conclude education. The programmer has to continue developing themselves every day no matter where they work or what success they’ve reached as a professional. The programmer that doesn’t learn loses their value in two years. Learn, learn and learn again! This is what’s required to become a good programmer. I’ll see you in a classroom, lab, during an internship and at other activities aimed at daily development.
The text was originally featured on Vahram Martirosyan’s Medium in Armenian.
Keep in touch with HelpSystems Armenia on Facebook, Instagram or LinkedIn.