Что делает инженер-программист?

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

Некоторые разработчики слабеют под таким взглядом и идут доказывать, что они что-то могут. Из-за таких лохов в голове обывателя слово «программист» является синонимом понятия «бесплатная компьютерная помощь».

1. Front-end веб-разработчик

Что делает инженер-программист?

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

  • «Мне надо переустановить Windows. Я всю жизнь ждал того, кто сделает это для меня. А потом пойдем чинить тостер.»;
  • «О! Ты можешь помочь мне с лабораторной работой на VBA!»;
  • «За сколько сможешь сделать сайт для магазина моей мамы?»;
  • «Да ну! Скучная и дурацкая профессия. Я вот как-то пробовал разобраться с 1C…».

Ведь многие люди не знают, чем на самом деле занимаются программисты и судят об этом по навыкам своих родственников/знакомых. Но разные представители специальности делают абсолютно разные вещи и нельзя говорить за всех.

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

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

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

Где работает?

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

Что делает?

Разрабатывает динамику пользовательского интерфейса. Если в компании нет верстальщика, то еще и переводит PSD-шаблоны в HTML-код.

Технологии

  • HTML и UI фреймворки (Bootstrap, Foundation, Pure);
  • CSS и препроцессоры (SASS/LESS);
  • JavaScript + фреймворки/библиотеки на этом языке (Jquery, ReactJS, AngularJS, BackboneJS);
  • Утилиты для сборки проектов (Grunt, Gulp, Bower).

2. Back-end разработчик

Что делает инженер-программист?

Человек на плечи которого ложиться основное бремя по разработке веб-проекта. Он как бы строит фундамент, на который front-end разработчик прицепляет «декоративные элементы».

Где работает?

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

Что делает?

Разрабатывает “ядро” сайта или веб-приложения: код исполняемый на сервере и архитектуру базы данных.

Технологии

Один из нижеперечисленных языков и фреймворки/библиотеки для него:

  • PHP;
  • Ruby;
  • Python;
  • Java;
  • Go;
  • JavaScript.

А также:

  • Базы данных MySQl/PostgreSQL/NoSQL.

3. Full-stack веб-разработчик

Человек, который может сделать сайт любой сложности «от и до».

Что делает инженер-программист?

Где работает?

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

Что делает?

Сайты и веб-приложения. Выполняет работу front-end и back-end разработчика одновременно.

Какие технологии ему желательно знать?

См. списки двух предыдущих типов.

4. Разработчик игр

Что делает инженер-программист?

Очень широкое понятие, которое включает как минимум три крупных категории: разработчик десктопных игр, разработчик мобильных игр и разработчик MMORG.

Где работает?

В игровых студиях.

Что делает?

Разрабатывает игры.

Какие технологии ему желательно знать?

  • С#/C++/Java;
  • Open GL или DirectX;
  • Один из игровых движков (Unity, Unreal Engine, Torque и другие).

5. Разработчик приложений под Android

Что делает инженер-программист?

Где работает?

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

Что делает?

Разрабатывает приложения под операционную систему Android.

Какие технологии ему желательно знать?

  • Java;
  • Android SDK;
  • OpenGL;
  • Android Studio.

6. Разработчик приложений под iOS

Что делает инженер-программист?

Где работает?

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

Что делает?

Разрабатывает приложения под операционную систему iOS.

Технологии

  • Objective-C;
  • XCode;
  • OpenGL;
  • Cocoa Touch;
  • CoreData;
  • CoreGraphics.

7. Программист 1C

Что делает инженер-программист?

Многие разработчики не считают язык, встроенный в 1C, языком программирования, а людей, которые пишут на нем, программистами. У них есть на это свои основания. Тем не менее, людей которые называют себя программистами 1C и вакансий для них очень много.

Где работает?

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

Что делает?

Пишет программы для автоматизации документооборота в компании.

Технологии

  • «1С:Управление торговлей»;
  • «1С:Бухгалтерия»;
  • «1С:Зарплата и кадры»;
  • T-SQL.

8. Инженер-программист

