Was sind die Hauptunterschiede zwischen Softwareentwicklern und Programmierern? [geschlossen]

103

Was sind die Hauptunterschiede zwischen Softwareentwicklern und Programmierern?

grokus
quelle
1
Joel hat diese Frage bereits gestellt. Diese Frage ist nicht einfach zu beantworten und ich bin mir nicht sicher, ob es eine klare Antwort gibt. Aber ich weiß, dass Joel diese Frage bereits gestellt hat.
Denaem

Antworten:

80

Bei der Einstellung suchen wir nach einer Unterscheidung zwischen jemandem, der uns helfen kann, unser System zu entwerfen, Prozesse zu definieren, technische Spezifikationen zu erstellen, fortgeschrittenes Refactoring zu implementieren usw. und jemandem, der uns dabei hilft, Programmieraufgaben von einer Checkliste abzuschließen . Ich glaube, Sie könnten den ersteren als Software-Ingenieur und den letzteren als Programmierer bezeichnen .

Nicole
quelle
10
Können Sie bitte klarstellen, ob Sie beide (für verschiedene Jobs) oder nur die Softwareingenieure einstellen?
Jaap
2
Sie könnten den ehemaligen einen Software-Ingenieur nennen, aber ich würde nicht. Wie Brendan sich entzogen hat, ist dies in der Regel die Aufgabe eines Softwarearchitekten.
5.
131

Es liegt wirklich an der Firma, da ich nicht denke, dass es einen rechtlichen Rahmen gibt, um eine Konfession oder eine andere durchzusetzen, oder zumindest nicht, dass mir dies bewusst ist und dies von Land zu Land variieren kann (zum Beispiel die Verwendung des Begriffs) "Ingenieur" ist in Frankreich eigentlich ziemlich reguliert, aber es gibt Varianten, die für "missbräuchliche" Fälle zugelassen sind.

Davon abgesehen sieht der allgemeine Trend so aus:

  • Eine Programmiererposition ist normalerweise die eines Fachmanns, der damit beauftragt ist, den Code eines Computerprogramms zu erstellen . Dies setzt voraus, dass Sie wissen, wie man Code schreibt , einen Algorithmus versteht und Spezifikationen befolgt . Normalerweise hört es dort jedoch in Bezug auf Verantwortung auf.

  • Eine Entwicklerposition wird normalerweise als Supertyp der Programmiererposition angesehen . Es umfasst die gleichen Verantwortlichkeiten sowie die Fähigkeit, eine Softwarekomponente zu entwerfen und zu entwerfen und die technische Dokumentation (einschließlich Spezifikationen) dafür zu verfassen . Sie sind in der Lage - zumindest technisch - andere (also Programmierer) zu führen, aber nicht unbedingt ein Team (da kommt die Unordnung ...)

  • Eine Ingenieurposition impliziert normalerweise, dass Sie ein Entwickler sind, der über einen bestimmten Grad verfügt , über gewisse Ingenieurkenntnisse verfügt und in der Lage ist, ein System zu entwerfen (wie in: einer Kombination von Softwarekomponenten / -modulen, die zusammen eine gesamte Softwareeinheit bilden). . Grundsätzlich sehen Sie ein breiteres Bild und sind in der Lage, es zu entwerfen, zu erklären und in kleinere Module aufzuteilen .

Doch all dies ist fraglich , und wie ich schon sagte, gibt es keine gesetzliche Verpflichtung , die ich bin mir bewusst, in US / UK Ländern . Allerdings kann man sich in Frankreich nur dann als "Ingenieur" bezeichnen, wenn man von einer Ingenieurschule stammt (anerkannt von der Commission des Titres d'Ingenieurs oder ähnlichem). Sie können nicht sagen, dass Sie einen "Ingenieur-Abschluss" haben, aber Sie können sagen, dass Sie einen "Abschluss in Ingenieurwissenschaften" haben, wenn Sie eine Disziplin studiert haben, die unter das Fach "Ingenieurwissenschaften und Technologien" fällt.

Es könnte sein, dass einige Länder eine ähnliche Unterscheidung haben, ich weiß es einfach nicht genau.

Zurück zum Titel des Software-Ingenieurs ... Einmal sagte einer meiner Lehrer zu Recht zu unserer Klasse, dass es ab heute kein sogenanntes "Software-Engineering" gibt . Denn etwas zu konstruieren (sei es ein Gebäude, ein Fahrzeug, ein Teil der Hardware ...) bedeutet, dass Sie in der Lage sind, sich das Design und alle Phasen seiner Produktion vorzustellen und genau vorherzusagen, welche Ressourcen Sie benötigen und damit auch die Kosten der Produktion.

Dies gilt für die meisten "echten" Ingenieurdisziplinen. Es gibt natürlich Schwankungen (die Preise der Materialien werden sich zum Beispiel im Laufe der Zeit ändern), aber es gibt sehr endliche theoretische Modelle (für Design und Planung) und empirische Modelle (um so gut wie jedes der ersteren innerhalb der zugänglichen Grenzen zu halten). Auf diese Weise können Sie das Beendigungsdatum eines Projekts und seine Ressourcennutzung vorhersagen.

Das Hauptproblem mit Software ist, dass es noch nicht da ist. Wir wollen Software-Engineering anstreben, sind aber noch nicht so weit. Weil wir ein sehr fließendes und dynamisches Umfeld haben, sehr unterschiedliche Einschränkungen für Projekte haben und unsere Prozesse im Nachhinein noch nicht ausgereift sind. Sicher, wir könnten sagen, dass wir besser darin werden (mit Hard-Data ist das allerdings höchst umstritten), aber wir sind erst seit den 60er Jahren dabei (frühere Projekte befanden sich ironischerweise eher in der Nähe von reinen Hardware-Computern, also eher in der Nähe des echten Engineerings) ). Während wir seit mehr als einem Jahrhundert Kraftfahrzeuge bauen, Fahrzeuge im Allgemeinen seit ein paar Jahrtausenden und noch mehr Jahrtausenden (und in einigen Teilen der Welt wirklich verdammt gut darin sind, haben Sie das Gefühl, wir zu sein '

Wir können Termine nicht systematisch vorhersagen , wir können Kosten nicht systematisch vorhersagen , wir können inhärente und externe Risiken nicht effizient und deterministisch identifizieren und mindern . Das Beste, was wir tun können, ist, genügend Schätzungen zu erstellen und etwas Puffer zu platzieren, während wir uns bemühen, die Prozesse zu optimieren, um die Zyklen und den Overhead zu reduzieren.

Aber vielleicht ist das Engineering. Wenn jemand von einem "Software-Ingenieur" spricht, sollte er darüber nachdenken und danach streben.

Das scheint also kaum mit dem einfachen Vorgang des Programmierens oder dem fortgeschritteneren Vorgang des Entwickelns von Anwendungen austauschbar zu sein.

Trotzdem ist alles eine Frage der Trends. In letzter Zeit ist es ziemlich üblich, ein horizontales Entwicklerteam zu haben, in dem jeder im Team ein Senior Software Developer ist (ja, Großbuchstaben, weil wir uns dadurch besonders fühlen, nicht wahr?), Ohne echte Altersunterschiede (fair genug, in meinen Augen) Meinung) und nicht so sehr die Unterscheidung von Fähigkeiten (ähm ...) und Verantwortlichkeiten (jetzt kann das nicht gut sein, abgesehen von PR-Buzz).

Es ist auch manchmal nur eine Gewohnheit und spezifisch für die Kultur und den Jargon einer Branche. Weitere Stellen für die Produktion eingebetteter Software nutzen Titel für Softwareentwickler. Meistens, weil es wahrscheinlich bedeuten würde, dass Sie sich auch in diesem Bereich immer bis zu einem gewissen Grad mit der Hardware befassen müssen, sodass Sie sich offensichtlich mit anderen Aspekten der Produktion und des gesamten von Ihnen produzierten "Systems" befassen. Nicht nur die Teile, die verrückt werden. Auf der anderen Seite des Spektrums sieht man den Begriff Ingenieur nicht wirklich in Positionen der Finanzsoftwareproduktion. Dies liegt entweder daran, dass sich diese Branche von einem ihrer Vorgänger imitiert hat (zum Beispiel, dass Embedded Engineering seine Wurzeln im Automobilbau hat), oder daran, dass sie einer Position mehr oder weniger Kredit / Gewicht verleihen möchten.

Und um sicher zu gehen, dass Sie alle im Nebel verlieren, finden Sie andere Titel, die beides mischen (wie "Software Development Engineer" oder "Software Engineer in Test"!), Und andere, die noch verrücktere Brücken mit anderen Domänen betonen ( denken Sie an "Software Architect" und wie "Software Architecture" ein schamloser Diebstahl von Vokabeln sein könnte). Und halten Sie sie auf dem Laufenden: Release Engineer, Change Development Manager, Build Engineer (das geht auch ffaaarrrrrr da draußen). Und manchmal einfach "Ingenieur".

Hoffe, das hat geholfen, obwohl es nicht wirklich eine Antwort ist.

