Существует большое количество хороших ресурсов, посвященных развитию технических навыков грамотного программирования. Однако всего несколько из них дают представление о знаниях, которые приходят лишь с опытом. В этом материале мы собрали советы, которые помогут повысить вашу продуктивность, позволят лучше работать и быстрее думать в процессе разработки.
/ фото hackNY.org CC
Любой, кто серьезно подходит к своей работе в сфере программного обеспечения (да и в любой другой), должен заботиться о своем организме. Как сказал Кен Робинсон (Ken Robinson), советник по вопросам развития творческого мышления, люди тратят слишком много времени на бытовые вопросы, потому не уделяют внимание здоровью. Проецируя мнение Кена на сферу разработки ПО, Ливио Де Ла Крус (Livio De La Cruz), бывший сотрудник Microsoft, а ныне фрилансер и программист Unity3D, говорит, что программисты недооценивают то влияние, которое оказывает их физическое состояние на производительность работы.
Программирование – это труд, который требует концентрации и энергии, а откуда им взяться, если разработчик регулярно недосыпает или плохо питается. Чтобы поддерживать работоспособность на высоком уровне и ясно и быстро мыслить, старайтесь придерживаться режима (никакой необходимости в жесточайшей дисциплине тут, конечно, нет – но отсутствие какого бы то ни было распорядка вообще может здорово подорвать ваши силы).
Разработчики нередко работают в «неурочное время» – поздно вечером или ночью. Если это не вынужденная мера, когда речь идет о третьей подработке, которую в другое время выполнять совершенно невозможно, все-таки постарайтесь перенести основной объем работы на «светлые часы».
Помимо сна, стоит (как это ни банально) помнить о питании. Не стоит недооценивать силу завтрака – он обеспечивает тело топливом и активизирует организм после сна. Без завтрака вы словно автомобиль без топлива – никуда не уедете. Утренний прием пищи позволяет восстановить уровень глюкозы, необходимой для функционирования мозга. Согласно проведенным исследованиям, люди, которые завтракают, менее подвержены стрессу, более счастливы и обладают лучшей памятью и концентрацией, по сравнению с теми, кто этот прием пищи пропускает.
Что касается более позднего времени дня, то врачи-диетологи советуют есть примерно каждые три часа (плюс-минус в зависимости от вашего ритма жизни). При таком подходе уровень сахара в крови поддерживается на нормальном уровне, и вы не будете чувствовать сонливость, что непременно добавит продуктивности. Регулярные приемы пищи не только обеспечивают вас энергией для решения важных проблем, но и помогают поддерживать хорошее настроение. Поэтому тем, кто в пылу работы забывает о голоде, специалисты советуют даже выставлять будильник, чтобы не пропускать обеденное время.
Также стоит пару слов сказать о воде. Специалисты из Университета Восточного Лондона и Университета Вестминстера в Великобритании провели исследование и проанализировали потенциальные эффекты, оказываемые водой на когнитивные функции и настроение человека. Им удалось установить, что питьевая вода повышает производительность нашего мозга.
По словам доктора Кэролайн Эдмондс (Caroline Edmonds), ведущего автора исследования, прием стакана воды перед выполнением интеллектуальной деятельности позволяет ускорить работу мозга на 14%. Ученые также подчеркивают, что питьевая вода улучшает настроение. Когда участники эксперимента были обезвожены, то казались напряженными и грустными. В связи с этим многие советуют держать у себя на столе бутылку простой воды – в отличие от чая, кофе или соков она не оказывает никаких негативных воздействий на здоровье.
Люди часто планируют распорядок рабочего дня так, словно будут работать одинаково хорошо на всем его протяжении. Однако нужно учитывать энергетические запасы организма, которые определяют, как долго ваша продуктивность будет оставаться на высоком уровне.
Точно так же как бегун устает за время марафона, ваша концентрация будет снижаться во время непрерывной работы. Один из резидентов платформы Stack Exchange отмечает, что за 8-часовой рабочий день стоит брать минимум два перерыва по 15 минут и один большой обеденный брейк на час. Короткие паузы в течение рабочего дня стимулируют вашу мыслительную активность: когда вы знаете, что впереди вас ждет небольшой отдых, работать становится гораздо легче.
Хорошим вариантом будет работа по таймерам, которые бы сообщали вам о том, что пора сделать перерыв. Кратковременный отдых зарядит вас энергией и даст новые силы для решения текущих проблем. Пользователь социального сервиса Quora Паллави Гош (Pallavi Ghosh) говорит, что отлично взбодриться во время отдыха ей помогает даже минимальная физическая активность: встать из-за компьютера, прогуляться, «встряхнуть» засидевшееся тело. Неплохо будет уделить внимание зарядке для глаз, чтобы они также немного расслабились.
Во время перерыва полезно концентрироваться на вещах, не связанных с работой (это помогает использовать перерыв с максимальной эффективностью – и возвращаться к рабочему месту с новыми силами). Если все же ваши мысли не хотят уходить далеко от тематики программирования, то стоит обратить внимание на различные головоломки и игры для разработчиков. Несколько вариантов предложили пользователи Reddit.
Предыдущий пункт был о том, как отвлечься от работы, теперь поговорим о том, как к ней вернуться. Войти в зону концентрации помогает глубокое дыхание. Представьте, что вы тяжелоатлет, который собирается поднять большой вес. Интересный способ возврата в «рабочее состояние» за 7 минут предлагает автор «Лайфхакера» Лера Мерзлякова, узнать о нем подробнее вы можете по ссылке.
Также вернуться к делам могут помочь и привычки – если во время написания кода вы любите крутить что-то в руках, то просто начните это делать, а мозг автоматически перестроится и направит мысли в нужное русло.
Для меломанов хорошей новостью станет то, что раскачать и настроить себя на активные действия помогает энергичная музыка – правда, настроившись на рабочий лад, лучше переключиться на что-то более спокойное или поработать в тишине. Это позволит избежать появления иллюзии многозадачности – попытка выполнения нескольких задач сразу (а вдумчивое прослушивание сложных, динамичных композиций – не такая уж простая задача для вашего мозга) в процессе работы снижает уровень вашей концентрации.
Когда вы заставляете себя работать лишь строго определенное количество времени, то начинаете делать больше. Зная, что у вас есть время закончить задачу вечером, вы прокрастинируете и откладываете дела на потом. Если время ограничено – вы используете каждый отведенный час по максимуму. Есть много историй, когда люди, работавшие сверхурочно, начинали работать меньшее количество часов, чтобы проводить вечер со своей семьей, но, к их удивлению, их продуктивность только повышалась.
Если по каким-то причинам вы все равно выбиваетесь из графика, то, возможно, вам следует обратить внимание на практики тайм-менеджмента. Хорошую серию советов по управлению временем привел Оливер Эмбертон (Oliver Emberton), программист и основатель Silktide. Много интересных вещей на схожую тематику есть в его блоге.
Маленькие записки не дадут забыть что-то важное и просто помогут организовать собственные идеи. Поскольку это занятие очень личное, то стоит поэкспериментировать с различными специализированными инструментами. Пользователи Reddit в качестве лучших приложений для организации рабочего дня приводят Evernote, Onenote и TheBrain.
Хороший программист должен знать пределы собственной памяти: худшее в идеях то, что вы даже не замечаете, как они исчезают из вашей головы. Как писал Джесси Шелл (Jesse Schell), аналитик и исполнительный директор студии Schell Games, в книге The Art of Game Design.
Один из простых способов потратить время впустую – это «с места в карьер» приступить к реализации задачи. Первое решение, которое приходит в голову, зачастую оказывается не самым лучшим. Более того, в процессе размышлений вы можете прийти к выводу, что проблема, решить которую вы так рвались, вовсе и не проблема, и тратить на неё время необязательно. Об этой способности нашего мозга действовать быстро и нерационально пишет психолог Даниел Канеман (Daniel Kahneman) в своей книге Thinking, Fast and Slow.
Специалисты, которые «варятся» в области разработки какое-то время, отмечают, что следует сперва изучить плюсы и минусы различных подходов, а затем выбирать из них тот, который больше всего соответствует конкретной ситуации. Стоит оценить, какое решение будет самым надежным, какое – самым простым и так далее, то есть просмотреть несколько возможных альтернатив. Также имеет смысл нарисовать небольшие схемы, которые бы поясняли достоинства и недостатки каждого рассматриваемого способа (вы же носите с собой блокнотик для записи идей?).
Если вы решили воспользоваться возможностями неизвестного фреймворка, стоит заранее прикинуть, насколько сложно будет его изучить. Задайте себе вопрос, стоит ли результат потраченного времени? Также спросите себя, будет ли легко поддерживать этот код? На эту тему хороший материал написал программист и блогер Егор Бугаенко. Можете посмотреть его статью Nine Steps to Start a Software Project.
Многие согласятся, что решение, которое наиболее эффективно использует ресурсы, иногда не стоит того, чтобы тратить на него драгоценное время – бывает достаточно просто «склепать» приложение, делающее нужную работу.
Если вы просто хотите проверить функцию на «жизнеспособность», то нет смысла сразу реализовывать её от и до. Отполируете все потом, если новая «фича» придется вам (или кому-то еще) по вкусу. Знание того, когда можно «срезать» путь и выполнить задачу побыстрее, пожертвовав некоторыми функциями, – это сложный навык, который стоит освоить. Он требует четкого понимания того, над чем вы в данный момент работаете, но позволит сэкономить достаточно большое количество драгоценного времени.
Сильное влияние на ваши навыки программирования оказывает умение искать и исправлять ошибки. При этом на скорость исправления багов влияет сразу несколько факторов, например, опыт, способность оставаться спокойным в сложных ситуациях, понимание используемых технологий и так далее.
Отладка является важной частью процесса разработки программного обеспечения, потому необходимо закладывать на неё дополнительное время в своем расписании. Стоит делать это даже в том случае, если вы на 100% уверены в реализации той или иной задачи, ведь в любой ситуации могут возникнуть непредвиденные сложности, вызванные не по вашей вине.
Хорошим навыком является и умение предугадывать появление багов и обходить их стороной до того, как они все испортят. Практически каждый программист имеет привычку спрашивать самого себя: «Что случится, если…?». Вам нужно лишь сделать еще один шаг вперед и продумать далеко идущие последствия.
Работать в «грязном» коде – это все равно что жить в бардаке. Вы постоянно спотыкаетесь о разбросанные вещи, а вон та куча носков неплохо «попахивает». Важно понимать, что беспорядок – это естественный побочный процесс программирования, но точно так же, как вы убираетесь на кухне после готовки, стоит приводить в порядок код после реализации нескольких функций.
«Чистый» код – это отформатированный код, в котором нет «мусора», а функции располагаются в логичных местах. По этим причинам качественный рефакторинг может потребовать от вас изменения структуры кода и переработки зависимостей классов. Также стоит уделить внимание комментариям, поскольку они имеют свойство устаревать.
Рефакторинг дает полезный побочный эффект. Читая и реорганизуя код, вы начинаете лучше его понимать. Когда вы помните, что где лежит и что делает, искать ошибки становится гораздо проще. Эллиот Ченс (Elliot Chance), инженер в Kounta, добавляет, что будет хорошо, если вы приучите себя сразу писать простой код. Чем больше строчек вы напишете, тем «ленивее» будет программа. Неплохо будет потратить немного времени, но найти более простое и элегантное решение.
Исследуя сайты и форумы по программированию, вы покажете себя и поучитесь у других – это хороший способ вспомнить давно забытые темы, функции, приемы. Так, вы можете получить знания в вопросе, с которым самостоятельно, возможно, никогда и не столкнулись бы. Доподлинно известно, что при ответе на вопрос в первую очередь выигрывает сам отвечающий.
Также читайте блоги, желательно почаще. Резидент Quora и инженер Алекс Камил (Alex Kamil) приводит исчерпывающий список интересных блогов, возможно, вам стоит его изучить [еще один список есть на GitHub]. Из самых известных ресурсов стоит выделить Coding Horror и Joel on Software. Из русскоязычных – Хабр, конечно.
/ фото hackNY.org CC
Про важное и банальное: еда, сон, их количество и качество
Любой, кто серьезно подходит к своей работе в сфере программного обеспечения (да и в любой другой), должен заботиться о своем организме. Как сказал Кен Робинсон (Ken Robinson), советник по вопросам развития творческого мышления, люди тратят слишком много времени на бытовые вопросы, потому не уделяют внимание здоровью. Проецируя мнение Кена на сферу разработки ПО, Ливио Де Ла Крус (Livio De La Cruz), бывший сотрудник Microsoft, а ныне фрилансер и программист Unity3D, говорит, что программисты недооценивают то влияние, которое оказывает их физическое состояние на производительность работы.
Программирование – это труд, который требует концентрации и энергии, а откуда им взяться, если разработчик регулярно недосыпает или плохо питается. Чтобы поддерживать работоспособность на высоком уровне и ясно и быстро мыслить, старайтесь придерживаться режима (никакой необходимости в жесточайшей дисциплине тут, конечно, нет – но отсутствие какого бы то ни было распорядка вообще может здорово подорвать ваши силы).
Разработчики нередко работают в «неурочное время» – поздно вечером или ночью. Если это не вынужденная мера, когда речь идет о третьей подработке, которую в другое время выполнять совершенно невозможно, все-таки постарайтесь перенести основной объем работы на «светлые часы».
Помимо сна, стоит (как это ни банально) помнить о питании. Не стоит недооценивать силу завтрака – он обеспечивает тело топливом и активизирует организм после сна. Без завтрака вы словно автомобиль без топлива – никуда не уедете. Утренний прием пищи позволяет восстановить уровень глюкозы, необходимой для функционирования мозга. Согласно проведенным исследованиям, люди, которые завтракают, менее подвержены стрессу, более счастливы и обладают лучшей памятью и концентрацией, по сравнению с теми, кто этот прием пищи пропускает.
Что касается более позднего времени дня, то врачи-диетологи советуют есть примерно каждые три часа (плюс-минус в зависимости от вашего ритма жизни). При таком подходе уровень сахара в крови поддерживается на нормальном уровне, и вы не будете чувствовать сонливость, что непременно добавит продуктивности. Регулярные приемы пищи не только обеспечивают вас энергией для решения важных проблем, но и помогают поддерживать хорошее настроение. Поэтому тем, кто в пылу работы забывает о голоде, специалисты советуют даже выставлять будильник, чтобы не пропускать обеденное время.
Также стоит пару слов сказать о воде. Специалисты из Университета Восточного Лондона и Университета Вестминстера в Великобритании провели исследование и проанализировали потенциальные эффекты, оказываемые водой на когнитивные функции и настроение человека. Им удалось установить, что питьевая вода повышает производительность нашего мозга.
По словам доктора Кэролайн Эдмондс (Caroline Edmonds), ведущего автора исследования, прием стакана воды перед выполнением интеллектуальной деятельности позволяет ускорить работу мозга на 14%. Ученые также подчеркивают, что питьевая вода улучшает настроение. Когда участники эксперимента были обезвожены, то казались напряженными и грустными. В связи с этим многие советуют держать у себя на столе бутылку простой воды – в отличие от чая, кофе или соков она не оказывает никаких негативных воздействий на здоровье.
Про планирование: делайте перерывы
Люди часто планируют распорядок рабочего дня так, словно будут работать одинаково хорошо на всем его протяжении. Однако нужно учитывать энергетические запасы организма, которые определяют, как долго ваша продуктивность будет оставаться на высоком уровне.
Точно так же как бегун устает за время марафона, ваша концентрация будет снижаться во время непрерывной работы. Один из резидентов платформы Stack Exchange отмечает, что за 8-часовой рабочий день стоит брать минимум два перерыва по 15 минут и один большой обеденный брейк на час. Короткие паузы в течение рабочего дня стимулируют вашу мыслительную активность: когда вы знаете, что впереди вас ждет небольшой отдых, работать становится гораздо легче.
Хорошим вариантом будет работа по таймерам, которые бы сообщали вам о том, что пора сделать перерыв. Кратковременный отдых зарядит вас энергией и даст новые силы для решения текущих проблем. Пользователь социального сервиса Quora Паллави Гош (Pallavi Ghosh) говорит, что отлично взбодриться во время отдыха ей помогает даже минимальная физическая активность: встать из-за компьютера, прогуляться, «встряхнуть» засидевшееся тело. Неплохо будет уделить внимание зарядке для глаз, чтобы они также немного расслабились.
Во время перерыва полезно концентрироваться на вещах, не связанных с работой (это помогает использовать перерыв с максимальной эффективностью – и возвращаться к рабочему месту с новыми силами). Если все же ваши мысли не хотят уходить далеко от тематики программирования, то стоит обратить внимание на различные головоломки и игры для разработчиков. Несколько вариантов предложили пользователи Reddit.
Про мотивацию: научитесь настраивать себя на работу
Предыдущий пункт был о том, как отвлечься от работы, теперь поговорим о том, как к ней вернуться. Войти в зону концентрации помогает глубокое дыхание. Представьте, что вы тяжелоатлет, который собирается поднять большой вес. Интересный способ возврата в «рабочее состояние» за 7 минут предлагает автор «Лайфхакера» Лера Мерзлякова, узнать о нем подробнее вы можете по ссылке.
Также вернуться к делам могут помочь и привычки – если во время написания кода вы любите крутить что-то в руках, то просто начните это делать, а мозг автоматически перестроится и направит мысли в нужное русло.
Для меломанов хорошей новостью станет то, что раскачать и настроить себя на активные действия помогает энергичная музыка – правда, настроившись на рабочий лад, лучше переключиться на что-то более спокойное или поработать в тишине. Это позволит избежать появления иллюзии многозадачности – попытка выполнения нескольких задач сразу (а вдумчивое прослушивание сложных, динамичных композиций – не такая уж простая задача для вашего мозга) в процессе работы снижает уровень вашей концентрации.
Про ограничения: не работайте больше 8 часов в день
Когда вы заставляете себя работать лишь строго определенное количество времени, то начинаете делать больше. Зная, что у вас есть время закончить задачу вечером, вы прокрастинируете и откладываете дела на потом. Если время ограничено – вы используете каждый отведенный час по максимуму. Есть много историй, когда люди, работавшие сверхурочно, начинали работать меньшее количество часов, чтобы проводить вечер со своей семьей, но, к их удивлению, их продуктивность только повышалась.
Если по каким-то причинам вы все равно выбиваетесь из графика, то, возможно, вам следует обратить внимание на практики тайм-менеджмента. Хорошую серию советов по управлению временем привел Оливер Эмбертон (Oliver Emberton), программист и основатель Silktide. Много интересных вещей на схожую тематику есть в его блоге.
Про порядок: записывайте идеи, делайте заметки
Маленькие записки не дадут забыть что-то важное и просто помогут организовать собственные идеи. Поскольку это занятие очень личное, то стоит поэкспериментировать с различными специализированными инструментами. Пользователи Reddit в качестве лучших приложений для организации рабочего дня приводят Evernote, Onenote и TheBrain.
Хороший программист должен знать пределы собственной памяти: худшее в идеях то, что вы даже не замечаете, как они исчезают из вашей головы. Как писал Джесси Шелл (Jesse Schell), аналитик и исполнительный директор студии Schell Games, в книге The Art of Game Design.
Про вовлеченность: задумайтесь о том, что вы делаете
Один из простых способов потратить время впустую – это «с места в карьер» приступить к реализации задачи. Первое решение, которое приходит в голову, зачастую оказывается не самым лучшим. Более того, в процессе размышлений вы можете прийти к выводу, что проблема, решить которую вы так рвались, вовсе и не проблема, и тратить на неё время необязательно. Об этой способности нашего мозга действовать быстро и нерационально пишет психолог Даниел Канеман (Daniel Kahneman) в своей книге Thinking, Fast and Slow.
Специалисты, которые «варятся» в области разработки какое-то время, отмечают, что следует сперва изучить плюсы и минусы различных подходов, а затем выбирать из них тот, который больше всего соответствует конкретной ситуации. Стоит оценить, какое решение будет самым надежным, какое – самым простым и так далее, то есть просмотреть несколько возможных альтернатив. Также имеет смысл нарисовать небольшие схемы, которые бы поясняли достоинства и недостатки каждого рассматриваемого способа (вы же носите с собой блокнотик для записи идей?).
Если вы решили воспользоваться возможностями неизвестного фреймворка, стоит заранее прикинуть, насколько сложно будет его изучить. Задайте себе вопрос, стоит ли результат потраченного времени? Также спросите себя, будет ли легко поддерживать этот код? На эту тему хороший материал написал программист и блогер Егор Бугаенко. Можете посмотреть его статью Nine Steps to Start a Software Project.
Про короткие маршруты: знайте, когда можно срезать путь
Многие согласятся, что решение, которое наиболее эффективно использует ресурсы, иногда не стоит того, чтобы тратить на него драгоценное время – бывает достаточно просто «склепать» приложение, делающее нужную работу.
Если вы просто хотите проверить функцию на «жизнеспособность», то нет смысла сразу реализовывать её от и до. Отполируете все потом, если новая «фича» придется вам (или кому-то еще) по вкусу. Знание того, когда можно «срезать» путь и выполнить задачу побыстрее, пожертвовав некоторыми функциями, – это сложный навык, который стоит освоить. Он требует четкого понимания того, над чем вы в данный момент работаете, но позволит сэкономить достаточно большое количество драгоценного времени.
Про дальновидность: освойте искусство отладки
Сильное влияние на ваши навыки программирования оказывает умение искать и исправлять ошибки. При этом на скорость исправления багов влияет сразу несколько факторов, например, опыт, способность оставаться спокойным в сложных ситуациях, понимание используемых технологий и так далее.
Отладка является важной частью процесса разработки программного обеспечения, потому необходимо закладывать на неё дополнительное время в своем расписании. Стоит делать это даже в том случае, если вы на 100% уверены в реализации той или иной задачи, ведь в любой ситуации могут возникнуть непредвиденные сложности, вызванные не по вашей вине.
Хорошим навыком является и умение предугадывать появление багов и обходить их стороной до того, как они все испортят. Практически каждый программист имеет привычку спрашивать самого себя: «Что случится, если…?». Вам нужно лишь сделать еще один шаг вперед и продумать далеко идущие последствия.
Снова про порядок: выделяйте время на «очистку кода»
Работать в «грязном» коде – это все равно что жить в бардаке. Вы постоянно спотыкаетесь о разбросанные вещи, а вон та куча носков неплохо «попахивает». Важно понимать, что беспорядок – это естественный побочный процесс программирования, но точно так же, как вы убираетесь на кухне после готовки, стоит приводить в порядок код после реализации нескольких функций.
«Чистый» код – это отформатированный код, в котором нет «мусора», а функции располагаются в логичных местах. По этим причинам качественный рефакторинг может потребовать от вас изменения структуры кода и переработки зависимостей классов. Также стоит уделить внимание комментариям, поскольку они имеют свойство устаревать.
Рефакторинг дает полезный побочный эффект. Читая и реорганизуя код, вы начинаете лучше его понимать. Когда вы помните, что где лежит и что делает, искать ошибки становится гораздо проще. Эллиот Ченс (Elliot Chance), инженер в Kounta, добавляет, что будет хорошо, если вы приучите себя сразу писать простой код. Чем больше строчек вы напишете, тем «ленивее» будет программа. Неплохо будет потратить немного времени, но найти более простое и элегантное решение.
Про обмен опытом: читайте блоги и форумы по программированию
Исследуя сайты и форумы по программированию, вы покажете себя и поучитесь у других – это хороший способ вспомнить давно забытые темы, функции, приемы. Так, вы можете получить знания в вопросе, с которым самостоятельно, возможно, никогда и не столкнулись бы. Доподлинно известно, что при ответе на вопрос в первую очередь выигрывает сам отвечающий.
Также читайте блоги, желательно почаще. Резидент Quora и инженер Алекс Камил (Alex Kamil) приводит исчерпывающий список интересных блогов, возможно, вам стоит его изучить [еще один список есть на GitHub]. Из самых известных ресурсов стоит выделить Coding Horror и Joel on Software. Из русскоязычных – Хабр, конечно.
Only registered users can participate in poll. Log in, please.
Подведем небольшое резюме. Что из вышесказанного у вас пока не получается делать так, чтобы действительно быть продуктивным?
55.35% Хорошо питаться и соблюдать режим300
40.59% Брать пятнадцатиминутные перерывы220
45.39% Уметь настраивать себя на активную работу246
37.64% Не работать больше 8 часов в день204
38.19% Не бросаться решать задачу сходу207
40.22% Записывать идеи218
31% Знать, когда можно «срезать»168
32.29% Предугадывать появление ошибок175
33.95% «Чистить» код184
23.43% Читать блоги и форумы по программированию127
542 users voted. 205 users abstained.