ведущий программист что делает
Ведущий программист
Веду́щий программи́ст — в отечественной практике — программист, возглавляющий один или несколько проектов по разработке программного обеспечения, либо программист, имеющий определенный уровень подготовки, трудового стажа и соответствующий требованиям к образованию для получения данного статуса.
Юридическая сторона
Непосредственные должностные обязанности, права и квалификационные требования к занимаемой должности определяются трудовым договором и непосредственно должностной инструкцией ведущего программиста.
В отечественной кадровой практике часто применяется термин инженер-программист (ведущий).
Как правило, статус ведущего инженера-программиста предполагает соответствие квалификационным требованиям, в частности, наличия опыта работы (обычно от 3 до 5 лет) в должности программиста и высшего образования, что утверждается в должностной инструкции ведущего программиста.
Распространённая практика
Область ответственности ведущего программиста в различных фирмах может быть разной, но в целом, он обычно несёт ответственность за:
Ведущий программист, как правило, имеет высокий уровень подготовки в области разработки программного обеспечения и имеет опыт разработки программных продуктов с применением большого спектра технологий. Его главной задачей является координация проектов с первой стадии разработки и до завершающих стадий тестирования и технической поддержки и непосредственное участие в разработке в качестве квалифицированного специалиста.
Главными качествами ведущего программиста являются умение мыслить системно, в перспективе, видеть все стадии разработки проекта, отслеживать тенденции современного рынка и уметь применять самые перспективные и современные технологии в своих проектах, если это потребуется.
Ведущий программист, как правило, также решает некоторое число административных вопросов. среди них: управление персоналом, согласование договоров, составление технических заданий, улаживание спорных вопросов с заказчиком.
Хотя его обязанности, преимущественно, технические, ведущий программист служит промежуточным звеном между программистами и менеджментом, а также имеет некоторые обязанности менеджера, в том что касается распределения работ и слежения за тем, что проекты вписываются в отведённые время и бюджет. Ведущий программист обычно является техническим советником для менеджмента и предоставляет техническую часть при разработке требований.
Что должен уметь программист 1C?
Здравствуйте! Публикуем авторскую статью Дмитрия Котлова — сертифицированного 1С-специалиста, руководителя проектов, эксперта по технологическим вопросам. Также Дмитрий является автором и руководителем нового профессионального курса OTUS «Программист 1С», с программой которого мы приглашаем вас познакомиться.
Привет! В своей статье я расскажу о том, какие специалисты нужны для внедрения 1С, какие задачи они выполняют, какие компетенции нужны для качественного выполнения проекта. Отдельно и подробнее поговорим про требования к программистам.
Для начала перечислим позиции специалистов:
Чем занимаются перечисленные специалисты?
Руководитель проекта
В зависимости от конкретной компании обязанности следующие:
Архитектор
В зависимости от конкретной компании обязанности следующие:
Консультант
В зависимости от конкретной компании обязанности следующие:
Программист
В зависимости от конкретной компании обязанности следующие:
Специалист по качеству (по тестированию)
В зависимости от конкретной компании обязанности следующие:
Довольно часто этот функционал пересекается в одной позиции. Например, если в компании один программист 1С, не принято привлекать подрядчиков для выполнения проектов, тогда весь данный функционал ложиться на одного человека либо распределяется между ним и другими подразделениями, в рамках которых происходит внедрение продукта.
Далее подробнее разберём позицию «Программист»
Начнём с того, какие уровни программистов бывают. В каждой компании уровни программистов могут подразумевать разный уровень знаний и умений, зависящих от задач, которые будут стоять перед разработчиками.
Программист-стажёр — вакансия, как правило, подразумевает нулевой опыт работы с 1С, возможность интенсивно обучаться. Чаще всего такие вакансии есть в компаниях-партнёрах 1С.
Программист 1С – позиция подразумевает определённый опыт работы и отсутствие необходимости обучать специалиста программированию, т.е. на неё ведётся поиск людей, которые уже умеют программировать и могут самостоятельно решать задачи.
Ведущий программист 1С – специалисты, которые способны не только самостоятельно решать задачи, но и руководить другими программистами, а также подсказывать им оптимальные пути решения задач, осуществлять факторинг кода.
Итак, в статье я описал наиболее часто встречающиеся обязанности и требования. Бывает и специфика, например, если по факту в компании отсутствуют аналитики, то зачастую программисты исполняют их обязанности.
Также, если вам интересно развиваться в данной сфере, не пропустите прямую трансляцию мастер-класса «Разбор стандартов и методик разработки на платформе 1С». Я расскажу о стандартах и методиках разработки 1С и покажу, зачем они нужны. А также вы сможете самостоятельно привести код в соответствии со стандартами и методиками 1С!
Как стать ведущим разработчиком. Часть 1
Это перевод статьи, написанной Джоном Оллспоу, который на данный момент является старшим вице-президентом технического отдела в Etsy.
В нашей сфере деятельности нам доступны огромные объёмы знаний, в особенности тех, которые позволяют разработчику стать эффективным. Но почему-то, несмотря на существование множества книг о специфических задачах и обязанностях менеджеров в нетехнических областях, я практически не вижу новых книг или статей о том, как стать хорошим ведущим разработчиком. Замечательным исключением, конечно, являются статьи Кейт Maцудайры [от переводчика: на фотографии, кстати, именно она], немало написавшей о культурных составляющих инженерии.
Но в то же время, все мои знакомые преуспевающие разработчики помнят своих наставников, которые научили их тому, что значит быть „ведущим“.
Я совершенно согласен в определении значения „ведущего“ с моим другом Тео. В своей главе в книге Web Operations издательства O’Reilly он пишет:
Поколение X (и в ещё большей степени поколение Y) — это культура немедленного удовлетворения. Я работал с поразительным количеством инженеров, рассчитывающих, что их „карьерный путь“ до высших инженерных должностей займёт не более пяти лет только потому, что они умные. Но это просто невозможно. Их слишком много. Не каждый может быть ведущим. Неужели, если через пять лет вы ведущий, значит вы на пике своего развития? Разве ещё через пять лет вы не получите ещё более ценный опыт? Что тогда? „Супер инженер“? А ещё через пять лет? „Супер-пупер инженер“. Думаю, проблема заключается в молодости нашей отрасли. И в самом деле, мало кто занимался веб-администрированием (web operations) на протяжении пятнадцати лет. Учитывая динамику развития индустрии, многие предпочитают управленческие позиции или риск предпринимательской гонки.
Он прав, сфера веб-администрирования пока ещё очень молода. И поэтому не стоит удивляться, когда люди со званием „ведущих“ демонстрируют незрелое поведение, как с технической, так и с человеческой точек зрения. Если вы не читали главу Тео целиком, я рекомендую вам это сделать.
Но так всё-таки, что для нас значит быть „ведущим“? Мне приходится нанимать, поддерживать и помогать разработчикам, которых считают „ведущими“, и у меня, безусловно, есть мнение по этому вопросу. Мысль, что есть некий порог в карьерном развитии, хороша, но я добавлю, что этот порог размыт — это не простой список поставленных задач. Вы не станете однажды утром „ведущим“ только потому, что об этом говорит новое название вашей должности после повышения. Ведущие разработчики не могут знать всё. Их технические знания не безукоризненны, но они не переживают из-за этого.
Чтобы избежать путаницы между званиями и размытыми ожиданиями, я буду говорить об инженерной зрелости.
Я предполагаю, что „ведущий“ инженер — это зрелый инженер.
Я опущу ту часть, где можно было бы перечислить технические области, которыми зрелый инженер должен так или иначе владеть или которые должен понимать (например, сети, файловые системы, алгоритмы и т. д.), и, вместо этого, выделю те личные качества, которые говорят мне, что человек сможет положительно повлиять на техническую сторону организации или бизнеса.
Мне задавали вопрос на Quora: «Какие отличительные черты (кроме технических умений и опыта) присущи лучшим управляющим технических отделов?». Ответив на вопрос, я понял, что и сам постоянно стремлюсь к обладанию упомянутыми в ответе качествами. Этот пост похож на тот ответ.
Стоит сказать, что ведущие инженеры в веб-разработке и администрировании обладают теми же чертами, что и ведущие инженеры в других сферах (в механике, электрике, химии и т. д.), для которых применимы «Неписаные законы инженерии». Опять-таки, если вы не читали эту книгу, рекомендую сделать это. Она была опубликована в 1944 году Американским обществом инженеров-механиков. Отрывок из книги можно прочитать здесь.
Несмотря на то, что структура книги и слог устарели («… воздерживайтесь от использования сквернословия за рабочим местом. » или «… мужчины должны обращать определённое внимание на бритьё и подравнивание бород и усов»), она даёт хорошее описание нетехнических ожиданий, обязанностей и внутренней работы технической организации в отношении того, как должны действовать менеджеры и зрелые инженеры.
Обязательные качества зрелых инженеров
Все статьи с попытками описать необходимые качества будут переполнены пунктами в своих перечислениях: в инженерии есть о чём поговорить. Я опишу только некоторые качества: до каких-то я дошёл сам, некоторые взял из разных источников, многие — из «Неписаных законов», упомянутых выше.
Зрелые разработчики рады конструктивной критике их идей
Зрелые разработчики осознают, как их воспринимают в личностном плане
Недостаточно одного умения написать во сне фильтр Блума на Erlang или многопоточную программу на C. Всё это не имеет значения, если никто не хочет с вами работать. Зрелый инженер знает, что законченность, элегантность и превосходство его идей ничего не значат, если никто не хочет с ним работать из-за того, что он придурок. Снисходительность, недооценивание, самолюбование и самореклама отталкивают от вас (может только и на подсознании) других инженеров. Но радость от разработки в некотором смысле заключается как раз в наслаждении той компанией людей, с которыми вы проектируете и создаёте что-то новое. Инженер, который запросто называет другого дебилом, обречён на остановку в своём развитии.
Поэтому зрелые разработчики обдумывают то, как они взаимодействуют с другими. Да, не все зрелые инженеры умеют с лёгкостью общаться с людьми, но все знают, в чём они могут стать лучше, и постоянно просят своих коллег и менеджеров дотошно проверять, что и как они делают. Им важно быть напористыми в распространении своих идей, но не пассивными или агрессивными.
Я уже говорил, но стоит подчеркнуть это ещё раз: то, в какой степени другие люди хотят с вами работать, напрямую говорит о том, насколько успешны вы будете в своей карьере разработчика. Будьте человеком, с которым все хотят работать.
Это не значит, что вам не следует конструктивно критиковать работу (или выслушивать критику), проделанную другим человеком (но не его личность), боясь кого-то обидеть. Между обзыванием кого-нибудь дебилом и указыванием на недостатки его кода или продукта есть разница. В нашем разговоре Тео отметил другую область, в которой мы можем измениться к лучшему:
Нам, как индустрии, не следует критиковать характер или внешний вид друг друга, но нам стоит критиковать результаты нашей работы. Нам необходимо обрасти толстой кожей и научиться воспринимать критику с той точки зрения, которая исключает фокус на личности.
Придурки были и будут всегда, и их стоит остерегаться. Но мы должны избавиться от отношения к чьему-либо коду, как к его ребёнку. Код ничего не чувствует, у него нет комплексов, и он, естественно, не проявит самого важного качества (способности размножаться), заложенного в ваши гены.
Внимательно следите за тем, кого вы отмечаете в качестве получателей писем, заметок и прочих документов, в которых могут быть затронуты интересы других отделов.
Много вреда было приченено молодыми работниками, которые распространяли документы, содержавшие вредную или неудобную информацию. Да, новичку не просто распознать в таком документе «бомбу», но, в общем-то, понятно, что могут возникнуть проблемы, если в записке притесняются чьи-то интересы или раскрываются чужие недостатки. Вам лучше посоветоваться со своим начальником, если документ будет широко распространён или если в нём обсуждаются проблемы производства или клиентов, и если вы не уверены полностью в своей правоте.
Эта цитата подчёркивает немалый возраст книги, но я считаю, что и сейчас суть этих слов актуальна. Ничто так не говорит о недальновидности и неосведомлённости, как плохо продуманный, неконструктивный, вбрасывающий ядовитые нападки твит. Новички совершают ошибку, наезжая в 140 символах на сложные технологии.
Я всегда обращаю внимание на подобного рода публичные заявления, когда сталкиваюсь с ними, и если такой человек придёт на собеседование к нам в Etsy, я хорошенько подумаю, прежде чем взять его на работу (Кристофер Браун говорил об этом же в своём докладе на Velocity London).
Зрелые разработчики не избегают прогнозов, а постоянно совершенствуются в них
Обещания, расписания и прогнозы — необходимые и важные инструменты хорошо организованного бизнеса. Многие инженеры не понимают этого и увиливают от досаждающей ответственности за свои обязательства. Вы должны давать обещания, основываясь на своих прогнозах по той части работы, над которой вы ответственны, и на прогнозах тех отделов, с которыми вы связаны. Никто не должен задерживать работу с такой формулировкой: «Я не могу ничего обещать, моя работа связана с большим количеством неопределённых факторов».
Уклоняться от ответственности за прогнозы — это всё равно, что говорить: «Я не готов, чтобы мне доверяли написание важных частей инфраструктуры». Все дела зависят от прогнозов, и все разработчики, вовлечённые в проект, заняты совместной деятельностью, а это значит, что каждый должен нести ответственность за свою предсказуемость. В целом же, зрелые инженеры могут спокойно работать с неким ненулевым уровнем неопределённости и риска.
Зрелые разработчики обладают развитой интуицией, даже если не знают об этом
Этот код выглядит неплохо, я горжусь собой. Я попросил других людей проверить его и записал все отзывы. И как долго теперь у меня займёт переписывание и исправление? Как мой код повлияет на работу сервера, когда он там окажется? Как и насколько изменится использование ЦПУ/памяти/диска/сети? Смогут ли другие понять этот код? Достаточно ли прост мой код, чтобы другие смогли в него вникнуть и расширить?
Зрелые разработчики понимают, что не в каждом проекте будут хватать звёзды с небес
Какими бы бессмысленными или незначительными не казались ваши первые задания, приложите к ним все усилия.
Иногда спасение можно найти в простоте скучных задач. Зрелость говорит, что такие задачи нужно выполнять быстро и двигаться дальше. Иногда скучные задачи требуют предельной дисциплины и концентрации внимания. Как ни странно, наиболее скучные задачи, которые выполняются только ведущими инженеры, могут быть в то же время самыми необычными.
Зрелые разработчики прокачивают мастерство и квалификацию окружающих
Они осознают, что в какой-то момент их индивидуальный вклад перестанет соответствовать возможной скорости развития проекта. Они осознают, что ни один человек не может делать всё сразу, и что величайшие мировые подвиги были совершены командами, а не выдающимися одиночками. Том Лимончелли убедительно доказывает это в своём блоге.
В Etsy мы называем это «щедростью ума». Щедрость ума — одна из наших важнейших инженерных ценностей, но, кроме того, это основная обязанность нашего инженерно-технического персонала. Эти люди вкладывают своё время в обучение младших и новых разработчиков, чтобы как можно больше сотрудников не только понимали, что они делают, но и почему. Способность «научить ловить рыбу» на этом уровне обязательна, а это требует как терпения, так и дальновидных вложений всей организации.
Поэтому, вместо того, чтобы говорить «Так, подвинься, давай я сделаю», мы говорим «Ясно, давай разберёмся с этим. Я покажу тебе, как пишу/отлаживаю/и т. п. Затем то же сделаешь ты, чтобы я убедился, что ты понимаешь как и почему мы делаем это именно так».
На этом первая часть перевода закончена. Буду рад конструктивной критике и советам. Я старался, но может быть, что-то понял и перевёл неправильно или коряво — предлагайте свои варианты. Принимаются пул-реквесты на GitHub.
Профессия: программист. Не всё однозначно
Мы писали о фронтендерах и бэкендерах, о мобильной разработке и о тестировании, но это были частные случаи. Когда человек подходит к первой или очередной профессии, он редко говорит, что станет разработчиком под iOS или проктологом, как правило это звучит «программистом» и «врачом». Специализация приходит позже, с опытом. Но чтобы твёрдо заявить, что ты хочешь стать программистом, врачом, архитектором, геологом и т.д., нужно избавиться от романтизации профессии и подойти к ней здраво и осмысленно. Даже если вы вдруг решили стать программистом, чтобы «войти в айти после 35-ти». Если говорить о программистах с позиций романтики, то это люди, которые превращают наши замыслы в код и делают жизнь лучше, проще, удобнее. Если говорить прямо, то работа программиста — напряжённый, зачастую рутинный труд с множеством плюсов и минусов. Об этом и поговорим.
Художник — Надежда Коткина, позировал — cyber_roach
Кто это?
За термином «программист» могут скрываться узкопрофильные программисты, разработчики программного обеспечения, инженеры, системные аналитики и т.д. Тем не менее, всех программистов объединяет одно — умение облечь человеческие требования в машинный код, чтобы сделать труд или развлечение автоматизированным, удобным, простым. Программист создаёт инструкции для компьютера, в результате выполнения этих инструкций получается какой-то целевой результат.
Вам стоит задуматься, не будущий ли программист вы, если…
… ваша мотивация исходит изнутри, вам нравится процесс управления компьютером, вы хотите не просто использовать программу (игру, приложение), но и знать, как она работает, модифицировать её.
… вы не ожидаете бешеных доходов и не думаете о том, что программирование — новый рок-н-ролл, первично именно желание творить магию: превращать идеи в код.
… вы знаете, как сделать лучше любую программу, любой сайт, любое мобильное приложение. Вы точно знаете, что можно хотеть от программы и мечтаете научиться делать совершенный код.
Где нужен?
Сегодня программисты нужны везде и я не думаю, что этот тренд изменится в ближайшие 10-15 лет. Программисты нужны в промышленности, науке, космосе, бизнесе, медицине, транспорте и даже не в ИТ-компаниях (шутки шутками, а вы знаете, как трудно найти отличного программиста 1С или разработчика для интернет-магазина на 1С-Битрикс?!). В общем, даже в институте церкви и благотворительности есть спрос на программистов. И это здорово, потому что вы можете не просто выбрать профессию программиста, но и соотнести её со своим увлечением: химией, биологией, механикой, связью и даже историей и лингвистикой. Более того, если вы будете сочетать в себе навыки разработки ПО и основы профильной деятельности, ваша цена на рынке здорово вырастет, а конкуренция изменится.
Поэтому вам нужно понять не столько, где работать, сколько что именно из разработки вам ближе.
Важно понимать ещё одно разделение.
Базовые требования к профессионалу
Само по себе написание кода — это не самая сложная задача, гораздо сложнее понять требования, интерпретировать их и перевести в понятный машине язык. Работать с заказчиком кода (здесь мы имеем в виду и клиента, и коллег, и работодателей и т.д.) это всегда нервы и приключения, потому что они сами не знают, что хотят, мыслят упрощённо и считают технологии всемогущими. Но если вы претендуете на то, чтобы быть профессиональным программистом, вам необходимо не только хмуро бить по клавишам, но и активно работать с людьми, с техническими заданиями, требованиями и т.д. Это отличает программиста от простого кодера.
Необходимость знания иностранных языков
Можно ли обойтись в разработке без знания иностранного (в частности английского) языка? Можно. Достаточно выучить синтаксис и слова языка программирования, мыслить и общаться вы можете исключительно на русском языке. Незнание языка не будет помехой в карьерном росте, развитии, коммуникациях в очень многих компаниях.
Однако — что даёт знание иностранного языка?
Где учиться
В современных российских вузах есть масса программистских специальностей, есть бакалавриат и магистратура, есть форматы дополнительного образования. Если вы ещё только выбираете свой вуз, то, конечно, стоит идти на специальный факультет, либо на физику, математику и другие технические специальности.
Если программирование вам нужно как вспомогательный инструмент для основной специальности, то либо поищите смежный вариант (типа медицинской кибернетики и информатики), либо обучайтесь параллельно главной специализации.
Если у вас уже есть образование, то для вас есть самообразование, различные курсы, онлайн-школы, корпоративные университеты и т.д. Вы можете изучать программирование с помощью этих средств обучения либо полностью самостоятельно или даже с ментором. О дополнительном образовании можно почитать здесь.
Обращаю ваше особое внимание: высшее образование по-прежнему важно, поскольку оно имеет значение для работодателя, нужно при переезде в другую страну, а также даёт базу, основу, которая позволит быстро развиваться в любом новом направлении.
Более того, не столько важно, какой язык программирования вы освоите, сколько важно, что вы знаете о математике, алгоритмах, вычислениях, сетевом и серверном администрировании, принципах организации сетей, стеках и проч. А эту основу как раз неплохо дают в вузах.
Лучшие книги и средства обучения
Для каждой специальности есть свой набор книг и ресурсов для обучения, но есть вещи, которые стоит прочитать всем.
Из любимых ресурсов:
Ещё одна огромная и свежая подборка полезного онлайна для программистов.
Совет: даже если вам иногда лень заниматься, слушайте лекции хотя бы фоном, так вы погрузитесь в терминологию, обратите внимание на какие-то незаметные при напряжённом изучении моменты.
Мифы профессии
Про программистов ходит очень много мифов и слухов: про характер, грубость, неумение строить личную жизнь и т.д. Но это частные случаи, которые можно найти в профессии. Например, я был одно время близок к сфере медицины и могу сказать, что там тоже немало замужних за работой и женатых на работе, немало суровых интровертов и грубых, но профессиональных ребят (скорее, задолбанных). Да и вообще сложно представить «анклав» счастья в какой-то определённой сфере.
А если программист ещё и геймер… Всегда можно найти пару 😉
Поэтому я разберу четыре самых популярных мифа.
Главный совет
Если вы учитесь быть программистом, однажды вам обязательно захочется бросить это всё, потому что путь покажется слишком длинным. Вы устанете от однообразных тренировочных задач, каждая неудачная компиляция будет вызывать тупое, болезненное отчаяние, вам будут сниться указатели, рекурсии и принципы ООП (ну или неудачные вызовы функций). Вся эта возня покажется безумного далёкой не только от вашего первого самостоятельного проекта, но и от первого корпоративного мержа…
Желание бросить — первый признак того, что вы идёте верным путём, что вы действительно напрягаетесь, а не мастрячите какой-то код методом копипаста из Google (даже не с GitHub!). Только когда вы настолько натренируетесь на простых задачах, что они вам станут противно скучными, вы сможете уверенно перейти на новый этап с отличной базой знаний.
Совет простой: не бросайте. Отвлекитесь, переспите с этими мыслями, забросьте обучение на неделю и вернитесь. Вы сами не заметите, как в голове что-то «щёлкнет» и всё встанет на свои места и вот он, первый мерж, первое код ревью, первый коммит в open source, первое выступление на митапе, свой пет-проект, первые задачи на должности миддла. Не останавливайтесь — всё будет!