Что нужно изучить, чтобы стать разработчиком?



Ниже - мой субъективный чек-лист для бэкенд-разработчика. Рассматривать его стоит как условный гайдлайн, а не как жесткий список требований - в зависимости от вашей предполагаемой специализации требования будут различаться. Например, не все пишут софт под Linux, есть еще .Net и экосреда Microsoft - если вас тянет в разработку под Windows, ̶п̶о̶д̶у̶м̶а̶й̶т̶е̶ ̶д̶в̶а̶ж̶д̶ы̶ то Linux уже не является таким жестким must-have.



1) OS Linux. Нужно уметь работать с командной оболочкой (например, bash) и основными Unix-утилитами.



2) Ваш основной язык программирования, с которым планируете работать. Также - стандартные либы и модули к нему, а также распространенные дополнительные либы. Для Python это будет, к примеру, datetime, os, sys, json, requests, collections. Также - основные инструменты для настройки окружения - pip и pyenv в случае с Python. И еще - часто используемые фреймворки, в случае с питоном это, в первую очередь - Django + django rest framework. С помощью всего этого нужно научиться делать свои домашние проекты - простенькие сайты и скрипты.



3) Другие языки программирования, хотя бы на уровне основ. Особенно я приветствую знакомство с одним из языков с си-подобным синтаксисом (C, С++, Java) и со строгой типизацией. Не то чтобы это прямо маст-хэв для того же питон-разработчика, но чем богаче бэкграунд, тем лучше. Как минимум, читать код в процессе работы придется на разных языках, не только на вашем «родном».



4) Базы данных. Знать, что такое реляционные БД хотя бы на уровне ликбеза. Выучить язык SQL. В «бою» также понадобится знать особенности и фишечки конкретной субд (PostgreSQL, Mysql, SQL Server, Oracle) - но тут зависит от того, какая из них используется конкретно вашим будущим работодателем. Скорее всего, 60% из всего, что нужно знать про конкретную СУБД вы выучите уже в процессе работы. Также нужно освоить инструменты для работы с БД в вашем языке программирования (например, в питоне psycopg2 для работы с PostgreSQL или SQLAlchemy - для любых субд).



5) Основы Computer Science. Хотя бы на уровне ликбеза общие сведения об устройстве операционных систем, файловых систем, памяти и CPU. Слова «стек», «хип», «процессы», «потоки» не должны звучать для вас как иностранные.



6) Сеть и сетевые протоколы. Опять-таки, как минимум - на уровне ликбеза. Не обязательно в мельчайших подробностях. Что такое TCP/IP, HTTP, ICMP, DNS. Как в общих чертах работает этот ваш Интернет? Что происходит, когда мы набираем в браузере какой-нибудь домен, например, гугловый? Что такое nat? Как настроить iptables.



7) Конкретные технологии и инструменты - разные работодатели используют разный набор. По моему опыту, всё это в основном осваивается прямо на работе уже в процессе решения «боевых» задач. Но, разумеется, можно облегчить себе жизнь и опробовать что-то из этого дома в спокойном темпе и без стресса. Просто перечислю некоторые из них:

- Docker - контейнеры с линуксом внутри. Очень многие программы и приложения (в том числе сайты, которыми вы все пользуетесь) в современном мире работает внутри докер-контейнеров. Когда освоите Linux, с докером тоже быстро разберетесь.

- RabbitMQ - брокер для работы с очередями

- NoSQL базы данных - Redis, MongoDb итд

- Инструменты для ci-cd (continuous integration - continuous delivery) - например, gitlab, jenkins итд.

- Облачные платформы и инструменты для работы с ними - например, AWS Amazon или Google Cloud

- Kubernetes - место, где «живут» приложения в докер-контейнерах



Если вы считаете, что я забыла упомянуть что-то важное, вы знаете, где меня найти: @hum_it_bot. Вопросы и уточнения туда же.