Разработчик

Разработчики решают самые разные задачи — от создания сайтов и приложений до алгоритмов для машинного обучения и игр. И не все языки программирования одинаково для этого удобны. Основной язык у разработчика может быть один, но знание нескольких расширяет выбор инструментов. К тому же, некоторые со временем устаревают, как, например, ActionScript или Perl.

Hard

Аналитическое мышление. Системный подход помогает представить готовый продукт, определить его интерфейс и внутреннюю логику.

Необходимые навыки

Soft

Умение писать понятный код. Опытный разработчик пишет простой функциональный код, который прочитает и он, и коллеги.
Навык структурировать данные и алгоритмы. К структуре данных относятся связанные списки, массивы и стеки — с ними разработчик создает приложение.
Навык работы с базами данных. Разработчик должен разбираться в основной логике, уметь проектировать таблицы и управлять данными, работать с SQL, PostgreSQL, NoSQL и другими базами.
Знание библиотек. Хороший программист знает, где взять готовую функцию, класс или объект, чтобы не тратить лишнее время и сконцентрироваться на логике приложения.
Математические знания. Знание простых формул и операций для сложных алгоритмов, аналитики, систематизации и машинного обучения обязательно.
Работа в команде. Программисты общаются не только с командой, но и с заказчиком, и нужно уметь аргументировать решения и принимать критику.
Способность к обучению и развитию.
В ИТ-отрасли каждый год появляются новые технологии. Любому программисту необходимо владеть актуальными инструментами разработки и постоянно развиваться.
Адаптивность. Переход на удалёнку, перестройка команд — постоянно меняющиеся условия, которые не должны сказываться на результативности.
Настойчивость. Программист должен быть готов к поиску других стек-технологий и улучшению кода, ведь сделать что-то идеально с первого раза удаётся не всегда.
Проактивность. Разработчик-профессионал думает не только о способах решения задачи, но и о том, как они повлияют на проект в целом.
Понимание развёртывания ПО, систем версионирования кода (Git, Bitbucket, и тд).
Многие успешные разработчики вырастают из выпускников вузов по направлениям прикладной математики и информатики, программной инженерии или, например, ВМК. Также в открытом доступе есть множество программ переподготовки и курсов по разработке на различных образовательных платформах.

Где и сколько учиться

The Pragmatic Programmer: Your Journey To Mastery, Andrew Hunt, David Thomas. 20th Anniversary Edition, 2019.

Авторы предлагают прагматичный философский подход к разработке программного обеспечения, исходя из своего богатого практического опыта. Здесь описаны лучшие методы разработки ПО и ловушки на пути к гибкому и повторно используемому коду.

Полезные книги

Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin. 2021.

Эта книга посвящена тому, как отличать хороший код от плохого, как писать хороший код и превращать плохой код в хороший.
«Совершенный код. Мастер-класс», Стив Макконнелл. 2021.

Опираясь на академические исследования и практический опыт коммерческих разработок ПО, автор синтезировал руководство из самых эффективных методик и наиболее успешных принципов.
«Паттерны объектно-ориентированного проектирования», Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес. 2021.

В книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании.
The Art of Computer Programming: Volumes 1-4A, Donald E. Knuth. 2011.

Фундаментальная монография известного американского математика и специалиста в области компьютерных наук Дональда Кнута. Она посвящена рассмотрению и анализу важнейших алгоритмов в информатике. В 1999 году книга была признана одной из двенадцати лучших физико-математических монографий столетия.

Grokking Algorithms: An illustrated guide for programmers and other curious people, Aditya Bhargava. 2016.

Книга для начинающих программистов, иллюстрированное пособие.
Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein. 2022.

Хорошо структурированный большой справочник по всем основным алгоритмам с подробными и понятными примерами. Будет полезен для понимания работы встроенных в языки программирования алгоритмов и проектирования собственных.

Полезные сайты и ресурсы

  • FrontoWeek — подкаст о важных событиях фронтенда за неделю
  • Веб-стандарты — подкаст в формате новостей в сфере разработки
  • UnderJS — обсуждения JS на Frontend и Backend, React Native, Linux
  • Фронтенд Юность — вся правда о фронтенд-разработке
  • Frontend Weekend — интервью с известными людьми из веб-разработки
  • Пятиминутка React — подкаст о React и смежных технологиях в мире JavaScript и фронтенда
  • kamyshev.talk — подкаст об архитектуре, коде и гибких навыках
  • FrontoWeek: Недельный дайджест — Telegram-канал о фронтенде
  • For Web — Telegram-канал, полезный для фронтенд-разработчиков и дизайнеров
  • Вебня — JS VMs, спецификации, встречи
  • Веб-стандарты — ежедневные новости и события фронтенда от сообщества веб-разработчиков

Telegram-каналы:

Блоги:
  • Дэн Абрамов — личный блог разработчика, одного из авторов Redux
  • Katz Got Your Tongue — статьи Иегуды Каца, соавтора Ember.js и ответственного за разработку плагинов в jQuery
Материалы для изучения бэкенд-разработки
Материалы для изучения фронтенд-разработки

Бесплатные курсы

Machine Learning with Python: A Practical Introduction. Вводный онлайн-курс познакомит с основами машинного обучения на Python и различными видами моделирования. Слушатели освоят классификацию, кластеризацию и другие популярные алгоритмы, а также закрепят полученные теоретические знания практическими навыками.
Введение в программирование (C++). Программа курса освещает практические основы программирования. Учащиеся смогут решать множество небольших задач, охватывающих основные базовые конструкции языка C++. Курс полезен тем, кто только начинает свой путь в программировании и хочет понять его основные принципы.
Beginner PHP and MySQL Tutorial. Курс для начинающих программистов охватывает все аспекты PHP и MySQL. В ходе обучения вы научитесь решать практические задачи, с которыми чаще всего сталкиваются программисты.
Программирование для всех (начало работы с Python). Цель этого курса — научить всех основам программирования компьютеров с помощью Python. Любой, у кого есть начальный опыт работы с компьютером, сумеет освоить материалы этого курса.

Introduction to C++. Краткий вводный курс в C++ от экспертов Microsoft позволит освоить базовые принципы этого языка программирования. Изучая C++, вы можете создавать приложения, которые будут работать на самых разных платформах — от Windows и Linux до Mac OS.
Введение ­в программирование. Преимущество этой программы в том, что вы узнаете не только об основах языков программирования (Java, Python), но и о самих профессиях и перспективах работы. Курс состоит из 17 тематических модулей, доступ остаётся навсегда.
Java. Базовый курс. Для тех, кто только начинает изучать Java. Лекции содержат материал, охватывающий синтаксис языка, компиляцию программ, основы объектно-ориентированного программирования и более сложные аспекты Java, а также контрольные вопросы и практические задания.
Основы языка Python. Учащиеся пройдут путь от основ программирования (переменные, циклы, ветвления) до построения программ с использованием объектно-ориентированного подхода. На курсе будут рассмотрены примеры применения языка для решения практических задач.