Привет Хабр! Зачастую разработчика нанимают для того, чтобы он как профессионал решал проблемы бизнеса. Но иногда ко мнению разработчиков по вопросам, в которых они более компетентны, чем представители бизнеса, не прислушиваются. О том, что с этим можно сделать и зачем это нужно разработчику, я и хотел бы поговорить.
Счастье и удволетворенность работой
Счастье — понятие сложное и крайне субъективное. Но я считаю, что счастье коррелирует с получением удовольствия от своей работы. В этой статье я хотел бы поговорить о возможной путеводной звезде к получению удовольствия от работы разработчика ПО — это быть профессионалом. Под этим я подразумеваю не только обладание навыками для решения проблем, но и реальную возможность применить эти навыки, полностью раскрыв их потенциал.
В мире разработки ПО (software development) есть ряд препятствий, которые не позволяют воспользоваться этим путем к получению удовольствия от работы. Например, разработчик, как профессионал своего дела, может считать, что поддерживаемость системы, проработанная архитектура и правильная организация процессов делают систему более устойчивой к изменениям, тем самым позволяя быстрее разрабатывать новую функциональность и адаптироваться под меняющийся рынок — прямая польза для бизнеса. Но представители бизнеса могут считать это ненужной тратой ресурса времени разработчиков.
В чем проблема?
Проблема в том, что бизнес не всегда знает, что для него лучше. Представители бизнеса — менеджеры, специалисты по продукту, аналитики и многие другие профессионалы намного лучше разработчика умеют отвечать на вопрос «что делать?» (произведение Н. Чернышевского не имеет к этому никакого отношения). Но никто не обладает большей экспертизой в разработке ПО чем разработчики (а также архитекторы, технические менеджеры и другие специалисты обладающие знаниями и hard skills в области разработки). Их задача — предоставить бизнесу свою экспертизу, валидировать его идеи и отвечать на вопрос «как делать?». Идея такого взаимодействия лежит в основе методологии Agile (https://agilemanifesto.org/).
Внимательный читатель заметит, как я прибегаю к приему *argumentum ad auctoritatem (аргумент к авторитету).* Но в мире мнений и субъективных суждений, в котором мы живем — это хороший прием, и я советую прибегать в том числе и к нему для донесения профессионалом своей идеи.
Мнение профессионала о том, что полезно для бизнеса — субъективно. Это мнение, которое, возможно, не является истиной в последней инстанции и, как любое мнение, может быть ошибочно — errare humanum est. Тем не менее, я считаю что разработчику стоит бороться за те идеи, в которые он верит как профессионал.
Что можно попробовать сделать?
Я буду приводить в пример внедрение best practices разработки, хотя это относится к любой идее, в которую профессионал верит и считает частью своей экспертизы. Привносить полезные для бизнеса идеи стоит — это хорошо. Проблема в том, что привнесение профессионалом своих идей может встречать сопротивление со стороны коллег — других разработчиков, менеджера, высшего начальства и других людей. Возникает вопрос — готов ли разработчик бороться за них, какие ставки в этой борьбе и каков ее возможный исход.
Все далее написанное следует из соображения о том, что разработчик хочет получать удовольствие от работы, проявляя себя как профессионал и максимально использовать имеющиеся навыки, чтобы приносить пользу и гордиться проделанной работой. Возможные исходы я предлагаю рассмотреть на следующей шкале:
Конечно, результат попытки донести свою идею до бизнеса совсем не бинарный. Он просто таким не может быть, так как иначе разработчик окажется без таких важнейших инструментов переговоров, как компромисс. Тем не менее я разделю исходы на возможный успех и возможный провал. Успех — когда идея разработчика принята в той мере, которая позволяет ему больше применять свой профессионализм и быть довольным той работой, которую он выполняет.
Случаев провала можно выделить два: все остается как и было, или разработчик меняет работу. Причины для второго опять же разные. Одна из них — разработчик не хочет дальше заниматься работой, которая не позволяет всецело применять профессиональные навыки и получать удовольствие от работы. Другая, менее позитивная, может состоять в том, что разработчик и его коллеги, или начальство, или политика компании в процессе споров дошли до состояния такой односторонней или взаимной неприязни, когда продолжение дальнейшего сотрудничества невозможно.
Кого и как убеждать?
Если с идеей разработчика согласны все, кто влияет на ее принятие, тогда она принимается и результатом становится однозначный успех. Но эта ситуация выглядит идеализированной, и, скорее всего, возникнут спорные ситуации, которые потребуют разрешения. Я считаю, что в случае разработки ПО есть две стороны, которые разработчик может убедить в правоте своих суждений. Первая — горизонтальная — это другие разработчики, так как невозможно внедрить практики, например TDD (разработка через тестирование) или code review, если это делает один человек в команде. Вторая — вертикальная — представители бизнеса, так как применение best practices, особенно когда их внедрение только начинаются, требует времени разработчиков.
Хорошим источником истины, к которому стоит аппелировать в этих спорах, является польза для бизнеса. Она, прямо или косвенно, выражается в денежном эквиваленте. Будь это скорость разработки, гибкость системы, текучка кадров или репутация компании. В случае горизонтальных споров, если не получается донести свою точку зрения с помощью всех возможных приемов риторики, разработчик имеет полное моральное право привлечь административный ресурс — обратиться к людям, принимающим решения, чтобы они поддержали его идею.
А использование административного ресурса — это как раз возможная необходимость разрешения вертикальных споров. Разработчику необходимо убедить представителей бизнеса в том, что его идея принесет пользу компании. Бизнесу нужна причина тратить ресурсы, поэтому нужно ясно объяснить, что внедрение best practices разработки — это инвестиция. Здесь также инструментами убеждения являются все возможные приемы риторики, а также, возможно, работа с данными, поиск примеров и апелляция к авторитету.
Возможно, что прием административного разрешения споров придется применять несколько раз, но здесь уже разработчику стоит задуматься о своей правоте и навыках донесения информации. Если разработчик прав, но с ним не согласны — значит что у него не получается донести идею о том, что можно принести большую пользу бизнесу до иерархии людей, принимающих решения, среди которых высок шанс встретить профессионала своего дела, целью работы которого является принести пользу бизнесу.
В этом процессе разработчик может потерпеть неудачу в донесении своей идеи или понять что это требует от него слишком много усилий, что несопоставимо с оплатой его труда. В таком случае возможным путем к работе, которая будет приносить удовольствие, является смена работодателя.
Заключение
Эта статья — глубоко субъективное мнение о том, как разработчику получать больше удовольствия от своей работы за счет проявления профессионализма и донесения до бизнеса субъективных идей, которые разработчик, как профессионал, считает верными. Статья во многом вдохновлена идеями Agile, книгой «Clean Architecture» Роберта Мартина, а также собственным опытом, переживаниями и опытом знакомых и коллег.
Thomas_Hanniball
Когда я был таким же юным, как и Вы, я тоже хотел изменить мир к лучшему, сделать быстрые и надёжные сервисы, которые каждый день будут приносить пользу людям. Эти сервисы должны были быть созданы с использованием «лучших мировых практик», покрытые красивым мониторингом, резервным копированием, а также целиком и полностью быть задокументированными. Ведь об этом было сказано в тех умных книжках, что мне довелось в то время прочитать. Я хотел создать идеальную инфраструктуру, которая бы радовала меня, бизнес и конечных потребителей.
Но, к сожалению, реальность оказалась другой. В реальном мире всегда есть ограничение по бюджету, времени и человеческим ресурсам. Бизнес работает в высококонкурентной среде, поэтому он выбирает те решения, которые будут ему полезны в конкретный момент времени. Не всегда эти решения являются оптимальными с точки зрения наёмных сотрудников. Главное, что они являются оптимальными с точки зрения бизнеса. Через год ситуация на рынке может сильно поменять и бизнес начнёт придумывать новые решения, чтобы выжить, а лучше — чтобы получить ещё больше прибыли.
Дмитрий, сделайте те решения, что вы считаете правильными и оптимальные в своих pet-проектам, поработайте с ними, чтобы понять все плюсы и минусы, получите реальный опыт и удовольствие от этого. После нескольких лет такой работы вы удовлетворите своё желание и Вас немного отпустит. Вы станете смотреть на мир немного проще. :). Вы сможете отделать свои личные желания от желаний команды и желаний бизнеса, увидите, что эти желания часто могу не совпадать и даже противоречить друг другу. Это нормально.
Если Вам всё равно невмоготу и очень хочется внедрить своё правильное решение\видение, то становитесь Team-лидом. С этой позиции внедрять технические новшества немного проще, т.к. есть постоянный контакт как с технической командой, так и с бизнесом.
Мир не идеален, смиритесь. Я тоже долго к этому пониманию шёл. :).
prefrontalCortex
А возможна ситуация, когда бизнес начнет ныть, почему это прототип, сделанный за выходные на коленке, не выдерживает набежавших тысяч пользователей и не умеет, помимо уже реализованных фич А и Б, еще и фичи X, Y и Z, и почему это не было готово еще вчера. Важно ведь понимать, что "бизнес" — это не какое-то божество, имя которого нужно произносить с придыханием, а такие же люди, которым так же свойственно ошибаться.
GreyStrannik
Во-первых, нельзя работать в выходные. Во-вторых, если бизнес изначально понимал, что это решение будет сделано "на коленке" и сам принимал это информированное решение, то вопросов про стоимость переделки и поддержки не возникает, а когда возникает — это информированное согласие предъявляется и начинается конструктивный разговор о том, что теперь делать, какие есть варианты и какие затраты/бенефиты — для принятия нового информированного решения бизнесом.
Многие считают, что профессионализм — это правильно кодить, применять наилучшие инструменты и создавать оптимальные технические решения. Но это профессионализм кодера, сисадмина или иного низшего технического персонала. Профессионализм разработчика системы в учёте интересов прежде всего стейкхолдеров, а для этого решения о качестве продукта и его функционале должны принимать бизнес-стейкхолдеры — информированные решения.
Almet
С вами нельзя не согласиться. Но что делать бизнесу, который до сих пор ведет учет в экселе, а вокруг одни облака, да ИИ? Оставаться и обслуживать этот бизнес (и загнивать в сфере IT) или урезать ЗП топ-манагерам в угоду найма нормальных технарей?