Если одним из 7 предыдущих типов можно стать отучившись на курсах или путем самообразования, то инженеров-программистов выпускают только технические ВУЗы. Часто на этих должностях работают люди старше сорока лет, получившие образование в советское время.

Что делает инженер-программист?

Где работает?

На производстве или в научном учреждении.

Что делает?

Разрабатывает программы для управления самыми разными устройствами: от печи на хлебозаводе до робота-пылесоса.

Технологии

Один из нижеперечисленных языков:

  • C;
  • C#;
  • C++;
  • Java;
  • Delphi (жил, жив и будет жить!);
  • Assembler.

Если посмотреть объявления о найме программистов на российских сайтах, то 90% из них будут подходить под эти семь типов. На Западе рынок вакансии несколько разнообразнее. Кто интересуется, может зайти на Odesk и посмотреть, какая работа там предлагается.

С грустью замечаю, что 14-летние пакистанцы требуют там за html-верстку от 500 рублей в час. А судить о том, какие языки сейчас наиболее популярны в мире можно по данным Tiobe Index. Этот рейтинг строится по числу запросов в поисковых системах с упоминанием разных языков программирования.

Что делает инженер-программист?

Источник: https://www.iphones.ru/iNotes/524081

Инженер-программист: должностная инструкция, права и обязанности, ответственность

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

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

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

Если же рассматривать вакансию ведущего инженера-программиста, то от претендентов на эту должность работодатели требуют навыки управления подчиненными и проектами.

Очень ценятся инициативные сотрудники, ответственные и способные быстро и четко выполнять поставленные перед ними задачи.

Общие положения

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

Требования к квалификации инженера-программиста: категории

Самой высокой ступенью этой должности является ведущий специалист. Работодатели требуют от претендентов на эту должность получения полного высшего образования. Имеется в виду диплом специалиста или магистра в сфере инженерного программирования.

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

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

Что делает инженер-программист?

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

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

Знания

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

Что делает инженер-программист?

Сотрудник обязан узнать технологии обработки данных механизированным методом, какие существуют виды технических носителей информации, классификацию и кодирование данных.

Помимо этого, его знания должны включать языки программирования, системы исчисления, коды, шифры и актуальные стандарты.

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

Функции

Должностная инженера-программиста предполагает, что на сотрудника возлагаются определенные функции.

Работник должен разрабатывать решения различных задач-программ, в том числе и экономических, основываясь на алгоритмах и анализе математических моделей.

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

Что делает инженер-программист?

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

Специалист должен определять, какую именно информацию следует обрабатывать посредством механических операций на вычислительной технике. Он рассчитывает объем, макеты, схемы ввода, вывода, структуру и контроль данных. Работник должен подготавливать программы перед их отладкой и проводить ее.

Обязанности

Инструкция инженера-программиста предполагает, что он занимается определением объема и содержания информации, должен обеспечивать максимально полную проверку программного обеспечения на соответствие его назначению и функциям. Он должен выполнять запуск созданных программ и введение в них исходных данных, требуемых по инструкции.

Читайте также:  Где узнать, как стать балериной?

Что делает инженер-программист?

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

Именно этот сотрудник занимается разработкой инструкций и прочей технической документации, относящейся к созданным им программам.

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

Другие функции

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

Он занимается проектированием программ, которые смогут расширить область использования вычислительных технологий в компании.

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

Другие обязанности

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

Проводит технические осмотры техники, подготавливает их к работе перед приходом сотрудников и при обнаружении каких-либо неполадок — устраняет их.

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

Права

Сотрудник вправе знакомиться с проектами и решениями руководства, которые относятся непосредственно к его деятельности.

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

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

Ответственность

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

Что делает инженер-программист?

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

Заключение

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

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

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

Что делает инженер-программист?

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

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

Несмотря на большую техническую направленность, все-таки программирование – это сложный творческий процесс.

Источник: https://www.syl.ru/article/381663/injener-programmist-doljnostnaya-instruktsiya-prava-i-obyazannosti-otvetstvennost

Какие обязанности у инженера программиста в должностной инструкции?

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

Этот документ помогает распределить обязанности, повысить и обеспечить высокое качество выполнения работы, четко закрепить за сотрудниками участки работы.

