Каковы основные различия между разработчиками программного обеспечения и программистами? [закрыто]


103

Каковы основные различия между разработчиками программного обеспечения и программистами?


1
Джоэл уже задавал этот вопрос. Это не простой вопрос, и я не уверен, что есть четкий ответ. Но я знаю, что Джоэл уже задал этот вопрос.
Денем

Ответы:


80

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


10
Не могли бы вы уточнить, нанимаете ли вы обоих (для разных работ) или просто инженеров-программистов?
Яап

2
Вы можете назвать бывшего инженера-программиста, но я бы не стал. По словам Брендана, это, как правило, работа архитектора программного обеспечения.
JᴀʏM '

131

На самом деле дело за компанией, так как я не думаю, что существует правовая основа для принудительного исполнения деноминации или другой, или, по крайней мере, я не знаю об этом, и это может варьироваться от страны к стране (например, использование термина «инженер» на самом деле справедливо регулируется во Франции, но есть варианты, которые допускаются для «оскорбительных» случаев).

При этом общая тенденция выглядит так:

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

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

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

Тем не менее, все это спорно , и , как я сказал, что нет никакого юридического требования , что я знаю в странах США / Великобритании . При этом во Франции вы можете называть себя «инженером» только в том случае, если вы из инженерной школы (признанной Комиссией по титрам инженеров или кем-то в этом роде). Вы не можете сказать, что у вас есть «степень инженера», но вы можете сказать, что у вас есть «степень инженера», если вы изучали дисциплину, которая подпадает под «инженерное дело и технологии».

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

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

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

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

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

Но, может быть, это то, что такое инженерия. И это то, что, когда кто-то говорит о «инженере программного обеспечения», он должен думать и стремиться.

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

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

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

И чтобы наверняка потерять всех в тумане, вы найдете и другие названия, смешивающие оба (например, «Инженер-разработчик программного обеспечения» или «Инженер-программист в тесте»!), А затем другие, подчеркивающие еще более сумасшедшие мосты с другими доменами ( подумайте о «Архитекторе программного обеспечения» и о том, как «архитектура программного обеспечения» может быть бесстыдной кражей словарного запаса). И продолжайте в том же духе: Релиз Инженер, Менеджер по разработке изменений, Инженер по сборке (он также доступен для ffaaarrrrrr) А иногда просто "инженер".

Надеюсь, что это помогло, хотя это не совсем ответ.

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


12
В книге «Прагматичный программист» также говорится, что программное обеспечение не похоже на разработку. Хотя вы можете спланировать дом или небоскреб, вряд ли можно использовать аналогию для разработки программного обеспечения. Они утверждают: программное обеспечение больше похоже на садоводство. Планируйте сад, сажайте растения. Затем посмотрите, что растет, удалите сорняки и посадите новые растения.
Сокол

6
«Однажды мой учитель сказал нашему классу, что на сегодняшний день не существует такой вещи, как так называемая« разработка программного обеспечения ». Потому что разработка чего-то означает, что вы способны предвидеть его конструкцию и все этапы ее производства, а также прогнозировать с точностью ресурсы, которые вам понадобятся ". Это было вероятно не соответствует действительности в тот момент, когда это было написано. Как и архитектура, мы не можем предсказать затраты, не зная требований (сколько стоит небоскреб? Я не скажу, насколько он должен быть, прежде чем вы начнете строить ...). Но мы можем прогнозировать затраты впоследствии, учитывая зрелую группу разработчиков программного обеспечения.
MSalters

1
@MSalters: Конечно, вы можете изменить это: как архитектура, мы не можем предсказать затраты без требований. Но в отличие от архитектуры , даже с четко определенными требованиями (хотя наши часто более гибкие, потому что их сложнее предвидеть, либо мы склонны позволить им измениться), мы не можем предсказать стоимость. Вы можете сделать это в обычном проектировании с очень точным уровнем точности, и в настоящее время мы в большей степени можем определить затраты для необычных обстоятельств, чем в SE. Мы делаем только (довольно грубые) предположения. Мы становимся лучше в их создании, но они все еще в значительной степени догадываются.
Хайлем

3
@haylem: Это норма в разработке программного обеспечения. Но если вы работали в компании CMM уровня 4/5, вы заметите, что они могут прогнозировать затраты и часто придают им 95% -ный уровень доверия. Они достаточно хорошо понимают свою программную базу и предъявляют достаточно хорошие требования, что препятствия встречаются редко. И стоимость контрольно-пропускных пунктов ниже, когда у вас есть опыт борьбы с ними.
MSalters

1
@pcurry: обратите внимание, я не утверждаю, что это "моя таксономия". Это очень часто воспринимается рекрутерами и корпоративными ведомостями заработной платы, как это часто бывает на курсах CS ot IT. Они склонны делать снимки друг на друга. Таким образом, я предполагаю, что перечислил точку зрения, которая принята (так называемыми) разработчиками программного обеспечения больше, чем (самоописавшимися) программистами, очевидно. Неважно, как вы себя называете, важнее то, что люди подумают о вас. И это имеет значение, только если вы заботитесь о таких вещах. Честно говоря, лично мне все равно, быть одним или другим, меня это не меняет.
Хайлем

81

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

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

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


26
Я должен отметить, что этот ответ не должен был быть смешным.
Джер

15

Таким образом, есть «Инженер-программист», «Программист», а также «Разработчик», «Кодер», и вы никогда не забудете «Эксперт по SOA».

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

В объявлениях о работе разница сводится к кадровому персоналу.

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

Что тебе необходимо сделать? Объявления о вакансиях должны содержать описание необходимых навыков, а резюме должны содержать подробную информацию об опыте кандидата.


10

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


8

Программирование о коде. Разработка программного обеспечения о конечном продукте.


3

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

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

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

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


3

Я не думаю, что есть какие-либо «официальные различия», для моего опыта это может означать:

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

Кроме того, изменяются и модные термины ... Сначала термин был "программист", затем "инженер-программист", а теперь, похоже, "разработчик" ...

Лучше прочитать описание работы или кому-то в конкретной компании


3

В некоторых юрисдикциях «Инженер» несет с собой требование быть профессиональным инженером, то есть иметь P. Eng. Признание среди своих полномочий. Тем не менее, в других областях, возможно, не будет такой разницы, поскольку я был «инженером-разработчиком Softwere», работающим в штате Вашингтон несколько лет назад.


2

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.