How to become a ML and neural network developer

Hello everyone. Today's article will be interesting for those who want to become an ML developer. For the last three years, I have been collecting materials on this topic (of course, testing everything on myself). This is not just a dry extract from books, courses and articles, but personal experience based on the tasks that I solve daily.

My name is Ageev Alexander, currently I am an ML developer in the SOICA team. Other interesting projects in the past include robotics (detection and segmentation of food products), research into EEG brain activity, automation of a network of Moscow bakeries, development of algorithms in an application for counting ball strikes and recognizing the human skeleton, research and application of large LLM models, audio decoding and text transcription, as well as EyeTracking (counting the number of times the eyes are opened and closed).

Author's background

I studied at the Electrotechnical University in St. Petersburg. And I really didn’t like programming and everything connected with it. We were taught C++ for three semesters and assembler, which no one in the group understood. But I loved mathematics (but more on that later). In my third year at the university, I got carried away with writing articles (strictly theoretical!) in the field of artificial intelligence and neural networks, so much so that my diploma was also about neural networks. The topic was difficult for me at that time, plus I didn’t fully understand the further applicability of these technologies. My first work experience was not related to IT. Two years later, I realized that I was truly interested in AI and neural networks, so I started to independently improve my knowledge.

Mastering the Basics of Programming

The first is basic work with Python.

Stepik and the courses helped me with this:

In parallel with studying Python, I took a course on SQL: “Interactive SQL Trainer”. True, questions about SQL were asked at interviews only at the beginning of the job search and extremely rarely – in about 10% of cases.

It took me about 4 months of working 3-4 hours a day, 5-6 days a week to gain a basic understanding of Python and SQL.

Studying Mathematics

Mathematics is very important. It is not used in daily work, but it is fundamental knowledge. I think it is not worth even trying to do AI without mathematics.

What areas you definitely need to know:

  1. Linear algebra. Everything related to matrices, matrix decomposition, working with spaces. Tensors.

  2. Mathematical analysis. Functions, derivatives, extrema – this is important directly for training the neural networks themselves.

  3. Probability theory and statistics. Conditional probability, Bayes' theorem, various distributions and their estimates, Goodness of Fit criteria.

The topics I listed in each section are basic. Linear algebra and mathematical analysis are needed to understand how networks work, while probability theory and mathematical statistics were more often asked during interviews. In addition, thanks to my knowledge of mathematics, I can read specialized articles, analyze neural network architectures, and machine learning algorithms.

To fill in the gaps in mathematics, I recommend taking video courses from MSU teachers – there are various topics here. And read the relevant books.

Basic knowledge in ML

The next stage of learning is classical machine learning. Here I recommend mastering the book “Python and Machine Learning” Sebastian Raschka. There are many books that try to explain the same things in one way or another, but are written with varying degrees of clarity – Raschka suited me.

This training took me about 7 months. But it is worth noting that I studied 6-8 hours a day for the last 3 months.

Choosing a specialization

The field of AI is vast, so I recommend delving into one of the topics (the order is arranged in order of increasing difficulty of entering the field).

  • Classical Machine Learning — if you are aiming for areas where there are a lot of numbers and you need to make forecasts: loan repayment in banks, purchasing power in retail, statistics in social networks, etc. It seems to me that this is the only specialization of all those listed here where, after training, you can immediately try to look for a job.

  • Computer vision — any video analytics: counting people using a CCTV camera, analyzing their behavior, counting goods on a conveyor belt, face recognition, detection and segmentation of any objects, tracking. There is also a large layer of tasks in the field of generative models (photo/video generation), tasks with 3D modeling. I went this way, I believe that there is a lot of work here and there is demand for employees, and the competition is less than in classical machine learning.

  • Audio — from smart speakers to software that requires text decoding. The entry threshold for specialists is quite high.

  • NLP — everything related to text and its processing. An important point — working with large multimodal models requires a lot of laptop resources (and renting a server to play with models is quite an expensive pleasure if you are a junior).

  • Reinforcement learning — training agents in a certain environment: robots winning at chess, go, teaching robots to walk without stumbling or perform some independent actions. There are few vacancies on the labor market, plus such developments are carried out only in large companies. For entering ML, this is not the best choice.

Create your own project

To stand out from the crowd, do a small project in an area that interests you. This is an important component of a successful resume. If you are a junior who has not seen a single project, this is your salvation. Having an idea, understanding the applicability of methods, the ability to write code using data structures, and also to give it to the world is a great skill for a junior. The application can be very simple, with primitive logic, but if you use some kind of network out of the box, it works acceptably on your demo stand and you can show it (for example, through a docker container), this will greatly increase your chances of an interview.

Additional tips

  1. Install Ubuntu next to Windows. Most of the things I've done require Linux in some way or another, so knowing how to work with it is a must.

  2. Start studying English. English is 100% needed, since most articles are initially published in English, and only then, over time, are they translated by enthusiasts.

  3. Once you have chosen a specialization, take a book on the topic and start taking it as a course. There is a task – complete it in Google Collab (this is a very convenient environment with the ability to use GPU to perform minimal code tests).

  4. Start looking at hardware. What video cards are on the market, their cost, capabilities and power. Such knowledge is also often tested during interviews: I was very often asked to estimate how much hardware would be needed for a particular project (or network).

  5. Understand the Django/FastApi/Flask framework. This is necessary so that you can write APIs to use your finished model.

  6. Understand GIT and Docker. The first allows you to save your work progress, the second packages and isolates your “application” into a separate microservice.

My interview experience with a specialization in computer vision

The first contact with the employer is the HR selection. Most likely, they will ask questions about work experience (or study), basic questions about theory, sometimes they send a test task. Then, if you pass the first stage of selection, you get to a technical interview. It usually lasts an hour and a half. The interviewer is either a developer, or the head of the department, or all together. It happened that interviews were conducted by 5 people.

I recommend that every time you learn something new, write down information about it in a personal table – this way the information will accumulate and systematize. This will help you prepare for an interview, and in general will become a personal knowledge base.

What was asked:

  1. Python. How memory works, OOP, GIL, decorators, lambda functions, data structures, computational complexity and speed of algorithms.

  2. Machine learning. Metrics (required). Classical algorithms, mathematical component of algorithms. Errors of the first and second kind.

  3. Neural networks. Network architectures, or rather their evolution (mandatory). Deep understanding at the layer level, gradient calculations, what, how and when happens is necessary. Again, metrics.

  4. Mathematics section (all sections at once).

  5. Iron.

  6. Sometimes – OpenCV. Library for image processing.

  7. Rarely – Linux.

  8. Rarely – Pytorch. This is a framework for working with neural networks.

  9. Very rarely – Docker.

Interview questions vary slightly for different ML specializations. Therefore, you can use this approach: study vacancies, collect requirements in them, sort them by frequency and importance, and check whether your knowledge matches the requirements.

Life after employment

Now comes the most interesting and difficult part, because it is not enough to be able to handle models, you need to be able to correctly integrate them into the overall system. This will require a huge layer of knowledge in the field of neural network optimization (quantization, pruning, etc.), translation of some part to C++ and much more.


In conclusion of this article, I want to say that everything is not as scary as it seems, and it is possible to become an ML developer if you truly like what you do. ML development is a large number of studies and regular failures of hypotheses. The specifics of my work can be compared to going through a labyrinth, where after a long time you can return to the start to start searching for a new solution. Constantly learning new things and the joy of each successfully completed non-trivial task do not allow you to despair in this work.

Thanks to everyone who read this far, if you have any questions, please ask, I will be happy to answer them.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *