Was sind die Hauptunterschiede zwischen Softwareentwicklern und Programmierern?
Was sind die Hauptunterschiede zwischen Softwareentwicklern und Programmierern?
Antworten:
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 .
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). ;)
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.
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.
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.
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.
Ich glaube nicht, dass es "offizielle Unterschiede" gibt, denn meine Erfahrung könnte bedeuten:
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
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.
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.