Что нужно изменить, чтобы разработка программного обеспечения стала формальной профессией?

11

В отличие от других профессий (таких как бухгалтерский учет, юриспруденция, медицина и т. Д.), Для программной инженерии не существует общепрофессиональной сертификации.

Я хорошо осведомлен о множестве сертификаций, относящихся к технологиям и методологиям, которые призваны служить доказательством специализации и опыта, но нет ни одного общественного общества / руководящего органа Software Engineering, который бы устанавливал (и имел полномочия юридически оценивать) общепринятые профессиональные стандарты ,

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

Что нужно изменить, чтобы это произошло, и будет ли это даже хорошо?

(Если кто-нибудь знает о формальных исследованиях по этой теме, я буду очень признателен за ссылки)



Обновить

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

Тем не менее, кажется, что термин «формальная профессия» и его применение к программной инженерии не совсем понятны. Я думаю, что ключевая проблема в разработке программного обеспечения - и главная причина, по которой это не полноценная профессия - заключается в том, что если вы сертифицированный инженер-программист и, например, какое-то программное обеспечение, которое вы написали для неисправностей лифта и убивает людей, Ваша сертификация и / или членство в официальной профессиональной организации не будут аннулированы.

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

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

Для тех из вас, кто работает / работал над критически важным программным обеспечением - есть ли личная ответственность? Конечно, есть необходимость в формальных последствиях в случае, если инженер-программист совершит дорогостоящую ошибку?

Коста Контос
источник
3
Каковы преимущества становления формальной профессией?
Питер Б
1
Очень локализовано. Здесь, в Квебеке, вы должны быть частью приказа инженера, чтобы иметь возможность называться инженером. Те же правила применяются для Software Engineer. Поставляется с кодексом этики, правилами, страхованием ответственности и т. Д.
Жан-Франсуа Кот
5
Лабораторные халаты, очевидно. Со связями.
Бен Брока
2
@ Питер Б: Как бы вы относились к врачу, если бы не было официальной профессии, которая гарантировала бы какой-то стандарт, который должен выполнять каждый врач?
Джорджио
1
Я проголосовал, чтобы вновь открыть этот вопрос. Это не дубликат «Могут ли инженеры-программисты стать сертифицированными профессиональными инженерами?»: Этот вопрос задает вопрос о выборе профессии с учетом текущего статуса профессии. Этот вопрос задает вопрос о разрыве между этим статусом и предполагаемым желаемым состоянием и о том, как действовать для его устранения. Это разные темы.

Ответы:

15

Основываясь на имеющейся информации, я считаю, что Software Engineering уже формальная профессия. Это не может быть широко принято как таковое, но оно соответствует общепринятым критериям характеристик профессии.

Из статьи Википедии о профессии :

Существует значительное соглашение по определению характерных черт профессии. У них есть «профессиональная ассоциация, когнитивная база, институционализированное обучение, лицензирование, автономия труда, коллегиальный контроль ... (и) этический кодекс» [18], к которому Ларсон также добавляет, «высокие стандарты профессионального и интеллектуального совершенства, «(Larson, p. 221), что« профессии - это занятия с особой властью и престижем »(Larson, px) и что они составляют« исключительную элитную группу »(Larson, p. 20) во всех обществах.

Это цитирует Магали Сарфатти Ларсон « Повышение профессионализма: социологический анализ» . Поиск «характеристик профессии» приводит к схожим результатам.