Составляя должностную инструкцию для инженера программиста надо обратить внимание на ряд моментов:

  • чем занимается инженер программист, где нужен такой специалист;
  • общие положения документа;
  • обязанности и задачи;
  • требования к специалисту;
  • какая ответственность и права у сотрудника.

Что делает инженер-программист?

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

Основная цель инженер-программиста – разработка программ для целей фирмы. Помимо этого сотрудник должен плавно внедрять созданное программное обеспечение. Основную работу инженера программиста можно разбить на следующие составляющие:

  • разработка;
  • наладка выполнения алгоритма;
  • следование задачам руководства;
  • проведение тестирования;
  • наладка в случае ошибок или сбоев в программах.

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

Программист инженер – это сотрудник, который обязательно имеет диплом, обладает навыками и умениями в сфере инженерных дисциплин и умеет их применять во время написания программ. То есть сотрудник разрабатывает, создает проекты, а реализовывать ее уже должен подчиненный программист, но, как правило, сотруднику проще и быстрее самому доделать до конца свой проект.

Общие положения инструкции

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

Что делает инженер-программист?

Общие положения для инженера программиста могут выглядеть следующим образом:

  • инженер программист является специалистом;
  • приступает к своим обязанностям на основе приказа о приеме на работу, который визируется руководителем фирмы, увольнение происходит на основании приказа об увольнении согласованного с руководителем;
  • сотрудник отчитывается непосредственно перед начальником фирмы или руководителем структурного отдела;
  • создается приказ на предприятии, в котором прописан порядок замещения сотрудников в случае заболевания или отпуска;
  • к специалисту предъявлены требования по наличию образования из высшего учебного учреждения и в трудовой книжке должна быть запись о работе на такой же должности не менее 1 года;
  • документы для руководства в работе – акты РФ, указания руководства, а также локальные документы (инструкции, нормативные акты, устав фирмы);

К необходимым знаниям специалиста относят:

  • язык программирования;
  • порядок составления и применения документации для разработанных программ, порядок заполнения и хранения;
  • грамотная и своевременная подборка информации;
  • основы программирования;
  • умение работать с ЭВМ, знать строение, режимы и правила работы с оборудованием;
  • знание и умение применять материалы, которые регламентируют разработку алгоритмов и программного обеспечения;
  • использование ЭВМ при подборе и обработке нужной информации;
  • актуальные стандарты в сфере своей работы;
  • опыт зарубежных стран в сфере программирования;
  • основы производства, управления и экономики;
  • знание ТК РФ;
  • правила техники безопасности и норм труда.

Обязанности и задачи

Что делает инженер-программист?К обязанностям специалиста относят не только его профессиональные навыки и умение их применять, но и общие условия, которые следует соблюдать всем работникам, а именно:

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

В обязанностях инженера программиста в должностной инструкции должно быть прописано:

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

Что делает инженер-программист?Специалист также должен уметь работать в коллективе и придерживаться установленных сроков.

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

Умение работать в команде чрезвычайно важно даже такому «технарю» — поскольку даже супер профессионал, которые не уважает команду и не умеет работать в коллективе может навредить процессам больше, чем менее квалифицированный специалист.

Требования к специалисту

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

Помимо требований к наличию образования к специалисту могут предъявить:

  • знание конкретных программ;
  • знание специфики предприятия;
  • умение работать с большим объемом информации в короткие сроки;
  • наличие технической грамотности;
  • обладать следующими личными качествами – быть коммуникабельным, стрессоустойчивым, легко обучаемым, внимательность, логическое мышление.

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

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

Какая ответственность и права у сотрудника

Что делает инженер-программист?

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

К правам инженера программиста можно отнести:

  • своевременно знакомиться и участвовать в проектах, связанных с программированием;
  • предлагать нововведения по улучшению процесса работы;
  • своевременно ставить в известность руководство о наличии недочетов и сбоев в работе, а также предлагать пути устранения ошибок;
  • требовать содействия от руководства, а также других сотрудников фирмы в решении поставленных задач;
  • запрашивать всю необходимую документацию для выполнения работы;
  • привлекать специалистов всех отделов для решения задач (лично или по поручению выше стоящего руководства).
