В чем отличие 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.
What’s The Difference: Software Developer vs. Software Engineer
James M. Tobin is a writer, researcher, and editor specializing in student reference and academic research materials related to technology, business, finance, law, and the humanities. He began his professional career in editorial services in 2001 and.
Updated November 9, 2023
Reviewed by
Darnell Kenebrew
Click to Read Full Biography
Darnell Kenebrew is a data analytics engineer at Meta and an executive captain for COOP Careers — a nonprofit for overcoming underemployment. A first-generation college graduate, Kenebrew earned a bachelor’s in computer science, kicking off his.
Our Integrity Network
ComputerScience.org is committed to delivering content that is objective and actionable. To that end, we have built a network of industry professionals across higher education to review our content and ensure we are providing the most helpful information to our readers.
Drawing on their firsthand industry expertise, our Integrity Network members serve as an additional step in our editing process, helping us confirm our content is accurate and up to date. These contributors:
- Suggest changes to inaccurate or misleading information.
- Provide specific, corrective feedback.
- Identify critical information that writers may have missed.
Integrity Network members typically work full time in their industry profession and review content for ComputerScience.org as a side project. All Integrity Network members are paid members of the Red Ventures Education Integrity Network.
The software developer vs. software engineer question is common among learners exploring their tech career options. Learn the difference with this career guide.

Credit: skynesher | E+ | Getty Images
ComputerScience.org is an advertising-supported site. Featured or trusted partner programs and all school search, finder, or match results are for schools that compensate us. This compensation does not influence our school rankings, resource guides, or other editorially-independent information published on this site.
Are you ready to discover your college program?

