Wie Entwickler genannt werden
In meinem Blog verwende ich die Begriffe "Programmierer", "Codierer", "Entwickler" und "Ingenieur" synonym, um Tautologie zu vermeiden. Trotzdem glaube ich, dass es einige Unterschiede zwischen diesen und ähnlichen Wörtern gibt.
In diesem Artikel werden wir eine Reihe typischer Substantive zur Bezeichnung einer Person diskutieren, die Code schreibt. Ich werde meine Interpretation geben, wie sich diese Begriffe auf den Grad der Meisterschaft beziehen.
Interpretation von Werten
Die hier vorgestellten Definitionen sind nicht offiziell. Ich kenne keine formalen Definitionen oder akzeptierten Standards. Viele Menschen haben jedoch eine starke Meinung zu diesem Thema. Mein Verständnis jedes Begriffs basiert auf 30 Jahren Erfahrung in der Softwareindustrie, aber ich bin absolut darauf vorbereitet, dass andere meiner Interpretation nicht zustimmen.
Ich möchte nicht mit einer anderen Meinung streiten oder überzeugen. Im Allgemeinen ist es kaum möglich, von einer richtigen oder falschen Meinung zu sprechen. Wenn Sie sich zu diesem Thema noch nicht geäußert haben, hoffe ich, dass dieser Leitfaden Klarheit schafft.
Dreigliedriger Ansatz
Aus Gründen der Klarheit erhält jeder Begriff drei Merkmale:
1. Meisterschaftsstufe
Eine Beschreibung des Fähigkeitsniveaus für diesen Begriff in meiner Interpretation.
2. Parallel zu den Reihen der Kampfkünste
Eine Analogie zu den Reihen der Kampfkünste. Insbesondere vergleichen wir das technische Niveau der Fähigkeiten mit den Farben der Gürtel von Kampfkünstlern.
3. Beispielcode
Ein Beispiel dafür, wie sich eine Person dieser Stufe einer einfachen Programmieraufgabe nähern sollte. Die Definition hier ist trivial und war nicht als realistisches Beispiel gedacht. Ziel ist es, die Fähigkeiten zu vergleichen und zu diskutieren. Der Einfachheit halber wird das Beispiel so ausgewählt, dass es einem Spezialisten jeder Stufe entspricht. Hier ist das Problem, das wir betrachten werden:
Berechnen Sie die Summe der ganzen Zahlen
Bitte spielen Sie mit und präsentieren Sie diese Aufgabe als Zwischenstufe für viel schwieriger. In unserem fiktiven Universum erfordert eine Aufgabe ernsthafte Überlegungen und hat viele mögliche Lösungen und Ansätze. Stellen Sie sich vor, dies ist das zentrale Modul des Systems, das Sie skalieren möchten.
Ich werde Ruby für triviale Implementierungsbeispiele verwenden. Der Code ist recht einfach: Er ist verständlich, auch wenn Sie Ruby nicht kennen.
3. Liste
Besprochene Substantive:
- Neuling
- Codierer
- (Hacker)
- Programmierer
- Forscher (Informatiker)
- Softwareentwickler
- Softwareentwickler
- Software-Architekt
Also fangen wir an.
Kampfkunstgürtel

