Відповіді:
При прийнятті на роботу ми шукаємо відмінність між тим, хто зможе допомогти нам архітектуру нашої системи, визначити процеси, створити технічні умови, впровадити розширений рефакторинг тощо та тим, хто допоможе нам виконати завдання програмування з контрольного списку . Я вважаю , що ви могли б назвати колишній інженер - програміст , а другий програміст .
Це дійсно за компанією, оскільки я не думаю, що існує законодавча база для застосування деномінації чи іншого, або, принаймні, не про те, що мені відомо, і це може залежати від країни до країни (наприклад, використання терміна "інженер" насправді досить регламентований у Франції, але існують варіанти, дозволені для випадків "зловживань").
Як сказано, загальна тенденція виглядає так:
Програміст позиція, як правило, один з професійних найняли , щоб зробити код комп'ютерної програми . Це буде означати, що ви вмієте писати код , вмієте розуміти алгоритм і слідувати специфікаціям . Однак зазвичай це зупиняється на відповідальності.
Позиція розробника зазвичай вважається над типом позиції програміста . Вона включає в себе ті ж обов'язки, плюс на здатність проектувати і архітектор програмного компонента і писати технічну документацію для нього (включаючи специфікації). Ви вмієте - принаймні технічно - керувати іншими (так, програмістами), але необов'язково командою (приходить нечітка ...)
Інженер позиції, як правило , означає , що ви розробник , який має певний тип міри , деякі знання про техніку , і здатний проектувати систему (наприклад: поєднання програмних компонентів / модулів , які разом утворюють цілу програмну сутність) . В основному ви бачите більш широку картину , і ви здатні розробити і пояснити її і розділити на більш дрібні модулі .
Однак все це є спірним , і, як я вже сказав, немає жодних юридичних вимог, про які я знаю в країнах США та Великобританії . Якщо говорити, то у Франції ви можете назвати себе "інженером" лише в тому випадку, якщо ви приїхали з інженерної школи (визнана комісією з питань титрів та інженерів чи щось подібне). Ви не можете сказати, що у вас є "ступінь інженера", але ви можете сказати, що у вас є "ступінь інженерії", якщо ви вивчали дисципліну, що підпадає під сучасний інженерно-технічний комплекс.
Можливо, деякі країни мають подібну відмінність, я просто не знаю.
Повернення до назви інженера-програміста ... Одного разу один з моїх викладачів сказав нашому класу - і це правильно - що такого не існує, як сьогодні, так званої "інженерії програмного забезпечення" . Оскільки щось інженерне (будь то будівля, транспортний засіб, деталь обладнання ...) означає, що ви здатні передбачити його дизайн та всі етапи його виробництва, а також з точністю передбачити необхідні вам ресурси, а отже, і собівартість продукції.
Це стосується більшості "справжніх" інженерних дисциплін. Звичайно, є коливання (ціни на матеріали, наприклад, змінюватимуться з часом), але є дуже обмежені теоретичні моделі (для проектування та планування) та емпіричні моделі (для того, щоб утримати будь-яку з перших у межах доступних обмежень). які дозволяють передбачити дату закінчення проекту та його використання ресурсів.
Основна проблема програмного забезпечення полягає в тому, що його ще немає. Ми хочемо прагнути до інженерії програмного забезпечення, але нас там ще немає, насправді. Оскільки у нас дуже текуча і динамічна обстановка, дуже мінливі обмеження для проектів, і все ще недостатня зрілість в ретроспективі в наших процесах. Звичайно, ми можемо сказати, що в цьому нам краще (важко сперечатися із жорсткими даними), але ми були в цьому лише з 60-х років (попередні проекти насправді були ближчими лише до апаратних комп'ютерів, таким чином, ближче до реальної інженерії, іронічно ). Тоді як ми будували моторні транспортні засоби вже більше століття, загалом транспортні засоби протягом декількох тисячоліть, і будуємо ще більше тисячоліть (і ми були досить прокляті в цьому насправді в якійсь частині світу, завдяки чому ви відчуваєте, що ми '
Ми не в змозі систематично точно прогнозувати терміни , ми не в змозі систематично точно прогнозувати витрати , ми не в змозі систематично виявляти та зменшувати властиві та зовнішні ризики ефективно та детерміновано . Найкраще, що нам вдасться зробити, - це створити достатньо хороші здогадки та вмістити деякі буфери, намагаючись оптимізувати процеси для скорочення циклів та накладних витрат.
Але бачте, може, саме це і є інженерія. І ось що, коли хтось говорить про "інженера-програмного забезпечення", йому слід думати і прагнути.
Тож це здається навряд чи взаємозамінним з простим актом програмування рутин або з більш досконалим актом розробки програм.
Все-таки все - це питання тенденцій. Останнім часом доволі поширеною є команда горизонтальних розробників, де всі в команді є старшим розробником програмного забезпечення (так, столиці, тому що це робить нас особливими, чи не так?), Без реального розрізнення віку (досить справедливо, в моєму думка) і не стільки розмежування навичок (е-о-о ...) і обов'язків (тепер це не може бути добре, крім суто для піару на PR).
Це також іноді просто сила звички і властива культурі та жаргону галузі. Більше посад для вбудованого програмного забезпечення використовують назви для інженерів програмного забезпечення. Переважно тому, що це, мабуть, означає, що вам доведеться завжди певною мірою мати справу з обладнанням, як і в цій галузі, тому ви, очевидно, маєте справу з іншими аспектами виробництва та всієї "системи", яку ви виробляєте. Не тільки шматочки, що збиваються всередині нього. З іншого боку, ви не бачите, як термін "інженер" використовується на позиціях з виробництва фінансових програм. Це або тому, що це міметична еволюція цієї галузі від одного з її попередників (скажімо, вбудована інженерія знаходить своє коріння в автомобільній техніці, наприклад), або тому, що вони просто хочуть надати більше чи менше кредиту / ваги позиції.
І щоб обов'язково втратити всіх у тумані, ви знайдете інші заголовки, що змішують обидві (наприклад, "Інженер з розробки програмного забезпечення" або "Інженер програмного забезпечення в тесті"!), А потім інші, підкреслюючи ще більш шалені мости з іншими доменами ( подумайте про "Архітектор програмного забезпечення" та про те, як "архітектура програмного забезпечення" може бути безсоромною крадіжкою лексики). І продовжуйте їх приймати: випустіть інженера, менеджера з розвитку змін, інженера побудови (той, хто також йде там ffaaarrrrrr). А іноді просто просто "інженер".
Сподіваюся, що це допомогло, хоча це насправді не відповідь.
О, а це означає, що ваша нова компанія або намагається заманювати вас новою назвою, або що вони не дуже цікавляться титулами, або що ви дійсно будете займати посаду вищого рівня. Єдиний спосіб дізнатися - прочитати свої завдання, поговорити з ними і, врешті-решт, сфотографувати і судити про себе. Я сподіваюся, що це останній варіант, і що ви задоволені цим (і, можливо, більше заробляєте на ньому). ;)
Програмні інженери - це люди, які працюють у компаніях, які називають людей, які пишуть для них програмне забезпечення, "програмними інженерами".
Програмісти - це люди, які працюють у компаніях, які називають людей, які пишуть для них програмне забезпечення, "програмістами".
Є також розробники , або розробники програмного забезпечення . Це люди, які працюють у компаніях, які називають людей, які пишуть для них програмне забезпечення, відповідно "розробниками" або "розробниками програмного забезпечення".
Отже, є "інженер програмного забезпечення", "програміст", а також "розробник", "кодер", і ви ніколи не можете забути "експерта SOA"
Це все маркетингові терміни для людей, які не можуть сказати щось важливе у своєму резюме, наприклад, їх фактичну роль (а не лише посаду) на попередніх посадах.
У оголошеннях про роботу різниця зменшується до людини.
Підсумок: у кожної людини є власне сприйняття "того, що робить хорошого співробітника - той, що працює - з кодом", а деякі люблять асоціювати такі і такі навички з такими і такими званнями.
Що вам потрібно зробити? Об'яви про роботу повинні описувати необхідні навички, а резюме повинні пояснювати деталі досвіду кандидата.
Відмінностей немає. Вони те саме. Компанії, однак, можуть мати офіційні посадові інструкції, використовуючи терміни, і тоді може бути певне значення компанії для цього терміна.
Це дійсно залежить від того, як компанія визначає свої позиції. Можливо, як програмний інженер у вас буде більше можливостей для дизайнерських рішень, тоді як як розробник вони дадуть вам діаграми UML, і ви будете писати програму.
Але реального заданого визначення не існує, щоб люди, виходячи з заголовка, знали, що ви робите, чи наскільки ви досвідчені.
Коли я був архітектором / розробником, мій титул був вченим-комп’ютером, але я просто сказав людям, що я програміст, оскільки перші два не легко визначити, але більшість людей знає, чим займається програміст.
Якщо титул важливий для тебе, то прийміть нове, оскільки інженер звучить вище, ніж розробник.
Я не думаю, що існують "офіційні відмінності", на мій досвід, які можуть означати:
Також є модні терміни, які змінюються ... Спочатку термін "програміст", потім "програмний інженер", а тепер, здається, "розробник" ...
Краще прочитати опис вакансії або комусь із конкретної компанії
У деяких юрисдикціях "Інженер" несе в собі вимогу бути професійним інженером, тобто мати П. Eng. дезігація серед своїх повноважень. Однак в інших областях може не бути такої різниці, оскільки я був інженером з проектування програмного забезпечення Softwere, який працював у штаті Вашингтон кілька років тому.
Інженери програмного забезпечення, як правило, працюють над дуже великими системами, які займають багато років, наприклад, від 5 до 16 років. Програмісти, як правило, мають такий стереотип просто кодування та нічого іншого. Але це дійсно залежить від організації, в якій ви працюєте, і того, як HR продає роль, як пояснено вище. Вони по суті те саме. Просто не надто прив'язуйтесь до заголовка, тому що це синонім.