Credit: skynesher | E+ | Getty Images
The software developer vs. software engineer issue confuses many aspiring technology professionals. Developers and engineers apply advanced technical skills to create computer programs, and their roles overlap in many ways.
While the two professional roles share similar responsibilities and educational backgrounds, they generally differ in their methods and outcomes. Aspiring software professionals may confuse the two positions, but software developers and engineers typically handle different steps when creating applications.
Explore this guide to learn more about the job profiles and specific skills associated with each profession.
Software Development
Software developers apply their advanced insights to create, test, and refine specialized computer applications. They primarily build programs and apps for consumer markets based on user needs.
In performing their core functions, software developers collaborate with other team members, including software testers and quality assurance (QA) analysts. Developers mainly work for specialized computer design companies, though some maintain permanent in-house positions in industries including finance, insurance, and manufacturing.
To create computer and mobile applications, software developers use tools to build, test, update, debug, and refine their creations. Widely used examples include GitHub, Azure, Chrome DevTools, and Atom.
Developers also use programming languages to write the code that makes software run. Examples of common programming languages include Python, Java, Ruby and Ruby on Rails, HTML, C#, and C++, among others.
Software developers typically train by earning bachelor’s or master’s degrees in computer science or information technology. Others develop targeted skills in compact career training programs known as coding bootcamps. Aspiring software developers can also build the necessary knowledge and skills through self-directed learning.
Developers often build their skills by working as testers and QA analysts before graduating into senior roles.
Explore degree programs in computer science
Learn more about degrees in information technology
Software Developer Skills
- Programming Languages: Developers use various programming languages to create the code that relays app operation instructions to host computers. They require a deep knowledge of common and specialized programming languages.
- Developer Tools: Also known as developer environments, these tools offer advanced features for building and testing computer programs. Developers benefit from extensive knowledge of multiple platforms, as each offers different situation-specific functions.
- Mathematics and Problem-Solving Skills: Software developers regularly use logical and linear thinking. These professionals must also find creative ways to debug their programs and solve other issues that arise during the development process.
- Knowledge of Computing Trends: Successful developers have advanced insights into key trends shaping computer and software usage in consumer markets. They also follow technical trends in the industry and self-direct regular upgrades to their skill sets.
Software Engineering
Engineering principles include a general set of logic-based and process-based concepts used to guide product and system development. Software engineers apply engineering principles to creating applications. Examples of these applications include purpose-built productivity platforms, computer games, and network control systems.
In a sense, engineering principles function as one of the tools specifically used by software engineers. Core engineering principles for software include:
- The testability and maintainability of program functions
- Design, verification, and assurance processes (also described as «integrity»)
- Clear and specific external integration standards
Software engineers also have advanced expertise in the same development tools and programming languages.
Unlike many other engineering specializations, software engineers do not require a license. Instead, they ascend into the role through targeted professional experience and strong technical skills.
Software engineers generally develop technical skills in academic settings, such as degree programs and engineering bootcamps. However, as with software development, self-directed learning remains an option for software engineers. Many employers value hard skills and performance capabilities over formal credentials.
The software engineering career path includes tiered levels covering associate, junior, intermediate, and senior roles. Engineers often begin in entry-level associate or junior roles, then move up the ladder every 1-3 years.
Explore degrees in software engineering
Consider an app development bootcamp
Software Engineer Skills
- Writing and Testing Code: Like developers, software engineers write, test, and debug computer code. These job functions depend on extensive knowledge of developer environments and programming languages.
- Deep Insights into User Needs: Software engineers often conceive of new computer applications and performance features to improve existing applications. Thus, they require a strong understanding of users’ unique preferences and needs.
- Object-Oriented Design: Industry observers have cataloged a strong move toward object-oriented design (OOD) over the past decades. OOD conceives of software design as a set of processes guided by interactions between abstract data types known as objects. As with many other core software engineer skills, this overlaps with the professional duties of software developers.
- Collaboration and Interpersonal Skills: One of the defining aspects of the software engineer vs. developer issue is that engineers generally interact with a broader set of collaborators. These include clients, other engineers, software developers, cybersecurity specialists, and nontechnical professionals in management or executive roles.
What’s the Difference Between Software Developers and Engineers?
Tech industry insiders often explore the difference between software developers vs. software engineers through direct comparisons. One commonly cited model describes engineers as creators of the architecture that powers computer applications and developers as individuals who use that architecture to carry out programming tasks. In this sense, software developers function as a specialized subset of software engineers.
Another model explaining the difference describes engineers as the professionals who conceive of and design solution-oriented systems. Meanwhile, developers apply technical skills to refine and realize those systems. To use a metaphor, think of software creation like a restaurant — software engineers design the menu, while software developers make the actual food.
Despite technical differences in their job profiles, the fields of software development and software engineering often overlap. Many employers and industry sources even use the terms interchangeably. Engineers and developers work together, and dynamic software products cannot function without the contributions of both types of professionals.
Other sources and organizations use alternate terminology, using «front-end developer» to describe software developers and «back-end developer» to describe engineers. Most observers consider software engineering the more difficult and complex discipline, which is reflected in their higher average pay rates.
The following table summarizes key similarities and differences between the two job titles.
What They Do
- Execute theoretical product designs by writing and testing code and functions
- Debug and troubleshoot issues encountered during the development process
- Architect solutions to high-level usage issues and problems regarding computer applications
- Build scalable software products and systems
- Write and test code
Average Salary
Programming Languages
Python, Java, Ruby and Ruby on Rails, HTML, C#, and C++, and others
Engineers and developers have comparable programming language proficiencies
Frameworks and Libraries
Django, Flask, TurboGears, PyTorch, Ruby on Rails, Garden, Spring, Play, and others
Engineers and developers have comparable framework and library proficiencies
Who They Work With
Software engineers, testers, and QA specialists
End clients, software developers, cybersecurity specialists, nontechnical stakeholders
Source: Payscale, November 2022
Learn more about front-end vs. back-end development
Which Career Is Right for Me?
Software engineers and developers both possess advanced technical skills relating to programming languages, dev environments, frameworks, and libraries. Both career paths also draw heavily on strong logic, sequential thinking, and problem-solving skills.
However, software engineers generally deal with broader questions of product and system design. Conversely, software developers primarily focus on carrying out the technical tasks that bring theoretical concepts and designs to life.
Professionals who combine high-level creative and conceptual thinking with strong technical skills may be more drawn to engineering roles. Individuals with more task-oriented mindsets regarding product development, debugging, and troubleshooting may make a better match for software development.
Common Software Developer vs. Software Engineer Questions
Is software development easy?
Software developers require advanced skills in programming, navigating development environments, and troubleshooting. The profession demands aptitudes for problem-solving and logical thinking. It is a challenging career path, as reflected by its high pay rates.
How do you become a software developer?
Aspiring developers can build foundational skills through bootcamps, degree programs, or self-directed learning. From there, the typical career path includes gaining experience in tester and QA roles before working as a senior front-end developer.
What does a software engineer do?
Software engineers create practical solutions to computing and networking needs. They design, create, test, and refine applications that meet those needs using the same set of technical tools as software developers.
How long does it take to become a software engineer?
Employers split the software engineering profession into ranked tiers that reflect seniority and relative levels of responsibility. Entry-level associate and junior roles are open to new professionals, while intermediate roles require at least 1-3 years of experience. Senior software engineers usually have at least five years of experience.
Reviewed by: Darnell Kenebrew
Darnell Kenebrew is a data analytics engineer at Meta and an executive captain for COOP Careers — a nonprofit for overcoming underemployment. A first-generation college graduate, Kenebrew earned a bachelor’s in computer science, kicking off his career in tech, data, and engineering.
Kenebrew strongly believes in giving people a chance and that everyone should have an equal opportunity within the job market. He believes that COOP Careers helps this equality materialize.
Kenebrew is passionate about how the industry is shaped with data and how data can be leveraged in many aspects of business decisions to meet goals. In addition, he’s passionate about inclusion, community, education, and using data for good. He hopes that he can pivot business decisions to make a meaningful impact and that his work will positively impact end users while meeting business goals.
Kenebrew is a paid member of the Red Ventures Education Integrity Network.
Page last reviewed Nov 8, 2022