Self-taught programmer and with a diploma-which is better?
About the myth that the programmer must complete his studies, we already wrote in one of our articles. However, formal education has its advantages. It is worth studying, because a programmer with a diploma acquires skills that many self-taught people lack.
Looking at employment in some IT companies, one might conclude that studying is an unnecessary luxury for programmers, because in many cases even a third of the team does not have an IT education. However, this view is far from the thinking of young Poles. This is confirmed by the data of the Ministry of science and higher education, according to which computer science, along with medicine and philology, is the most besieged field of study in 2019. According to the data, there are an average of 17 candidates per place for engineering and analysis. In this situation, it is difficult to think that people who want to become programmers do not bet on formal education. According to a study by Stack Overflow, about 72% of professional Software developers in the world have completed their studies. Last year’s survey showed that nearly 16% of developers consider formal education to be very important and 25% consider it important. Only slightly more than 11% believe that graduation is of no importance. Such disparities are no accident. Although a self-taught person may have broad knowledge, he often lacks what is gained in formal education. We will try to identify these shortcomings here.
Skills of self-taught and certified programmer – comparison
Self-taught must possess certain qualities of character that will allow him to acquire the appropriate knowledge. If we write about being consistent, systematic, about showing perseverance in gaining knowledge, then such qualities can be successfully applied to both a self-taught and a programmer with a formal education. Only that the former must show more persistence, consistency or consistency, because no one is mobilizing him (read: he does not set a date for the exam or passing). The self-taught person needs to spend more time and effort to acquire the right information and knowledge. However, a programmer with a formal education gains something more. Many Software developers after graduation emphasize that they have learned to learn effectively. This is a key skill, if you take into account the fact that a good programmer should focus on the constant development and expansion of their knowledge. Students learn this in seemingly useless subjects such as mathematics. Theoretically, it can be useful in some branches of computer science, but most will not find a use for it throughout their career. The situation is similar with laboratory activities, from which it is necessary to prepare multi-page reports meeting certain criteria. All this, however, percents in later career and manifests itself in a methodical approach to subsequent problems.
From Stack Overflow studies already cited here, it follows that at least 90% of Software developers are self-taught on a regular basis, using very often the official documentation and the internet.
“Home” learning programming differs from this formal style. At the university, students learn about how the next components are built, and only after mastering this knowledge proceed to their use. The self-taught student does the opposite-knowing that he wants to build x, he must find out by heart what components he needs for a particular project. Programmers with formal education often understand complex problems and their nature better than self-taught coders. It often happens that the latter know different frameworks and technologies, and also can implement some functionality or task so that the software works, but they do not always know why it works. They often lack the basics of programming that they acquire in college. Software developer after technical university is aware of why something is implemented in this way, and not in another way, knows how to properly design something. In such a confrontation, it happens that both a self-taught and a programmer with a formal education come to the right solution, but the latter finds a shorter and more appropriate path. Self-taught students often simply ignore this kind of information, do not always know the algorithms or design patterns, and these shortcomings come out later in professional practice. The undoubted advantage of software studies is structured knowledgeto which it is easy to ” add ” something later.
Access to educational tools
Unfortunately, most often the self-taught is in a worse position than the student when it comes to access to educational tools. We don’t just mean technological solutions. An example is contact with professors, conversations with them, discovering more advanced concepts based on what has been reworked in the classroom. Self-taught usually does not have a chance to be directed in this way. Such a person must look for educational tools himself, starting with the internet and such portals as, for example Stack Overflow, GitHub is Quora, up to books and documentation of individual technologies. He can also look for his mentors (e.g. in blogs and books) who will guide him through the development process.
The Problem with knowledge in college is that the programs of individual subjects are not updated every year, but every few years. This is enough to make the knowledge passed on obsolete. Sometimes it is a bit worse in this aspect and learning an assembler on controllers from the 70s at Polish universities is not uncommon (in principle, there would be nothing wrong with this if it were not for the fact that this equipment already adheres “to the adhesive tape”). However, it is valuable that the fundamentals of computer science remain unchanged, so knowledge of them will be relevant for a long time. On the other hand, formal education is an opportunity to draw on the knowledge and experience of lecturers. Such education is not only the transfer of knowledge, but above all the creation of strong foundations for future success.
It should also not be forgotten that many IT companies work closely with universities, providing students with internships and enabling them to get to know the software developer’s work “from the inside out”. This allows graduates to gain new experience, develops their soft skills and increases their self-confidence, for example, during recruitment (they come to the first employer, knowing what to expect in a position that interests them). Self-taught will rather choose a junior position in a smaller company. Commercial software development, especially in a larger team, with more experienced developers, is the way to very rapid development. Learning in such an atmosphere is fast because it comes from a lot of practice. In principle, there is no time to study theory in isolation from practice. The verification will be the team’s code review score, not the colloquium or report score.
Two sides of the medal
Both independent learning of programming and studying have advantages and disadvantages. Learners on their own often rely on a practice that graduates usually lack. The latter, however, usually have a solid theoretical basis. A self-taught person is usually a passionate person who seeks knowledge also in contacts with others, faster than a student becomes an active participant in the technological community. It is not enough that a self-taught student has faster contact with technical innovations, because the program at the university does not always keep up with the rapidly developing IT industry.
An educational gap can occur both in a person with formal education and in a self-taught person. However, it seems that the latter is more vulnerable to shortcomings in the field of programming. The reason for this may be, for example, the need for an independent selection of teaching materials, which do not necessarily cover all the most important issues. Of course, this is not the rule. Therefore, in conclusion, it is worth emphasizing that lack of formal education does not have to interfere with a career or being a good programmer. Let’s not forget that many outstanding developers of the 20th and 21st centuries do not have formal education, but have made a breakthrough in it.
All the pluses and minuses of different ways of gaining knowledge in programming, which we presented is purely theoretical considerations. Ultimately, it is the personality of each person that decides which model of learning will be most effective. Some prefer to use the advice of more experienced, for others it is a thrill in the independent search for solutions. Some people need the rigour of university to learn systematically, while others may find it difficult and “disgusting” to gain knowledge. The main thing is to find the right system for yourself.