Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Дождались — наступил 256-й день этого странного года. Значит, самое время всем программистам мира отложить клавиатуру, налить чего-нибудь эдакого и провести эту субботу так, как захочется, а не работая работу после работы на работе. А вот остальным пользователям стоит заглянуть под кат и чуть больше узнать о программистах и о том, как мало надо для счастья совместной работы. Ну а если серьёзно, этот пост посвящается программистам, их коллегам, руководителям, заказчикам и даже друзьям. В нашей современной жизни без программного кода практически ничего не происходит — разве это не весомый повод чуть лучше разобраться в творцах нашей интеллектуальной эволюции?
Disclaimer: статья написана сотрудником, ночью, не согласована и т.д. Короче, изложенное может совпадать, а может и не совпадать с позицией компании.
Не требуйте невозможного
Придумать можно что угодно: идеальную CRM-систему, красивый сайт с интерактивом, захватывающую игру, проект виртуального офиса. Затем, конечно, стоит описать свои фантазии в вольной форме с указанием цвета шкурки виртуального помощника единорога и принести их программисту, сообщив, что «давай к новому году закончим, чтобы не тащить долги в следующий». Если программист потребует у вас прототипы, схемы, примерные макеты дизайна, точное техническое задание, спишите эти капризы на его патологическую лень. В конце процесса следует удивиться и обиженно уйти, попутно рассказывая коллегам о том, что прогер бесконечно ленивый и не хочет делать мир лучше.
Правда, абзац звучит очень странно? Вы не такой (такая)? А таких немало. Увы, зачастую программист получат задания, которые невозможно реализовать в одиночку или без привлечения дополнительных технических ресурсов. Увы, пользователи часто не подозревают, что существуют IDE, библиотеки, ограничения языка программирования и технологий, в конце концов. Если вам в голову пришла очередная гениальная идея, не требуйте жёсткого исполнения от вашего коллеги-разработчика, а проведите минимальное исследование клиентской потребности и обсудите вопросы на уровне концепции. Программист всегда заинтересован в создании нового, крутого продукта со своим именем в авторах, и его уровень опыта и адекватности может спасти даже самую бредовую идею.
Не торопите программиста
За сроки «ещё вчера» можно смело наказывать и депремировать — если ты хочешь ещё вчера, почему ты приносишь своё ТЗ программисту сегодня? Почему ты не принёс его позавчера или месяц назад? Почему ты протянул время, а программист вместе с задачей должен получить срок «ещё вчера» или самый короткий дедлайн?
Работа программиста обычно выглядит так: проектирование — анализ — прототипирование — написание кода — тестирование — дебаггинг — сбор проекта — рефакторинг. Причём эти этапы могут быть совмещены, перемешаны, дополнены и т.д., а внешне всё выглядит как стук по клавишам. И, кроме скорости набора, работа программиста — это работа мысли, это исследовательский труд. Если вы коллега и торопите коллегу-программиста, то вы рискуете нарваться на обиду и непонимание; если вы руководитель и давите на программиста, он будет вынужден выполнить ваше требование за счёт исключение одного или нескольких этапов. А программа без тестирования и без рефакторинга — беда на продакшене.
Поэтому перед тем, как приступить к проекту, обсужда йте с программистом временные рамки его работы, попросите описать и обосновать затраты времени на конкретные задачи. Исходя из этого планируйте работу менеджеров и свои обещания клиентам. Программист не виноват, если вы не умеете планировать.
Не изобретайте законы разработки
Когда вы приходите в автосервис, вы расписываете, как заменить колесо или починить электрику в автомобиле? А врачу говорите, как лечить или протезировать зубы? Вот-вот. А программист, в отличие от стоматолога, не может заставить вас открыть рот и не шевелиться. Поэтому он вынужден выслушивать советы по разработке от коллег. У меня даже есть топ услышанных рекомендаций:
а ты переключись на Linux, он всё умеет (во дела!);
а почему ты с новой строчки вот здесь написал? (мне платят за строчки кода, разве не знал);
может, через SQL сделать? (а может, через одно место — специально для тебя);
пиши код в блокноте, блокнот труъ, я читал (ну и читай свой блокнот дальше);
у тебя тут заглавными написано, отожми Caps Lock (
DELETE FROM MY_SPACE
).
Это немного веселит и поднимает настроение, но в конечном итоге очень раздражает. Разработчик учился, у него есть свои методы, свои предпочтения по стеку разработки, навыки работы с определёнными компонентами. И даже если вы нагуглите, что конкретную задачу проще решить на Go, а не на Python, ваш разработчик не бросится учить новый язык программирования. Программист готов отвечать за работу, выполненную комфортными для него средствами. Не навязывайте ему стек, идеи, правила, особенно если вы не разбираетесь, а просто целенаправленно поискать ответ на свой вопрос в интернете.
Не считайте разработчиков приложением
Разработчик не равно компьютер, программист не равно программа. Соответственно, он может задуматься над задачей, попросить больше времени, ошибиться и даже отказаться от задачи, если понимает, что с ней не справится и готов аргументировать свой отказ. Точно так же, как он хочет есть, пить, спать и жить отличной от работы жизнью. Поэтому не загружайте разработчика неоплачиваемой сверхурочной работой — да, не факт, что он откажется, но вполне возможно, что он выгорит и пойдёт в сторону другого работодателя и более адекватных коллег.
Крайняя степень утилитарного отношения к разработчику — фраза «ты ж программист». Он такой же работник, как и вы, а значит, выполняет конкретные задачи внутри проекта, планирует своё рабочее и личное время, стремится отдохнуть или выучиться чему-то новому. Если вам нужен эффективный программист, считайтесь с ним как с человеком. Тогда и рабочие отношения будут плодотворными.
Пустите программиста в бизнес-процессы
Поверьте мне на слово, если ваш программист освоил высшую математику, паттерны, объектно-ориентированное программирование, алгоритмы, то и ваш сложнейший бизнес-процесс оптовых продаж удобрений он освоит. Если ваш разработчик или штатный программист будет внутри бизнес-процесса, он будет в несколько раз полезнее. То же самое касается автоматизации: если он понимает, как именно работает компания, как организованы коммуникации и основные процессы, он сможет эффективно сопровождать внедрение и дорабатывать ь доступными средствами вашу CRM, ERP, PM и проч. софт. Таким образом, автоматизация будет грамотной и рабочей, а не серым камнем в пять пудов.
Не забудьте поздравить ваших программистов
Сегодня нерабочий день и поздравлений может быть несколько меньше. Но в понедельник вы вернётесь в офис и там будут они — ваши главные помощники в современном мире технологичного бизнеса: аналитики BigData, программисты 1С, суровые разработчики на С++ или Delphi, модные разработчики Go и Kotlin, маги и волшебники PHP и JavaScript, высоконагруженные Java-разработчики и многие другие покорители стеков технологий.
Пожелайте им классных задач, надёжных билдов, интересных технологий, полезных библиотек, динамичных проектов, новых и интересных методологий разработки. Пообещайте быть понимающими и спокойными коллегами. Оглянитесь на нашу реальность — всё большая её часть создаётся их руками.
P.S.: ну а я, пользуясь случаем, поздравляю нашу команду разработки RegionSoft CRM (и остальных наших продуктов) с Днём программиста, желаю частых и крутых релизов, новых интересных требований и бесконечного развития без того удобной и классной программы. Эти правила я осознала, работая с вами.