Читайте также:  Список того, что сдавать на фотографа

Ответственность к специалисту применяется в следующих случаях:

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

Источник: https://ZnayBiz.ru/kadry/trudoustrojstvo/dolzhnostnye-instrukcii/inzhener-programmist.html

Кто ты по профессии: Разница между «Programmer», «Software Engineer» и «Computer Scientist»

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

Меняется ли от этого суть работы? Мы в 1cloud попробовали разобраться в том, какую работу подразумевают такие специализации как «Programmer», «Software Engineer» и «Computer Scientist».

Что делает инженер-программист?

«Software Engineer» (SE) (согласно статье в webopedia) — это дипломированный профессиональный инженер, имеющий достаточно знаний и навыков для применения инженерных дисциплин при создании программного обеспечения.

Главное отличие — SE занимается разработкой, руководством проектов, а программист их реализует путем написания кода. На русский название должности переводится как «инженер-программист» или просто «программист».

Теперь разберемся с тем, кто такой «Computer Scientist» (CS). Если верить словарю, то речь идет о работе в области теории вычислений и проектирования компьютеров. Разные словари дают разный перевод на русский: «учёный, работающий в области теории вычислительных машин и систем (в области ВТ, в области компьютерных наук)» или «программист».

Итого, имеем три очень разных определения в английском и три «программиста» в русском. Западный подход довольно четко разграничивает все три должности. Но у нас часто возникает путаница, и все три понятия используются как взаимозаменяемые. Поэтому лучше обратиться к мнению самих программистов и посмотреть, как они описывают свою деятельность.

Для обеспечения полноценной разработки ПО/кода программист должен быть сконцентрирован на своей работе и обеспечить последующее использование и интеграцию программных компонентов друг с другом. Энтони Щерба (Anthony Scherba), президент и основатель студии разработки Yeti, сравнивает этот процесс с решением сложной алгебраической задачи.

Так, по мнению эксперта, в обязанности программиста входит создание, упрощение, документирование кода и написание тестов. Поскольку он занимается практической реализацией поставленных задач, программист должен разбираться в особенностях языка (языков) программирования, с которыми работает, а также в теории алгоритмов.

Необязательные компетенции: математический анализ, коммуникативные навыки и умение работать в команде — подробнее в блоге Алана Скоркина (Alan Skorkin). Работа «Software Engineer» подразумевает комплексный подход и иногда ее можно сравнить даже с процессом создания произведения искусства, которое программист старается постоянно усовершенствовать. Так считает и Дэниел Каплан (Daniel Kaplan), опытный программист и сотрудник Pivotal Labs.

Инженер должен видеть всю картину с двух сторон: проект в соответствии с общим планом и отдельные задачи, необходимые для его осуществления. Он должен уметь находить верные комплексные решения, понимать требования клиентов, прогнозировать возможные последствия и распределять задачи по программированию (в команде). Его работа особенно важна во время разработки новых версий или функциональных возможностей продукта или, например, когда клиент меняет свои требования. Таким образом, инженер-программист отвечает не просто за написание кода, а за весь проект.

«Computer Scientist» — математик и технический специалист в равной степени. Он обладает математическими знаниями и объясняет, как и почему работает тот или иной инструмент, решение или алгоритм. Его работа имеет большое значение для развития программирования в целом.

Также CS свойственна специализация в одной или нескольких сферах — ИИ, нейронные сети, теория языков программирования, базы данных.

Представления профессионалов в принципе соотносятся со словарными статьями, что естественно: на то они и профессионалы, чтобы разбираться в своей работе. Сбой в коммуникации и подмена понятий явно происходит на каком-то другом уровне, но на каком? Начнем опять с «программиста». Еще одно его важное отличие от всех остальных: как правило, отучившись в профильном ВУЗе, вчерашний студент становится не просто «программистом», а «инженером/бакалавром/магистром по специальности/направлению».

Для западной образовательной системы это тоже характерно — взгляните, к примеру, на разнообразие специальностей в направлении «Software Development and Programming» Сиднейского Технологического Университета. Ни одна из них не содержит в своем названии слова «programmer» или «programming».

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

