Это перевод статьи Work/Life Balance Will Make You a Better Software Engineer от Itamar Turner-Trauring.
- Новые проблемы, новые решения
- Получение разных навыков
- Вам нужен гамак, чтобы решать сложные проблемы
- Научиться делать больше с меньшими затратами
Очень хочется верить, что брать работу домой — верный путь превратиться в лучшего программиста, а здоровый баланс между работой и жизнью ограничит возможности узнавать новое.
- Для некоторых разработчиков программирование — это не просто работа — это удовольствие, а иногда даже смысл жизни. Если вам нравится писать код и вы этим зарабатываете на жизнь, почему бы не продолжать работу по выходным? Это позволит наработать больше необходимых практических навыков.
- Когда у вас нет мотивации или вы не можете работать в выходные из дома, у вас может появиться чувство, что вы никогда не станете таким же хорошим инженером, как те, кто это делает.
Но если вы хотите быть хорошим инженером-программистом, вы не должны брать работу домой.
Что делает программиста хорошим программистом? Умение находить решения для сложных, комплексных задач. Вот почему дополнительные часы обычной работы не помогут вам в этом.
Новые проблемы, новые решения
Если у вас есть возможности и мотивация писать софт в свободное время, вы можете написать больше кода для основной работы. Но это ограничит вас определенной задачей и сузит пространство возможных решений.
Если вы возьмете работу домой, в итоге вы будете решать те же задачи, которые обмозговываете на работе в течение недели. Вам нужно будет использовать технологии, соответствующие бизнес-целям вашего работодателя и его же стандарты качества. Но если вы возьмётесь за собственный проект, у вас не будет таких ограничений.
- Если у вашей компании низкие стандарты качества, вы можете научиться качественно тестировать.
- Или написать полноценные хаки, чтобы узнать что-то новое.
- Вы можете использовать и изучать абсолютно разные технологические области.
Я как-то написал профайлер Python Global Interpreter Lock, используя LD_PRELOAD
, чтобы переопределить взаимодействия процесса Python с блокировками операционной системы и отладчиком gdb
и посмотреть на C-стек реальной программы. Сколько бы он не запускался, ни разу не принёс достаточно пользы... но работа над ним была очень познавательной.
Читайте также: 4 совета, как подойти к работодателю и предложить ему оплачивать ваше обучение
Дополнительные навыки, которые вы получите, работая над разными проектами, профессионально усовершенствуют вас. Но даже если у вас нет времени или мотивации работать из дома, не бойтесь: баланс между работой и жизнью так же поможет вам совершенствоваться.
Получение разных навыков
Быть хорошим инженером-программистом — это не просто штамповать код. Вам нужны дополнительные навыки. Время, потраченное на выполнение каких-то других штук, кроме кода, может усовершенствовать ваши способности.
Когда я был моложе и у меня было больше свободного времени, я проводил вечера в университете, получая гуманитарное образование. Кроме того я научился писать: как находить уместные абстракции, как выстраивать доказательства, как объяснять сложные идеи, как извлекать важные детали из прочитанного мной текста. Это очень полезно при работе над более сложными задачами, когда соответствующие абстракции имеют решающее значение, а проектная документация обязательна.
Сейчас я провожу больше времени со своим ребенком и получаю дополнительный опыт, как косвенное воздействие. Например, чтобы объяснять мир 4-летнему ребенку, нужно уметь находить сложные концепции и упрощать их до базовых основ.
Вам нужен гамак, чтобы решать сложные проблемы
Хотя дополнительное обучение поможет вам, основа баланса между работой и жизнью — не работать. Непростые задачи требуют пауз — времени, когда вы явно не думаете о решениях, когда ваш мозг работает над ними в фоновом режиме. У Рича Хики, создателя Clojure, есть длинное выступление на эту тему, называется Hammock Driven Development.
Суть в том, что сложные задачи требуют глубокого анализа, альтернативных и уже существующих решений, формулировки, а потом идёт период, когда интуиция может самостоятельно разобраться. И это требует времени, когда мысли об этой задаче работают на фоне.
Иногда я сидел с ребенком в нерабочие часы. Я не настолько крут как Хики, а забота о младенце и немного повзрослевшем ребёнке была не такой беззаботной, как гамак. Но я все же заметил, что время, потраченное в отсутствие мыслей о работе, было полезным для решения сложных задач, к которым я возвращался на следующий день.
Научиться делать больше с меньшими затратами
Последним преимуществом баланса между работой и жизнью является мировоззрение: то, как вы относитесь к своей работе. Если вы добавляете дополнительные часы к своей обычной работе, вы приучаете себя к выполнению того же объёма задач медленнее, чем это необходимо. Чтобы стать лучше в работе, вам нужно научиться выполнять работу за более короткий срок, что особенно важно, если вы хотите брать более крупные и сложные проекты.
Стать более продуктивным программистом вам поможет эффективная и ограниченная рабочая неделя, а не попытки решать задачи сложным и медленным путём.
Перевод: Наталия Басс
От редактора: Мы на Хекслете часто публикуем переводы статей. Важно помнить:
- Мнение автора статьи может отличаться от мнения администрации и сотрудников Хекслета.
- Цель перевода – показать мнение. Поэтому одна статья может визуально противоречить другой: это просто разные мнения. Мы оставляем на вашу ответственность возможность анализировать и делать выводы для себя.