Как Software Engineering сочетается с этими характеристиками?

  • Профессиональная ассоциация Существует множество профессиональных ассоциаций для разработчиков программного обеспечения. IEEE и более конкретно Computer Society IEEE служат специалистов , работающих в области машиностроения по всему миру, с IEEE Computer Society с особым акцентом на компьютерных и программных инженеров. ACM является другой профессиональной организацией , для специалистов , работающих в вычислительной, как правило , в Северной и Южной Америке. Также существует Британское компьютерное общество , которое обслуживает различные аспекты профессий в области информационных и коммуникационных технологий, как правило, в Великобритании.

  • Когнитивная база . Свод знаний по программной инженерии спонсируется IEEE, Boeing, Национальным исследовательским советом Канады, Raytheon, Construx Software, Канадским советом профессиональных инженеров, корпорацией MITER, NIST, Rational, SAP (для версии 2004 года). Это было начато специально как шаг к «превращению разработки программного обеспечения в законную инженерную дисциплину и признанную профессию» .

  • Институционализированное обучение В США программы по информационным технологиям, информатике и разработке программного обеспечения могут быть аккредитованы ABET . В Канаде программы по компьютерным наукам и разработке программного обеспечения аккредитованы CIPS . Эти организации определяют минимальные стандарты и ожидаемые результаты для студентов, заканчивающих аккредитованную программу, чтобы они могли функционировать в профессиональной среде. IEEE также предлагает два экзамена на основе совокупности знаний в области разработки программного обеспечения - сертифицированный экзамен Associate Development Software для студентов (или недавно выпускников) и сертифицированный экзамен Professional Software Development для профессионалов среднего звена.

  • Лицензирование По состоянию на апрель 2013 года, NCEES предлагает экзамен по профессиональной инженерии в области программной инженерии . Он предлагается в каждом штате в Соединенных Штатах. Тем не менее, экзамен Software Engineering PE в настоящее время предлагается не каждым штатом, и еще меньше людей требуют лицензии. Эта статья, опубликованная в выпуске IEEE Software за ноябрь / декабрь 1999 года, обсуждает лицензионные требования в штате Техас и краткое обсуждение лицензирования в Онтарио и Британской Колумбии, Канаде и Великобритании. В Техасе лицензия требуется только для работы над проектированием, тестированием или внедрением встроенных систем или систем реального времени, которые «требуют детального понимания инженерных электрических или механических компонентов», а также для программных систем для «механических устройств, электрических устройств». и системы питания »- сравнительно небольшой объем работ по разработке программного обеспечения. В штатах, предлагающих лицензирование, наихудший сценарий - дисциплинарные меры, санкции или потеря вашей лицензии в случае подачи жалобы клиентом или работодателем. Однако единственный реальный вред наносится в штатах, которым требуется лицензия - если лицензия не требуется для выполнения работы, ее потеря ничего не значит.

  • Кодекс этики ACM и IEEE Computer Society создали Кодекс этики и профессиональной практики разработки программного обеспечения . В Соединенных Штатах выпускники аккредитованных ABET инженерных программ, включая программы Software Engineering, также могут присоединиться к Ордену инженера , который поддерживает этический кодекс, который обычно применяется к профессиональным инженерам.

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

Томас Оуэнс
источник
6
90%, или я бы даже сказал, что 99% программистов даже не знают, что IEEE CS существует. Если бы 99% врачей не принадлежали к AMA, я бы гораздо меньше верил в профессию.
Джонатан Рич
3
@JonathanRich - Все, кого я знал в колледже, присоединились как минимум к IEEE. Где вы пришли с вашими номерами? Вы подключились к IEEE, поэтому у вас есть реальные номера подписки?
Ramhound
2
@Ramhound: Когда я учился в университете, люди знали об IEEE, но, похоже, мало кто из них присоединился. С другой стороны, в моей школе была программа по информатике , а не программа по разработке программного обеспечения , в других школах были курсы по программированию . Очень немногие имели программную инженерию , хотя она начинает меняться, поскольку школы получают аккредитацию на свои курсы. Кроме того, мы не были в США, не уверены, оказывает ли это какое-либо влияние на участие в IEEE.
FrustratedWithFormsDesigner
11
@JonathanRich, 90% программистов не программисты.
Филипп
6
@Philip И в этом проблема. Вы программист? Разработчик? Разработчик программного обеспечения? Инженер-программист? Системный аналитик? Какие из них являются профессиональными, а какие нет? Вам нужен инженер-программист, чтобы настроить свой сайт WordPress? Должны ли вы позволить разработчику приблизиться к вашей собственной платформе хранилища данных? Мне бы очень хотелось, чтобы к разработке программного обеспечения подходили более профессионально, чем к 90% людей, с которыми я работал, но если у вас есть люди, которые хотят платить БД меньше, чем парень, который косит ваш газон, вы не собирается получить лучших людей.
Джонатан Рич
4