Als ich in meiner Jugend - vor ungefähr 20 Kilogramm - in Italien lebte, praktizierte ich mehrere Jahre Judo und Kung Fu. Dann habe ich gelernt, dass in vielen Kampfkünsten das Können der Farbe des Gürtels entspricht. Normalerweise ändert sich die Farbe von Weiß zu Schwarz, wobei der Erfahrungsgrad der Dunkelheit des Gürtels entspricht.
Ein Anfänger trägt einen weißen Gürtel, weil er keine Erfahrung hat. Weiße Farbe bedeutet "neu und sauber". Während Sie trainieren, wird der Gürtel dunkler und zeigt Fortschritte an. Farbe steht für Schmutz, der sich bei harter Arbeit und Schweiß angesammelt hat. Ein Kampfkünstler mit langjähriger Erfahrung erreicht letztendlich den schwarzen Gürtel, was ein hohes Maß an Wissen und Fähigkeiten bedeutet.
Traditionell waren die Gürtel nur schwarz oder weiß. In den letzten Jahrzehnten sind mehr Blumen erschienen. Heute verwenden verschiedene Kampfsportschulen unterschiedliche Farben. Das Schema hängt vom Stil, der Schule und dem Land ab.
Warum reden wir über Kampfkunst?
Gürtelfarben werden verwendet, um eine Parallele zwischen Software- und Kampfkunstfähigkeiten zu ziehen. Verwenden Sie dazu das in Europa übliche Farbschema: Weiß, Gelb, Orange, Grün, Blau, Braun und Schwarz.
Die folgende Tabelle zeigt die Entwicklerebenen, über die ich gesprochen habe. Für jeden werden die Farbe des Gürtels und die Position angezeigt, die normalerweise einem Spezialisten auf dieser Ebene gegeben wird:
Professionelles Niveau | Martial Arts Level (Gürtelfarbe) | Beispiel posten |
---|
Neuling | Weiß | |
Hacker | Straßenkämpfer (kein Gürtel) | |
Codierer | Gelb | Junior Entwickler (Jr.Dev) |
Programmierer | Orange | Softwareentwickler |
Forscher (Informatiker) | Grün | Softwareentwickler |
Softwareentwickler | Blau | Leitender Softwareentwickler (Sr. Software Dev) |
Software-Ingenieur | Braun | Leitender Entwickler (Principal Dev) |
Software-Architekt | Schwarz | Software-Architekt |
Das Niveau der technischen Fähigkeiten hängt mit den technischen Fähigkeiten und den Fähigkeiten der Teamarbeit zusammen. Der Titel des Beitrags ist ein Beispiel dafür, wie eine Person auf dieser Ebene in der Branche genannt wird (dies hängt stark vom Unternehmen und der Region ab).
Anfänger: Weißer Gürtel

