В чем отличие Software Engineer от Software Developer?
У нас, в дефолт-сити, Software Engineer — это чувак, не дотянувший до девелопера по знаниям и опыту; имеет соответствующе меньший оклад. Через несколько аттестаций станет junior-девелопером, а еще через несколько — простым.
В вакансиях Америк и Европ, преимущественно встречается предложение позиции инженера (в 99% случаях из 100%), хотя по описанию им требуется настоящий девелопер. Чем у них отличие SE от SD? У Гугла SE, у Мелкософта SE.
И чтобы дважды не вставать, какие сейчас GROSS зарплаты в месяц в Америках (соединенных) и Европах у SE/SD?
dimmka
27.07.11 22:06:38 MSK

ИМХО нет разницы.
Raving_Zealot ★★
( 27.07.11 22:09:10 MSK )
Увы,не только в дефолтсити,но и во всём постсовке при слове «инженер» лица делаются кислыми а зарплаты маленькими. Пусть это и Software Engineer.
Borigenz
( 27.07.11 23:39:54 MSK )

> У нас, в дефолт-сити, Software Engineer — это чувак, не дотянувший до девелопера по знаниям и опыту; имеет соответствующе меньший оклад. Через несколько аттестаций станет junior-девелопером, а еще через несколько — простым.
Это у вас, а в соседнем офисе совсем по-другому. Что за аттестации? Я никогда не был жуниором. В трудовой книжке мне пишут «инженер-программист», независимо от изменений в званиях, кои случались по каким попало поводам и приводили к трудно формализуемым последствиям 🙂
const86 ★★★★★
( 27.07.11 23:49:50 MSK )

во всем остальном мире отличия либо нет, либо девелопер — это просто (быдло)кодер, а инженер — полноценный инженер, и зп у него соответственно выше.
val-amart ★★★★★
( 27.07.11 23:52:48 MSK )

siberean ★
( 27.07.11 23:52:58 MSK )

>У нас, в дефолт-сити, Software Engineer — это чувак, не дотянувший до девелопера по знаниям и опыту; имеет соответствующе меньший оклад. Через несколько аттестаций станет junior-девелопером, а еще через несколько — простым.
хреново вам там, наверное
vostrik ★★★☆
( 27.07.11 23:53:37 MSK )
Ответ на: комментарий от vostrik 27.07.11 23:53:37 MSK
Согласен, в России инженер-программист в трудовой написано. В Америке тоже Senior Engineer. Developer — это неофициальное название вакансии (там тестер, девелопер, тимлид, архитектор и так далее — они все идут как инженеры).
sn1ln
( 28.07.11 03:29:35 MSK )

Инженер придумывает, а девелопер изготавливает. Помоему очевидно.
Можно ументь хорошо придумывать, но при этом не кодить или кодить, в основном, чтобы задать правильное направление.
AGUtilities ★★★
( 28.07.11 03:50:21 MSK )

в нашей стране, просто, больше требуются быдлокодеры — думать не требуется. по этому, и инженеры не нужны.
AGUtilities ★★★
( 28.07.11 03:52:56 MSK )
Ответ на: комментарий от AGUtilities 28.07.11 03:52:56 MSK
Про то что требуются былокодеры — это миф. Всем нужны качественные специалисты готовые быстро придумать и реализовать код. Если вы можете только «думать», а написать в коде это не можете, может проблема в вас?
sn1ln
( 28.07.11 06:00:23 MSK )
в цивилизованном мире developer == быдлокодер
Reset ★★★★★
( 28.07.11 10:41:47 MSK )
Ответ на: комментарий от Reset 28.07.11 10:41:47 MSK
А кто такие coder и programmer?
o
( 28.07.11 16:36:28 MSK )
Ответ на: комментарий от sn1ln 28.07.11 06:00:23 MSK
anonymous
( 28.07.11 18:08:08 MSK )
Ответ на: комментарий от sn1ln 28.07.11 06:00:23 MSK

>Всем нужны качественные специалисты готовые быстро придумать и реализовать код
увы, я много раз сталкивался с тем, что людям нужен код БЫСТРО, а то, насколько он будет качественным — им насрать
Pinkbyte ★★★★★
( 29.07.11 11:16:40 MSK )
Ответ на: комментарий от Pinkbyte 29.07.11 11:16:40 MSK

увы, я много раз сталкивался с тем, что людям нужен код БЫСТРО, а то, насколько он будет качественным — им насрать.
Эти заказчики тупые. Очевидно же.
dizza ★★★★★
( 29.07.11 18:55:45 MSK )

Обычно с приставкой Engeneer идут всякие узконаправленные специальности вспомогательного характера. Ну там всякие Perfromance Engeneer, Reliability Engeneer и так далее. Как это относится к SE — хз. Вообще если говорить о Softare Engeneering, то мне сразу на ум приходят формальные методы разработки ПО. Так что всем, кто тут кричит — я инженер, а остальные быдло(кодеры) следует проверить свои знания нотации Z а потом только уже кричать 🙂
dizza ★★★★★
( 29.07.11 19:00:11 MSK )
> В чем отличие Software Engineer от Software Developer?
Важно не в чем отличие, а что имеет в виду работодатель.
damnemall ★
( 29.07.11 19:01:39 MSK )
Ответ на: комментарий от sn1ln 28.07.11 06:00:23 MSK

Все правильно говоришь, только действительно это не миф, так как большинство заказчиков глупые и не понимают, что нанять нормального спеца это в 10 раз дешевле, чем мучиться с быдлокодерами. Вообще если поделить программистов на нормальных и нет, то вторых окажется процентов. 95. Ну ты понел %)
dizza ★★★★★
( 29.07.11 19:02:34 MSK )
Ответ на: комментарий от dizza 29.07.11 18:55:45 MSK

>заказчики тупые
так кто бы спорил
Pinkbyte ★★★★★
( 29.07.11 20:26:52 MSK )

> И чтобы дважды не вставать, какие сейчас GROSS зарплаты в месяц в Америках (соединенных) и Европах у SE/SD?
Ну и спросил. Какие нынче зарплаты у по миру?
SOmni ★★
( 29.07.11 22:24:01 MSK )
Ответ на: комментарий от dizza 29.07.11 19:02:34 MSK
> Вообще если поделить программистов на нормальных и нет, то вторых окажется процентов. 95.
А себя ты конечно к первым причисляешь?
anonymous
( 30.07.11 11:13:02 MSK )
Ответ на: комментарий от anonymous 30.07.11 11:13:02 MSK

Не, я быдлокодер, но грамотно маскируюсь. Тока тссс.
dizza ★★★★★
( 30.07.11 14:15:04 MSK )

В нашей оффдокументации Engeneer — позиция, а Developer — конкретная роль в проекте
stevejobs ★★★★☆
( 31.07.11 22:06:47 MSK )
Ответ на: комментарий от sn1ln 28.07.11 06:00:23 MSK

да ну нафиг. история показывает не мало примеров, когда план сдачи кода главнее качества. и так, подозреваю, во всех дрянных фирмочках.
AGUtilities ★★★
( 31.07.11 22:10:58 MSK )
Engineer — это тот, кто может написать «engineer» без ошибки, остальные — девелоперы.
Novel ★★★★
( 01.08.11 16:34:20 MSK )
Ответ на: комментарий от stevejobs 31.07.11 22:06:47 MSK
>В нашей оффдокументации Engeneer — позиция, а Developer — конкретная роль в проекте
Позиция — это в Камасутре. На рабочем месте — должность. Роль в «проекте» в нормальных конторах обычно тоже отражена в названии должности.
anonymous
( 02.08.11 23:04:16 MSK )
Ответ на: комментарий от anonymous 02.08.11 23:04:16 MSK