Широко созданная и признанная профессиональная организация для разработчиков программного обеспечения / инженеров / архитекторов / и т. Д. Не будет хорошей вещью.

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

В настоящее время вы оцениваете свои способности, а не какую-то аккредитацию, которую кто-то присудил вам. И это справедливая, хорошая вещь (тм).

MrFox
источник
2
Сходство с проституцией слегка сбивает с толку ....
mattnz
@mattnz Это называется интеллектуальная проституция, и моя почасовая ставка, вероятно, ниже традиционной.
MrFox
Спасибо за проницательный ответ @MrFox. Я хотел бы поднять ваш мозг немного дальше, если можно. Если врачи / бухгалтеры / юристы совершат критическую / дорогостоящую ошибку, они рискуют потерять свое свидетельство и будут лишены возможности дальнейшей торговли. Инженеры-программисты, с другой стороны, не сталкиваются с таким риском, поскольку они редко могут потерять деньги (из-за ограниченной ответственности, которую им предоставляют компании, в которых они работают). Все, что они могут потерять, это их нынешняя работа и репутация. В свете этого, как вы думаете, имеет ли смысл иметь формальное общество для управления передовой практикой разработки программного обеспечения?
Коста Контос
2
@KostaKontos Подумайте, что бы это значило в реальном мире - вы бы получили нарушения, если бы вы не писали модульные тесты или не имели достаточной документации? Или вы потеряете лицензию, если отправите код в производственную среду с недостатком безопасности? Это было бы хорошо для области? Мой аргумент заключается в том, что это добавит много бюрократизма, политики, обвинений и просто раздувает прибыль страховых компаний через каждого застройщика, которому приходится покупать страховку от злоупотребления служебным положением. Это интересная мысль, хотя. Могу поспорить, что это еще не произошло, потому что подавать в суд на своих инженеров - плохая идея.
MrFox
0

Ничего не нужно менять.

Как отметил Томас , разработка программного обеспечения - это уже профессия. Его можно назвать проектированием, программирование, взлом, и / или разработки, но это , как профессия и много людей делают деньги на этом.

Я думаю, что ваш вопрос касается лицензирования.

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

Это не похоже на другие отрасли (в качестве примеров приводятся юриспруденция и медицина). Для этих профессий требуется лицензия. Любой может водить автомобиль, но для легального вождения необходимо иметь лицензию dirvers - еще один пример. Любой может программировать, не требуются лицензия или сертификация.

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

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

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

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

Джон Рейнор
источник
2
«Программисты с« сертификатами »хорошо выглядят на бумаге», нет.
Филипп
0

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

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

Я занимаюсь разработкой программного обеспечения более 20 лет. Я не утверждаю, что это само по себе делает меня отличным разработчиком, но я думаю, что я довольно хороший разработчик. Проблема в том, что мне приходится постоянно демонстрировать, почему я лучший разработчик, чем каждый ребенок, который в свободное время изучал программирование и хочет получить ту же работу, что и я. Не говоря уже о легионах «оффшорных» разработчиков, которые обещают сделать ту же работу за небольшую часть денег. Прямо сейчас это требует больших усилий. Я должен предоставить рабочие образцы, рекомендации, пройти тесты, пройти собеседование. Я мог легко пережить плохой день, ошибиться на экзамене и получить дисквалификацию. Я бы просто сказал: «Да, я сертифицированный разработчик, и вот мой сертификат». Мне все равно придется давать интервью, но, по крайней мере, я буду конкурировать только с другими сертифицированными разработчиками.

user92238
источник
Спасибо за проницательный ответ. Как вы думаете, должен быть минимальный опыт работы, необходимый для того, чтобы разработчики смогли сдать «экзамен на адвоката»? Подобно тому, как юристы / бухгалтеры должны заполнять статьи за два-три года. И если бы существовало это минимальное требование, считаете ли вы, что сама работа должна быть в какой-то степени стандартизирована, с тем чтобы обеспечить согласованность в опыте, полученном по профессии?
Коста Контос
-2

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