Sie müssen irgendwo anfangen, und normalerweise ist dies die Stufe „überhaupt keine Erfahrung“. Ein Neuling in der Softwareentwicklung ist jemand, der sich gerade mit dem Programmieren vertraut gemacht hat und sich in einem frühen Stadium der Ausbildung befindet. Anfänger können immer noch nicht sicher programmieren und einfache Programme nicht verstehen, ohne Bücher, Lehrbücher zu überprüfen oder einen erfahrenen Freund um Rat zu fragen.
Anfänger können Arbeitscode schreiben, verstehen jedoch häufig nicht, warum dieser Code funktioniert. Sie verbringen viel Zeit damit, auf StackOverflow oder ähnlichen Sites nach Codefragmenten zu suchen und diese Fragmente zu kombinieren, bis etwas funktioniert.
Leistungsstarke Werkzeuge sind nicht nur zuverlässige Fähigkeiten.
Um die Dinge noch verwirrender zu machen, ermöglichen viele „moderne“ Sprachen und Frameworks jedem, Strukturen und einige Implementierungen komplexer Programme zu generieren, ohne zu verstehen, was sich hinter den Kulissen abspielt. Das Starten einer einfachen Ruby on Rails-Anwendung und das Akzeptieren von HTTP-Anforderungen kann beispielsweise mithilfe mehrerer Befehle über die Befehlszeile arrangiert werden.
So geht's unter * nix:
$ gem install rails
…
$ rails new website
…
$ cd website
$ bin/rails server
...
Fertig! Dies reicht aus, damit der Server auf HTTP-Anforderungen des Browsers antworten kann. Wenn Sie mit Kampfkünsten vergleichen, dann ist dies, wie man auf der Tatami in Rüstung und mit Waffen erscheint. Mit Rüstung kannst du etwas länger leben und mit einer Waffe kannst du den Kampf gewinnen. Aber ein solcher Sieg macht Sie nicht zu einem qualifizierten Kampfkünstler. Mit diesen Tools können Sie einfach etwas Komplexes ohne traditionelles Training und Aufwand erledigen.
Versteh mich nicht falsch. Mit Tools wie Ruby on Rails können Sie Dinge schnell erledigen, und sie sind großartig. Tatsächlich finde ich es fantastisch, die Zeit zu reduzieren, die zum Schreiben des anfänglichen Standardcodes benötigt wird. Dies ist ein guter Start für das Projekt, aber nur ein weißer Gürtel reicht aus.
Der eigentliche Kampf beginnt dort, wo das Tutorial endet und die Tools die benötigte Anwendung nicht automatisch generieren können. Um weiterzumachen, müssen Sie ein Programmierer werden.
Beispiel
Wenn ein Anfänger mit Ruby ein Programm schreiben möchte, das eine Reihe von Zahlen zusammenfasst, kann er die Frage googeln und eine
solche Seite finden . Dies ist das erste Ergebnis von Google zum Zeitpunkt dieses Schreibens. Auf der StackOverflow-Seite die produktivste Antwort mit 524 Stimmen:
array.inject(0){|sum,x| sum + x }
Natürlich funktioniert es. Hier ist ein Beispiel:
$ irb 2.4.2 :001 > array=[1,2,3] => [1, 2, 3] 2.4.2 :002 > array.inject (0){|sum, x| sum + x } => 6
Dies mag für Anfänger funktionieren, aber er versteht die Funktionen dieses Codes nicht. Wie lesbar ist es? Wie schnell ist es im Vergleich zu anderen Optionen? Ist es leicht zu warten? Warum funktioniert es? Was genau passiert, wenn diese Zeile ausgeführt wird? Wie viel CPU-Zeit wird verwendet? Sind die Variablen
sum und
x definiert, nachdem diese Zeile ausgeführt wurde?
Der unerfahrene Ruby-Entwickler kennt die Antworten auf die meisten dieser Fragen nicht.
Encoder: Gelber Gürtel

Ein Encoder kann ohne fremde Hilfe viele Zeilen Computercode sammeln, um einfache Probleme zu lösen. Das Ergebnis wird nicht sehr schön sein, aber der Encoder versteht, warum das Programm funktioniert, und führt die Aufgabe erfolgreich aus.
Erster notwendiger Schritt
Ich habe meinen Blog CoderHood genannt, weil jeder, der irgendwann vom Programmieren lebt, das Niveau des Codierers erreicht hat. Das Wort Coderhood spiegelt das Leben eines Entwicklers in der Technologiewelt wider, beginnend mit dem ersten gelben Gürtel.
Der Hauptunterschied zwischen einem Anfänger und einem Encoder besteht darin, dass der Encoder Code schreiben und verstehen kann. Sie verstehen vielleicht nicht im Detail, was sich hinter den Kulissen abspielt, aber er weiß, warum er genau diesen Code geschrieben hat.
In der Branche wird einem Encoder normalerweise eine Position zugewiesen, z. B. ein "Junior Developer" (jr. Developer) oder ein Praktikant (Developer in Training).
Beispiel
Ich denke, dass der „Ruby-Encoder“ die meisten der folgenden Methoden zur Berechnung der Summe eines Arrays von ganzen Zahlen entwickeln und den Unterschied zwischen ihnen verstehen kann:
$ irb 2.4.2 :001 > array=[1,2,3] => [1,2,3] 2.4.2 :002 > array.inject (0){|sum, x| sum + x } => 6 2.4.2 :003 > sum=0;array.each { |x| sum+= x } => 6 2.4.2 :004 > array. sum => 6 2.4.2 :005 > array.inject(0, :+) => 6 2.4.2 :006 > array.reduce(0, :+) => 6 2.4.2 :007 > eval array.join '+' => 6
Wenn Sie interessiert sind, sind einige dieser Methoden schrecklich, aber sie funktionieren.
Hacker: Jeans ohne Gürtel

