Программист-фанатик - [37]

Шрифт
Интервал

Насколько интересной ты мог бы сделать свою работу?

Во время самых ужасных провалов и сорванных сроков только пьянящее чувство восторга давало мне энергию и силы для результативной работы. Но почему без давления внешних факторов мы не в состоянии вызвать в себе это альтруистическое и в высшей степени продуктивное безумие? Насколько производительным ты мог бы стать, если бы сумел подойти к самым неинтересным и опостылевшим задачам с тем же лихорадочным желанием сделать все правильно?

Последний вопрос лучше переформулировать. Насколько интереснее стала бы твоя работа, если бы ты мог подойти к самым неинтересным и опостылевшим задачам с тем же лихорадочным желанием сделать все правильно? Когда нам интересно, мы лучше справляемся со своими обязанностями. А если интерес отсутствует, нам скучно, в результате страдает качество работы.

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

Для большинства технарей работа оказывается скучной по двум основным причинам. Во-первых, дело, которое нам нравится, заставляет напрягать мышцы нашей изобретательности. Разработка программного обеспечения является творческой деятельностью, и по этой причине многие из нас пришли в эту область. Работу, которая нам не нравится, мы практически никогда не можем назвать творческой. Обдумай это. Вспомни список своих рабочих дел на следующую неделю. Задания, выполнения которых ты предпочел бы избежать, скорее всего, не заставляют работать воображение. Это всего лишь рутина, которую ты с удовольствие перепоручил бы кому-то другому.

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

Так как же нам задействовать свой творческий потенциал и бросить вызов своим способностям в рутине будничных служебных обязанностей (которые у большинства из нас занимают более 80 % рабочего времени)?

А что, если попробовать делать рутинные дела идеально? К примеру, ты ненавидишь модульное тестирование. Ты обожаешь программирование, но чувствуешь раздражение, когда дело доходит до написания автоматизированных тестов. Что, если ты попробуешь сделать эти тесты идеальными? Как это повлияет на твое поведение? Что означает определение идеальный в случае модульного тестирования? Скорее всего, это связано с эффективностью теста. Идеальная эффективность означает, что ты протестировал функциональность своего кода на 100 %. Идеальные модульные тесты обычно свободны от ошибок, удобны в сопровождении и не зависят от множества сторонних факторов, которые может быть сложно воссоздать на другом компьютере. На новой машине они должны запускаться непосредственно после проверки версий. И разумеется, эти тесты должно проходить в 100 % случаев.

Задача начинает усложняться. 100-процентная эффективность теста звучит как практически нереальная вещь. Много сложностей представляет и разделение тестов, позволяющее избавить их от внешних зависимостей. Скорее всего, для обеспечения подобной возможности тебе придется править свой код. Но, справившись с этой задачей, ты получишь невероятный результат.

Не знаю, что подумаешь ты, но с моей точки зрения это звучит весьма увлекательно. Конечно, это искусственный пример, но аналогичным образом можно подойти к решению большинства встречающихся тебе задач. Попробуй сделать это завтра. Посмотри на свой рабочий день и задай себе вопрос: «Насколько хороша сегодняшняя работа?» Ты обнаружишь, что как только тебе начнет нравиться твоя работа, ты начнешь нравиться ей[14].

Действуй!

1. Сделай это наглядным. Преврати рутинные задачи в соревнование со своими коллегами. Кто может справиться с ними лучше? Не нравится писать модульные тесты? Распечатай набор требований к тестам для кода, проверка которого осуществляется каждый день, и повесь их перед собой на стену. Сделай доску оценок для всей группы. Соревнуйтесь за похвалу (или даже за призы). После завершения проекта можно сделать, например, так, чтобы остальные члены группы на неделю освободили победителя от рутинных обязанностей, взяв их на себя.

Совет 25

Сколько ты стоишь?

Ты когда-нибудь задумывался, сколько ты стоишь фирме, на которую работаешь? Разумеется, ты знаешь размер своей зарплаты. С этим все просто. А как насчет льгот, административных расходов, обучения и всех тех вещей, которые не входят в сумму заработной платы?

Очень легко привыкнуть все время


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


SQL: быстрое погружение

Что общего между самыми востребованными профессиями и стремительным увеличением количества информации в мире? Ответ: язык структурированных запросов (SQL). SQL — рабочая лошадка среди языков программирования, основа основ для современного анализа и управления данными. Книга «SQL: быстрое погружение» идеальна для всех, кто ищет новые перспективы карьерного роста; для разработчиков, которые хотят расширить свои навыки и знания в программировании; для любого человека, даже без опыта, кто хочет воспользоваться возможностями будущего, в котором будут править данные.


Чистый код. Создание, анализ и рефакторинг

Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.


Изучаем Python

Книга "Изучаем Python" - это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и многое другое). Хотите стать программистом? В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную "стрелялку" с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. Если вы решились разобраться в том что такое программирование, не нужно ждать.


Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

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