Кто такой инженер программист и чем он занимается
Профессия инженер-программист: кто такой, чем занимается, как обучиться, где работать
Начать нужно с общего: термин «разработка программного обеспечения» восходит к 1960-м годам. Во время кризиса программного обеспечения, во время которого стало ясно, что затраты на программы были выше запланированных, в 1968 году они отреагировали на критику методов, использовавшихся до сих пор в недавно созданной дисциплине разработки программного обеспечения. Сегодня людей, которые практикуют эту профессию, также часто называют «разработчиками программного обеспечения». Деятельность называется разработка программного обеспечения.
Что делает инженер-программист?
Программирование нового программного обеспечения обычно не самая важная задача инженера: скорее, он сталкивается с проблемой содействия дальнейшему развитию существующих программ. Следующие виды деятельности находятся в центре работы:
Поставленные задачи зависят не в последнюю очередь от того, насколько велика компания: для небольших компаний один и тот же человек часто отвечает за разработку и проектирование, в то время как эти задачи являются общими для более крупных компаний.
Чем программный инженер отличается от программиста?
Инженер-программист выступает в роли прогрессора, в то время как программист в основном пишет новые программы. Инженер – скорее редактор, а программист – автор.
Где обучают инженер-программистов или изучение программной инженерии в современном мире
Эта бакалаврская программа в основном предлагается университетами прикладных наук, а соответствующая магистерская программа также находится в университетах. Чтобы поступить в университет, во многих случаях необходимо пройти сдать ЕГЭ по математике.
В современном мире, где подорвано, в большинстве случаев, доверие к высшему образованию, есть много альтернативных возможностей освоить профессию инженер-программиста: учебные центры, онлайн и оффлайн-курсы. Отличная программа профессиональной переподготовки «Инженер-программист» преподается в ИПАП.
Где работают инженеры программного обеспечения?
Для кого могут понадобится знания и умения инженер-программиста:
Основные навыки и знания, необходимые инженер-программисту
Необходимы следующие навыки:
Будущие перспективы профессии инженер-программист
Будь то автомобильная, медицинская техника или множество других областей, автоматизация и оцифровка проникают во все области и отрасли. Поэтому потребность в инженерах с соответствующей квалификацией, безусловно, не уменьшится, хотя в настоящее время больше не говорят о нехватке инженеров. Такие тенденции, как искусственный интеллект, создают дополнительный спрос на компетентных разработчиков программного обеспечения. У того, кто хорошо разбирается в предмете, вероятно, никогда не будет проблем с безработицей.
Курсы профессиональной переподготовки в ИПАП:
Инженер-программист
Инженер-программист – специалист, занимающийся созданием программного обеспечения, предназначенного для операционных систем вычислительных машин. Профессия относится к типу «человек-знаковая система», подойдет для абитуриентов, которые любят изучать информатику и математику. Кстати, в 2021 году центр профориентации ПрофГид разработал точный тест на профориентацию. Он сам расскажет вам, какие профессии вам подходят, даст заключение о вашем типе личности и интеллекте.
Краткое описание
На сегодняшний день профессии, которые так или иначе связаны с программированием, являются самыми высокооплачиваемыми и популярными. Инженеры-программисты несут ответственность за разработку, проектирование, производство и тестирование разнообразных программных продуктов. Инженеру необходимо высшее образование, выпускникам профильных ссузов присваивается квалификация «техник-программист».
Особенности профессии
Инженеры-программисты необходимы в разных сегментах, ведь в них заинтересованы промышленные предприятия, производители бытовой техники и инноваций, а также компании, занимающиеся созданием IT-продуктов для бизнеса. В обязанности инженера-программиста входят следующие работы:
Это лишь малая часть обязанностей, профессия связана с постоянной аналитикой, технической работой, требует глубоких знаний в области математики, информатики и смежных дисциплин. Инженеры должны знать несколько языков программирования, а также английский на уровне Independent User (B1, B2) и выше. Иностранный язык необходим для ведения профессиональной деятельности. Он понадобится для самообразования, ведь новой научной и технической литературы, переведенной на русский язык, не слишком много.
Инженер-программист использует методы математического моделирования, алгоритмизацию, разные виды типизации, реляционные модели и базы данных, SQL, СУБД. Профессия подойдет для мужчин и женщин любого возраста, однако эту сферу не стоит выбирать людям, которые страдают от проблем со зрением (снижение остроты, катаракта и другие).
Плюсы и минусы профессии
Плюсы
Минусы
Важные личные качества
Инженер-программист отличается повышенной концентрацией внимания, точностью. К работе относится ответственно и скрупулезно, требователен к себе и окружающим. Инженеры-программисты имеют аналитическое мышление, склонны к самообучению, могут быть немного замкнутыми людьми со средним уровнем коммуникабельности.
Обучение на инженера-программиста
Стать инженером-программистом можно только после окончания вуза. Выбор направлений подготовки огромный, рассмотрим некоторые из них:
Во многих технических вузах реализуются программы двух дипломов, позволяющие параллельно получать образование в российском и зарубежном учебном учреждении. При поступлении необходимо сдавать ЕГЭ по профильной математике, а также по физике, информатике, химии или иностранному языку. Эти специальности престижные и пользуются популярностью у абитуриентов, поэтому к вступительной кампании необходимо очень хорошо подготовиться.
«Я думала переехать и работать за рубежом»: сколько зарабатывает инженер-программист
В Санкт-Петербурге
Героиня этого выпуска стала инженером-программистом вслед за братом и отцом. Она начинала в компании, которая создает системы управления авиационными двигателями, и получала 7500 Р в месяц. А сейчас работает в иностранной компании, которая занимается автомобилями нового поколения, и зарабатывает в 25 раз больше.
Выбор профессии
Я хотела поступить на факультет прикладной математики и программирования СПбГУ еще в старших классах. На меня повлияли отец и брат: они оба инженеры-программисты. До этого отец был моряком-подводником, но в 45 лет вышел на пенсию и устроился в ту же контору, где работал мой брат. Они создавали системы управления авиационными двигателями.
Когда слышишь, как люди с жаром и блеском в глазах обсуждают работу, проникаешься. Правда, слушая их тогда, я почти ничего не понимала: там было полно терминов и аббревиатур типа САУ или БАРК. Авиацию в принципе окутывает ореол романтики, и это была возможность к ней прикоснуться.
После третьего курса я начала искать работу по специальности. Поговорила с отцом, он помог устроиться на то же предприятие, где работали они с братом. Не знаю, вышло бы это без посторонней помощи или нет: просто так узнать о вакансиях очень сложно. За работу на половину ставки мне платили 7500 Р в месяц. Полный день я не могла позволить себе из-за учебы. Я и так до последнего семестра носилась как белка в колесе. С режимного предприятия не так просто уйти в середине дня, чтобы попасть на пары.
С братом я почти не общалась по работе, он был очень занят. Отца иногда спрашивала, как устроен двигатель или контроллер. Сначала меня отдали под начало коллеге, он рассказал основные принципы и почти сразу же поручил часть работы. Главное, что я получила на этом предприятии, — опыт. Все, о чем рассказывали в университете, было полезно: нереально самостоятельно освоить математику, физику, теорию управления, разделы механики и электротехники. Но одно дело изучить законы и формулы, другое — видеть их реальное применение. Без практики цена этим знаниям — ноль.
В университете мы изучали среду Matlab, это мощный инструмент для моделирования и вычислений, с тех пор моя карьера связана с ней. В этой среде можно делать математические модели — своего рода программы. Например, я делала модели газотурбинного двигателя, который создает реактивную струю и приводит в движение самолет.
Наше конструкторское бюро писало софт для систем управления двигателем. Сразу устанавливать софт на реальный двигатель нельзя — сначала его проверяют на модели, иначе первое же включение может привести к поломке. Этим занималась моя команда: мы делали модель двигателя на основе данных испытания и проверяли, будет ли имитация работать, не сломается ли что-нибудь.
На вход программе приходят данные вроде температуры и давления воздуха, положения рычага управления двигателем. А на выходе рассчитываются обороты, температура в камере сгорания, тяга. На такой модели мы отлаживали систему управления, которая потом работает на реальном двигателе. Конечно, модель никогда не будет такой же, как сам объект, но это хороший старт для тестов.
Кстати, когда твоя работа связана с самолетами — летать гораздо спокойнее.
Весь страх и волнение — от непонимания того, как устроен и работает самолет. Например, я люблю турбулентность: она никак не влияет на безопасность полета, ничем не грозит стабильности самолета. Единственное проявление — потряхивает в салоне. Конечно, нужно пристегнуться, но так даже веселее: есть ощущение полета.
Через несколько лет я устроилась инженером-программистом в компанию, которая занимается разработкой авиационных тренажеров. Ушла с первой работы, поскольку было подозрение, что после окончания университета меня не повысят в должности. Стала искать запасные варианты, нашла в Гугле список всех авиационных предприятий Питера, обошла все сайты в поисках вакансий. Отправила резюме — и мне перезвонили в течение часа. Я увольнялась первый раз в жизни, переговоры длились неделю: меня не хотели отпускать, спрашивали, что не так и как это исправить. Мне становилось жаль уходить, я звонила на новое место работы, а там меня окутывали розовым туманом перспектив. И все начиналось заново.
Там я занималась тренажерами, которые имитируют работу всех систем самолетов и вертолетов, например полет при разной погоде и даже тряску от турбулентности. Наша команда создавала софт для тренажера, его сердце — от модели турбулентности до индикаторов в кабине, которые должны меняться в зависимости от условий полета.
Чтобы имитировать полет, на тренажер устанавливают систему подвижности — сложное устройство, которое может поднимать и опускать, вращать и трясти кабину. Эту модель мы сначала тестируем на адекватность сами — не слишком ли сильно трясет, например, а потом приглашаем пилота, который может оценить, насколько ощущения похожи на настоящие. Пилоты очень любят эти эффекты и смеются, когда чувствуют происходящее с самолетом попой, а не видят на экранах.
Место работы
Я пришла сюда с некоторым понижением в должности: на предыдущем месте выполняла скорее менеджерские обязанности, а здесь снова разработчик. Но я не жалею. Компания молодая, энергичная, работать интересно. У нас хороший социальный пакет: ДМС, обеды, компенсация занятий языками и спортом. К твоему мнению всегда прислушиваются, чего бы оно ни касалось — организации рабочего процесса или того, какой кофе лучше закупить.
У нас несколько офисов в разных уголках мира, но почти вся софтовая команда находится в России, потому что российские программисты лучшие в мире по соотношению цены и качества.
По работе часто приходится общаться с иностранцами, это не всегда легко. Не только из-за возможного языкового барьера, но и из-за разного менталитета. Например, для нас абсолютно нормально задержаться на работе, чтобы закончить какую-то задачу. Иностранцы это не всегда понимают. Разница во времени тоже добавляет головной боли: бывали дни, когда я начинала работать по Питеру, а заканчивала — по Лондону.
Чтобы тестировать автомобили, у нас есть небольшой гараж в Санкт-Петербурге и большое предприятие в Великобритании. Тестировать на дорогах общего пользования без особого допуска нельзя, так что обычно это происходит на специальном полигоне или на территории, принадлежащей компании. Мы занимаемся несложными тестами, где надо убедиться, что все системы работают правильно, попереключать передачи, немного поездить.
Мой отдел отвечает за разработку систем управления. Современная жизнь напичкана электроникой, контроллерами, которые управляют всем — начиная от микроволновки и заканчивая ракетой. Наша команда создает системы, которые измеряют положение педалей тормоза и газа, ручки переключения передач, включают все системы в автомобиле и управляют оборудованием — тяговым мотором, вспомогательными насосами, преобразователями энергии.
Все проекты сложные и интересные, но мои любимые — это те, где результат виден лучше всего. Например, система управления автоматическими дверями. Со стороны выглядит очень просто: человек нажимает на кнопку, дверь открывается. На самом деле в этом задействовано огромное число механизмов и контроллеров.
Еще сейчас в моде экологичный транспорт. Самое интересное для меня — это автомобили на водородных ячейках.
Инженер-программист👨💻: обзор, зарплата и обучение профессии
Содержание
Software Engineering – этот английский термин переводится как «программная инженерия» и имеет непосредственное отношение к профессии инженера-программиста. Он относится к направлению разработки и поддержки ПО, или программного обеспечения.
Люди, которые трудятся в этой области, занимаются созданием или адаптацией существующего ПО для нужд конкретной компании. Узнаем, насколько востребована профессия инженера-программиста, какими должны быть его компетенции и как пройти обучение.
❓ Чем занимается инженер-программист
Представители профессии обладают знаниями и в сфере инженерии, и в программировании. Их работа предполагает совмещение двух специальностей. Многие задаются вопросом, в чем отличие инженеров от рядовых программистов.
Инженеры-программисты – это квалифицированные специалисты, имеющие диплом о высшем образовании или прошедшие глубокие профильные курсы по специальности. Они разрабатывают программные продукты и занимаются их отладкой. Те сотрудники, которые прошли обучение в заведении среднего профессионального образования, могут претендовать лишь на должность техника-программиста. Перед ними стоят цели проектирования, создания и тестирования ПО.
Программные инженеры трудятся над решением куда более сложных задач – над разработкой качественных многофункциональных программ, которыми можно было бы пользоваться на любом компьютере. К тому же им нередко приходится дорабатывать уже созданные конструкции, анализировать их и выявлять слабые стороны, определять вероятные проблемы и искать способы устранения. Исполнителями идей, которые предлагают инженеры, являются рядовые программисты, работающие с ними в одной команде.
Еще одна задача, стоящая перед программными инженерами, – создание пользовательских программ, которые отвечают требованиям надежности, удобства и безопасности. Специалистам необходимо продумать возможности дальнейшего развития продуктов.
В штате компании могут трудиться несколько инженеров-программистов. В таком случае рабочие обязанности распределяются между коллегами.
🤓 Какие навыки должен иметь специалист
Для успешного и эффективного решения задач инженерам-программистам надо знать:
В списке навыков и умений программных инженеров должны присутствовать:
🌝 Какие личные качества помогут в работе
Чтобы добиться успеха на профессиональном поприще, программному инженеру пригодятся такие личные качества, как:
💼 Обязанности программного инженера
Должности инженера-программиста существуют в различных коммерческих организациях и в компаниях, которые специализируются на производстве ПО. Независимо от места работы круг обязанностей программных инженеров включает:
👍 Преимущества профессии
Специалисты в области программной инженерии востребованы на рынке труда. Но это лишь один из плюсов профессии. Опытные сотрудники отмечают и другие достоинства своей работы:
👎 Недостатки профессии
Инженерам-программистам приходится сталкиваться и с отрицательными моментами:
🤑 Сколько зарабатывают инженеры-программисты в Москве и в регионах России
В столичных компаниях средний размер оплаты труда сотрудников, которые занимают должность инженера-программиста, составляет около 120 000 рублей. В регионах заработная плата специалистов чуть ниже, она может варьироваться от 60 000 до 150 000 рублей в зависимости от опыта, компетенции сотрудников.
Младший инженер может рассчитывать на ежемесячные гонорары в размере 65 000 рублей. Работодатели предъявляют к ним следующие требования:
Программные инженеры со стажем до 3 лет, могут рассчитывать на более высокий ежемесячный доход, около 100 000 рублей. Они должны иметь диплом о высшем техническом образовании и владеть следующими знаниями:
Кроме этого, специалисты должны уметь проектировать приложения с высокой производительностью, контролировать качество кода. Работая над различными проектами, инженеры-программисты взаимодействуют с сервис-инженерами и менеджерами.
Сотрудники, чей стаж работы на должности программного инженера превышает 3 года, могут претендовать на среднюю заработную плату в размере 140-160 тысяч рублей и выше. Помимо наличия профильного высшего образования и хорошего знания иностранного языка инженеры такого уровня умеют:
В своей работе специалисты используют знание сетевых протоколов, стандартных алгоритмов, распределённой системы управления версиями Git, библиотек.
🧑🎓 Как получить профессию инженера-программиста
Людям, которые хотят связать свою карьеру с Software Engineering, необходимо не только иметь аналитическое и математическое мышление, но и обладать техническими навыками. Специалисты должны быть заинтересованы в профессиональном развитии, всегда быть нацеленными на поиск оптимальных технических решений.
Освоить языки программирования можно самостоятельно. Но этих знаний недостаточно для работы на должности программного инженера.
Чтобы пройти комплексное обучение, можно выбрать один из следующих вариантов:
Онлайн-курсы программирования позволяют получить практические навыки. В ходе обучения будущие программисты получают возможность разработать портфолио, которое поможет при трудоустройстве. Регулировать темп занятий слушатели могут самостоятельно, а общение с преподавателями и будущими коллегами делает учебный процесс живым, интересным и эффективным.
20 вещей, которые я узнал за 20 лет работы инженером-программистом
Наткнулся на любопытный материал, в котором автор систематизировал и записал свой опыт инженера-программиста в 20 тезисов. Я работаю в коммерческой разработке ПО больше 25 лет, и этот текст отозвался во мне практически каждой буквой — большинство советов я тоже регулярно практикую, не облекая их в формат ёмких афоризмов. В общем, решил сделать перевод.
Особенно отзываются пункты «стройте компактные системы» и «лучший код — это отсутствие кода». Последний совет я превращаю в цитату из какого-то второсортного фильма про самураев: «Лучшая победа — та, которую ты одержал, не доставая меч из ножен» (думаю, сослуживцы за моей спиной уже закатывают глаза). И, конечно, бесконечные разговоры про легендарных 10x-программистов постоянно хочется прервать советом не связываться с 0,1x-программистами (которые реально существуют, в отличие от 10x).
Дисклеймер от автора оригинальной статьи
Учиться на чужом опыте и ошибках очень важно, но мы часто забываем, что большинство советов имеют контекст, который далеко не всегда учитывается.
«Вам просто нужно повысить цены» — говорит компания, которая 20 лет работала в бизнесе, выставляя поначалу низкие цены для привлечения клиентов.
«Вам нужно внедрять микросервисы» — говорит компания, которая построила монолит, набрала тысячи клиентов и перешла на микросервисы, когда столкнулась с проблемами масштабирования.
Без понимания контекста советы бессмысленны или, что ещё хуже, вредны. Если бы эти компании последовали собственным рекомендациям в начале пути, они, скорее всего, навредили бы сами себе.
Для понимания контекста расскажу, откуда берутся советы в этой статье. Первую половину карьеры я работал инженером-программистом в небольших компаниях и стартапах, потом перешёл в консалтинг и работал в нескольких действительно крупных компаниях. Затем основал Simple Thread, которая выросла из команды 2 человек до 25. 10 лет назад мы работали в основном с малым и средним бизнесом, сейчас — со средним и большим.
Советы в этой статье от человека, который:
почти всегда работал в небольших командах, где приходится делать много, имея очень мало;
ценит работающие решения выше конкретных инструментов;
постоянно начинает новые проекты, но поддерживает ряд систем;
ценит производительность инженера выше большинства других критериев.
Мой опыт за последние 20 лет сформировал отношение к разработке и убедил меня в некоторых утверждениях, которые я оформил в виде списка. Надеюсь, он вам будет полезен.
1. Я все ещё многого не знаю
«Как ты можешь не знать, что такое BGP?» или «Ты никогда не слышал о Rust?» — некоторые из нас не раз слышали подобное.
Причина, по которой многие любят разработку, заключается в том, что мы учимся всю жизнь. И в создании софта есть огромные области новых знаний, которые с каждым днём только растут. Можно десяток лет работать программистом и всё равно иметь огромный пробел в знаниях по сравнению с кем-то, кто также провёл десятилетия в, казалось бы, аналогичной роли.
Чем раньше вы это поймёте, тем быстрее сможете избавиться от синдрома самозванца и с удовольствием учиться у других.
2. Самое сложное в разработке — сделать продукт, который действительно нужен
Знаю, что это уже стало клише, но многие инженеры скептически относятся к данному пункту, поскольку считают, что он обесценивает их труд. Чушь, на мой взгляд. Напротив, этот момент помогает подчеркнуть, в насколько сложной и иррациональной среде нам приходится работать, ведь именно эти аспекты так усложняют нашу деятельность.
Можно разработать самую технически впечатляющую вещь в мире, а потом никто не захочет её использовать. Такое случается постоянно. Проектирование софта часто связано со слушанием — нам приходится быть сразу инженером-программистом, экстрасенсом и антропологом.
Инвестиции в процесс проектирования (с помощью UX-специалистов или путём самообразования) принесут огромные дивиденды. Ведь как реально подсчитать стоимость разработки неправильного ПО? Это гораздо больше, чем просто потерянное время инженера.
3. Лучшие инженеры-программисты думают как дизайнеры
Великие инженеры-программисты глубоко задумываются о пользовательском опыте. Они могут не думать об этом в терминах вроде внешнего или программного API, UI, протокола или любого другого интерфейса. Великие инженеры думают о том, кто будет его использовать, почему он будет использоваться, как он будет использоваться и что важно для пользователей. Учет потребностей конечного потребителя — это залог хорошего пользовательского опыта.
4. Лучший код — это отсутствие кода или код, который не нужно поддерживать
Всё, что нужно сказать: кодеры будут кодить. Если спросить человека любой профессии, как решить ту или иную проблему, он выберет то, что у него хорошо получается. Это просто человеческая природа. Большинство инженеров-программистов всегда будут склоняться к написанию кода, особенно когда нетехническое решение не очевидно.
То же самое относится к коду, который не нужно поддерживать. Инженерные команды часто хотят изобрести колесо, когда оно уже существует. Здесь нужно соблюдать баланс, есть много причин для развития собственных разработок, но остерегайтесь токсичного синдрома «изобретено не здесь».
5. Программное обеспечение — это средство достижения цели
Основная работа любого инженера-программиста — предоставление ценности. Немногие разработчики понимают это, ещё меньше тех, кто это осознает. А ведь осознание приводит к другому способу решения проблем и другому взгляду на инструменты.
Если вы действительно верите, что выбор ПО зависит от цели, то будьте готовы найти «правильный инструмент для работы», который может и не являться софтом.
6. Иногда нужно перестать точить пилу и просто начать пилить
Некоторые сразу бросаются в проблему и начинают писать код. Другие — начинают исследовать и попадают в аналитический паралич. В таких случаях установите дедлайн и начните изучать решения. Вы гораздо быстрее узнаете что-то, когда непосредственно станете решать задачу.
7. Если у вас нет представления о границах возможного, вы не сможете спроектировать хорошую систему
С этим я часто сталкиваюсь, поскольку мои обязанности уводят меня все дальше и дальше от повседневной разработки ПО. Следить за командой разработчиков — огромный объём работы. И если вы не понимаете, на что способна ваша команда, то сможете разрабатывать решения только для самых простых проблем. И опасайтесь тех, кто давно не писал никакого кода.
8. Каждая система в конечном счёте отстой, смиритесь с этим
У Бьерна Страуструпа есть цитата: «Есть только два вида языков: те, на которые все жалуются, и те, которыми никто не пользуется». Это можно распространить и на большие системы. Не существует «правильной» архитектуры, вы никогда не закроете весь техдолг, не разработаете идеальный интерфейс, ваши тесты всегда будут слишком медленными.
Это не оправдание тому, чтобы не делать что-то лучше, а наоборот, способ дать вам перспективу. Меньше беспокойтесь об элегантности и совершенстве, стремитесь к постоянному улучшению и созданию пригодной для жизни системы, в которой вашей команде нравится работать и которая стабильно приносит пользу.
9. Никто не спрашивает «почему» в достаточной степени
Используйте любую возможность поставить под сомнение предположения и подходы, которые «всегда делались так, как надо». В команде появился новый сотрудник? Обратите внимание, где он запутался и какие вопросы задаёт. Поступила заявка на новую функцию, которая не имеет смысла? Убедитесь, что вы понимаете цель и то, что требует эту функциональность. Если не получаете чёткого ответа, продолжайте спрашивать, пока не поймёте.
10. Сосредоточьтесь на том, чтобы избежать 0,1х-программистов, а не найти 10х-программистов
10x-программист — это глупый миф. Идея о том, что кто-то может сделать за 1 день то, что не менее компетентный, трудолюбивый, и такой же опытный программист может сделать за 2 недели, глупа.
Я видел программистов, которые пишут в 10 раз больше кода, а потом вам приходится исправлять его в 10 раз дольше. Кто-то может быть 10х-программистом только в том случае, если вы сравниваете его с 0,1x-программистом — тот, кто тратит время, не просит обратной связи, не тестирует свой код, не рассматривает крайние случаи и так далее. Нужно заботиться, чтобы не допустить 0,1x-программистов в команду, а не искать мифического 10x-программиста.
11. Одно из главных отличий между сеньором и джуном — свое мнение о том, как все должно быть
Ничто не беспокоит меня больше, чем сеньор, не имеющий никакого мнения о рабочих инструментах или о том, как подходить к созданию программного обеспечения. Лучше высказать мнение, с которым я буду категорически не согласен, чем не иметь мнения вообще.
Если вы используете инструменты, но ненавидите их, вам нужно изучить больше. Попробуйте другие языки, библиотеки и парадигмы. Существует мало способов повысить уровень своих навыков быстрее, чем активный поиск того, как другие решают задачи с помощью инструментов и методов, отличных от ваших.
12. Людям не нужны инновации
Люди много говорят об инновациях, но обычно они ищут дешёвые преимущества и новизну.
Если вы действительно привносите новшества и меняете то, что людям привычно — ждите отрицательных отзывов. Но если верите в то, что делаете, и знаете, что это действительно улучшит ситуацию, приготовьтесь к долгой битве.
13. Ваши данные — самая важная часть системы
Я видел много систем, в которых целостность данных держалась в основном на надежде. Любое отклонение от идеального сценария в такой системе, и мы получаем частичные или грязные данные, а работа с такими данными в перспективе превратится в кошмар.
Важно помнить, что данные скорее всего сильно переживут вашу кодовую базу. Приложите усилия, чтобы всё хранилось в порядке, и это окупится.
14. Ищите технологических акул
Старые технологии, которые остались на плаву, — это акулы, а не динозавры. Они настолько хороши, что пережили быстрые изменения, которые постоянно происходят в мире технологий. Заменяйте их только в том случае, если у вас есть очень веская причина. Эти инструменты не будут модными и современными, но позволят выполнить работу без множества бессонных ночей.
15. Не путайте скромность с невежеством
Есть много программистов, которые не высказывают мнения, если их прямо не спросить. Если кто-то не высказывает своё мнение вам в лицо, это не значит, что ему нечего добавить. Иногда самых громких хочется слушать меньше всего.
Поговорите с окружающими, запросите фидбек и советы.
16. Программисты должны регулярно писать
Инженеры-программисты должны регулярно вести блог или дневник, писать документацию и вообще делать всё, что требует от них высокого уровня навыков письменного общения. Письмо помогает думать о проблемах и более эффективно общаться с командой. Это один из важнейших навыков, которым должен овладеть любой программист.
17. Рабочие процессы должны быть минимально энергозатратными
Сейчас все хотят быть agile, но «agile» — это создание вещей небольшими порциями, обучение, а затем итерация. Если кто-то пытается вложить в это гораздо больше, значит, он что-то продаёт. Для этого необязательно переставать помогать сотрудникам или отказываться от отчётности, но вы когда-нибудь слышали, чтобы люди из ваших любимых IT-компаний и масштабных опенсорс-проектов хвалились тем, какой у них клёвый Scrum? Процессы должны оставаться лёгкими и гибкими до тех пор, пока не появится потребность в большем. Доверьтесь своей команде, они всё сделают.
18. Инженеры-программисты, как и все люди, должны чувствовать ответственность
Если вы отвлечёте кого-то от результатов его работы, то он будет меньше заботиться о ней. Это почти тавтология и основная причина, почему кросс-функциональные команды работают хорошо, и почему DevOps стал таким популярным. Дело не только в передаче обслуживания и неэффективности, а в том, чтобы управлять всем процессом от начала до конца и нести прямую ответственность за предоставление ценности.
Дайте группе увлечённых людей полную ответственность за проектирование, создание и выпуск софта (или чего-то ещё) — произойдут удивительные вещи.
19. Собеседования не помогут определить, насколько хорошим членом команды будет человек
Собеседования лучше проводить, чтобы понять, кто такой человек и насколько он заинтересован в нужной области знаний. Пытаться выяснить, насколько хорошим членом команды он будет, — бесполезное занятие.
То, насколько человек умён или осведомлён, также не является хорошим показателем, каким членом команды он станет. Никто не скажет вам на собеседовании, что он будет ненадёжным, жёстким, напыщенным или никогда не будет приходить на собрания вовремя. Некоторые ищут «сигналы» для таких вещей, вроде «Если они спрашивают об отгулах на первом собеседовании, значит, они точно не будут ходить на миты!», но это все ерунда. Если вы опираетесь на подобное, то просто гадаете и отбрасываете хороших кандидатов.
20. Стремитесь к созданию более компактной системы
Есть много факторов, которые будут подталкивать вас к созданию большой системы. Распределение бюджета, невозможность решить, какие функции следует сократить, желание создать «лучшую версию». Все эти вещи очень сильно подталкивают к тому, чтобы сделать слишком много. Нужно бороться с этим.
В процессе разработки вы узнаете так много нового, что в результате итераций получите гораздо более крутой результат. Для многих это крайне трудно.
Ваша история
Вот и всё: 20 лет разработки программного обеспечения превратились в 20 мудрых пунктов. Если согласны или не согласны с мыслями в статье, или если есть, что добавить и чем поделиться — пишите в комментариях.