Oh, und das bedeutet, dass Ihre neue Firma entweder versucht, Sie mit einem neuen Titel anzulocken, oder dass sie sich nicht wirklich für Titel interessieren, oder dass Sie wirklich eine höhere Position einnehmen werden. Die einzige Möglichkeit, dies zu wissen, besteht darin, Ihre Jobspezifikation zu lesen, mit ihnen zu sprechen und sie schließlich selbst zu testen und zu beurteilen. Ich hoffe, dass es die letztere Option ist und dass Sie damit zufrieden sind (und möglicherweise mehr Geld dafür verdienen). ;)

Haylem
quelle
12
Das Buch "Der pragmatische Programmierer" besagt auch, dass Software nicht wie Engineering ist. Während Sie ein Haus oder einen Wolkenkratzer planen können, ist eine Analogie für Software-Engineering kaum anwendbar. Sie sagen: Software ist eher wie Gartenarbeit. Planen Sie den Garten, pflanzen Sie die Pflanzen. Dann sehen Sie, was wächst, entfernen Sie Unkraut und pflanzen Sie neue Pflanzen.
Falcon
6
"Einmal sagte mein Lehrer zu unserer Klasse, dass es heutzutage kein sogenanntes" Software-Engineering "gibt. Denn Engineering bedeutet, dass Sie in der Lage sind, sich das Design und alle Phasen der Produktion vorzustellen und genau vorherzusagen die Ressourcen, die Sie benötigen ". Das war in dem Moment, als es geschrieben wurde, wahrscheinlich nicht wahr. Wie bei der Architektur können wir die Kosten nicht vorhersagen, ohne die Anforderungen zu kennen (wie viel kostet ein Wolkenkratzer? Ich werde Ihnen nicht sagen, wie hoch er sein muss, bevor Sie mit dem Bau beginnen ...). Bei einer ausgereiften Softwareentwicklungsgruppe können wir die Kosten jedoch im Nachhinein vorhersagen.
MSalters
1
@MSalters: Sicher, Sie können dies umkehren: Wie bei architeture können wir keine Kosten ohne Anforderungen vorhersagen. Aber anders als bei der Architektur können wir die Kosten selbst bei genau definierten Anforderungen nicht vorhersagen. Sie können dies im normalen Engineering mit einer sehr genauen Genauigkeit tun, UND wir sind derzeit in der Lage, Kosten für außergewöhnliche Umstände besser zu ermitteln als in SE. Wir machen nur (ziemlich grobe) Schätzungen. Wir werden immer besser darin, sie zu machen, aber sie sind immer noch so ziemlich Vermutungen.
Haylem
3
@haylem: Das ist die Norm in der Softwareentwicklung. Aber wenn Sie bei einer CMM Level 4/5 Firma gearbeitet haben, werden Sie feststellen , dass sie können Kosten vorhersagen, und bringen oft 95% Konfidenzniveaus zu ihnen. Sie verstehen ihre Software-Basis gut genug und haben gute Voraussetzungen, dass Straßensperren selten sind. Und die Kosten für Straßensperren sind niedriger, wenn Sie die Erfahrung haben, mit ihnen umzugehen.
MSalters
1
@pcurry: beachte, dass ich nicht behaupte, dies sei "meine Taxonomie". Dies wird von Personalvermittlern und Gehaltsabrechnungen von Unternehmen nur recht häufig als solches angesehen, und es wird auch häufig in CS- oder IT-Kursen als solches angesehen. Sie neigen dazu, aufeinander zu schießen. Ich habe also die Ansicht aufgelistet, die von (sogenannten) Software-Ingenieuren mehr vertreten wird als von (selbst beschriebenen) Programmierern. Es spielt keine Rolle, wie du dich nennst, es ist eher das, was die Leute für dich halten, was zählt. Und es ist nur wichtig, wenn Sie sich für solche Dinge interessieren. Ehrlich gesagt, persönlich interessiert es mich nicht, der eine oder andere zu sein, es ändert mich nicht.
Haylem
81

Softwareentwickler sind Mitarbeiter von Unternehmen, die die Mitarbeiter, die für sie Software schreiben, als "Softwareentwickler" bezeichnen.

Programmierer sind Leute, die in Unternehmen arbeiten, die die Leute, die Software für sie schreiben, als "Programmierer" bezeichnen.

Es gibt auch Entwickler oder Softwareentwickler . Das sind Leute, die in Unternehmen arbeiten, die die Leute, die für sie Software schreiben, als "Entwickler" bzw. "Softwareentwickler" bezeichnen.