Ich habe einen "Hacker" auf die Liste gesetzt, weil ich danach gefragt wurde. Aber es ist nicht gut für unsere Diskussion geeignet.
Nicht die Hauptfähigkeit
Ich denke nicht, dass "Hacken" eine notwendige Fähigkeit bei der Entwicklung eines Softwareentwicklers ist. Diese Erfahrung ist nützlich, um zu lernen, wie man Softwareanwendungen und -systeme testet und schützt, aber ich sehe hier keine Beschreibung des allgemeinen „Kompetenzniveaus“. Ich würde dies als einen bestimmten Tätigkeitsbereich und nicht als ein Niveau technischer Fähigkeiten klassifizieren. In der Tat kann das Können eines Hackers beliebig sein. Einige von ihnen sind erstaunlich, andere
nicht .
Da das Hacken kein notwendiger Schritt bei der Entwicklung eines Entwicklers ist, hat ein Hacker meiner Analogie nach keinen traditionellen Gürtel. Sie sehen eher aus wie Straßenkämpfer, die Jeans tragen.
Einige von ihnen sind böse Schläger, andere versuchen zu überleben, andere sind gute Jungs, die den Rest beschützen, aber die meisten sind irgendwo dazwischen.
Viele Arten von "Hackern"
Es gibt viele Arten von Hackern. Einige können programmieren, andere nicht. Die Bedeutung des Wortes hängt vom Kontext ab und davon, wer es verwendet. Einige gebräuchliche Definitionen:
- Ein Computerexperte, der an einer Subkultur von Technologie und Programmierung festhält.
- Eine Person, die die Computersicherheit für böswillige (Black Hat) oder Forschungszwecke (White Hat) gefährden kann.
- Ein Entwickler, der die Arbeit am schnellsten und schmutzigsten erledigt.
- Eine Person, die Telekommunikationssysteme, -geräte und -systeme untersucht, experimentiert oder untersucht, die mit Telefonnetzen verbunden sind. Diese Hacker werden auch Phreaker genannt.
- Ein qualifizierter Ingenieur, der sehr nahe an der Hardware arbeitet, um eine bessere Kontrolle über das System zu erhalten, um gute Arbeit zu leisten (d. H. Um mehr Leistung aus dem Gerät herauszuholen) oder um böswillige Zwecke zu erfüllen (d. H. Sicherheitslücken zu nutzen und einen Weg um den Schutz des Operationssaals herum zu finden Systeme).
Einige Beispiele
Typ 3
Ein Hacker vom Typ 3 kann diese Option zum Summieren eines Arrays von Ganzzahlen auswählen:
$ irb
2.4.2: 001> 'echo "1 2 3" / bc'.to_i
=> 6
Die Methode funktioniert zumindest auf einigen Systemen, ist aber ... ein "vollständiger Hack". So auch ungelernte Hacker, die programmieren können. Sie lösen Probleme auf zweifelhafte Weise, indem sie normalerweise unlesbare Befehlszeilenbefehle ausführen, bis sie irgendwie das gewünschte Ergebnis erzielen.
Typ 5
Hacker vom Typ 5 arbeiten auf einem sehr niedrigen Niveau. Diese Fähigkeiten sind nicht einfach zu erwerben und können sehr wertvoll sein, wenn Sie versuchen, den Softwareschutz zu konfigurieren oder extrem leistungsstarke Anwendungen zu erstellen. Ich war noch nie ein "Hacker", aber ich habe auf einer niedrigen Ebene programmiert (C und Assembler) und im Herzen betrachte ich mich selbst als Spezialisten für Low-Level-Programmierung.
Typ-5-Hacker können fantastische Straßenkämpfer sein, mit verrückten Fähigkeiten, die vielen professionellen Programmierern bei einigen speziellen Aufgaben die Nase abwischen. Solche "Hacker" könnten mit einem solchen Assembler ein Array von ganzen Zahlen summieren.
Programmierer: orangefarbener Gürtel

