What is android software engineer

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

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

Меняется ли от этого суть работы? Мы в 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».

Читайте также:  Определение координат gps для android

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

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

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

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

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

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

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

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

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

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

Что в итоге

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

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

О чем еще мы пишем в блоге 1cloud на Хабре:

Источник

Не каждый программист может так себя назвать: кто такой Software Engineer и как им стать

Редактор в Highload

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

Немного о Software Engineer

Читайте также:  Android studio jdk home

Редакция Highload публикует перевод материала.

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

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

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

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

Когда речь заходит о работе в IT-сфере — вариантов уйма. Мы решили рассмотреть одно из самых популярных направлений. Инженер ПО или Software Engineer работает над созданием программ и приложений.

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

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

Карьерная лестница Software Engineer

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

  • Программист. На самом деле, как бы заезженно это ни звучало, программист — это человек, пишущий код. Обычно он получает конкретное задание и объяснение, как его решить. Он следует инструкциям и пишет код на том или ином языке программирования.
  • Software Engineer. Цель инженера — создать оптимизированные аккуратные программы, которые можно обновлять и расширять их функционал. Например, инженер может искать оптимальные решения по разработке ПО . Карьера Software Engineer начинается с начального уровня (чаще это специалист по вводу данных). По мере набора опыта и знаний вы начнете накапливать портфолио проектов и решений. Со временем инженер переходит от джуниора к мидлу, а затем уже к уровню сеньора. Но продвижение по карьерной лестнице индивидуально и зависит от политики компании.

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

«Разумеется, Senior Software Engineer — не последняя ступенька карьеры в айти. Но здесь нередко бывает так, что приходится выбирать техническую часть, то есть больше сосредоточиться на инженерно-технических навыках и обмене опытом или же пойти в руководящем направлении. Во втором случае у нас есть такие должности как тимлид, менеджер по программному инжинирингу (Engineering Manager) и так далее. Коммуникационные навыки здесь куда важнее, поскольку ваша задача — обеспечить гладкий, бесперебойный рабочий процесс и продуктивность команды», — говорит Юрий Грушевой, директор информационных технологий в Proxet .

Специализация и обязанности Software Engineer

Теперь рассмотрим основные обязанности инженера ПО на разных уровнях.

Два состояния каждого программиста: «я — бог» и «я не имею представления, что делаю»

Начальный уровень

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

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

Джуниор и мидл

Обычно при найме Junior Software Engineer главное требование — опыт. Для этого уровня наличие опыта — не столько бонус, сколько обязательное условие. На собеседовании вас первым делом спросят о том, есть ли у вас опыт работы на аналогичной должности или в этой сфере.

Тем не менее работа — не единственный способ набраться опыта. У вас могут быть и личные, и групповые проекты. Не лишними окажутся и семинары или курсы. Закончили школу инжиниринга ПО — тоже хорошо.

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

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

Читайте также:  What are developer options on android

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

Сеньор

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

Архитектор

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

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

Честно говоря, с такими навыками уже можно запросто открывать свой стартап.

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

Все, что нужно знать о начальном уровне Software Engineer

А теперь посмотрим, какие профессиональные навыки потребуются инженеру на начальном уровне.

Требования к навыкам здесь довольно непритязательны: наличие диплома бакалавра компьютерных наук, разработки приложений или ПО. На самом деле, любое образование, связанное с компьютерами, уже позволит вам претендовать на должность Software Engineer. Не лишним также будет желание учиться и расти.

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

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

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

Чего ждать: будущее профессии

У IT-сферы большое будущее. Можно даже сказать, что это будущее всего человечества. И разработка ПО — большая часть этой истории.

«Я всегда мечтал увидеть будущее»

  1. Спрос на опытных специалистов по разработке ПО будет только расти. Почему? Потому что весь современный мир работает на программном обеспечении.
  2. Все больше компаний задумываются об автоматизации процессов. По прогнозам Forrester, одного из ведущих исследователей конъюнктуры рынка, к 2023 году компании потратят на автоматизацию глобального маркетинга более 25 млрд долларов .
  3. Взгляните на развитие искусственного интеллекта, интернета вещей, облачных технологий, блокчейна, комплектов инструментальных средств разработки, или даже прогрессивных веб-приложений. Все это так или иначе связано с разработкой ПО. К примеру, в отчете Ericsson Mobility Report сказано, что к 2024 году количество подключенных к сети устройств превысит 22 млрд.
  4. По данным Бюро трудовой статистики США , к 2026 году отрасль разработки ПО резко вырастет.

Большинство экспертов уверены, что у этой сферы большое и светлое будущее.

Примеры должностей

Давайте посмотрим, какие должности могут быть востребованы в этой сфере:

  • Chief Technical Officer (CTO);
  • VP of Engineering или Director of Engineering;
  • Delivery Manager;
  • Chief Architect;
  • Software Architect;
  • Engineering Project Manager или Engineering Manager;
  • Technical Lead или Engineering Lead;
  • Principal Software Engineer;
  • Senior Software Engineer;
  • Software Engineer;
  • Software Developer;
  • Junior Software Developer;
  • Intern Software Developer.

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

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

Источник

Оцените статью