Jer
quelle
26
Ich sollte beachten, dass diese Antwort nicht wirklich lustig sein sollte.
Jer
15

Es gibt also den "Software Engineer", den "Programmer" und auch den "Developer", den "Coder" und den "SOA-Experten" kann man nie vergessen

Dies sind alles Marketingbegriffe für Personen, die in ihrem Lebenslauf keine aussagekräftigen Angaben machen können, wie zum Beispiel ihre tatsächliche Rolle (nicht nur die der Berufsbezeichnung) in früheren Positionen.

Bei Stellenanzeigen liegt der Unterschied bei der HR-Person.

Fazit: Jeder Mensch hat seine eigene Einstellung dazu, "was einen guten Mitarbeiter ausmacht, der mit Code funktioniert", und manche verbinden solche und solche Fähigkeiten gerne mit solchen und solchen Titeln.

Was musst du machen? Stellenanzeigen sollten die erforderlichen Fähigkeiten beschreiben, und in Lebensläufen sollten die Erfahrungsdetails des Bewerbers erläutert werden.

Ken Egozi
quelle
10

Keine unterschiede Sie sind das gleiche. Unternehmen haben jedoch möglicherweise formale Stellenbeschreibungen, in denen die Begriffe verwendet werden, und der Begriff kann dann eine unternehmensspezifische Bedeutung haben.

GroßmeisterB
quelle
8

Bei der Programmierung geht es um den Code. Bei der Softwareentwicklung geht es um das Endprodukt.

darreljnz
quelle
3

Das hängt wirklich davon ab, wie das Unternehmen die Positionen definiert. Es kann sein, dass Sie als Softwareentwickler mehr Entscheidungsmöglichkeiten für das Design haben, während Sie als Entwickler UML-Diagramme erhalten und das Programm schreiben.

Es gibt jedoch keine wirkliche Definition der Menge, sodass die Leute anhand des Titels wissen, was Sie tun oder wie erfahren Sie sind.

Als ich ein Architekt / Entwickler war, war mein Titel ein Informatiker, aber ich würde den Leuten nur sagen, dass ich ein Programmierer bin, da die ersten beiden nicht leicht zu definieren sind, aber die meisten Leute wissen, was ein Programmierer tut.

Wenn Ihnen ein Titel wichtig ist, akzeptieren Sie den neuen, da der Ingenieur höher klingt als ein Entwickler.

James Black
quelle
3

Ich glaube nicht, dass es "offizielle Unterschiede" gibt, denn meine Erfahrung könnte bedeuten:

  • Einige Unternehmen verwenden Softwareingenieure und Softwareentwickler, um auf dasselbe zu verweisen. Sie benutzen einfach ihren Lieblingsbegriff.
  • Andere verwenden beide Begriffe für unterschiedliche innere Positionen, aber die Rollen variieren von Unternehmen zu Unternehmen! In einigen Fällen kann es sich lediglich um einen Unterschied in der Funktion handeln (ein Softwareentwickler kümmert sich um die Wartung und Verbesserung der Systeme, während ein Entwickler an dem Produkt des Unternehmens arbeitet) oder um einen hierarchischen Unterschied (der Ingenieur steht über dem Entwickler) oder sogar Der Ingenieur ist wirklich auf Fragen und Antworten angewiesen!

Auch sind auch Modebegriffe, die sich ändern ... Zuerst war der Begriff "Programmierer", dann "Softwareingenieur" und scheint nun "Entwickler" zu sein ...

Es ist besser, die Stellenbeschreibung zu lesen oder jemandem aus dem jeweiligen Unternehmen Bescheid zu geben

Khelben
quelle
3

In einigen Ländern ist "Ingenieur" mit der Anforderung verbunden, ein professioneller Ingenieur zu sein, der einen P. Eng. Desigation unter den Referenzen. In anderen Bereichen mag es jedoch keinen Unterschied geben, da ich vor einigen Jahren als "Softwere Design Engineer" im US-Bundesstaat Washington gearbeitet habe.

JB King
quelle
2

Softwareingenieure neigen dazu, an sehr großen Systemen zu arbeiten, die viele Mannjahre benötigen, um beispielsweise 5 bis 16 Jahre zu entwickeln. Programmierer neigen dazu, dieses Stereotyp von nur Codierung und sonst nichts zu haben. Aber es hängt wirklich von der Organisation ab, in der Sie arbeiten, und davon, wie HR die oben erläuterte Rolle vermarktet. Sie sind im Wesentlichen dasselbe. Lass dich einfach nicht zu sehr an einen Titel binden, denn das ist auch so.


quelle