Ein Programmierer kann funktionierende Anwendungen schreiben, versteht die grundlegenden Algorithmen und kennt die Grundlagen der Informatik. Es kann das Programm zum Laufen bringen, auch wenn es nicht sehr skalierbar ist und auf lange Sicht unterstützt wird. In der Regel arbeitet ein Programmierer gut alleine. Nicht die Tatsache, dass er ein guter Teamplayer sein wird.
Die meisten Entwickler hören auf dieser Ebene auf, insbesondere wenn sie nicht vorhaben, die Theorie der Informatik zu studieren. Programmierer können während ihrer gesamten Karriere anständigen Code schreiben und auf diesem Niveau in der Softwareindustrie arbeiten.
Aus beruflicher Sicht werden Programmierer häufig als „Softwareentwickler“ oder „Softwareingenieure“ bezeichnet.
In einem einfachen Beispiel für die Summe eines Arrays von Ganzzahlen kann ein Programmierer Code folgendermaßen schreiben:
Dieser Code implementiert einen nützlichen Befehlszeilenbefehl, um eine Liste von Zahlen zusammenzufassen. Wenn Sie es ohne Parameter aufrufen, wird eine nützliche Verwendungsmeldung angezeigt. Andernfalls wird die Standardausgabe gedruckt. Hier ist ein Anwendungsbeispiel:
$./sum
Usage:
sum [ , ]
$ sum 1 2 3
6
Dies ist eine "vollständige Lösung", selbstdokumentierend und etwas abstrakt, da das Programm über die Befehlszeile aufgerufen werden kann.
Forscher: Green Belt

Der Forscher (Informatiker) studierte Informatik entweder in der Schule oder bei der Arbeit. Er hat ein gutes Verständnis für solche Konzepte:
- Base Base-N (N = 2, 10, 16)
- Binäre Operationen
- Boolesche Logik
- Algorithmische Komplexität und Big-O-Notation
- Datenstrukturen (Arrays, verknüpfte Listen, B-Bäume, rot-schwarze Bäume, Warteschlangen, Stapel, Hash-Tabellen, Heaps, Sets, Diagramme)
- Sortieralgorithmen und wann sie verwendet werden sollen
- Grundlegendes Verständnis der NP-Vollständigkeit
- Grundlegende Multithread-Algorithmen
- Speicherverwaltung und Speicherbereinigung (nur weil Ihre Programmiersprache sich um die Speicherverwaltung selbst kümmert, bedeutet dies nicht, dass Sie dieses Thema überspringen können)
- Zeiger (Sie müssen zumindest das Konzept verstehen, auch wenn Sie nicht in C codieren) und der Unterschied zwischen der Übergabe von Parametern nach Wert oder Referenz.
- OOP-Konzepte (Schnittstellen, Vererbung, Konstruktoren, Destruktoren, Klassen, Objekte, Abstraktionen, Kapselung, Polymorphismus usw.)
- Objektorientiertes Design und Vorlagen
- Rekursion
- Einige grundlegende Konzepte zu dynamischer Programmierung, Gier- und Amortisationsanalyse, Stringvergleich und Approximationsalgorithmen
Der Forscher hat einen Abschluss in Informatik oder arbeitete viele Jahre als Entwickler und studierte angewandte Informatik bei der Arbeit. Wie Sie wissen,
denke ich nicht, dass ein CS-Abschluss für eine erfolgreiche Entwicklungskarriere notwendig ist .
Der bloße Status eines „Informatikers“ macht Sie nicht zu einem hervorragenden Programmierer. Hier scheint die Analogie zu den Farben der Gürtel gebrochen zu sein. Aber das ist nicht so. Denken Sie auf dieser Seite: Selbst in der Welt der Kampfkünste gibt es Spezialisierungen. Einige Grüngürtel machen einige Dinge besser als andere. Der Verlauf ist nichtlinear. Die Farbe des Gürtels repräsentiert oft das Niveau der Erfahrung und den Arbeitsaufwand, der für die Beherrschung der Kampfkunst aufgewendet wird, und nicht das erforderliche Maß an Geschicklichkeit in jeder Hinsicht.
Der Wissenschaftler wird wahrscheinlich den gleichen Code für die Summe der Zahlen schreiben wie der Programmierer. Der Unterschied besteht darin, dass der Wissenschaftler sofort sagen kann, dass die Komplexität dieses Algorithmus O (n) Zeit ist. Wie bereits erwähnt, ist dies ein elementares Beispiel, aber Sie haben den Gedanken verstanden.
Softwareentwickler: Blue Belt