Точно так же, хотя я мог видеть будущее, в котором критическое для безопасности и / или финансовое программное обеспечение нуждается в аккредитованных инженерах, работающих над ним, никогда не будет необходимости в людях, производящих программное обеспечение для искусства или развлечений. Что нужно изменить, чтобы получить безопасное или финансовое программное обеспечение, необходимое для аккредитованных инженеров? Ну, как и в случае с другими профессиями, для принятия закона требуется закон.

JK.
источник
4
Чем это отличается от других инженерных дисциплин? Давайте возьмем гражданское строительство. Любой может построить мост на своей лужайке через ручей. Но не каждый может построить автомобильный мост через озеро. Я думаю, что это может быть применено и ко многим другим инженерным дисциплинам, и общепризнанно, что инженерия - это профессия.
Томас Оуэнс
@ThomasOwens, это правда, однако с программным обеспечением у нас нет формальной части «не каждый может построить автомобильный мост», хотя это будет
jk.
2
Это не правда. Не каждый может создать программное обеспечение для авионики для коммерческого авиалайнера. Или управляющее программное обеспечение для аппарата лучевой терапии. Существует множество программ, которые контролируются, регулируются, и должны быть определенные стандарты. Однако до недавнего времени не было таких лицензий, которые бы соответствовали другим инженерным дисциплинам.
Томас Оуэнс
1
@ThomasOwens Как инженер-программист, работающий над программным обеспечением авионики для коммерческого лайнера (OBIGGS), да, на самом деле, любой может построить это. Программное обеспечение не так уж сложно. Но клиенты ДЕЙСТВИТЕЛЬНО придирчивы к тому, что он крепкий и уверен, что он не взорвется. Точно так же, как любой мог построить мост, плохо, возможно, любой мог плохо кодировать модуль OBIGGS. Профессиональный аспект связан с тестированием, процессом, решением DO-178b и способностью с уверенностью показать, что он не упадет с неба, когда пересечет международную линию дат.
Филипп
3
«В программном обеспечении нет аналога физики». Это называется математикой или другим формальным методом. И действительно, для критически важного программного обеспечения большая часть работы уходит на спецификацию, проверку и тестирование, и только 10% работы уходит на фактическое кодирование. Только не критически важное программное обеспечение может быть разработано гибким методом проб и ошибок (как можно было бы построить мост на их лужайке), но попробуйте использовать тот же метод для создания авиационного программного обеспечения!
Джорджио
-2

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

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

Это описание не соответствует программному обеспечению.

Прежде всего, любой, кто интересуется программным обеспечением, может выйти и попытаться найти работу по разработке программного обеспечения. Многие из этих людей имеют высшее образование, совершенно не связанное с компьютерным программированием, а многие вообще не имеют никакого образования. Ничто не мешает ни одной из этих групп стать программистами.

Программное обеспечение не может стать профессией, потому что «лицензированные» участники несут ответственность за ущерб, который они наносят, и за их халатность. 80-90% разработчиков потеряют работу в течение нескольких лет.

В целом, качество программного обеспечения ужасно, подвержено ошибкам и просто не очень хорошо сделано. Это достойно быть профессией? Вы предвидите эту остановку, потому что люди получают лицензию? Если профессиональная организация не будет отстаивать высокие стандарты и профессиональное качество, то в этом нет никакого смысла. Это идет вразрез с отраслевой практикой. Написание качественного, надежного и работающего программного обеспечения противоречит принципам большинства компаний, потому что время выхода на рынок, стоимость, это достаточно хорошо, не хотят ломать что-либо еще, пытаясь исправить неисправное программное обеспечение, рассматривается как более важнее, чем программное обеспечение профессионального уровня.

Также по поводу злоупотребления служебным положением. Как вы собираетесь доказать, что один разработчик против другого виноват. В программном обеспечении это способ легко указывать пальцем, и оба разработчика "правы". Кто виноват, когда этот разработчик использует недокументированный API, скрытый в недрах ОС, а затем поставщик ОС меняет свою функцию или удаляет ее?

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

Что касается, было бы хорошо требовать лицензирования? Абсолютно для тех, кто может получить аккредитацию. Ваша зарплата резко возрастет с вашей новой найденной монополией.

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

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