Які ключові відмінності між інженерами програмного забезпечення та програмістами? [зачинено]


103

Які ключові відмінності між інженерами програмного забезпечення та програмістами?


1
Джоель вже задав це питання. На це питання нелегко відповісти, і я не впевнений, чи є чітка відповідь. Але я знаю, що Джоел вже ставив це питання.
Денаем

Відповіді:


80

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


10
Чи можете ви уточнити, чи наймаєте ви обох (для різних робочих місць) чи просто програмних інженерів?
Яап

2
Ви можете подзвонити колишньому інженеру програмного забезпечення, але я цього не зробив. Оскільки Брендан ухиляється, це, як правило, робота архітектора програмного забезпечення.
JᴀʏMᴇᴇ

131

Це дійсно за компанією, оскільки я не думаю, що існує законодавча база для застосування деномінації чи іншого, або, принаймні, не про те, що мені відомо, і це може залежати від країни до країни (наприклад, використання терміна "інженер" насправді досить регламентований у Франції, але існують варіанти, дозволені для випадків "зловживань").

Як сказано, загальна тенденція виглядає так:

  • Програміст позиція, як правило, один з професійних найняли , щоб зробити код комп'ютерної програми . Це буде означати, що ви вмієте писати код , вмієте розуміти алгоритм і слідувати специфікаціям . Однак зазвичай це зупиняється на відповідальності.

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

  • Інженер позиції, як правило , означає , що ви розробник , який має певний тип міри , деякі знання про техніку , і здатний проектувати систему (наприклад: поєднання програмних компонентів / модулів , які разом утворюють цілу програмну сутність) . В основному ви бачите більш широку картину , і ви здатні розробити і пояснити її і розділити на більш дрібні модулі .

Однак все це є спірним , і, як я вже сказав, немає жодних юридичних вимог, про які я знаю в країнах США та Великобританії . Якщо говорити, то у Франції ви можете назвати себе "інженером" лише в тому випадку, якщо ви приїхали з інженерної школи (визнана комісією з питань титрів та інженерів чи щось подібне). Ви не можете сказати, що у вас є "ступінь інженера", але ви можете сказати, що у вас є "ступінь інженерії", якщо ви вивчали дисципліну, що підпадає під сучасний інженерно-технічний комплекс.

Можливо, деякі країни мають подібну відмінність, я просто не знаю.

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

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

Основна проблема програмного забезпечення полягає в тому, що його ще немає. Ми хочемо прагнути до інженерії програмного забезпечення, але нас там ще немає, насправді. Оскільки у нас дуже текуча і динамічна обстановка, дуже мінливі обмеження для проектів, і все ще недостатня зрілість в ретроспективі в наших процесах. Звичайно, ми можемо сказати, що в цьому нам краще (важко сперечатися із жорсткими даними), але ми були в цьому лише з 60-х років (попередні проекти насправді були ближчими лише до апаратних комп'ютерів, таким чином, ближче до реальної інженерії, іронічно ). Тоді як ми будували моторні транспортні засоби вже більше століття, загалом транспортні засоби протягом декількох тисячоліть, і будуємо ще більше тисячоліть (і ми були досить прокляті в цьому насправді в якійсь частині світу, завдяки чому ви відчуваєте, що ми '

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

Але бачте, може, саме це і є інженерія. І ось що, коли хтось говорить про "інженера-програмного забезпечення", йому слід думати і прагнути.

Тож це здається навряд чи взаємозамінним з простим актом програмування рутин або з більш досконалим актом розробки програм.

Все-таки все - це питання тенденцій. Останнім часом доволі поширеною є команда горизонтальних розробників, де всі в команді є старшим розробником програмного забезпечення (так, столиці, тому що це робить нас особливими, чи не так?), Без реального розрізнення віку (досить справедливо, в моєму думка) і не стільки розмежування навичок (е-о-о ...) і обов'язків (тепер це не може бути добре, крім суто для піару на PR).

Це також іноді просто сила звички і властива культурі та жаргону галузі. Більше посад для вбудованого програмного забезпечення використовують назви для інженерів програмного забезпечення. Переважно тому, що це, мабуть, означає, що вам доведеться завжди певною мірою мати справу з обладнанням, як і в цій галузі, тому ви, очевидно, маєте справу з іншими аспектами виробництва та всієї "системи", яку ви виробляєте. Не тільки шматочки, що збиваються всередині нього. З іншого боку, ви не бачите, як термін "інженер" використовується на позиціях з виробництва фінансових програм. Це або тому, що це міметична еволюція цієї галузі від одного з її попередників (скажімо, вбудована інженерія знаходить своє коріння в автомобільній техніці, наприклад), або тому, що вони просто хочуть надати більше чи менше кредиту / ваги позиції.

І щоб обов'язково втратити всіх у тумані, ви знайдете інші заголовки, що змішують обидві (наприклад, "Інженер з розробки програмного забезпечення" або "Інженер програмного забезпечення в тесті"!), А потім інші, підкреслюючи ще більш шалені мости з іншими доменами ( подумайте про "Архітектор програмного забезпечення" та про те, як "архітектура програмного забезпечення" може бути безсоромною крадіжкою лексики). І продовжуйте їх приймати: випустіть інженера, менеджера з розвитку змін, інженера побудови (той, хто також йде там ffaaarrrrrr). А іноді просто просто "інженер".

Сподіваюся, що це допомогло, хоча це насправді не відповідь.

О, а це означає, що ваша нова компанія або намагається заманювати вас новою назвою, або що вони не дуже цікавляться титулами, або що ви дійсно будете займати посаду вищого рівня. Єдиний спосіб дізнатися - прочитати свої завдання, поговорити з ними і, врешті-решт, сфотографувати і судити про себе. Я сподіваюся, що це останній варіант, і що ви задоволені цим (і, можливо, більше заробляєте на ньому). ;)