Ein Softwareentwickler kann größere und komplexere Projekte bearbeiten. Im Vergleich zu einem Programmierer und Forscher:
- Schreibt saubereren, strukturierteren, gepflegten, dokumentierten und lesbaren Code.
- Ermöglicht weniger Fehler.
- Es funktioniert schneller.
- Er arbeitet besser als Team und versteht den Wert von Entwicklungsprozessen.
- Besseres Auffinden und Optimieren von Engpässen in Code- und Softwaresystemen.
- Hat mehr Erfahrung.
Beispiel
In einem einfachen Beispiel für eine Summe von Ganzzahlen kann ein Softwareentwickler das Problem lösen, indem er einen Dienst erstellt, der eine Web-API bereitstellt. Die Schnittstelle verwendet eine Reihe von Ganzzahlen und gibt die Summe zurück.
Ich glaube, dass die Anwendung gut dokumentiert ist und die Support-Einstellungen von Tests begleitet werden, die richtige Codestruktur haben und von anderen Entwicklern problemlos gewartet werden können.
Unter Ruby sieht die Hauptanwendung mit Sinatra möglicherweise folgendermaßen aus:
require 'sinatra' require "sinatra/config_file"
Ein guter Softwareentwickler ist sich der vielen Einschränkungen dieser Lösung im Vergleich zu anderen bewusst. Beispielsweise ist es auf die Summe einer Reihe von Zahlen beschränkt, die in eine URI passen. Es gibt keine explizite Fehlerprüfung. Zeilen müssen mit einer Zahl usw. beginnen.
Software-Ingenieur: Brown Belt

