В университете я обожал кодить. Теперь это превратилось в рутину. Как вернуть былой запал?



    Рефлексия – штука любопытная. Еще интересней, если она базируется на многолетнем опыте. Под катом рассказ о судьбе программиста устами директора по разработке Parallels RAS Игоря Марната от первого лица. Enjoy!
    «Если вы не двигаетесь вперёд, то вы не стоите на месте. Мир движется вперёд, а вы - нет. Тем самым, вы двигаетесь назад!». © (Кто-то очень умный)


    Эпиграф

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

    Если программирование стало для вас рутиной, то, возможно, мой опыт будет вам полезен. Хотите, чтобы что-то изменилось? Надо хотя бы что-то менять (глубокая мысль, не правда ли?). Надо куда-то двигаться. И вот, в разное время, я пробовал движение вглубь, движение вбок и движение вширь. 

    Движение вглубь


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

    Программисты, в большинстве своем, черпают мотивацию в верхних уровнях пирамиды Маслоу — познание, самореализация, потребность в уважении. Для этого необходимо, чтобы, во-первых, результат их работы был заметен. Во-вторых, этот результат должен увидеть свет, им должны пользоваться люди. Видимость результата, очевидно, тесно связана с размером этого результата, с его значением, весом.

    Во времена разработки программного обеспечения для телекома, я вложил много времени и сил в изучение новой для себя предметной области: устройство процессоров общего назначения и DSP, памяти, систем хранения, сетевых протоколов, видов сигнализации, алгоритмов обработки сигналов, в общем, кучу разных интересных вещей из телефонии, схемотехники, сетей.

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

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

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

    Узнать всё это просто — нужно больше общаться с командами поддержки, тестирования, внедрения, с конечными пользователями продукта. Если удастся наладить рабочее взаимодействие, порешать для них какие-то задачи, поучаствовать в совместной работе – то вообще супер. 

    Кстати, тут есть еще одно замечание по поводу организации самого рабочего процесса, которого придерживаются, в частности, философия DevOps и подход к разработке и operations известный как SRE, изначально пришедший из Google. Необходимо стремиться устранить разделение между командами разработки, внедрения и поддержки, движение к совместной работе.

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

    Движение вбок


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

    Параллельно с разработкой встраиваемого ПО для телефонии я работал над распределённой системой сбора информации и выставления счетов пользователям – и это совершенно другой мир, другие языки, другие платформы. Рядом — автоматизация развёртывания, конфигурирования и тестирования, это уже третий мир, всё снова другое. 

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

    Движение вширь


    По мере погружения в телефонию оказалось, что я не успеваю уделять достаточно времени и внимания другим проектам, над которыми я работал. Выход был очевиден — я стал работать еще больше. Но масштабируется это не сильно. При долгой работе по ночам и выходным через какое-то время и работать уже не хочется, и жить некогда. Мы с шефом приняли решение — нанять еще одного программиста в нашу команду. Я довольно самонадеянно провёл пару собеседований с наскока (первых в своей жизни по другую сторону стола), и понял, что взять толкового человека к себе в команду не так просто, как кажется. 

    Как понять незнакомого человека за короткое время? Как оценить его профессионализм и личные качества? Они вообще важны, эти личные качества? Или важен только профессионализм? На что вообще нужно обращать внимание при найме? И как именно его обращать? Сейчас всё это кажется довольно очевидным, но при найме первого инженера для меня - это был для меня настоящий тёмный лес. 

    Как обычно, я начал с Google. Нашёл несколько статей Джоэла Спольски, проглотил их, прочитал книги, на которые он ссылался, затем ссылки из этих книг, пошёл учиться более системно, и так, постепенно, начал погружение в новую предметную область — управление проектами, командой, управление cамим процессом разработки.

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

    Например, agile появился сравнительно недавно, меньше двадцати лет назад, CI — около тридцати, классической книге Фредерика Брукса уже около пятидесяти лет. Другие же аспекты, связанные с управлением командой, психологией, мотивацией, управлением процессами в организации в целом, организацией коммуникаций - универсальны, пришли из других предметных областей уже много лет назад, и отлично применимы и в области разработки.

    Я читал довольно много литературы на тему управления командой. Мне кажется, наиболее детально и глубоко эта тема изучена в Америке и Японии. Помимо классических книг о разработке, инженерном процессе, менеджменте, я бы рекомендовал книги советских и российских авиаконструкторов и конструкторов ракет. Кроме того, NASA, NAVY, Toyota — эти организации и компании вкладывают огромные средства в оптимизацию своих процессов, проводят внутренние конференции для своих менеджеров, материалы по ним доступны в сети, есть много интересных художественных книг от них и о них. Кроме того, помимо отличной информации о процессах управлении, выстроенных в этих компаниях, читать об автомобилях, самолётах, ракетах, кораблях и их разработке просто очень интересно.

    В общем, простор для повышения своей компетенции в области управления огромный, задачи тоже очень разные. Начать можно с организации своей собственной работы, с внедрения лучших инженерных практик типа unit-тестов, ревью кода, continuous integration и continuous delivery, остановиться можно очень далеко. А лучше и не останавливаться:)

    Заключение 


    Практика показывает, что если вы начнёте активно двигаться хотя бы в одном из вышеупомянутых направлений, через некоторое время неизбежно произойдет и еще одно движение — вверх по иерархической лестнице. Если такое желание есть, то это тоже очень интересный вариант. Главное при этом - не забывать о необходимом балансе между организационной и технической работой, который вы бы хотели сохранить.

    Разработка софта — марафон, который длится всю жизнь. Всегда есть дедлайны, сроки, всё время надо еще чуть-чуть поднажать. Чтобы сохранить энергию и мотивацию, защитить себя от выгорания, нужно обязательно переключаться, поднимать голову над рутиной, оглядываться по сторонам и смотреть на себя и свою работу со стороны. Театры, музыка, концерты, хорошие книги и фильмы — обязательны к периодическому применению. Или дача. Или походы. В общем, что-то, кроме работы. Иначе через два-три года работа в любом случае перестанет быть в радость. 

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

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

    Несколько хороших книг, много желания и немного движения могут всё сильно изменить в лучшую сторону. Удачи!

    З.Ы. Делитесь своим опытом и лайфхаками в комментариях. К сожалению, Игоря пока нет на Хабре, качаю карму для того, чтобы можно было его пригласить. А пока переадресую ему ваши вопросы, если такие возникнут. Спасибо за проявленный интерес.
    Parallels
    109,00
    Мировой лидер на рынке межплатформенных решений
    Поделиться публикацией

    Комментарии 29

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

      Если работа превратилась в рутину, можно ее бросить на несколько месяцев и уехать к океану, дальше человек почувствует что ему делать.
        0
        Del
          +12
          А давно на Хабре программистов, а не гостей профессии, начали называть «умственно отсталыми» и плюсовать?
            –6
            Я не знал что хабр — секта, где есть незыблемые каноны, мешающие человеку высказывать свое видение. Хотя минусы в карму после подобных сообщений наводят на мысль, но я все же продолжаю верить, что это не так, и что здесь есть разумные люди, готовые смотреть на мир под разными углами и не затыкать рот каждому, чье мнение расходится с каноническим.
              +5
              Ну, унижения групп людей на хабре, как и в приличном обществе, не разрешены. Я вас не минусил, только указал на грубость.
                +7
                А я минусил, не за собственное мнение, а за оскорбление. Лично я обожаю именно писать код, получаю от этого наслаждения. Мне не нравится что теперь я, оказывается, «умственно отсталый».
                  –4
                  Как вы можете оказаться умственно отсталым только из-за того, что кто-то это написал. Если кто-то пишет что вы умственно отсталый, а вы им не являетесь, значит этот человек ошибается, он сам глуп, и здесь нет повода для расстройства или обиды. Если вы так реагируете на чужие слова, которые даже не касаются вас ни прямо, ни косвенно — а они не касаются, я не писал, что любой человек, кто пишет код — умственно отсталый, я говорил это про тех, кто делает это всю жизнь, и это так, я не могу ничего с этим поделать, даже если вы меня сминусуете 40 раз, то есть вы даже не способны внимательно прочитать, что пишет собеседник и спешите защитить свое задетое эго… Чем вы отличаетесь от религиозных фанатиков, которые по любому поводу говорят об их оскорбленных религиозных чувствах? Ничем.
                    +3
                    А что такого в том, чтобы писать код всю жизнь, если это очень нравится?
                      –3
                      Ничего такого, нужно всегда делать то, что нравится. Я писал для тех, кому это надоело.
              +5
              Любому разумному человеку рано или поздно надоедает кодить.

              Зачем вы так сильно размахиваете квантором всеобщности?

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

              «Чувствую, вы на Хабре не задержитесь» (С) VlK

              просто нужно сокращать время работы

              Кому нужно и почему нужно?

              уехать к океану

              "- Ага. Значит, именно на петеяровом?
              — Именно.
              — А если на сливочном?
              — А если на сливочном — то не получится." (С)

              Так и вижу берега океанов, сплошь усеянные неумственноотсталыми программистами.
                +1
                Через чур категорично, но в целом согласен. Но, думаю, это можно про любую профессию сказать. «Хватит рисовать эти картины, любому нормальному человеку это надоест, уж тем более за 10 лет. Начни уже управлять теми кто рисует, открой своё дело, etc.» Но есть люди которым просто нравится делать то что они делают.
                Меня вот последнее время не отпускают мысли что мне надоело быть деталью чьей-то системы, но…
                  –3
                  Начни уже управлять теми кто рисует, открой своё дело


                  Я ничего подобного не писал.
                  +4
                  нужно быть умственно отсталым, чтобы оценивать интеллект других по их выбору профессионального пути)))
                    +2

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


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

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

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

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

                      Утопиться? Вы совершенно не делали оговорку «если не нравится», просто объявляете всех, кто не хочет стать посредственным манагером (потому что не нравится, например), умственно отсталыми.
                      Время работы у многих само со временем сокращается до рабочих часов безо всяких советов и океанов.
                        0
                        Просто объявляете всех, кто не хочет стать посредственным манагером


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

                        Время работы у многих само со временем сокращается до рабочих часов безо всяких советов и океанов.


                        ДО рабочих часов? То есть 5 дней в неделю по 8 часов в день? А раньше эти многие сколько работали? 7 дней в неделю по 12 часов? Это просто степени умственной отсталости. 40 часов в неделю слишком много, 28 максимум.
                      +1
                      Если не сложно — можно в список рекомендаций всю описываемую литературу?
                      Был бы очень благодарен, т.к. тема довольно актуальна :)
                        0
                        Привет!
                        Спросил у Игоря. Вот что он прислал:
                        NASA Manager's Handbook for Software Development

                        NASA Virtual PM Challenge

                        Dale Carnegie

                        Steve Mcconnell

                        Максим Батырев

                        Joel Spolsky

                        Lido Anthony «Lee» Iacocca

                        Ichak Kalderon Adizes

                        Peter Ferdinand Drucker

                        Fred Brooks

                        Tom DeMarco

                        Черток Борис

                        Michael Abrashoff

                        Тайити Оно
                        +7
                        Хорошо помогает вернуть интерес к программированию заниматься чем-то совершенно оторванным от компьютеров и телефонов по вечерам, выходным, в отпуске. Приходят выходные: один день с семьёй за грибами, второй день строим будку собаке из подручных материалов. Приходит понедельник: о боже, комьютер, программирование, ура! А если два дня просидеть в ютюбчике и фейсбуке, то в понедельник будет «блин, опять этот компьютер, это программирование, как оно осточертело...»
                          0
                          Согласен, без кардинальной смены контекста по выходным можно быстро перегореть
                          0
                          Поддерживаю, тема очень актуальна)
                          Тоже интересует литература по системе сбора информации и выставления счетов пользователям. Спасибо)
                            0
                            Привет!
                            Спросил у Игоря. Вот что он прислал:
                            NASA Manager's Handbook for Software Development

                            NASA Virtual PM Challenge

                            Dale Carnegie

                            Steve Mcconnell

                            Максим Батырев

                            Joel Spolsky

                            Lido Anthony «Lee» Iacocca

                            Ichak Kalderon Adizes

                            Peter Ferdinand Drucker

                            Fred Brooks

                            Tom DeMarco

                            Черток Борис

                            Michael Abrashoff

                            Тайити Оно
                            +2

                            ответ на вопрос в заголовке


                            начать снова кодить бесплатно, чтобы был запал.

                              –6
                              Программирование забесплатно — пустая трата времени.
                                +6
                                Вы забесплатно, я так понимаю, даже на велосипеде не покатаетесь, скажем?
                                  +1
                                  Ценность чего либо не всегда выражается деньгами.
                                  Приобщенность к определенной комьюнити, чувство полезности — для кого-то могут быть такими же ценными, как для вас деньги.
                                0
                                Здравствуйте.
                                А есть зафиксированный список книг для прочтения?
                                  0
                                  Привет!
                                  Спросил у Игоря. Вот что он прислал:
                                  NASA Manager's Handbook for Software Development

                                  NASA Virtual PM Challenge

                                  Dale Carnegie

                                  Steve Mcconnell

                                  Максим Батырев

                                  Joel Spolsky

                                  Lido Anthony «Lee» Iacocca

                                  Ichak Kalderon Adizes

                                  Peter Ferdinand Drucker

                                  Fred Brooks

                                  Tom DeMarco

                                  Черток Борис

                                  Michael Abrashoff

                                  Тайити Оно

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

                                Самое читаемое