Страдать На Работе Не Обязательно

На днях я посмотрел выступление Кейт Грегори на конференции Pacific++ 2018. Видео выступления Кейт — хороший программист и отличный оратор.

Сам доклад поднимает много интересного о программировании на C++ и программировании в целом (стоит посмотреть).

Но больше всего меня зацепила одна мысль, высказанная ею (буквально вскользь).

Катя смогла очень кратко и по существу изложить мотивацию программистов.

Звучало это так: «Программист стремится максимизировать свое счастье во время работы».

Звучит банально, но это так.

Можно сказать, что мы болеем за проект, заказчика, компанию, человечество и мир во всем мире (и это может быть даже правдой).

Но давайте будем честными.

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

.

Да, мы делаем это, и было бы хорошо разобраться, что делает нас счастливее, а что менее счастливыми.

Это позволит нам лучше понимать наших коллег, подчиненных и самих себя.

Я бы хотел сразу оставить в стороне вопросы заработной платы, условий труда, руководства, кадров и прочего.

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



Тесты

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

Могу с уверенностью сказать, что программисты в проектах с хорошим тестовым покрытием в среднем счастливее, чем в проектах вообще без тестов.

Я даже видел программистов, которым начальство не давало разрешения на написание полноценных тестов и писало их тайно (иногда даже в нерабочее время).

Почему это случилось? Письменный тест делает программиста счастливее.

Само его существование уже является признаком того, что хоть что-то в вашем проекте сделано в соответствии с лучшими практиками отрасли (даже если остальное — нет).

Успешно пройденный тест показывает красивую зеленую галочку и хвалит программиста (и, возможно, его больше никто не похвалит).

Успешное прохождение 100% испытаний дает нам некую устойчивую почву под ногами, когда мы уже можем во что-то верить – это добавляет нам уверенности в сегодняшнем и завтрашнем дне, делает нас счастливее.

И даже проваленный тест делает свое дело — говорит нам, что мы написали его не просто так, и хвалит нас за дальновидность.

Если вы хотите сделать программиста счастливее, разрешите ему (или даже заставьте) писать тесты (конечно, все хорошо в меру).



Исправление ошибок и разработка нового функционала

«За всю Одессу не скажу», но большинству программистов, которых я встречал в жизни, больше нравилось писать новый функционал, чем исправлять ошибку в устаревшем коде.

И почему? А потому, что прикоснуться к жуку – это прикоснуться к чужой беде.

У кого-то что-то пошло не так и это было настолько важно, что он не поленился передать свое горе вплоть до разработчика.

Вам придется поставить себя на его место и попытаться воспроизвести это.

И тогда либо удастся воспроизвести - и будет удар по самолюбию из-за бага, либо не получится и придется (о боже, нет!) обращаться к живому человеку, обнаружившему проблему.

и постарайтесь получить больше информации.

Все это нельзя назвать приятным.

В то же время написание нового функционала — потенциальное счастье.

Мы пока ничего не нарушили, ни в чем не виноваты.

Мы пишем новый код для решения новых проблем.

Возможно, это удастся.

Возможно, мы получим заслуженную похвалу (премию, повышение по службе).

Это уже ближе к верхним уровням пирамиды потребностей человека.

по Маслоу .

Какой из этого вывод? Работа программиста должна быть сбалансированной; не должно быть только одного исправления ошибки.

Каждому программисту время от времени необходимо поручать разработку новых функций.

Да, от исправления ошибок никуда не деться, но можно хотя бы попытаться добиться в этом вопросе «примерно нулевого» баланса счастья и несчастья.



Рефакторинг

Работать с хорошим кодом одно удовольствие.

К сожалению, хороший код не падает с неба.

Даже невозможно взять и написать с первого раза.

Нам приходится делать хороший код из плохого кода, потому что больше его делать не из чего.

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

Во втором случае часто приходится бороться с руководством, которое не понимает, на что можно было бы потратить эти N часов времени, если бы в продукт не добавлялось новых функций и не были исправлены старые ошибки.

Да, нам придется сражаться.

К счастью, в этой войне у нас есть аргументы: лаконичный и красивый код менее подвержен ошибкам, его поддержка занимает меньше времени (и стоит меньше денег), он более поддается изменениям при возникновении новых требований бизнеса и т. д. Кроме того, это война, как правило, длится недолго: она заканчивается каким-то компромиссом типа «нет, я не дам вам месяц на рефакторинг, но давайте выделим на него 2 часа в неделю по пятницам».

Ладно это хорошо.

Мы только что получили себе кусочек счастья.

Да, его еще придется строить своими руками, но это уже стало возможным.



Использование современных библиотек и инструментов

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

Что мы можем сделать? Ну, прежде всего, нам нужно признаться себе, что обстоятельства складываются не в нашу пользу и ситуация делает нас более несчастными, чем мы могли бы быть.

Во-вторых, ту же мысль можно озвучить и начальству (или заказчику).

Вряд ли кто-то с этим будет спорить.

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

(Возможно также повышение зарплаты, но в начале статьи я обещал не учитывать это).

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

Реальная ситуация из моей жизни:

— Мы не уверены, что переход на новую библиотеку не принесет нам новых проблем.

— Но я написал 200 тестов для кода с использованием этой библиотеки, попробуем их запустить.

- Хм, давай.

Через 2 недели — новая библиотека в производстве.

Вероятно, мы сможем продолжить изучение других аспектов.

Но общая идея одна: одни задачи и обстоятельства делают программиста счастливее, другие — несчастнее.

Если последних будет больше, чем первых, настроение и продуктивность программиста снизятся, рано или поздно это приведет к проблемам в проекте или к его уходу из команды.

Поэтому и сам программист, и его руководитель должны думать не только о «глобальном благе» проекта, компании или пользователя, но и о том, как разработчик может оставаться относительно счастливым.

Иначе какой в этом смысл? Теги: #программирование #Лайфхаки для гиков #управление персоналом #Идеальный код #счастье

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.