Позиция — это в Камасутре. На рабочем месте — должность.
на рабочем месте все общаются на полу-английском, поэтому position. Потому что есть вакансия (вакантное место), которая занимается. А занимается что? Позиция.
. Что в переводе на русский таки должность. Или, чтобы случайно не запутаться, всё же позиция 🙂
Роль в «проекте» в нормальных конторах обычно тоже отражена в названии должности.
по позиции все программисты — инженеры-программисты. А вот будут ли они program manager, или software developer, или technical lead developer, или automated test developer, или code analyst, или еще кем-нибудь — зависит от ситуации. Представь, проект меняется пару раз в год — теперь что, пару раз в год добавлять запись в трудовой и переоформлять в налоговой регистрацию? 🙂
посмотри резюме аутсорсников — обычно диплом пишется в персональной части, для конкретной компании пишется позиция, и потом уже для каждого из проектов внутри компании пишется роль в проекте
stevejobs ★★★★☆
( 03.08.11 07:04:56 MSK )
Ответ на: комментарий от stevejobs 03.08.11 07:04:56 MSK
инженер — это квалификация, которая дается в ВУЗе.
девелопер — это просто статус, разработчик. Разработчиком может быть дядя федя из кукуево, способный написать что-то внятное на каком-либо ЯП
Coder vs. Developer vs. Engineer — а какой Job Title у тебя, %username%?
Я знаю людей, которые программируют уже не один десяток лет, но обижаются, когда их называют «программистами«. А по запросу Coder vs Developer vs Software Engineer в гугле находится 113 000 000 ссылок: 1 2 3 4 5 6 7 8 9 … 113 000 000. Что интересно, можно найти совершенно противоположные мнения об одном и том же. С чем-то я согласен, а с чем-то в корне нет.
Последние же несколько лет так вообще постоянно подливают масло в огонь, появляются какие-то совсем странные программисты, которые называют себя Creative Technologist, Creative Coder и Interactive Developer.
Давайте же попробуем разобраться.
А какой Job Title у тебя, %username%?
Итак, расслабьтесь, если говорить о России, то мы тут на самом деле все Инженеры-программисты (или вообще просто Программисты). Все эти непонятные тайтлы придумали где-то там, а здесь они звучат прикольно и пишутся необычно. Я вот вообще представляюсь как Lead Interactive Architect, что ничего не говорит о том, что я тут делаю.
За всю свою недолгую карьеру, извините, программиста, я успел поработать со множеством разных людей. И всех их магическим образом можно довольно точно разделить на несколько категорий. Конечно, будут и те, кто окажется где-то между этими категориями, но их вполне можно отбросить как статистическую погрешность.
- Scripter
- Coder
- Hacker
- Software Developer
- Software Engineer
- Computer Scientist
- Creative coder
Scripter
Изначально, скриптами называли небольшие программы на простых языках. Вспомним Shell scripts, Batch files, AppleScript, JavaScript, ActionScript, VBScript. Их основное применение — автоматизировать повторяющиеся однотипные задачи.
Это сейчас на JavaScript можно написать Flash IDE в браузере, но «тогда» его использование ограничивалось в основном прокруткой дурацкого текста в статусной строке. Это сейчас ActionScript 3 является полноценным ООП языком, на котором пишут enterprise приложения, но «тогда» у самого первого не было даже текстового представления, действия надо было выбирать из списка, по одному на key frame.
Но смысл, тем не менее, остался. Сейчас даже дизайнер может при определенном желании написать себе скрипты для автоматизации чего бы то ни было в своей повседневной работе. Что я, кстати, весьма приветствую. Это довольно печально, смотреть, как дизайнер, например, рисует 100 «случайных» элементов руками. А еще печальнее, когда ему приходится их все перерисовывать.
Еще часто скриптинг упоминается в контексте разработки игр. Умные программисты уже давно сообразили, что проще выдать гейм-дизайнерам небольшие тулзы, с помощью которых они могут сами делать нужную им функциональность, чем постоянно вручную менять одни непонятно откуда взявшиеся числа на другие (такие вот они геймдизайнеры). Опять же, как и в прошлом примере, тут не нужно быть программистом, чтобы составить какой-никакой скрипт из доступных команд.
Иногда можно услышать в корне неправильное определение скриптинга — писать инструкции, которые парсит и выполняет другая программа. Но ведь это и есть код. Инструкции, которые выполняет что-то другое.
Coder
Кодер — это человек, который переводит из одного языка в другой. Проще говоря, инструкции на «русском матерном» преобразует в инструкции на некотором языке программирования, будь то Java, PHP, C# или какой-нибудь другой, тысячи их. Разумеется, соблюдая правила и требования пратформы и окружения, где этому коду потом выполняться.
Я сам не люблю этот термин. Когда кто-то говорит «coder», я представляю себе человека, который бездумно пишет код, главное и единственное свойство которого — он компилируется; и этот человек не в состоянии делать что-то бОльшее из-за отсутствия знаний, опыта или желания; вместо того, чтобы включить мозг и разобраться в проблеме, придумать решение, он максимум способен соединить куски кода с гугла, которые он даже не понимает как работают.
Зачастую, не имеет никакого специального образования, поэтому и код у получается с запашком.
Yes, it is an open secret fact which Software Companies won’t say/accept — that Software Professionals specially in India are not programmers but mere coders, they are the assembly line workers. [via]
Отсюда идет ассоциация с обезьянами — Code Monkey.

