четвер, 9 грудня 2010 р.

Чем занимаются программисты?

Вообщет вопрос может получить вторую премию на конкурсе дурацких вопросов, сразу после вопроса "Как программист пишет программы?". Самое забавное вопрос про Как был задан однажды на полном серьезе руководителем службы рекрутинга большой софтверной компании. Если бы сам не слышал - не поверил бы.
Казалось бы вопросы простые и ответы на них очевидны. Но со временем я понял что ответ который так очевиден для меня, не совпадает с ответом, очевидным для некоторых других :-) товарищей. Поэтому захотелось поделиться своим видением, возможно я в корне ошибаюсь.
В далекие совествкие годы у нашей профессии было название инженер-программист. Потом как то про инжерена забыли поскольку в союзе почти каждый кто не был рабочим или крестьянином был инженером. Ну не считая конечно деятелей культуры и науки, но тех было не так много. А инженеров было много, все кто мог что бы закосить от армии ломились в инженеры. Поэтому когда сверкающий капиталистический мир открылся нам своими сникерсами и бублгумами, и что особенно важно спектрумами и IBM PC инженеры стали ассоциироваться с чертежными досками и маленькой зарплатой, а модно было быть маркетологом или менеджером, и не важно что это означает. Собсвтенно менеджерами модно быть до сих пор.
Тем не менее по сути профессии ничего не поменялось. Однако поменялось понимание, отсюда зачастую люди уверенно считающие себя программистами делают немного не то что надо делать программисту. Что вызывает печаль и недоумение.
В моем понимании суть работы инженера - решать технические проблемы. Способ вторичен.
В этом смысле инженеру-программисту сильно повезло. Он проводит решение от идеи до конечной реализации не полагаясь на рабочих в воплощении решения в жизнь. У большинства проблем может быть много методов решения и в этом и есть элемент творчества инженера - выбрать оптимальное решение из множества возможных.

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

6 коментарів:

  1. Я думаю причина не в системе образования, а в тех ролях которые выполняет человек на работе, я работаю программистом 7 лет и реально сталкивался с задачей включающей в себя комплексное решение проблемы и возможность творческого подхода только два раза. На мой взгляд в Харькове нет практической возможности работать инженером-программистом и зарабатывать адекватные деньги. Возможность проявить себя как инженер-програмист есть только на стартап проектах а это связано с определенными рисками. Такая ситуация и провоцирует мысль что работа программиста просто писать программы.

    ВідповістиВидалити
  2. Кирилл, инженеры обычно вообще не вовлечены в комплексное решение. Инжерен занимается техническими, а не прикладными проблемами. В этом практически основное отличие инженера от архитектора. И даже архитектор зачастую не занимается комплексными решениями, обычно он получает на входе сформулированное бизнесс-решение и занимается его трансформацией в техническое решение. В том числе ставя перед инженерами технические задачи которые те должны решать. А ему бизнесс решение для архитектора формулирует бизнесс-аналитик. А оценивает корректность бизнесс решения и технической реализации product owner. Это большой процесс в котром много ролей и нельзя сказать что кто то один разрабатывает комплексное решение.

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

    ВідповістиВидалити
  4. Наверное я не правильно тебя понял, ты не мог бы привести пример процесса "Находим решение и описываем его, уточняем, детализируем, пока не получается программа решающая ту самую проблему." а не просто "писать программы". Причем интересно было бы увидеть пример в контесте конкретных ролей - например у нас есть бизнес аналитик, архитектор и инженер программист. Т.е. чем будут отличаться задачи архитектора от задач инженера?

    ВідповістиВидалити
  5. Очень хороший вопрос. Напишу отдельным постом, а не в коментариях.

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

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

    Возможно, проблема не только в системе образования.

    ВідповістиВидалити