12
У книзі "Прагматичний програміст" також сказано, що програмне забезпечення не схоже на інженерію. Хоча ви можете планувати будинок або хмарочос, подібну аналогію інженерії програмного забезпечення навряд чи можна використовувати. Вони заявляють: програмне забезпечення більше нагадує садівництво. Плануйте сад, посадіть рослини. Потім подивіться, що росте, видаліть бур’яни та посадіть нові рослини.
Сокіл

6
"Одного разу мій учитель сказав нашому класі, що на сьогоднішній день такого не існує, так звана" інженерія програмного забезпечення ". Тому що щось інженерне означає, що ви здатні передбачити його дизайн і всі етапи його виготовлення, і передбачити з точністю ресурси, які вам знадобляться ". Це, мабуть, неправда в той момент, коли це було написано. Як і архітектура, ми не можемо передбачити витрати, не знаючи вимог (скільки коштує хмарочос? Я не скажу вам, наскільки це повинно бути, перш ніж ви почнете будівництво ...). Але ми можемо прогнозувати витрати згодом, враховуючи зрілу групу розробки програмного забезпечення.
MSalters

1
@MSalters: Звичайно, ви можете це змінити: як архітектура, ми не можемо передбачити витрати без вимог. Але на відміну від архітектури , навіть з чітко визначеними вимогами (хоча наші часто більш текучі, тому що їх важче передбачити або ми маємо тенденцію дозволити їм змінюватися), ми не можемо передбачити вартість. Ви можете зробити це в звичайній техніці до дуже точного рівня точності, І ми в даний час більш здатні визначити витрати на надзвичайні обставини, ніж в SE. Ми робимо лише (досить грубі) здогадки. Ми робимо їх краще, але вони все ще здогадки.
haylem

3
@haylem: Це норма в розробці програмного забезпечення. Але якщо ви працювали в компанії 4/5 рівня CMM, ви помітите, що вони можуть прогнозувати витрати і часто прикріплюють до них 95% рівня довіри. Вони досить добре розуміють свою програмну базу та мають досить хороші вимоги, що блокпости є рідкісними. А вартість дорожніх блоків нижча, коли у вас є досвід боротьби з ними.
MSalters

1
@pcurry: зауважте, я не стверджую, що це "моя таксономія". Це дуже часто вважається таким, як рекрутери та корпоративні зарплати, а також, як це часто розглядають на курсах ІТ-ІТ. Вони, як правило, роблять постріли один в одного. Отож, мабуть, я перерахував думку, яку прийняли (так звані) програмні інженери більше, ніж (самоописані) програмісти, очевидно. Насправді не важливо, як ви себе називаєте, важливіше те, що люди вважатимуть вас. І це важливо лише, якщо ви дбаєте про такі речі. Чесно кажучи, особисто мені байдуже бути тим чи іншим, мене це не змінює.
haylem

81

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

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

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


26
Зазначу, що ця відповідь насправді не була смішною.
Джер

15

Отже, є "інженер програмного забезпечення", "програміст", а також "розробник", "кодер", і ви ніколи не можете забути "експерта SOA"

Це все маркетингові терміни для людей, які не можуть сказати щось важливе у своєму резюме, наприклад, їх фактичну роль (а не лише посаду) на попередніх посадах.

У оголошеннях про роботу різниця зменшується до людини.

Підсумок: у кожної людини є власне сприйняття "того, що робить хорошого співробітника - той, що працює - з кодом", а деякі люблять асоціювати такі і такі навички з такими і такими званнями.

Що вам потрібно зробити? Об'яви про роботу повинні описувати необхідні навички, а резюме повинні пояснювати деталі досвіду кандидата.


10

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


8

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


3

Це дійсно залежить від того, як компанія визначає свої позиції. Можливо, як програмний інженер у вас буде більше можливостей для дизайнерських рішень, тоді як як розробник вони дадуть вам діаграми UML, і ви будете писати програму.

Але реального заданого визначення не існує, щоб люди, виходячи з заголовка, знали, що ви робите, чи наскільки ви досвідчені.

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

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


3

Я не думаю, що існують "офіційні відмінності", на мій досвід, які можуть означати:

  • Деякі компанії використовують інженерів програмного забезпечення та розробників програмного забезпечення, щоб посилатися на одне і те ж. Вони просто використовують улюблений термін.
  • Інші використовують обидва терміни для різних внутрішніх позицій, але ролі залежать від компанії до компанії! У деяких може бути лише різниця у функції (м'який. Інженер буде працювати над обслуговуванням та вдосконаленням систем, тоді як розробник працюватиме над продуктом компанії), або може бути ієрархічним (інженер вище розробника), або навіть інженер дійсно залежить від питань і запитань!

Також є модні терміни, які змінюються ... Спочатку термін "програміст", потім "програмний інженер", а тепер, здається, "розробник" ...

Краще прочитати опис вакансії або комусь із конкретної компанії


3

У деяких юрисдикціях "Інженер" несе в собі вимогу бути професійним інженером, тобто мати П. Eng. дезігація серед своїх повноважень. Однак в інших областях може не бути такої різниці, оскільки я був інженером з проектування програмного забезпечення Softwere, який працював у штаті Вашингтон кілька років тому.


2

Інженери програмного забезпечення, як правило, працюють над дуже великими системами, які займають багато років, наприклад, від 5 до 16 років. Програмісти, як правило, мають такий стереотип просто кодування та нічого іншого. Але це дійсно залежить від організації, в якій ви працюєте, і того, як HR продає роль, як пояснено вище. Вони по суті те саме. Просто не надто прив'язуйтесь до заголовка, тому що це синонім.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.