Every year there are more and more programming courses. They attract newcomers with the speed of learning, narrow specialization, and the emphasis on practice. It is tempting, but the question is: how far will you be able to advance with such an education and will there be any problems with employment?
We decided to talk to a director of a Software Development Company to find out the difference (if there is any) between the careers of graduates and self-taught developers.
Enough space for everyone
Let’s start with the fact that programming today is done by people with a wide variety of educations. Apart from graduates, there are lots of those who have a technical college or other profession behind their backs. Some of them went to courses, but there are many who have mastered everything on their own.
It is not that roomless for all of them on the labor market. The IT sector is experiencing severe staff shortages, so everyone who is able to write code finds a job. But this does not mean that university graduates and self-taught people are equal. They have at least three differences:
- complexity of tasks,
- wage rate,
- nuances of professional growth.
The main thing that a specialized university gives a programmer is a base of fundamental knowledge. Universities’ IT-disciplines study higher mathematics, algorithms, probability theory, mathematical statistics and much more which is necessary to solve the most complex problems in programming. And we all know that the more difficult the tasks, the higher the salary.
Moreover, if a person has fundamental knowledge, he quickly masters new technologies
Despite its rapid development, the basic principles of programming remain the same in many respects, and a certified programmer can quickly restore the level even after a five-year break in work.
Self-taught programmers find it much more difficult in this regard. They are forced to go not from general principles to particular conclusions, but vice versa – to grope many connections and patterns in actual practice. It happens that a self-taught developer does not know what an integral is, not to mention more complex things.
This limits the range of tasks that a developer is able to solve; many complex projects, for example, from the field of machine learning, will not be available to such persons. But there are a lot of tasks in programming that do not require special knowledge, so many self-taught programmers work quite successfully.
Specialists with a dark past and a bright future
Among the hundreds of developers working in our company, there are people with a classical university education, there are employees with incomplete higher education, there are graduates of technical colleges, and there are more non-standard cases – exactly those self-taught people.
For example, one of our most advanced full-stack developers has been with the company for six years. At one time, he studied at a college as an auto mechanic, then graduated from a pedagogical institute, became a certified teacher of physics, but did not go to school to work – he began to get involved in programming, worked for some time in a small company and then came to us.
Now he is the company’s man of gravitas. He has been offered a leadership position more than once but he consistently refuses because he is not interested. He wants to write code, and solve complex problems
Our other developer studied at the university on a technical major but was expelled after the first semester. He changed several jobs, even drove a truck at one time; then a friend showed him programming, and he got hooked.
In fact, he only has school education, and it happens he experiences difficulties from time to time without specialized knowledge, for instance, without higher mathematics. But that’s the time when the character helps – inquisitive, scrupulous, diligent, and consistent.
One day, we received a rather non-trivial task – to make a web-service that would interact with users in real time supporting hundreds of thousands of connections at the same time.
The client offered to implement the project in PHP, but our full-stack developer felt that a different technology was needed at that time, and was not afraid to dive into it. He quickly learned the best practices for this type of problem, explicated several test samples, and eventually chose the Erlang language. Time has shown that it was the right choice, and the customer appreciated our recommendation.
These are the examples of the developers without higher education; but there are a lot of anti-examples among programmers who graduated from the university. I knew a good specialist with a diploma who switched from programming to the construction industry where good money was paid at that moment
In general, not all university graduates are capable of working within their specialty, and this is true not only for IT sphere. Every University, every course has so-called “passengers”, average students who do not experience much interest in the profession. When I was a student, there were about 30% of them in our class.
They choose the programming major for various reasons: some are attracted by the prestige of the profession, others are forced by their parents, but even a red diploma will not make a person a first-class developer if he does not want to.
Esse quam videri
The example of self-taught people clearly shows that inborn aptitudes are of great importance for development in the profession. I would highlight four main qualities that a person who wants to become a developer should have, and which he should develop from the very beginning and throughout all his life.
A programmer constantly deals with abstractions – abstract concepts that have no direct analogues in the real world. The construction of correct logical structures, the complex classification of objects – all this requires a well-developed abstract thinking.
Signs that you have more abstract rather than concrete thinking:
- you think more about ideas and assumptions than about real things and what is given;
- learning new facts, you think about their hidden meaning and their interconnection with other facts;
- it is easier and more interesting for you to memorize patterns and interconnections rather than fragmented concrete facts.
This is the ability to plan one’s actions several steps ahead, anticipate results and decompose large tasks into separate stages. This quality is well developed by chess and other activities that require the construction of strategies.
Even small projects, as a rule, are not done alone, so the developer needs to be able to work in a team: take into account not only their own, but also other people’s actions, evaluate with an unbiased eye and accept other people’s ideas, and not be afraid to ask for help.
There is an opinion that most programmers are introverts, closed and self-absorbed people who do not like to communicate. Actually, it is not true.
We prefer to form a team of introverts and we make sure in practice that people of this type can communicate extremely effectively: they formulate questions as accurately as possible, and avoid ambiguity and unnecessary information in their answers.
Describing the essence of the issue, introverts, as it were, put themselves in the place of another person so that he understands exactly what they are talking about. Subsequently, this allows you to shorten the communication; hence the production process always wins.
The qualification of a developer depends not only on knowledge, but also on attentiveness, preciseness, and the ability to bring the matter to the end. Sloppy code, even if it works, entails more expensive and complex maintenance and control processes. To compensate for the inattention of developers, companies are forced to conduct extensive testing, code reviews, and complicate the organization of work processes.
Why courses will not substitute higher education
In terms of their meaning and results, courses differ a lot from universities. There are no proper educational standards, and curricula are developed based on the demand of the audience. This is true for both paid and free of charge courses.
You are taught the most applied tasks here that can be quickly monetized.
That is why there are so many courses on the market like “How to create typical websites in one day” and there are none, for example, about graph theory and other fundamental things –no one will simply attend them, because they do not allow you to start earning right away.
I would give three pieces of advice regarding the courses.
Starting your path in programming with courses is not a good idea
If you are just starting to master the specialty, it is better to first find textbook or video tutorials and figure out the basics of programming on your own. In the process, an understanding of so many things will come: are you really interested in it, which areas are truly attractive. After that, you can already try to pick up more narrowly focused and applied courses.
Choose courses not by the sign but by the content
The quality of courses strongly depends on the level of teachers, so it is better to choose a place with practical programmers in the Board – people who work directly in the subject area they are talking about 90% of the time and have relevant cases.
University is still preferable
If there is an opportunity to go to a university majoring in an IT specialty, it is better to choose a university and not courses. In the future, this will provide higher wages (due to the ability to solve more complex problems, of course and not by the fact of the diploma itself) and easier mastering of new material.
Those programmers, who already work, both with or without a diploma, can be advised to attend specialized events where practical cases are analyzed: DevConf, the HighLoad ++ conference for developers of high-load systems, etc. to improve their skills.
Thus, for a programmer today a diploma from an IT university is not required but still desirable. This opens up broader career and salary prospects, facilitates professional development and enhances the competencies of colleagues with fundamental knowledge.
Do employers pay attention to the applicant’s level of education? Yes, without the slightest doubt. Not in order to show a programmer without a diploma the door but in order to give him suitable tasks
We act exactly like this: select a test task in accordance with the level of the candidate, and then we ask him to tell in detail how he has performed it. This allows you to see the main thing: the type of thinking, attentiveness to the task, and the stage of involvement into the profession.
Thank you for your attention! And may you succeed in your career!