Учитесь быстро печатать

Среди программистов есть такой холивар: нужно ли уметь печатать “вслепую” или нет. Крутые перцы говорят, что нужно учиться всему, в том числе и быстрому набору текста. Другие же говорят, что это ничего не дает, т.к. больше времени уходит на обдумывание что нужно писать, соответственно этот навык бесполезен. В этой статье я поделюсь своим опытом.

За последний год я написал больше документации, чем за всю предыдущую карьеру. Это было не из-за того, что я не умел быстро печатать. Просто не было привычки описывать свою работу. Мотивация писать документацию пришла из вполне понятного источника: у меня много проектов на github’е (на данный момент 99). Многие проекты очень экспериментальные или одноразовые (как например презентации к докладам) и лежат там для архива. Но часть проектов хотелось бы поддерживать как open-source.

За последние годы, я начал различать публичные исходные коды и open-source. Грубо говоря, не достаточно держать проект на github’е. Чтобы разработка была открыта должны быть 2 вещи: пользователи и другие разработчики. Чтобы проект был кому-то нужен обязательно нужна документация. Это является необходимым условием в 99⅞ процентов случаев (но не достаточным, но это другая тема)

Так вот, как вы уже поняли, я начал писать документацию для open-source проектов. И уже практически автоматически начал увеличивать количество документации в корпоративных проектах тоже. Это полезно само по себе, если ты готов эту документацию поддерживать.

В какой-то момент случается переломный момент:

  1. Тебе одинаково быстро написать документацию, как и объяснить словами, голосом.
  2. Ты можешь зайти и поправить документацию, пока объясняешь человеку что ты имел ввиду, или пока вы обсуждаете верна она или нет.
  3. Ты можешь записать мысль текстом, в процессе обдумывания дизайна системы, и при этом не переключиться, не потерять цепочку размышлений.

И это всё меняет. Теперь тебе не сложно поддерживать документацию. Теперь ты часто можешь писать документацию перед тем как писать код, просто потому что ты же обдумываешь дизайн твоего API перед этим, правильно?

Теперь документация не требует у тебя усилий и времени, т.к. это просто часть обдумывания того как писать код.

Чтобы это всё работало, естественно, нужно не только быстро набирать тексты. Нужно еще:

  1. Хорошо владеть текстовым редактором и чтобы он не тормозил
  2. Иметь документацию под рукой (по-этому и из-за №1 писать в wiki документацию невозможно)
  3. Документация должна сама собираться после commit’а и этот процесс легко повторить руками
  4. Нужно уметь формулировать мысли
  5. Нужно более-менее грамотно писать на языке, на котором собираешься писать документацию

Но в целом пункты 1–3 решаются легко и быстро. 4–5  —  не легко и не быстро, но этому можно и стоит научиться. И скорость набора текстов на клавиатуре является не более и не менее чем предпосылкой. Необходимым но не достаточным условием.

И всё же необходимым. 

Позволю себе несколько советов для новичков:

  • Обучитесь слепому печатанью с помощью любой доступной вам программы, даже если это вас прямо сейчас затормозит
  • Меньше копипастите, даже если вам кажется это оправдано
  • Освойте любой редактор, который позволит вам никогда не использовать мышку при работе с текстом
  • Описывайте дизайн решений, в которых вы не уверены, перед тем как советоваться с другими. Скорее всего этот текст никто не прочтёт, но у вас получится сформулировать свои мысли яснее при устном разговоре
  • Шлите pull request'ы на документацию когда изучаете что-то, автору будет приятно, и следующему пользователю будет легче читать

И наоборот, если вы написали документацию, которую как вам кажется всё-равно никто не читает. Так часто кажется. У меня есть такие наблюдения:

  • Часто текст не понятен, или структрурирован не правильно
  • Люди просто не ожидали что документация актуальная, и что там это написано
  • Если вам приходится тыкать пальцем в конкретные места в документации, это всё-равно быстрее, чем объяснять на пальцах

В общем, как бы банально это не звучало, если вам всё еще задают вопросы, это не значит, что вы зря писали документацию. Это значит две вещи: что объяснение для вас будет проще и что вам еще есть куда стремиться в этом искустве.

Ну и конечно же любая статья будет не полной если не упомянуть микро-сервисы. Конечно же каждый микро-сервис нужно будет документировать, потому что иначе с ним работать не возможно.

Готовьтесь. Учитесь быстро печатать. Самосовершенствуйтесь.

Пишите о своём опыте в комментариях.

Paul Colomiets

Read more posts by this author.