Помимо знания разных языков и/или опыта работы на разных мобильных платформах/ опыта веб-программирования/ администрирования, программисту нельзя обойтись без коммуникативных навыков (примеры тут и тут).

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

Требования на российском рынке отличаются не сильно и включают разработку проектов, работу в команде, понимание принципов информационной безопасности (и всё те же навыки, отмеченные в абзаце выше). Таким образом, работодатели хотят видеть в программисте универсального (и творчески мыслящего) специалиста, а не просто человека, который пишет и тестирует код на определенном языке, решая кем-то поставленную задачу. Получается, что работодатель (как на Западе, так и у нас) под «программистом» очень часто понимает то, что словари обозначают как минимум как «Software Engineer».

Образовательные программы по профилю «Software Engineering» подразумевают, подход к разработке ПО с научной и инженерной точки зрения, разработку собственных проектов, аналитическую и управленческую деятельность. Помните, в предыдущем разделе эксперты говорили, что SE должен уметь реагировать на изменяющиеся требования? На магистерской программе помимо этого объясняют, как укладываться в бюджет и сроки.

В университете Глазго учат определять технические характеристики, проектировать, создавать и верифицировать крупные программные системы. При этом список предметов включает программирование на разных языках, проектирование баз данных, изучение алгоритмов, то есть все те знания, которые необходимы и для работы «классического программиста».

Что касается точки зрения работодателей, то по их мнению в обязанности инженера-программиста входит написание кода, проверка технической реализации UI/UX, оптимизация работы приложений, разработка внутренней методологии и стандартов, контроль и управление требованиями. Кроме того, соискатель должен обладать лидерскими качествами.

Университетские программы по направлению «Computer Science» включают больше математических предметов, изучение теории алгоритмов, а также такие темы как машинное обучение, нейронные сети и облачные вычисления.

Студенты изучают больше теории, но должны успешно применять на практике полученные математические знания, выявлять, формулировать и решать инженерные проблемы. Таким образом, у этого типа специалистов формируется наибольшая «широта взглядов» — в теории он может работать и программистом, и SE, и непосредственно по специальности.

Это не означает, что полученных знаний ему «за глаза» хватит для успешного старта карьеры в любой из областей и больше ничему учиться не придется. Например, чтобы построить успешную карьеру разработчика, такому выпускнику явно понадобится «подтянуть» практические навыки по написанию кода — но не придется изучать программирование «с нуля».

Идеальный соискатель на должность «Computer Scientist» должен обладать знаниями по теоретической информатике, теории алгоритмов, проектированию баз данных, компьютерному моделированию, при необходимости выполнять задачи аналитика и проводить исследования, знать весь процесс от проектирования до внедрения ПО.

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

Да, действительно программисты, SE и CS — специальности близкие, но не одинаковые, и готовят таких профессионалов на разных университетских специальностях. Наибольшую путаницу в трактовке терминов вносят работодатели – для них, например, разница между «программистом» и Software Engineer может быть совершенно не очевидна.

Судя по требованиям работодателей, от «просто программиста» ждут творческого подхода, универсальных знаний и soft skills, а «computer scientist» может решать важные, но при этом сугубо прикладные, узконаправленные задачи — говорить о том, что одна специальность «по умолчанию» лучше или «сильнее» другой тут не приходится.

Источник: https://habr.com/post/315230/

Все инженеры умеют программировать, но не все программисты могут быть инженерами: в чем отличие?

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

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

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

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

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

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

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

Читайте также:  Какие существуют направления психологов?

Склонность к поиску решений

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

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

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

Перед созданием программы инженер задает вопросы:

  • Какие проблемы я пытаюсь решить?
  • Можно ли сделать для их решения что-то, кроме написания кода?
  • Что я могу сделать, чтобы эти проблемы было проще решить при помощи кода?

Качество кода

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

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

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

Другой важный аспект отличных программ — это ясность кода, а не количество тестов или число в отчете по тестовому покрытию. Этот код может прочитать кто-то ещё? Смогу ли я понять этот код через несколько недель?