Hacker
Под хакерами я подразумеваю совсем не аудиторию журнала Хакер, я просто не могу придумать подходящее название. В английском есть слово Tinkerer, возможно, оно подходит больше.
Сюда я отношу людей, которых можно назвать «geeks«. Конечно, это стереотип еще тот, но многие как минимум частично ему соответствуют: необщительные, с посаженным ночным сидением перед плохим монитором зрением, имеют физическое или математическое образование, знают C, используют Linux, любят копаться в исходниках и пересобирать все под себя, часто одной рукой пишут код, а в другой держат паяльник, имеют обширные знания тонкостей работы железа и софта, хорошо разбираются в низкоуровневом программировании. Их можно встретить на олимпиадах, они пишут софт для демосцены, занимаются reverse engineering разнообразных устройств, и вообще чрезвычайно умные и образованные люди.
Но с ними невозможно работать в команде. По разным причинам, и да, бывают исключения.
Software Developer
- Flash Developer
- Java Developer
- .NET Developer
- .
- Junior Developer
- Developer
- Senior Developer
- Lead Developer
Developer отличается от кодера тем, что непосредственно кодирование — это всего лишь одна из его обязанностей. Чаще всего в обязанности разработчика входят: предметный анализ, спецификация, дизайн, кодирование, отладка, юнит тесты, документация, оптимизация.
Я считаю, что Junior Developer — это Coder, который жаждит учиться и развиваться. Его еще не пускают к важным этапам проектирования софта и заставляют выполнять самые нудные и/или простые таски. Но, если есть желание и мозг, человек будет набирать знания и опыт и постепенно продвигаться вверх.
Существует миф, что одни разработчики в N раз более продуктивны, чем другие. Я очень рекомендую потратить час и посмотреть видео Greg Wilson — What We Actually Know About Software Development, and Why We Believe It’s True. Если вам жалко времени, то конкретно по этому поводу он говорит с 18-й минуты.
Разумеется, чем «старше» разработчик, тем больше ему нужно знать. К сожалению, у нас в институтах не учат проектированию enterprise систем (по крайней мере, в мое время не учили). Поэтому, всему приходится учиться по книжкам, у умных людей или на своих ошибках.
Необходимые знания же из области в область отличаются. Неправильно говорить, что Вася плохой разработчик, потому что он не знает чего-то. Скорее всего, он и не должен, потому что у него совсем другая область. Что можно сказать, так это, например, что Flash разработчики в основном имеют более низкий уровень общей алгоритмической подготовки, чем C++ разработчики.
Lead Developer / Team Lead чаще всего отдаляется непосредственно от программирования и становится менеджером, поэтому нам не интересен. Есть много случаев, когда Senior Developer рос не в Lead Developer‘а, а в Super Mega Senior Developer‘а, превращаясь в ходячую энциклопедию по платформе/языку/фреймворкам — это заблуждение, что все хотят расти в менеджеров и руководить.
В небольших конторах / стартапах может быть вообще 1-2 программиста, которые цепляют себе тайтл Lead Flash Developer, а что, самый крутой девелопер тут и управляет всеми остальными 0 человеками. А потом его берут в нормальную контору джуниором. Так что это опять же не говорит ни о чем.
Software Engineer
В разговорной речи обычно употребляется с тем же смыслом, что и Software Developer. Описания Software Developer и Software Engineer взятые с salary.com весьма абстрактны и довольно похожи. Зарплаты тоже +- одинаковы, хотя мне говорили, что люди с тайтлом Software Engineer получают больше.
По поводу значения слова Engineer в названии профессии в интернете ведутся холиворы и по сей день. Википедия говорит следующее:
Software engineering (SE) is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.
Вообще, инженерное дело — это набор работающих методов и практик, которые позволяют что-то строить/делать с некоторой надежностью и уверенностью. Так вот, Software Engineering does not work — Real Software Engineering – Glenn Vanderburg.
А во многих странах, чтобы называть себя инженером, нужно иметь лицензию. Беднягам, приходится быть простыми Software Developer’ами.
Но тем не менее, я четко выделяю отдельную группу Software Engineer и считаю, что слово инженер по отношению к разработке софта очень даже подходит. Инженер отвечает за то, чтобы построенное им тупо не развалилось. Главное не сравнивать со строительством мостов. Люди строят мосты уже тысячи лет, а софт пишут лет 30 от силы. В конце концов, кому какое дело, если от нагрузки упадет плохо спроектированный сервис? А вот, когда дело доходит до самолетов и атомных станций, наверняка, там есть свои аттестации и лицензии. А в будущем, я надеюсь, чтобы называться Software Engineer, нужно будет сдавать экзамены и получать корочки.
Software Engineer должен обладать большим опытом и кучей теоретических знаний не только из Math, Computer Science и Software Engineering. Знание разных языков вторично. В конце концов, принципы OOP и O(n^2) во всех языках имеют одинаковый смысл. У разработчика из этой категории обычно очень большой кругозор, у американцев есть отличная поговорка: когда у тебя есть только молоток, все вокруг выглядит как гвоздь.
Поэтому меня раздражают позиции с названиями типа Java Engineer или Ruby Engineer. Инженер не может быть привязан к языку. И, черт побери, где-то была статья ровно по этому поводу, а я не могу ее найти, чтобы процитировать.
Так что нет, чаще всего Senior/Lead Developer это не Software Engineer, хотя многими своими свойствами и обязанностями они пересекаются. Другое дело, человек может быть инженером, в свободное время делать что-то на одной платформе, читать умные книжки, а (чуть не сказал днём) на работе быть загнанным в рамки другой платформы Lead’ом, и сидеть править код за бездырями, потому что платят больше. Это да.
Software Architect
Архитекторов я не выношу в отдельную категорию, потому что либо их не существует, либо я их не видел и не понимаю кто они такие. Все, кто приписывают себе в тайтл Architect, либо следуют моде, либо стебутся над модой, либо клинические идиоты.
It is actually pretty sad that in this industry you pretty much have to tack-on architect at the end of your title after a certain number of years in the industry, otherwise you lose a level of credibility and earning potential. I believe the word architect should die as applied to software, it is not necessary and often harmful. [из комментариев к статье]
Аналогии со строительством тут не работают. Знаниями, которые нужны для создания архитектуры системы, должен обладать Software Engineer или Senior Developer. Это зависит от того, делается ли архитектура в рамках какой-то платформы, или нужно разработать что-то сложное межплатформенное.
Программистам в своей работе постоянно приходится принимать те или иные архитектурные решения. Более опытным и продвинутым доверяют приложить руки к архитектуре больших проектов. Вот и все.
А вообще, архитектуризм — это клиническая болезнь. Постоянно приходится сталкиваться с людьми, которые пишут свой движок со своей супер архитектурой. Годами. Идеальный движок в вакууме тысяч абстракций, который никогда не сталкивался с практическим применением, ибо о реальный мир он разобъется как стеклянный шар о каменный пол. Сами там были.
Computer Scientist
В отличие от инженеров, которые озабочены прикладным применением конкретных знаний, ученые от CS изучают их теоретические основы. Аналогично математикам-теоретикам, которые доказывают почему те или иные формулы и алгоритмы работают в абстрактных моделях, Computer Science берет свои корни из Математики и наследует от нее методы рассуждения и доказательства теорем. Как и в остальных науках, ученые специализируются в той или иной области, например: построение и доказательство корректности алгоритмов (в куче областей), теория вычислимости, функциональное программирование, machine learning, computer vision итд.
Про ученых в последнее время в массе известно лишь из-за функционального программирования. Например, набрав какой-то рост, Scala споткнулась о собственную сложность (еще бы, The type system in Scala is Turing complete), а в Haskell никто не понимает что такое Monad.
Хотя, казалось бы «A monad is just a monoid in the category of endofunctors, what’s the problem?» [via]
Я лично не знаком ни с одним человеком, который занимается только наукой, но по крайней мере, я уверен, что такие существуют (не в нашей стране, разве что). Время от времени проскакивают интересные публикации. Вот, совсем недавно был шортлист по 2011-му году, который я опять же не могу найти теперь.
Creative coder
В последнее время, с развитием технологий и инструментов, из скриптеров стал вырастать совершенно другой и весьма интересный класс программистов. Во многом этому способствовали Flash, Processing, Max/MSP, vvvv, JavaScript, OpenFrameworks, Cinder.
Именно из скриптеров, потому что цель изначально другая — использовать код, чтобы что-то нарисовать, оживить, изобразить, сыграть. Прийдя из художников, VJ’ев и других нетехнических областей, они стали быстро впитывать поверхностные особенности программирования и окружения, в котором приходится работать.
Человек задает вопрос «А как мне сделать вот это?». Гугл подсказывает код и как соединить разные компоненты вместе. Компоненты не обязательно софтварные, время от времени возникает необходимость использовать разное железо, например датчики через Arduino. Поэтому у Creative Coder’а в основном есть обширный запас поверхностных знаний. Но, не имея достаточной подготовки, опыта, а часто нужного склада ума, он не в состоянии сделать чуть более чем простой продукт. Потому что код сделан из копипаст и заплаток между ними.
Но тем не менее, Creative Coder’ы показывают потрясающую способность быстро собирать прототипы с вынесенными наружу параметрами. Используя различные технологии и связки между ними. В то время как Engineer будет вникать в теорию, а Developer писать фреймворк (который понадобится лишь один раз, для конкретной задачи), Creative Coder нагуглит и соберет уже рабочую программу. Которая, разумеется, предназначена для дальнейшей поддержки ровно никак, но кого это волнует?
Зачастую, креативность выражается как раз в подгонке значений этих внешних параметров — «а что будет, если здесь поставить 0.1, а тут 42. Класс!». Поэтому, в узких кругах существует мем «заниматься креативным кодингом», что означает на глазок подгонять какие-то параметры в коде для достижения всеобщей радости или каким-то образом иметь у себя в коде кусок, которые не понятно как работает, но поставленную цель достигает.
Creative Coder’ы с одной стороны похожи на Coder’ов: качеством кода, копипастингом, отсутствием желания разобраться в теоретических основах этого кода; с другой стороны у них есть желание развиваться, делать что-то прикольное, экспериментировать, пробовать новые вещи.
Также, их можно было бы просто назвать Junior Developer’ами и поставить точку, но, как я уже сказал, у них другая изначальная цель, а код используется, потому что с его помощью можно делать креативные вещи. Если Junior Developer углубляется в основы программирования и растет в Developer’а и дальше, то Creative Coder’у такой процесс роста не интересен. Он хочет расти засчет небольших интересных (исследовательских, одноразовых) проектов.
И вот тут я, честно говоря, не понимаю как Creative Coder работает в команде с другими разработчиками, потому что в терминах команды он Junior Developer, никак иначе. Никто ему не даст самостоятельные интересные проекты, пока он не научится правильно проектировать программы и писать код. Получается, все они работают либо в одиночку, либо с единомышленниками непрограммистами?
Тем не менее, есть примеры Creative Coder’ов, которые не стали игнорировать теорию и обладают нужным складом ума для проектирования разумных алгоритмов и вменяемого софта. Не ограниченные платформой, они подошли к Software Engineer с противоположной стороны от Software Developer и в то же время проявляют качества из категории Hacker.
Creative Technologist
В совсем последнее время можно увидеть объявления, где профессия описывается как Creative Technologist. Требования везде разные: от полудизайнера/полу-js-кодера без опыта программирования (sic!), до мастеров С++ и OpenGL.
Позиция эта выросла из необходимости digital агентств воплощать креатив в код. Соответственно, казалось бы, человек с дизайнерским мышлением и умеющий кодить был бы идеальным кандидатом на данную позицию. Но, как показывает практика, в основном, люди с дизайнерским мышлением — плохие разработчики (именно разработчики). Как-то это связано с полушариями мозга, я не медик и не психолог — мне пофиг.
Гораздо правильнее нанять хорошего разработчика, который при этом еще и не лишен коммуникационных скилов и хорошего вкуса. Конечно, несколько месяцев ему понадобится, чтобы избавиться от разных пагубных привычек большого Software Development. Но в конце концов, у вас будет code base, на которую можно положиться, а не набор заплаток на соломенном домике.
Поэтому, у меня нет специальной категории Creative Technologist. Так себя называет либо Creative Coder, либо Software Developer/Engineer, который работает в мире digital агентств.
Interactive Developer
Человек хочет подчеркнуть, что он пишет софт, который взаимодействует с пользователем. Помимо софта для интерактивных инсталляций, Interactive в последнее время приписывают себе Flash разработчики и JS разработчики, которые экспериментируют с WebGL, Canvas и всяким более другим HTML5.
Заключение
Людям свойственно классифицировать наблюдаемые объекты по группам, часто с большой вложенностью — вспомните, например, биологию. Позднее, определив к какой группе может принадлежать конкретный объект, легко экстраполировать на него свойства этой группы.
Держа в голове категории, и пытаясь мысленно поместить человека в одну из них, становится проще сделать некоторые предположения о нем, оценить его знания и подготовку, понять его цели и образ мышления. Это позволяет избежать множества проблем связанных с налаживанием рабочей коммуникации.
Разумеется, данное деление на категории — это чисто моё субьективное мнение (которое в любой момент может измениться). Кто-то со мной полностью или частично согласится, но если же вы считаете, что я в корне неправ — приглашаю к дискуссии в коментариях.
И, если у вас до сих пор нет подобного списка, попробуйте составить свой, или возьмите этот. В будущем пригодится.
- coder
- programmer
- developer
- computer scientist
- software engineer
- Job Title
- hacker
- scripter
- creative coder
- engineer
- software architect
- Computer Science
- Processing
- vvvv
- Creatieve
- Creative Technologist
- Interactive Developer
- категории программистов
«Должности ничего не значат»: чем отличается разработчик от инженера?
Мнения двух технических руководителей компаний, которые рассказали, в чем разница между ролями разработчика и инженера.

