How to become a web developer without relevant education, from scratch? Software engineering is one of the highest paid professions today. However, to become a high profile specialist, you need to improve yourself and constantly learn. It is possible to reach the heights of programming in different ways. In this article, we will talk about how to achieve this.
At the very beginning, I want to note that there is a certain “map” of development and movement in the field of programming, and you need to try to find yourself on this map, says Justin, a head of backend development.
By “map” I mean several high-level abstractions:
- This is a niche and area of knowledge, technology
- It’s a technology stack
- Soft skills development map
- The desire to follow new trends
I will try to cover these topics as accurately as possible.
What kind of a developer are you?
- First, you need to understand what ideals drive you, what and who inspires you, what tasks allow you to feel a surge of strength in the process or after completion. For example, you see the ideal role of a programmer (or administrator) who comes up with some kind of algorithm that will turn the calculation technology in one direction, for example, the search for prime numbers or an encryption system. Or maybe you are inspired by the image of a hacker who, alone or as a team, breaks into the most modern banking system. And he gets a lot of money and fame from his business. Or maybe you are inspired by the fact that your product will be used by millions of people using their devices – for example, mobile phones. If you could find such an image – congratulations, the first half of your formation has been completed, and you are already motivated for this “path”. And then, only work and work. But work you can no longer imagine yourself without.
- Second, decide where your role is on the map. Believe it or not, there are a lot of large areas in IT that intersect in basic things related to programming and the industry in general. These are algorithms, data structures, basic concepts in computer science, as well as more mundane requirements for engineering and technology (hardware). The gradation into high-level and low-level niches is not absolute, but is intended only to orient the IT specialist with the vector of development.
Choosing high-level niches
High-level niches are work with high abstractions: creating an interface for end users or programmers like us, developing and maintaining business logic and various algorithms for large systems, integrating various programs, and architectural patterns. Ultimately, this is the creation of programs that other people will use.
Examples of high-level niches:
- layout of web-sites, program interfaces on a computer, on a mobile device, Smart TV, wearable devices;
- algorithms (flow) of data between systems (and between people on their devices) – how the data will be received, where it will be stored, what will happen to it next, and on what devices it will be processed;
- systems that aggregate and process data in a certain way for convenient use by people (a simple aggregator or a system based on neural networks and machine learning). Here we get not only the data itself, but we can also obtain “rules” for processing similar data based on them (learning of neural networks).
It is typical for a high-level niche that you need to be able to use the work of other programmers and engineers to create your programs and systems.
In a low-level niche, you will have to work with the most basic things in computer science and with hardware. It is desirable for you to know assembler and be sure to know C/C++, to know how operating systems and drivers are arranged for various versions of hardware. For example, I have a friend who develops software for boards from China whose drivers are different for each new version. There is either no documentation at all, or it is not enough – they just haven’t managed to describe it yet and/or there are bugs. Yes, as in any other software product, drivers can also have bugs.
Technology stack
Now let’s talk about the technology stack. Most of the reviews on how to become a programmer start with choosing a stack. Here I want to say that the stack can be changed if it is similar to another within one niche. But if the niche is different, it will be more complicated. That is, if you have chosen a Java-based web-development stack and want to switch to a Python web-developer, it will be relatively easy. It’s more difficult – if after the first one you want to become an ML/AI developer in Python, then you will need to pull up mathematics and master completely different methods. But it will be much more difficult to switch to programming embedded systems or microcontrollers. You need at least six months to master the technology, and the employer will need to understand how much they can trust you to create a new product for you.
The main stacks for today are: mobile development, front-end and/or back-end development for the web, embedded systems development, machine learning, neural networks and Data Science, desktop development. And make the choice of programming language based on the understanding of the program (or the system) that you would like to create.
Soft skills development map
Now let’s talk about the soft skills development map. Recently, more and more attention is paid to this aspect of a developer. And this is not surprising – “burnout” is increasingly common among programmers and administrators. Just as important, to create truly successful software normally team development is required.
And if there are exceptions about lone heroes, because then for the most part this is a beautiful “marketing fairy tale” – the hero makes a program for people who get him fame. In any case, in 99 percent – you will have to work in teams, even if you plan to become a freelancer and work “for yourself”, you will need to interact productively with one or rather many clients at the same time.
In this matter, it is worth paying attention to modern work methods such as Agile, Scrum and Kanban. From my own experience, I can say that it helps a lot to keep a diary and a map of goals for short, medium and long periods and to periodically collect feedback (once every six months or a year) from colleagues and clients.
The desire to follow new trends
It is worth mentioning the necessity to follow new trends. In any case, you will need to know what is happening in the industry, at least at the level of technical news. Unless, of course, you plan to work for one employer all your life.
The main thing is not to become petrified in your knowledge, but to constantly develop and master new technologies. Each of the directions is constantly expanding, and not so long ago, programmers were webmasters, and now it is a group of developers: front-end, back-end, DBA, DevOps, UI / UX. In each of these areas constantly (once a month or once every six months) something new appears, which takes root and will be used in the future. And you need to build your own system for collecting and filtering this knowledge.
This was an overview of the main points in the formation and development of an IT specialist.
Here we have not touched on salary expectations (on average, a specialist in the IT market receives 2-4 times more than in other industries).
The main thing is to decide for yourself what you want to master and what program (and for whom) you will create it.
Not a day goes by without practice and new knowledge
Increasingly, I get a question from acquaintances: “How to become a programmer from scratch?”, says Nicole, one of the web-developers. Especially over the past year, when many IT companies have switched to remote work.
I have my own set of tips and suggestions for everyone, but basically they boil down to the following:
- Understand that you will have to do a lot of monotonous and routine work;
- Mathematical base – must have;
- Learn a lot and constantly something new, making every effort
If you answered “Yes” to all these points, then you need to start with basic knowledge about programming and the language. Java, Python, Ruby, Android and iPhone programmers are the most in demand on the job market today. In my opinion, Python is a great language to get started and understand the possibilities of programming.
For study, I can recommend books by the O’Reily publishing house; also, do not ignore various webinars, tutorials on video hosting from practitioners. Courses from well-known sites should be taken with caution and with the available base.
What do you need to keep in mind while learning? Not a day without practice and without gaining new knowledge. Even a couple of lines of code a day will advance your skills. An excellent solution is to apply for a job in the main direction of your new specialty as an intern or junior staff to put your new skills into practice. There you can also get valuable advice from senior comrades.
Now, many employers, including ICL Services, have “IT schools” where employees talk about their areas, organize workshops, etc. In such schools, you can easily understand which direction is close to you, and whether it is worth continuing your education in this path.
Conclusion
If you do not have a specialized university education, it is worth remembering what we know from the school computer science course, says Justin. To create simple things, it will be enough to know what a cycle, a choice structure, a function, an array are, how flowcharts are drawn and what types of algorithms are. You shouldn’t jump into complex languages right away – try starting, for example, with PHP.
For further learning, not only courses, but also tutorials or websites are suitable. Look for something simple. For example, start checking out tutorials on PHP – the first lesson tells how to write hello world and set the environment. That is, everything is very, very simple. I myself started with something similar when I sat down to learn PHP.
It is usually difficult to start, therefore, so that motivation does not fall, it is better to start with something very simple. This will give you confidence in your abilities and the understanding that you are already doing something. Then there will be excitement and a desire to do more and do it better.
The most important thing is to constantly try, bustle about the issue. What no textbook and course will teach is willpower in mastering the material and a competent approach to communicating with a computer – you need to not just copy lines of code but always think.
Also, don’t be afraid to change careers. With a strong desire, there are no restrictions either in age or in the field of activity. Our company has successful cases when specialists came to development from completely different fields and ages: from advertising and public relations to frontend development at 25, from printing to testing and video production to backend at 30+.