Удобство чтения кода важнее, чем вы думаете. К сожалению, для ясности кода нет хороших метрик. Знание хороших методов может помочь, но часто этого недостаточно. Хорошие инженеры просто учатся этому с опытом. Здесь подходит метафора с писательством: знание большого количества слов не поможет вам писать понятные тексты.

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

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

Среда и тестирование

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

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

Чтобы написать программу, инженеры должны продумать любой возможный сценарий и спланировать тестирование всех этих сценариев.

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

Некоторые инженеры начинают с написания тест-кейсов, которые симулируют эти сценарии. Затем они пишут код, который проходит все эти тесты.

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

Стоимость и эффективность

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

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

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

Удобство использования

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

Вот несколько примеров:

  • При создании форм для ввода данных хорошая программа будет игнорировать прописные или строчные буквы? которые используются для ввода email-адреса. Она также уберет ненужные пробелы. Не нужно мучать пользователя из-за включенного Caps Lock, адрес почты уникален.
  • При перенаправлении пользователя хорошая программа запомнит первоначальное местоположение и перенаправит пользователя туда после завершения задачи. Хорошая программа также запомнит уже введенные данные и взаимодействия, которые нужны будут в следующих шагах. Например, вы ищете авиабилеты на Expedia в качестве гостя. Затем вы решили создать аккаунт. Вся ваша история поиска будет сохранена в новый аккаунт, и вы сможете получить к ней доступ с разных устройств.
  • Хорошая программа создается с учетом пользовательских сценариев. Поставьте себя на место пользователя. Однажды я забронировал билет United и забыл ввести свой номер постоянного пассажира. После получения подтверждения я отправился на сайт United, чтобы добавить номер, и эта задача заняла у меня десять минут. К этой функции не было очевидных путей, поэтому мне пришлось проверить все ссылки, которые могли бы вести к ней. Я уже был на странице с этой функцией, но я не увидел её в первый раз, потому что она была спрятана в большой форме. Мне пришлось найти информацию о пассажире, пролистать около 20 строк в этой форме, ввести номер пассажира и номер телефона, чтобы отправить эту форму. Это пример программы, которая создавалась без учета точки зрения пользователя.

Читабельность и безопасность

Это наиболее важные моменты, которые отличают профессионалов от любителей. Они знают, что ответственны за создание надежных и безопасных решений.

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

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

Безопасность касается не только зловредных данных, но и обычных. Если пользователь забывает пароль, то сколько раз он или она сможет его ввести? Заблокируете ли вы после этого аккаунт? Что если кто-то этого и добивается? Позволите ли вы вводить пароль через незащищенное соединение? Что если попытка логина состоялась из необычного места? Что если логин кажется сгенерированным автоматически?

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

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

Дефекты программ невидимы. Наша способность предсказывать и предотвращать известные дефекты ограничена. Поэтому инженеры понимать ценность хороших инструментов, которые могут помочь им писать корректные и безопасные программы.

Инструменты

Несомненно, нам нужны хорошие инструменты. Они многое меняют и часто недооцениваются. Представьте, если бы нам все ещё нужны были FTP для файлов! Представьте проблемы с производительностью и устранением багов без Chrome DevTools! Представьте, как неэффективно бы было писать на JavaScript без ESLint и Prettier!

Любой инструмент, который сокращает цикл обратной связи, должен быть ценным дополнением. Аргумент Брета Виктора об изобретении мгновенной визуальной репрезентации того, что мы создаем, открыл мне глаза. Принятие и улучшение инструментов — это единственный способ попасть в это светлое будущее.

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

Выбор языка имеет значение. Типобезопасность имеет значение. Лучшее, что случилось с JavaScript — это TypeScript и Flow. Статический анализ кода важнее, чем вы думаете. Если вы этого не делаете, то ставите себя под удар неизвестных будущих проблем.

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

Эволюция разработки

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

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

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

Источник: https://apptractor.ru/develop/vse-inzheneryi-umeyu-programmirovat-no-ne-vse-programmistyi-mogut-byit-inzhenerami-v-chem-otlichie.html

Ссылка на основную публикацию