В индустрии разработки термины “разработчик” (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! Для связи с нами вы можете использовать info@apptractor.ru.
Не каждый программист может так себя назвать: кто такой Software Engineer и как им стать

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

Немного о Software Engineer
Редакция Highload публикует перевод материала.
Перевод от
Информационные технологии просачиваются во все сферы нашей жизни. К примеру, представьте себе электронную торговлю или доставку еды без гаджетов и интернета. Нереально же, правда? Заказать блюда из любимого ресторана сегодня проще простого: открыли приложение доставки еды, один клик — и через полчаса заказ уже будет у вас на столе.
Действительно, сфера IT затронула почти все — от каршеринга до оплаты счетов, от онлайн-развлечений — до медицины и машиностроения. Кроме того, благодаря этому постоянно расширяется список профессий, по которым можно работать на удаленке.
Курс GameDev-тестувальник.
Онлайн-курс з нуля про методології тестування та роботу з багами й фічами.
Скорость развития информационных технологий также связана с относительно низким барьером входа. Кто угодно может изучить основы, освоить один из языков программирования и создать революционную программу, которую быстро подхватят пользователи. Начать изучение программирования можно на курсе от наших друзей – тут.
Если взять, к примеру, машиностроение, там довольно трудно создать нечто грандиозное, не имея за плечами многолетнего практического опыта и технического образования.
Когда речь заходит о работе в IT-сфере — вариантов уйма. Мы решили рассмотреть одно из самых популярных направлений. Инженер ПО или Software Engineer работает над созданием программ и приложений.
И самое интересное — далеко не каждый, кто занимается программированием, может сказать, что он инженер.
Чтобы добиться карьерного успеха в инжиниринге ПО , нужно изучить требования. В целом здесь нужны навыки специалиста по вычислительной технике, чтобы решать инженерные задачи, но сперва поговорим о самом главном.
Карьерная лестница Software Engineer
Прежде всего нужно прояснить один вопрос. Многие не понимают разницы между инженером ПО и программистом. Люди путаются в этих определениях, и в итоге всех айтишников называют «программистами». Разберемся, в чем же разница:
- Программист. На самом деле, как бы заезженно это ни звучало, программист — это человек, пишущий код. Обычно он получает конкретное задание и объяснение, как его решить. Он следует инструкциям и пишет код на том или ином языке программирования.
- Software Engineer. Цель инженера — создать оптимизированные аккуратные программы, которые можно обновлять и расширять их функционал. Например, инженер может искать оптимальные решения по разработке ПО . Карьера Software Engineer начинается с начального уровня (чаще это специалист по вводу данных). По мере набора опыта и знаний вы начнете накапливать портфолио проектов и решений. Со временем инженер переходит от джуниора к мидлу, а затем уже к уровню сеньора. Но продвижение по карьерной лестнице индивидуально и зависит от политики компании.
Добравшись до уровня сеньор, можно стать архитектором или тимлидом. Архитекторы, как и инженеры, тоже решают проблемы, но на более высоком уровне. Они работают над внутренней структурой и внешним интерфейсом программного комплекса. Найдя сложное архитектурное решение, они передают задание инженерам.
Курс QA Manual.
Успішна кар’єра в IT-сфері без необхідності глибоких знань програмування. Очікуйте заробітню плату в розмірі 600$ після завершення навчання.
«Разумеется, Senior Software Engineer — не последняя ступенька карьеры в айти. Но здесь нередко бывает так, что приходится выбирать техническую часть, то есть больше сосредоточиться на инженерно-технических навыках и обмене опытом или же пойти в руководящем направлении. Во втором случае у нас есть такие должности как тимлид, менеджер по программному инжинирингу (Engineering Manager) и так далее. Коммуникационные навыки здесь куда важнее, поскольку ваша задача — обеспечить гладкий, бесперебойный рабочий процесс и продуктивность команды», — говорит Юрий Грушевой, директор информационных технологий в Proxet .
Специализация и обязанности Software Engineer
Теперь рассмотрим основные обязанности инженера ПО на разных уровнях.

Два состояния каждого программиста: «я — бог» и «я не имею представления, что делаю»
Начальный уровень
Когда вы делаете первые шаги в инжиниринге ПО, вам предложат тестирование, чтобы оценить ваши умения. А дальше, в зависимости от результатов, вас нанимают и определяют конкретные обязанности.
Ваши задачи могут быть какими угодно, но все они будут направлены на то, чтобы вы могли учиться и приобретать опыт. Очень часто придется работать с более опытными сотрудниками, которые будут следить за вашим прогрессом и делиться с вами знаниями. Имейте в виду: чем лучше будете выполнять задания, тем больше возможностей у вас появится в будущем!
Джуниор и мидл
Обычно при найме Junior Software Engineer главное требование — опыт. Для этого уровня наличие опыта — не столько бонус, сколько обязательное условие. На собеседовании вас первым делом спросят о том, есть ли у вас опыт работы на аналогичной должности или в этой сфере.
Тем не менее работа — не единственный способ набраться опыта. У вас могут быть и личные, и групповые проекты. Не лишними окажутся и семинары или курсы. Закончили школу инжиниринга ПО — тоже хорошо.
Помимо опыта, джуниор должен уметь работать автономно, без постоянного надзора более продвинутых специалистов.
Работодатель предполагает, что у вас есть базовые знания в сфере разработки ПО. У вас должно быть достаточно навыков, чтобы свободно работать со всеми инструментами, которые используются в программном инжиниринге.
То же самое касается и мидл-уровня, но с одним нюансом. На Middle Software Engineer возлагают больше обязанностей, и навыков у него должно быть больше (как технических, так и коммуникационных). Такой эксперт уже может выступать ментором для разработчиков начального и младшего уровней.
Сеньор
Как и большинство опытных специалистов, Senior Software Engineer должен выполнять свои непосредственные обязанности, а также вести и поддерживать команду. Здесь потребуются еще и коммуникационные, и управленческие навыки. Плюс умение активно слушать, хотя с этим связана не каждая должность в этой сфере. С другой стороны, вам доверят самые важные и сложные задания, поэтому и уровень ответственности значительно возрастет. Если вы доросли до сеньора, значит карьера в этой сфере у вас вполне сложилась.
Курс Стратегічний маркетинг.
Від хаосу до системного маркетингу разом із Тетяною Лукинюк, B2C-директором у Kyivstar, колишнім CMO у Coca-Cola, Mars Ukraine та генеральною директоркою у Red Bull Ukraine.
Архитектор
Архитектор платформ должен сделать так, чтобы платформа выглядела простой и понятной для внешних пользователей. А чтобы этого добиться, можно воспользоваться, к примеру, интерфейсом прикладного программирования (API). В таком случае помимо организации процесса, вы будете участвовать еще и в проектировании API.
В основном ваша задача — выбор и реализация архитектуры , а остальное время вы будете тратить на анализ рынка и совместную работу с продакт-менеджерами.
Честно говоря, с такими навыками уже можно запросто открывать свой стартап.
Иногда времени на участие в разработке продукта не остается. Но архитектор все равно будет тесно сотрудничать со многими командами инженеров и разработчиков. К обязанностям могут добавить контроль разработки приложений и сервисов. Придется заниматься масштабированием, подбирать подходящие технологии и обеспечивать надежность и бесперебойность процессов. В этом случае Software Architect должен обладать творческим мышлением , иначе он не сможет решать сложные задачи.
Все, что нужно знать о начальном уровне Software Engineer
А теперь посмотрим, какие профессиональные навыки потребуются инженеру на начальном уровне.
Требования к навыкам здесь довольно непритязательны: наличие диплома бакалавра компьютерных наук, разработки приложений или ПО. На самом деле, любое образование, связанное с компьютерами, уже позволит вам претендовать на должность Software Engineer. Не лишним также будет желание учиться и расти.
Профильное образование тоже имеет большое значение. В некоторых областях здесь могут работать и самоучки (или те, кто закончил онлайн-курсы), но для программного инжиниринга этого мало. Разумеется, здесь тоже попадаются специалисты, которые до всего дошли своим умом, но для этого требуется особый тип мышления, настойчивость и огромное желание развиваться. В общем и целом это довольно нетипичная карьерная стезя.
Что же касается технических требований, то начинающий инженер должен мыслить логически и уметь анализировать, хорошо знать математику и компьютерные технологии, уметь документировать свои рабочие процессы.
И хотя это только начальный уровень, вам все равно понадобятся базовые навыки и знания. И помните, что при наличии приличного портфолио проектов у вас будет куда больше шансов устроиться в хорошую компанию.
Чего ждать: будущее профессии
У IT-сферы большое будущее. Можно даже сказать, что это будущее всего человечества. И разработка ПО — большая часть этой истории.
«Я всегда мечтал увидеть будущее»
- Спрос на опытных специалистов по разработке ПО будет только расти. Почему? Потому что весь современный мир работает на программном обеспечении.
- Все больше компаний задумываются об автоматизации процессов. По прогнозам Forrester, одного из ведущих исследователей конъюнктуры рынка, к 2023 году компании потратят на автоматизацию глобального маркетинга более 25 млрд долларов .
- Взгляните на развитие искусственного интеллекта, интернета вещей, облачных технологий, блокчейна, комплектов инструментальных средств разработки, или даже прогрессивных веб-приложений. Все это так или иначе связано с разработкой ПО. К примеру, в отчете Ericsson Mobility Report сказано, что к 2024 году количество подключенных к сети устройств превысит 22 млрд.
- По данным Бюро трудовой статистики США , к 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.
Теперь у вас есть полная картина, и вы будете знать, с чем доведется столкнуться в мире разработки ПО, если вы решите двигаться в этом направлении.
Курс Python Pro.
В ході проходження курсу Python Pro Студенти набувають навички вирішення складних завдань за допомогою мови Python.
Главная > Карьера > Не каждый программист может так себя назвать: кто такой Software Engineer и как им стать