Разработчик что он делает. “Должности ничего не значат”: чем отличается разработчик от инженера? Что из этого вышло

Mobile-developer – IT-специалист, специализирующийся на создании программ для планшетов и смартфонов на iOS и Android. Так как мобильные приложения создаются путем программирования, mobile developer – это прежде всего программист, работающий в зависимости от платформы разработки с языками Java, Objective-C или Swift.

Какие перспективы у разработчика мобильных приложений?

Согласно исследованию портала Statista, в 2014 году в мире насчитывалось 1,57 млрд активных пользователей смартфонов, а на конец 2017 их количество достигло 2,32 млрд, увеличившись за этот период на 48%. Темпы прироста мобильных пользователей увеличиваются с каждым годом, одновременно увеличивается количество создаваемых приложений. Чтобы охватить растущую аудиторию, на рынке ощущается дефицит квалифицированных разработчиков.

Рынок разработки для мобильных устройств – золотая жила для многих сфер бизнеса. Тренды последних лет демонстрируют не только увеличение количества скачанных продуктов, но и рост продаж внутри приложений. Так, валовый доход компаний по разработке мобильных приложений ежегодно растет в среднем на 20%, и к 2020 году превысит 100 млрд долларов (данные App Annie).

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

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

Особенности профессии

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

Мобильные приложения бывают различных типов в зависимости от тематики и выполняемых функций. Есть развлекательные приложения (для изучения языков, чтения книг, путешествий, спорта), приложения для покупок (сегмент e-commerce) и отдельная категория – мобильные игры. Мобильные программы также классифицируются в зависимости от того, для какой платформы они предназначены (Android, iOS, Windows Phone или кроссплатформенные утилиты).

Профессия разработчика довольно новая, особенно на территории России и СНГ, поэтому пока не выработаны конкретные требования к этой категории специалистов. Согласно анализу вакансий многий IT-студий, от разработчика требуется разбираться как в программировании, причем и frontend и backend, так и в дизайне пользовательских интерфейсов и верстке.

Плюсы и минусы профессии

Среди плюсов профессии разработчика мобильных приложений выделим следующие:

  • Достойный уровень оплаты труда. На рынке наблюдается дефицит квалифицированных разработчиков, что сказывается на уровне заработной платы. Сегодня mobile-developer в Москве и Санкт-Петербурге зарабатывает на треть больше, чем, например, php-программист. Средняя зарплата разработчиков мобильных приложений в Москве составляет от 60 до 250 тыс. рублей, в среднем по России – от 40 до 150 тыс. рублей.
  • Интересная и увлекательная профессия. Технологии стремительно устаревают, поэтому чтобы оставаться на вершине мастерства, программисту необходимо совершенствоваться, быть в курсе новинок IT-индустрии, постоянно пополнять багаж знаний и умений. Постоянный поиск информации на форумах и специализированных площадках, анализ больших массивов информации держит мозг в тонусе.
  • Перспективы карьерного роста. Для хорошего Java-разработчика программы– не конечная цель. Он может успешно развиваться, осваивая технологии искусственного интеллекта и интернета вещей (internet-of-things).

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

Необходимые навыки и личные качества

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

  • Знание ООП (Java, Objective-C, Swift);
  • Знание Java Script, HTML, SCC;
  • Опыт работы с шаблонами проектирования (design patterns);
  • Знание SQL и сетевых протоколов.

Чтобы и дальше прогрессировать в сегменте мобильной разработки, придется углубиться в Computer Science, алгоритмы, структуры данных. Профессиональный разработчик также должен понимать философию пользовательского интерфейса и пользовательского опыта (UI/UX), чтобы не просто писать программы, а делать полезные и удобные в использовании продукты.

Личные качества

  • Настойчивость и упорство;
  • Любознательность;
  • Стрессоустойчивость;
  • Многозадачность;
  • Нацеленность на результат.

С чего начать знакомство с разработкой мобильных приложений?

Новичку советуем начать с основ объектно-ориентированного программирования (ООП). В сети выложено множество обучающих материалов и видео-туториалов по этой тематике. Исследование ООП лучше проводить на примере конкретного языка, Java или Objective-C. Мы рекомендуем Java, так как это не только язык android-программирования, но одна из основных платформ для создания программного обеспечения.

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

В сети можно найти множество курсов по основам созданию программ для iOS и Android. Рекомендуем следующие из них:

  • Курс мобильной разработки Стэнфордского университета;
  • Курс разработки для iOS на языке Swift Торонтского университета;
  • Курс по андроид-разработке Московского института физики и технологии (MIPT).

О том, что представляет собой процесс андроид-разработки, читайте в нашей статье:

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

В индустрии разработки термины “разработчик” (software developer) и “инженер” (software engineer) используются взаимозаменяемо. Если вы устраиваетесь на роль разработчика, вы, вероятно, будете проходить собеседование для обеих ролей.

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

Почему название имеет значение?

Для новичков это может размыть границы при поиске работы. А это большой пул должностей: сейчас в Австралии доступно 1,200 объявлений для должности разработчика и 1500 объявлений для должности инженера .

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

Вокруг этого вопроса ведется много дискуссий, а в этом посте на Reddit ответы отличаются от “никакой разницы” до более активных действий по изменению названия своей должности. Как написал один пользователь:

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

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

Что говорят работодатели

Мы решили поговорить с двумя лидерами, чтобы обсудить тему и получить мнения с обеих сторон. Мы поговорили с Аароном Семпфом, главой отдела технологии в Tribal Melbourne, и Бреттом Рейвеном, CTO Big Red Group.

