Im Gegensatz zu anderen Berufen (wie Buchhaltung, Recht, Medizin usw.) gibt es keine berufsweite Zertifizierung für Software Engineering.
Ich bin mir der Vielzahl von technologie- und methodenspezifischen Zertifizierungen bewusst, die als Nachweis für Spezialisierung und Erfahrung dienen sollen, aber es gibt keine öffentliche Software Engineering Society / Leitungsgremium, die allgemein anerkannte berufliche Standards festlegt (und befugt ist, diese rechtlich zu bewerten) .
Ich verstehe, dass Software ein dynamisches Biest ist - das ist Teil Kunst, Teil Wissenschaft -, aber ich frage mich, ob Software Engineering das Potenzial hat, ein formaler Beruf zu werden.
Was muss sich ändern, damit dies geschieht, und wäre es überhaupt eine gute Sache?
(Wenn jemand von formaler Forschung zu diesem Thema weiß, würde ich Referenzen sehr schätzen)
Aktualisieren
Ich stimme vielen der unten angesprochenen guten Punkte in Bezug auf das aktuelle Zertifizierungsniveau in Software Engineering zu. Ich finde es auch sehr interessant, dass einige Länder Software Engineering als Beruf behandeln, während andere dies nicht tun.
Es scheint jedoch ein kleines Leichentuch um den Begriff "formaler Beruf" zu geben und wie er für das Software-Engineering gelten würde. Ich denke, das Hauptproblem beim Software-Engineering - und der Hauptgrund dafür, dass es kein ausgewachsener Beruf ist - ist, dass Sie als zertifizierter Software-Ingenieur und zum Beispiel einige Software, die Sie für einen Aufzug geschrieben haben, fehlerhaft funktionieren und Menschen töten. Ihre Zertifizierung und / oder Mitgliedschaft in einer formellen Berufsorganisation wird nicht widerrufen.
Sicher, Ihr Unternehmen wird möglicherweise wegen Millionen verklagt, und Sie verlieren möglicherweise persönlich Ihren Job und verdienen eine schlechte Referenz. Im Allgemeinen sind Sie jedoch persönlich durch den Schutz der beschränkten Haftung geschützt, wenn Sie bei diesem Unternehmen beschäftigt sind. Mit anderen Worten, und soweit ich weiß, gibt es keine rechtliche Bewertung / Durchsetzung (im Gegensatz zu anderen formellen Berufen und ihren Regierungsgesellschaften), die das Mandat haben, Sie offiziell vom Handel auszuschließen, sobald Sie eine kolossale Sache gemacht haben .
Mir hat die Antwort sehr gut gefallen, die die Tatsache berührt hat, dass Software Engineering - so wie es aussieht - eine Meritokratie ist, die kein formaler Beruf sein muss, und dass dies eine gute Sache ist, die sich nicht ändern sollte. Gleichzeitig denke ich, dass wir klar zwischen Software-Ingenieuren für unternehmenskritische Software und Entwicklern für verschiedene / unkritische Software unterscheiden müssen.
Gibt es für diejenigen unter Ihnen, die an unternehmenskritischer Software arbeiten / gearbeitet haben, eine persönliche Haftung? Sicherlich sind formelle Auswirkungen erforderlich, falls der Software Engineer einen kostspieligen Fehler macht.
quelle
Antworten:
Aufgrund der verfügbaren Informationen glaube ich, dass Software Engineering bereits ein formaler Beruf ist. Es ist als solches möglicherweise nicht allgemein anerkannt, erfüllt jedoch die allgemein anerkannten Kriterien für die Merkmale eines Berufs.
Aus dem Wikipedia-Artikel über Beruf :
Dies zitiert Magali Sarfatti Larsons The Rise of Professionalism: Eine soziologische Analyse ausführlich. Die Suche nach "Merkmalen eines Berufs" führt tendenziell zu ähnlichen Ergebnissen.
Wie kann sich Software Engineering gegen diese Eigenschaften behaupten?
Berufsverband Es gibt zahlreiche Berufsverbände für Softwareentwickler. Das IEEE und insbesondere die IEEE Computer Society dienen Fachleuten auf der ganzen Welt, wobei sich die IEEE Computer Society speziell auf Computer- und Softwareingenieure konzentriert. Das ACM ist eine weitere Berufsorganisation für Computerfachleute, in der Regel in Amerika. Es gibt auch die British Computer Society , die sich mit verschiedenen Aspekten von Berufen in der Informations- und Kommunikationstechnologie befasst, im Allgemeinen in Großbritannien.
Kognitive Basis Der Wissensbestand im Bereich Software Engineering wird von IEEE, Boeing, dem National Research Council Canada, Raytheon, Construx Software, dem Canadian Council of Professional Engineers, der MITRE Corporation, NIST, Rational, SAP (für die Version 2004) gesponsert. Es wurde speziell als ein Schritt ins Leben gerufen, um "Software-Engineering zu einer legitimen Ingenieurdisziplin und einem anerkannten Beruf zu machen" .
Institutionalisierte Ausbildung In den USA können Programme für Informationstechnologie, Informatik und Softwareentwicklung von ABET akkreditiert werden . In Kanada sind Programme für Informatik und Softwaretechnik von CIPS akkreditiert . Diese Organisationen definieren Mindeststandards und erwartete Ergebnisse für Studenten, die ein akkreditiertes Programm absolvieren, damit sie in einem professionellen Umfeld arbeiten können. Das IEEE bietet auch zwei Prüfungen an, die auf dem Wissensbestand der Softwareentwicklung basieren - die Certified Software Development Associate- Prüfung für Studenten (oder kürzlich abgeschlossene Studenten) und die Certified Software Development Professional- Prüfung für Berufseinsteiger.
Lizenzierung Ab April 2013 bietet NCEES eine Professional Engineering-Prüfung in Software Engineering an . Es wird in den USA von Bundesstaat zu Bundesstaat angeboten. Die PE-Prüfung für Software Engineering wird derzeit jedoch nicht von jedem Staat angeboten, und noch weniger erfordern die Lizenz. Dieser Artikel wurde in der November / Dezember 1999-Ausgabe von IEEE Software veröffentlicht, erörtert die Lizenzanforderungen im Bundesstaat Texas und eine kurze Diskussion der Lizenzierung in Ontario und British Columbia, Kanada und Großbritannien. In Texas ist eine Lizenz nur erforderlich, um am Entwurf, Testen oder Implementieren von eingebetteten oder Echtzeitsystemen zu arbeiten, die "ein detailliertes Verständnis der konstruierten elektrischen oder mechanischen Komponenten erfordern", und für Softwaresysteme für "mechanische Geräte, elektrische Geräte" und Stromversorgungssysteme "- ein relativ geringer Aufwand an Softwareentwicklung. In Staaten, die Lizenzen anbieten, ist das schlimmste Szenario Disziplinarmaßnahmen, Sanktionen oder der Verlust Ihrer Lizenz, falls ein Kunde oder Arbeitgeber eine Beschwerde einreicht. Der einzige wirkliche Schaden entsteht jedoch in Staaten, in denen eine Lizenz erforderlich ist. Wenn die Lizenz nicht für die Ausführung der Arbeit erforderlich ist, bedeutet der Verlust nichts.
Ethikkodex Die ACM und die IEEE Computer Society haben einen Ethikkodex für Softwareentwicklung und berufliche Praxis erstellt . In den USA können Absolventen von ABET-akkreditierten Ingenieurprogrammen, einschließlich Software-Engineering-Programmen, auch dem Order of the Engineer beitreten , der einen Ethikkodex einhält, der im Allgemeinen für professionelle Ingenieure gilt.
Arbeitsautonomie, Kontrolle der Kollegen, hohe Standards für professionelle und intellektuelle Exzellenz Diese sind häufig in einer Umgebung sichtbar, in der Software-Engineering als technische Disziplin behandelt wird. Das heißt, nicht alle Arbeitgeber (oder Freiberufler) behandeln Softwareentwicklung als Engineering.
quelle
Eine weithin etablierte und anerkannte Berufsorganisation für Softwareentwickler / Ingenieure / Architekten / usw. wäre keine gute Sache.
Derzeit ist dies eines der wenigen Gebiete, die als Meritokratie fungieren können. Es ist mir egal, welchen Abschluss Sie haben (oder ob Sie überhaupt einen haben), wie viel Dienstalter Sie haben, welche Sprachen Sie kennen usw. Es ist relativ einfach herauszufinden, ob Sie ein guter Entwickler sind oder nicht und am Ende des Tages ist das das einzige, was zählt. dh können Sie Dinge erledigen?
Derzeit werden Sie an Ihren Fähigkeiten gemessen, nicht an einer Akkreditierung, die Ihnen jemand verliehen hat. Und das ist eine faire, gute Sache (tm).
quelle
Nichts muss sich ändern.
Wie Thomas betonte, ist Software Engineering bereits ein Beruf. Es kann als Engineering, Programmieren, Hacken und / oder Basteln bezeichnet werden, aber es ist ein Beruf und viele Leute verdienen Geld damit.
Ich denke, Ihre Frage betrifft die Lizenzierung.
Derzeit gibt es keine formelle Lizenzierung für Software-Engineering. Jeder, der über ausreichende Kenntnisse und Programmierkenntnisse verfügt, kann für die Erstellung von Code eingestellt und bezahlt werden, der auf einem Computer oder einer Maschine ausgeführt wird.
Dies ist anders als in anderen Branchen (Recht und Medizin sind Beispiele, wie in der Frage angeführt). Für diese Berufe ist eine Lizenz erforderlich. Jeder kann ein Auto fahren, aber um eines legal zu fahren, muss man einen Dirvers-Führerschein haben. Dies ist ein weiteres Beispiel. Jeder kann programmieren, es sind keine Lizenzen oder Zertifizierungen erforderlich.
Jetzt glaube ich, dass die Lizenzierung insofern gut ist, als sie beweist, dass jemand die Fähigkeit hat, etwas zu tun (wie ein Auto zu fahren) und die Vor- und Nachteile der Regeln (der Straße) kennt.
Für das Software-Engineering könnte eine ähnliche Lizenz erforderlich sein, aber ich denke nicht, dass dies viel Gutes bewirken würde. Tatsächlich gibt es viele lizenzierte Treiber, die schreckliche Treiber sind. Nur weil Sie eine Lizenz haben, bedeutet dies nicht, dass Sie ein guter Treiber oder Programmierer sind.
Eine Lizenz schafft eine Eintrittsbarriere, was in dieser Branche nicht gut wäre, daher sehe ich keinen wahrgenommenen Nutzen einer solchen Lizenzierung.
Unternehmen, die Software-Ingenieure einstellen, sollten die Fähigkeiten dieses potenziellen Programmierers auf jeden Fall mit einem "Programmiertest" (und ich spreche nicht über den Typ "Fizz Buzz") testen, der auf den erforderlichen Fähigkeiten basiert. Programmierer mit "Zertifizierungen" sehen auf dem Papier gut aus, aber sie sollten wirklich mit einem realen Test auf die Probe gestellt werden, um Erfahrung und Eignung zu messen.
quelle
Ich denke, es sollte möglich sein, zertifizierter Softwareentwickler zu werden, indem man eine Prüfung so besteht, wie ein Anwalt eine Anwaltsprüfung besteht. Ich denke auch, dass nicht zertifizierte Programmierer weiterhin als Programmierer arbeiten können sollten. Der Unterschied besteht darin, dass Arbeitgeber in der Lage wären, speziell für zertifizierte Programmierer zu werben, wenn sie dies wünschen, und ein zertifizierter Programmierer würde bestimmte Garantien für die Rechenschaftspflicht sowie einen höheren Preis haben.
Ich stimme dem Poster zu, das besagt, dass Softwareentwicklung ein fehlerhaftes Durcheinander ohne Verantwortlichkeit ist. Ich denke nicht, dass es so sein muss. Es gibt Entwickler, die gute Software entwickeln wollen und bereit sind, dafür verantwortlich zu sein. Wir brauchen nur einen Weg, uns zu unterscheiden.
Ich entwickle seit mehr als 20 Jahren Software. Ich behaupte nicht, dass ich dadurch ein großartiger Entwickler bin, aber ich denke, ich bin ein ziemlich guter Entwickler. Das Problem ist, dass ich ständig zeigen muss, warum ich ein besserer Entwickler bin als jedes Kind, das in seiner Freizeit Programmieren gelernt hat und den gleichen Job wie ich haben möchte. Ganz zu schweigen von den Legionen von "Offshore" -Entwicklern, die versprechen, für einen Bruchteil des Geldes den gleichen Job zu machen. Im Moment ist dies sehr aufwändig. Ich muss Arbeitsproben, Referenzen, Tests, Interviews machen. Ich könnte leicht einen schlechten Tag haben, einen Fehler bei einem Test machen und disqualifiziert werden. Ich möchte lieber nur sagen: "Ja, ich bin ein zertifizierter Entwickler und hier ist mein Zertifikat." Ich müsste noch Interviews machen, aber zumindest würde ich nur gegen andere zertifizierte Entwickler antreten.
quelle
Es wird niemals, zumindest nicht ganz. Software ist ein Medium wie Farbe. Es gibt Leute, die industrielle Malerarbeiten an großen Strukturen ausführen, es gibt Leute, die neue Farben entwerfen, um hohe Anforderungen zu erfüllen, aber es gibt auch Leute, die Farbe kaufen, um kleine Arbeiten wie das Malen ihres Schuppens auszuführen, und noch andere, die sich mischen könnten ihre eigene Farbe, aber nur damit Bilder von Katzen malen.
Auch wenn ich eine Zukunft sehen könnte, in der sicherheitskritische und / oder finanzielle Software akkreditierte Ingenieure benötigt, die daran arbeiten, wird es niemals einen Bedarf für Leute geben, die Kunst- oder Unterhaltungssoftware produzieren. Was muss geändert werden, um Sicherheits- oder Finanzsoftware zu erhalten, die für akkreditierte Ingenieure erforderlich ist? Ähnlich wie bei diesen anderen Berufen würde es ein Gesetz erfordern, um es zu beauftragen.
quelle
Software ist kein Beruf und wird es auch nie sein.
"Ein Beruf entsteht, wenn sich ein Gewerbe oder Beruf durch die Entwicklung formaler Qualifikationen auf der Grundlage von Ausbildung, Lehrlingsausbildung und Prüfungen, die Entstehung von Aufsichtsbehörden mit Befugnissen zur Aufnahme und Disziplinierung von Mitgliedern und ein gewisses Maß an Monopolrechten verändert."
Diese Beschreibung stimmt überhaupt nicht mit der Software überein.
Zunächst einmal kann jeder, der sich für Software interessiert, versuchen, einen Job für die Entwicklung von Software zu finden. Viele dieser Leute haben einen Hochschulabschluss, der nichts mit Computerprogrammierung zu tun hat, und viele haben überhaupt keinen Abschluss. Nichts hindert eine dieser Gruppen daran, Softwareprogrammierer zu werden.
Software kann kein Beruf werden, da "lizenzierte" Mitglieder für von ihnen verursachte Schäden und deren Fehlverhalten verantwortlich sind. 80-90% der Entwickler werden allein innerhalb weniger Jahre ihren Job verlieren.
Im Allgemeinen ist die Softwarequalität grausam, fehleranfällig und einfach nicht sehr gut gemacht. Ist das einen Beruf wert? Sehen Sie das Stoppen voraus, weil die Leute lizenziert werden? Wenn eine professionelle Organisation nicht für hohe Standards und professionelle Qualität steht, hat das keinen Sinn. Das widerspricht direkt der Industriepraxis. Das Schreiben von qualitativ hochwertiger, robuster und funktionierender Software verstößt gegen die Prinzipien der meisten Unternehmen, da Time-to-Market, Kosten, gut genug sind, um nichts anderes zu beschädigen. Der Versuch, defekte Software zu reparieren, wird als mehr angesehen wichtig als professionelle Software.
Auch in Bezug auf Fehlverhalten. Wie wollen Sie beweisen, dass ein Entwickler gegen einen anderen schuld ist? In der Software ist es viel zu einfach, mit den Fingern zu zeigen, und beide Entwickler "haben Recht". Wer ist schuld, wenn dieser Entwickler die undokumentierte API verwendet, die im Darm des Betriebssystems versteckt ist, und der Betriebssystemhersteller dann seine Funktion ändert oder sie entfernt?
Viel Glück mit dieser Sache der Regulierungsbehörde. Lassen Sie uns sehen, wie der Kongress Microsoft ablehnt, wenn Microsoft sie auffordert, diese Rechnung zu töten, da sie nur "lizenzierte" Entwickler einstellen können. Ohne diese Regulierungsbehörde, wer wird dann einer Organisation beitreten, die das Recht hat, Sie zu disziplinieren und Ihnen Gebühren in Rechnung zu stellen, insbesondere wenn es keinen Mehrwert gibt, wie Monopolrechte ohne die Regulierungsbehörde zu erhalten?
Wäre es eine gute Sache, eine Lizenz zu verlangen? Absolut für diejenigen, die akkreditiert werden können. Ihr Gehalt würde mit Ihrem neu gefundenen Monopol dramatisch steigen.
Für alle anderen ... würde der Einsatz von Computertechnologie in Unternehmen wahrscheinlich zusammen mit dem schnellen Fortschritt, den wir heutzutage sehen, abnehmen. Es wird sicherlich Hindernisse für neue Software-Fortschritte geben, wie z. B. Sprachen und Entwurfsmethoden. Denn wer wird auf neue Wege drängen wollen, Dinge zu tun, die jahrelange Umschulungen erfordern, um Ihre Lizenz aufrechtzuerhalten? Die meisten lizenzierten Entwickler werden es vorziehen, die Dinge so zu halten, wie sie in dieser Hinsicht sind.
quelle