Найти тему

Принципы продуктивности программиста

Прочитал в одной книге забавную мысль:

Программисты составляют уникальное подмножество всех компьютерных пользователей

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

К сожалению, многие молодые программисты, воспитанные на смартфонах, вообще не знают, что такое командная строка. Может, конечно, им это и не надо. Ну тогда наверняка это надо их работодателям, потому что время программиста стоит всё дороже и дороже. И терять его впустую - непозволительная роскошь. А ведь командная строка действительно во многих случаях позволяет решить задачу быстрее!

Основные принципы продуктивности программиста можно назвать так:

  • Ускорение. Один делает работу на компьютере за 5 минут, другой - за час. Или за день. Или вообще не может сделать. Скорость работы на компьютере зависит очень сильно от использования клавиатуры: от скорости печати, от знания комбинаций клавиш и т.п. Например, у вас открыто 30 окон, и вам надо все их свернуть, чтобы увидеть рабочий стол (речь о Windows). Как вы это сделаете? Будете щелкать мышкой по каждому окну? Юзверь так и сделает. А программист, который ценит своё время, нажмёт только две клавиши WIN+M. К ускорению также относится навигация и поиск нужных сведений в Интернете. Если вы можете найти ответ на нужный вопрос секунд за 30, это намного лучше, когда ответ на тот же вопрос вы ищите два дня, а потом всё равно обращаетесь за помощью к более опытному человеку.
  • Сосредоточенность. Сильно убивает время многозадачность. Когда вы пытаетесь делать множество дел одновременно, когда вас отвлекают и т.п. Если вы хотите завершить разработку как можно быстрее, то вы должны быть сосредоточены только на ней. Лучше всего, если в ходе работы над проектом вы будете отвлекаться только на физиологические потребности (еда, сон…). Но это, конечно, невозможно. У каждого есть какие-то другие дела. Но всё равно к этому надо стремиться.
  • Автоматизация. Большинство задач, которые отнимают много времени, можно и нужно автоматизировать. Например, вам часто приходится писать HTML-код вручную: разбивать текст на абзацы, вставлять в него картинки, таблицы, ссылки и т.п. Это требует много времени, и особенно бесит, если вы программист, а не верстальщик. Здесь можно пойти тремя путями: 1) продолжать всё как раньше, мирясь с потерями времени и сил; 2) делегировать эту задачу (то есть нанять человека для не очень важных задач, чтобы сосредоточиться на главной цели); 3) один раз потратить время на создание программы, которая будет автоматизировать ваши действия (например, разбивать весь текст на абзацы по нажатию одной клавиши), и потом экономить время, наслаждаясь своим творением. Последний путь полезен вдвойне - вы не только ускоряете свою работу, но и создаёте продукт, который может пригодиться и другим.
  • Приведение к каноническому виду. Это просто другое название принципа DRY (Don’t Repeat Yourself – «не повторяйся»). Это принцип советует программистам находить места, где информация повторяется, и создавать единый источник этой информации, к которому можно обращаться по необходимости. Например, можно создать библиотеку функций или алгоритмов, которые вы наиболее часто используете в своих разработках.

Ну вот как-то так, если вкратце. По возможности буду раскрывать некоторые особенности продуктивности более подробно в следующих статьях.

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