(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

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

Источник: habrahabr

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

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

Терминология

Изучение сути вопроса логично начать с понимания терминов. Самым понятным является "Programmer", который в Оксфордском словаре определяется как человек, ответственный за написание программы. И с переводом все просто: программист - он и в Африке программист. И даже в России. Сложности начинаются дальше.

"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, оптимизация работы приложений, разработка внутренней методологии и стандартов, контроль и управление требованиями. Кроме того, соискатель должен обладать лидерскими качествами. Технические требования не сильно отличаются от требований к "обычным" программистам: их примеры можно посмотреть тут: 1, 2 и 3.

Университетские программы по направлению "Computer Science" включают больше математических предметов, изучение теории алгоритмов, а также такие темы как машинное обучение, нейронные сети и облачные вычисления. Студенты изучают больше теории, но должны успешно применять на практике полученные математические знания, выявлять, формулировать и решать инженерные проблемы. Таким образом, у этого типа специалистов формируется наибольшая "широта взглядов" - в теории он может работать и программистом, и SE, и непосредственно по специальности. 

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

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

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

Что в итоге

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

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

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 14.11.2016 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
ZBrush 4R6 Win Commercial Single License ESD
GFI WebMonitor Plus Edition - подписка на 1 год
Zend Guard 1 Year Subscription
Quest Software. TOAD for SQL Server Xpert Edition
Allround Automation PL/SQL Developer - Unlimited license
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Поиск курсов
 
 
Интересные факты

Учебный центр "Интерфейс" - в десятке ведущих учебных центров России в сфере IT.

  • У нас преподают такие известные эксперты, как Пржиялковский В.В., Леоненков А.В., Новичков А.Н., Зайцев А.Л., Зайцев Р.А., Большаков О.Н., Мирончик И.Я., Саксонов А.А., Пригодина Н.Ю., Красникова С.А.
  • Учебный центр "Интерфейс" проводит авторизованные курсы по продуктам компаний Microsoft, ERwin, Embarcadero (CodeGear), Postgres Professional
  • Подтвердить полученные знания можно, сдав сертификационные экзамены. Учебный центр "Интерфейс" является авторизованным центром тестирования Pearson VUE
  • Учебный центр "Интерфейс" оказывает консалтинговые услуги по построению моделей бизнес-процессов, проектированию информационных систем, разработке структуры баз данных и т.д.
  • Возможна корректировка программ курсов по желанию заказчиков! Мы расскажем Вам о том, что интересует именно Вас, а не только о том, что жестко зафиксировано в программе курса.
  • Где Вам удобнее учиться? В Москве? Санкт-Петербурге? Подмосковье? В вашем собственном офисе? Позвоните нам по тел.:+7 (495) 925-0049 и мы обсудим удобный для Вас вариант обучения.

Горячая линия:
+ 7 (495) 925-0049
mail@interface.ru
Отправить быстрое сообщение

Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Обучение для IT-профессионалов
Обучение и сертификация Microsoft
IT сертификация
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100