Der Unterschied zwischen einem Softwareentwickler und einem Softwareentwickler ist subtil. Ich gebe es voll und ganz zu. Diese Begriffe werden häufig synonym verwendet. Trotzdem gehe ich davon aus, dass der Softwareentwickler ein Spezialist mit Kenntnissen auf dem Gebiet der Informatik und umfassender Erfahrung als Softwareentwickler ist. Die Hauptunterschiede:
- Möglichkeit, skalierbarere Systeme zu erstellen.
- Langlebigkeit. Sie arbeiten länger und mit weniger Problemen.
- Weniger Fehler und bessere Codequalität.
- Fähigkeit, als technischer Projektmanager und Team zu agieren.
- Hervorragende Fähigkeiten in Bezug auf Zusammenarbeit und Kommunikation.
- Ausreichende Kenntnisse der Softwarearchitektur, um die Aufgabe zu erledigen.
In Unternehmen können solche Entwickler die Positionen eines „Senior Developers“ oder eines „Senior Developers“ innehaben.
Beispiel
Ein Softwareentwickler kann eine Anwendung als Entwickler schreiben, indem er einen Dienst erstellt und eine API für eine Reihe von Ganzzahlen bereitstellt. Ich glaube jedoch, dass die Entscheidung des Ingenieurs einige Verbesserungen beinhalten wird:
- Caching-Ergebnisse.
- Abstraktion des Konzepts von der Summe zu einem beliebigen mathematischen Ausdruck in der Abfrage.
- Protokollierung, Authentifizierung, Hook-Tracking usw.
Beispiel wird dumm
Wie Sie sehen können, wird ein zu einfaches Beispiel in dieser Phase ein wenig albern. Es kommt auf eine Diskussion an, wie eine bereits redundante Lösung für ein triviales Problem verbessert werden kann.
Beispielsweise ist das Verwalten eines Caches mit den Ergebnissen einfacher Operationen an einer kleinen Anzahl von Zahlen höchstwahrscheinlich schwieriger und langsamer als einfache Berechnungen. Ein Cache wäre sinnvoll, wenn eine große Anzahl von Zahlen an die API übergeben würde, aber dann würde die Liste nicht in den Anforderungs-URI passen.
Sie können die Liste der Nummern in den Anforderungshauptteil verschieben, dann ist dies jedoch nicht mehr die RESTFUL-API, und die Anforderung wird nicht mehr zwischengespeichert. Zu diesem Zeitpunkt wird es verlockend sein, die Anforderung in POST zu ändern, sie wird jedoch niemals zwischengespeichert. In jedem Fall kann die Diskussion weiter und weiter gehen.
Kritischer Teil
Sehen Sie, was los ist? Wenn sich die Entwicklerfähigkeiten verbessern und Projekte komplexer werden, passiert etwas Lustiges. Die Probleme entfernen sich zunehmend vom "Kerncode". Stattdessen werden sie zunehmend den Kontext verarbeiten, in dem der Hauptcode funktioniert.
Infolgedessen verbringen hochqualifizierte Entwickler die meiste Zeit damit, die Aspekte des Systems wie Skalierbarkeit, Leistung, Fehlerprüfung, Zuverlässigkeit, Wartbarkeit, Abstraktion, Portabilität, Verarbeitung von Randbedingungen usw. zu verbessern.
Darüber hinaus lernen sie, effizienter zu arbeiten oder die Interaktion mit anderen Entwicklern zu verbessern und sich der Arbeit zu nähern, um Risiken usw. zu minimieren. Die Softwareentwicklung wechselt von der Codierung zu technischen Systemen und zur Problemlösung.
Software-Architekt: Black Belt

Alle Entwickler und Ingenieure sollten in der Lage sein, die Teile der Systeme und Produkte zu entwerfen, die sie erstellen möchten. „Software Architect“ bringt diese Fähigkeit auf ein höheres Niveau und trifft eine Wahl beim Entwerfen von Interaktionen größerer Softwaresysteme auf hoher Ebene, die von anderen Ingenieuren entwickelt wurden.
Beispiel
In unserem Beispiel kann ein Architekt unter anderem ein solches Diagramm zeichnen, um die Entwicklung eines Dienstes zum Summieren von ganzen Zahlen zu steuern:

Um solche Probleme effektiv zu lösen, benötigt ein Softwarearchitekt jahrelange Erfahrung auf allen Ebenen. Diese praktische Erfahrung geht in das Muskelgedächtnis ein. Es ermöglicht dem Architekten, die richtigen Entscheidungen auf hoher Ebene zu treffen, ohne sich auf die Details zu konzentrieren.
Ich glaube jedoch nicht an reine Architekten, dh Ingenieure, die Vollzeitentscheidungen auf hohem Niveau treffen. Ich denke, dass ein zuverlässiger Architekt auf die Ebene der individuellen Details gehen und bei Bedarf von dort weggehen sollte. Er ist bereit, regelmäßig und effektiv in den Code einzutauchen.
In den Kampfkünsten ist der schwarze Gürtel ein Lehrer und Mentor. Ich denke, dass Training und Mentoring auch die Aufgaben eines Softwarearchitekten sind. Der Unterricht, über den ich spreche, ist nicht direkt (Vorlesungen), sondern erfolgt eher anhand von Beispielen, zeigt den Weg und führt die Menschen zu ihren Entscheidungen.
Schlussfolgerungen
Ernsthafte Kämpfer studieren ihr ganzes Leben lang Kampfkunst. Seriöse Softwareentwickler tun dasselbe. Ich hoffe, Sie fanden diese Diskussion hilfreich. Ich hoffe, dass es einen Kontext für einige schlecht definierte Begriffe bietet und im Idealfall hilft, zu erklären, wie man sie genauer verwendet.