// кто такой программист

Человек, который превращает намерения в точные инструкции

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

01

Что он делает

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

→ понять

Разбирается в задаче

Выясняет, что на самом деле нужно, а не что попросили. Задаёт неудобные вопросы, пока это дёшево.

→ спроектировать

Придумывает устройство

Делит большое на части, выбирает, где провести границы и что можно будет поменять потом.

→ написать

Пишет и проверяет

Код, тесты, документацию. Перечитывает своё так же строго, как чужое.

→ поддерживать

Живёт с последствиями

Чинит, ускоряет, упрощает. Хорошая система — та, которую не страшно менять через год.

02

Как он думает

Языки и фреймворки меняются каждые несколько лет. Способ мышления остаётся.

Декомпозиция split()

Любую сложную задачу можно разбить на простые. Если не получается — значит, задача ещё не понята.

Абстракция interface

Скрыть детали там, где они мешают, и показать там, где они важны. Хорошее имя стоит десятка комментариев.

Сомнение assert

«Работает у меня» — не доказательство. Проверить на краях, на пустом вводе, на сбое сети, на ошибке пользователя.

Простота delete

Лучший код — тот, который не пришлось писать. Удалить лишнее часто ценнее, чем добавить новое.

Программы пишутся для того, чтобы их читали люди, и лишь между делом — чтобы их исполняли машины.
— Абельсон и Сассман, «Структура и интерпретация компьютерных программ»
03

Мифы и реальность

Профессия обросла стереотипами. Большинство из них — про кино, а не про работу.

Программист весь день быстро печатает код.
Больше всего времени уходит на чтение, обдумывание и разговоры.
Нужно быть гением математики.
Нужны внимательность, терпение и умение раскладывать задачу на шаги.
Это работа в одиночку.
Почти любой софт — командная работа: ревью, обсуждения, договорённости.
Выучил язык — и готово.
Учиться приходится всю карьеру: меняются инструменты, задачи и сами пользователи.
04

Из чего состоит день

Примерно так — с поправкой на команду, проект и количество созвонов.

  1. Прочитать — задачи, чужой код, логи, вчерашние заметки.
  2. Подумать — на бумаге, на доске или гуляя вокруг стола.
  3. Написать — небольшими шагами, каждый можно проверить.
  4. Сломать — тестами, крайними случаями, странным вводом.
  5. Обсудить — ревью, вопросы, компромиссы с коллегами.
  6. Выкатить — и проследить, что в реальном мире всё работает так же, как на столе.