Аарон Семпф

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

Бретт присоединился к RedBalloon в начале 2017, чтобы помочь в изменении продукта и создании плана технического развития. Затем он перешел в Big Red Group и руководит с технической стороны Redii и другими компаниями. Бретт изучал информатику в университете (поэтому он не инженер), но у него сильные команды инженеров в Lux Group и RedBalloon.

Разработчик или инженер

“Существует фундаментальная разница между ролями разработчика и инженера”.

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

Инженер

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

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

Разработчик

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

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

Технические вопросы - это простой способ получить базовое представление об уровне и области знаний кандидата, но технические задачи и неоднозначные вопросы могут помочь отличить разработчика от инженера. Мой любимый неоднозначный вопрос - это простое математическое задание 6÷2(1+2)=?. Человек должен предоставить ответ и пояснение к нему.

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

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

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

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

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

Разработчик как инженер

“Я предпочитаю использовать категории junior, mid и senior, а разработчик и инженер - это одно и то же ”.

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

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

Другой тип категорий

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

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

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

Разница во мнениях

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

Бретт несогласен: “Аналогию механика и инженера лучше заменить журналистами и редакторами. Редакторы могут применять на работе больше навыков, полученных за годы работы. У механиков обычно нет возможности изучить необходимые дисциплины (математику, физику, материаловедение и так далее), чтобы создавать машины, которые они чинят”.

Заключение

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

Почти все ответы говорят о том, что названия мало что значат. Лучше всего подвести итог может совет от Джейсона Руса, инженера по программному обеспечению в Sony Interactive Entertainment, который говорит, что все зависит от того, во что вы верите сами:

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

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

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

Если кто-то считает так же, то и он или она - это инженер.

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

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать .

Программер и девелопер Феликс в блоге своего имени разместил статью, в которой попробовал разграничить такие виды деятельности, как разработка и программирование. По его мнению, деление по уровням (junior, middle, senior) и ролям (front-end, back-end, админ) является недостаточным. Феликс предлагает различать разработчиков и программистов и учитывать этот раздел при найме специалистов.

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

Разработка программного обеспечения

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

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

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

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

Программирование

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

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

Как определить и кого выбрать?

Определить, кто перед вами, по мнению Феликса, довольно просто. На собеседовании стоит задать вопрос, не относящийся непосредственно к сфере деятельности потенциального работника. У специалиста по JavaScript спросите о Python и наоборот. Разработчик скорее всего не будет знать ответов, а программист погрузится в рассуждения.

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

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

Справка

Программист — это специалист, занимающийся разработкой алгоритмов и программ на основе математических моделей. Условно программистов можно разделить на три категории: Прикладные программисты занимаются разработкой программного обеспечения, необходимого для работы организации. Например, сюда можно отнести программистов 1С. Системные программисты разрабатывают операционные системы, интерфейсы к распределенным базам данных, работают с сетями. Специалисты этой категории являются самыми редкими и высокооплачиваемыми. Web-программисты имеют дело с сетями, но, как правило, с глобальными, такими, как Internet. Они пишут web-интерфейсы к базам данных, создают динамические web-страницы. В отечественной кадровой практике часто применяется термин инженер-программист (ведущий).

Востребованность профессии

Достаточно востребована

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

Вся статистика

Описание деятельности

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

Уникальность профессии

Довольно распространенная

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

Как пользователи оценивали этот критерий:
Вся статистика

Какое необходимо образование

Высшее профессиональное образование

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

Как пользователи оценивали этот критерий:
Вся статистика

Трудовые обязанности

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

Вид труда

Исключительно умственный труд

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

Как пользователи оценивали этот критерий:
Вся статистика

Особенности карьерного роста

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

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

Как создавался Viber

Надо сказать, история создания Viber начинается не в Америке и даже не в Японии, откуда родом нынешние владельцы мессенджера, а в Израиле. Идея и первичная разработка принадлежат авторству сразу двух человек: Игоря Магазинника и Тальмона Марко. Поводом к началу их общения между собой стало обоюдное увлечение гаджетами. В какой-то момент они приступили к разработке совместных проектов и первым их «детищем» стал iMesh, сеть для обмена файлами.

Следующим шагом стало осуществление идеи разработки «аналога скайпа». Причем такого, который был бы ориентирован именно на мобильные устройства, а пользователи были бы избавлены от необходимости раз за разом проходить «найти контакт – добавить контакт / добавиться в контакт-лист».

Что из этого вышло

Как видишь, разработал Вайбер не один человек, а сразу двое. Итогом стал удачный проект, буквально «выстреливший» через короткое время после первого релиза, представленного в 2010г. Уже к 2013 году в клиентскую базу компании вошли 280 млн. пользователей. В это же время была получена первая выручка: более полутора миллионов долларов. Изначально Вайбер предназначался только для iPhone , но совсем скоро были разработаны версии для других операционных систем.

Возможности приложения:

  • Конечно же, переписка (на то он и мессенджер).
  • Аудио- и видеозвонки, одиночные и групповые.
  • Обмен мультимедийным контентом.
  • Создание групповых переписок и паблик-чатов.
  • Безопасность личных данных за счет сохранения их в телефоне (без копирования на серверы).

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

В январе 2014 года Rakuten, электронная компания из Японии сделала заявление о намерении выкупить Viber у разработчиков за 900 млн. долларов. Сделка была завершена уже через месяц, в феврале 2014 года. Для Rakuten, кстати, это приобретение считается самым крупным. Кто разработчик Вайбер сейчас? На сегодняшний день разработкой мессенджера занимается Viber Media S.à r.l.