JavaRush /Java-Blog /Random-DE /Wer ist ein Softwareentwickler? Software-Engineering VS „...

Wer ist ein Softwareentwickler? Software-Engineering VS „nur“ Programmierung

Veröffentlicht in der Gruppe Random-DE
Wir machen Sie auf eine Adaption eines Artikels von Samer Buna aufmerksam, in dem es um die Unterschiede zwischen Software-Engineering und -Programmierung geht oder darum, wie sich die Entwicklung eines Software-Konzepts vom „bloßen Codieren“ unterscheidet.
Wer ist ein Softwareentwickler?  Software Engineering VS
Alle Softwareentwickler können programmieren, aber nicht alle Programmierer können Softwarekonzepte entwickeln. Manche Leute mögen den Begriff „Software Engineer“ (auch Software Engineer) nicht, weil wir das Wort „Ingenieur“ am häufigsten verwenden, wenn wir über etwas Physischeres sprechen – zum Beispiel über das Bauwesen. In unserem Artikel geht es natürlich nicht um den Begriff selbst. Wenn es bei Ihnen plötzlich Ablehnung hervorruft, kann es leicht durch etwas ersetzt werden, das mit Kreativität zu tun hat. „Software-Ersteller“, „Software-Autor“... oder sogar „Software-Ersteller“!
Wenn wir von einem „Softwareentwickler“ sprechen, meinen wir eine Person, deren Hauptaufgabe nicht nur darin besteht, Code zu schreiben, sondern eine hochwertige Anwendung zu erstellen. Und darin sieht er seine Berufung, in seiner Arbeit einen wissenschaftlichen Ansatz und statistische Methoden anzuwenden. Für ihn ist Programmieren nicht nur eine Möglichkeit, Geld für Essen zu verdienen.
Die Fähigkeit zu programmieren macht einen Menschen nicht automatisch zum Softwareentwickler. Jeder kann Programmieren lernen, und es ist viel einfacher, als es scheint. Jeder kann ein einfaches Programm für den eigenen Gebrauch erstellen, aber das garantiert nicht, dass das gleiche Programm auch für andere funktioniert. Mein Lieblingsbeispiel ist dieses: Viele von uns singen unter der Dusche, aber leider ist dieser Auftritt nicht immer einer professionellen Bühne würdig. Für ein hochwertiges Musikerlebnis werden Sie sich natürlich höchstwahrscheinlich an einen Profi wenden. Benötigen Sie weitere Beispiele?
  • Wir alle lernen Mathematik und Schreiben in der Schule, aber das macht uns nicht zu Mathematikern und Schriftstellern.
  • Die meisten von uns sind in der Lage, ein passables und manchmal sehr leckeres Gericht zuzubereiten, aber nicht jeder würde es wagen, für eine Botschaftsdinnerparty einen Tisch für 100 Personen vorzubereiten. In diesem Fall engagieren wir einen Koch.
  • Sind Sie jetzt bereit, den Bau Ihres neuen Hauses vollständig dem Nachbarskind anzuvertrauen, das beeindruckende Meisterwerke aus Lego schafft?
Mein Hauptgedanke, den ich in diesem Artikel zu vermitteln versuche, ist, dass sich einfache Programme stark von Programmen unterscheiden, die von Ingenieuren entwickelt wurden. Die einfachste Definition des Programmierprozesses: Erstellen einer geordneten Abfolge von Aktionen für einen Computer, um bei gegebenen Eingabeparametern etwas Bestimmtes als Ausgabe zu erhalten. Der Prozess der Softwareentwicklung umfasst das Entwerfen, Schreiben, Testen und Kuratieren eines Computerprogramms, um Probleme für viele Benutzer zu lösen. Es geht darum, zuverlässige und sichere Lösungen zu schaffen, die den Test der Zeit bestehen und für einige möglicherweise unbekannte Herausforderungen funktionieren, die über das Offensichtliche hinausgehen.
Wer ist ein Softwareentwickler?  Software Engineering VS
Softwareentwickler wissen alles über die Probleme, die sie lösen, die von ihnen vorgeschlagenen Lösungen, die Einschränkungen dieser Lösungen, ihre Privatsphäre und Sicherheit. Meiner Meinung nach sollte jemand, der den Kern des Problems nicht versteht, nicht einmal damit beginnen, seine Lösung zu programmieren.

Ingenieursmentalität – Suche nach angewandten Lösungen

Softwareentwickler betrachten das Schreiben von Software nicht per se als ihr Hauptziel. Sie denken in Bezug auf die Erfüllung von Bedürfnissen und die Lösung von Problemen . Dies ist wichtig, da nicht jedes Problem eine Softwarelösung erfordert. Einige davon können mit vorhandenen Programmen behoben werden. Das Auftreten einiger Probleme lässt sich manchmal im Voraus vorhersagen und mit Hilfe einer kompetenten Programmgestaltung können sie in Zukunft vermieden werden.

„Intellektuelle lösen Probleme, Genies verhindern sie“

- Albert Einstein

Wer ist ein Softwareentwickler?  Software Engineering VS
Komplexe Probleme erfordern oft das Schreiben vieler Programme. Es gibt Aufgaben, die parallel laufende Anwendungen erfordern, während andere die sequentielle Ausführung mehrerer Programme erfordern. Eine Reihe von Problemen können allein durch die Schulung der Benutzer gelöst werden. Bevor er mit der Erstellung eines Programms beginnt, stellt sich ein Softwareentwickler eine Reihe von Fragen:
  • Welche Probleme soll ich lösen?
  • Was können Sie außer Code schreiben, um sie zu lösen, noch tun?
  • Was kann ich tun, um diese Aufgaben mit der App zu erleichtern?

Programmqualität und Codequalität

Gute Programme sind klar und lesbar. Sie lassen sich leicht erweitern, funktionieren gut mit anderen Programmen und die Arbeit damit wird kein Albtraum sein. Die Codequalität ist nicht verhandelbar. Es sollte hoch sein, das ist alles. Wenn man darüber nachdenkt, sind Ausreden wie die schlechte Laune des Programmierers oder zu enge Fristen (oh, diese Fristen!) inakzeptabel. Einer der wichtigsten Aspekte der Softwareentwicklung besteht darin, das Programm so zu gestalten, dass es in Zukunft leicht gewartet und geändert werden kann (Hallo, OOP!). Heutzutage ist fast jede Software modifizierbar. Oft geschieht dieser Vorgang sogar ohne Beteiligung des Benutzers oder erfordert vom Benutzer nichts anderes als „Ihr Programm wurde aktualisiert, klicken Sie auf „OK“ oder „Verschieben“. Natürlich haben Benutzer das Recht, neue Funktionen von Anwendungen zu verlangen (insbesondere, wenn es sich um langlebige Unternehmenssoftware handelt, die in Java geschrieben ist, oder um Online-Spiele, die jahrelang gespielt werden können).
Möchten Sie mehr über Java-Programmierung erfahren? Treten Sie der Java-Entwicklergruppe bei !
Ein Stück Code allein kann kaum als nützlich bezeichnet werden. Die nützliche Funktionalität von Software beginnt dort, wo unterschiedliche Anwendungsteile miteinander kommunizieren, Daten austauschen und zusammenarbeiten, um die Aufgabe zu erfüllen, Benutzern Daten und Schnittstellen zu präsentieren.
Wer ist ein Softwareentwickler?  Software Engineering VS
Programme sollten unter Berücksichtigung dieser Punkte entworfen werden! Welche Nachrichten erhalten sie? Welche Ereignisse werden überwacht? Wie erfolgt die Authentifizierung und Autorisierung? Ein weiteres ebenso wichtiges Zeichen für ein gutes Programm ist die Klarheit des Codes, nicht die Anzahl der Tests, die die Anwendung bestanden hat, oder gar eine gute Testabdeckung. Scheinbar einfache Fragen: „Kann jemand anders als ich meinen Code verstehen?“, „Kann ich diesen Code heute schreiben und in ein paar Wochen verstehen?“ Ein beliebtes Zitat über die zwei schwierigsten Dinge beim Programmieren lautet:

„Es gibt nur zwei wirklich schwierige Dinge: Cache-Ungültigmachung und Entitätsbenennung“

– Phil Carlton.

Die Lesbarkeit des Codes ist viel wichtiger, als allgemein angenommen wird. Leider ist es nicht möglich, genaue Metriken oder Parameter für die Klarheit des Codes zu definieren. Das Auswendiglernen allgemein anerkannter Sprachnormen, guter Softwaremodelle und Entwicklungsmethoden wird teilweise hilfreich sein. Aber normalerweise reicht das nicht aus. Mit der Zeit und Erfahrung entwickeln echte Profis sozusagen ein „Gefühl der Klarheit“, so etwas wie Intuition. Eine Schreibmetapher funktioniert hier gut: Wenn Sie viele Wörter kennen, können Sie nichts prägnant und klar in der Bedeutung schreiben.

„Ich hätte es kürzer geschrieben, aber ich hatte keine Zeit.“

- Mark Twain.

Die Fähigkeit, Fehler schnell und einfach zu beheben, ist ein wesentliches Merkmal guter Software. Fehler im Programm sollten klare Botschaften senden und zur Nachverfolgung zentral protokolliert werden. Wenn ein neuer Fehler gemeldet wird, muss die Person, die ihn behebt, in der Lage sein, ihn zu debuggen. Er muss sich problemlos mit dem System verbinden, jederzeit auf Ausführungsinformationen zugreifen und außerdem die Funktionalität aller Teile des Systems problemlos überprüfen können.

Umgebungen und Tests

Wenn Softwareentwickler Anwendungen entwickeln, tun sie ihr Bestes, um sicherzustellen, dass diese auf Computern unterschiedlicher Architektur und mit unterschiedlichen Betriebssystemen funktionieren. Wichtig ist, dass die Software mit unterschiedlichen Auflösungen und Bildschirmausrichtungen funktioniert und auch nicht mehr Speicher und Rechenleistung „frisst“ als nötig.
Wer ist ein Softwareentwickler?  Software Engineering VS
Webanwendungen müssen in allen gängigen Browsern funktionieren. Beim Erstellen einer Desktop-Anwendung müssen Sie sicherstellen, dass sie auf Mac, Windows und Linux startet und ordnungsgemäß funktioniert. Nun, das Programm ist auf die Daten angewiesen, dann sollte die Anwendung auch bei langsamer oder fehlender Datenverbindung funktionieren. Um eine Software zu schreiben, denken Ingenieure über alle möglichen Szenariooptionen nach und planen, diese zu testen. Alles beginnt mit der Wahl der idealen Option, bei der alles fehlerfrei funktioniert. Anschließend dokumentieren sie mögliche Probleme und schreiben sie in den Testplan. Einige Ingenieure beginnen mit dem Schreiben von Code, den sie Testfall nennen, der Szenarien für alle wahrscheinlichen Probleme und Fehler simuliert. Und dann wird ein Programm geschrieben, das mit allen in Betracht gezogenen Optionen arbeiten kann. Die einzigartige Fähigkeit eines talentierten Softwareentwicklers besteht nicht darin, zu wissen, wie man Code schreibt, sondern zu verstehen, was genau die Anwendung als Ausgabe leisten soll und wie man dies erreicht. Wenn die Softwareanforderungen des Kunden unvollständig und möglicherweise mehrdeutig sind, muss der Ingenieur sie richtig bewerten und „verstehen“.

Kosten und Effizienz

Ein Softwareentwickler kann das Problem in den meisten Fällen schnell beheben. Wenn Sie glauben, dass die Einstellung eines „teuren“ erfahrenen Programmierers Ihre Kosten erhöhen wird, denken Sie noch einmal darüber nach. Je erfahrener der eingestellte Programmierer ist, desto schneller kann er eine einfache, saubere, zuverlässige und benutzerfreundliche Lösung bereitstellen. Auf lange Sicht werden dadurch die Softwareentwicklungskosten definitiv gesenkt.
Wer ist ein Softwareentwickler?  Software Engineering VS
Es ist auch notwendig, die Kosten für die Durchführung des Programms zu berücksichtigen. Jedes Programm nutzt Rechenressourcen und diese sind nicht kostenlos.
Die Aufgabe eines Softwareentwicklers besteht darin, effizienten Code zu schreiben, der nicht unnötig Rechenressourcen beansprucht.
Beispielsweise ist das Zwischenspeichern häufig aufgerufener Daten eine der möglichen Strategien, um das gewünschte Ergebnis zu erzielen. Dies ist jedoch nur eines von wahrscheinlich Hunderten von Tools und Lösungen, die ein Programm schneller und effizienter machen können. Ein unerfahrener Programmierer bietet Ihnen vielleicht eine günstige Lösung, aber die Nutzung einer solchen Lösung wird Sie und Ihre Kunden letztendlich viel mehr kosten, als wenn Sie mit einem erfahrenen Entwickler zusammenarbeiten würden, der überhaupt eine effektive Lösung erstellt hat.

Konzentrieren Sie sich auf die Benutzererfahrung

Ein guter Programmierer entwickelt mit Blick auf User Experience (UX). Die Mensch-Maschine-Interaktion ist ein Thema mit endlosen Forschungen und Lösungen. Je mehr Lösungen angewendet werden, desto besser sollte das Programm ausfallen. Hier sind ein paar Beispiele, um Ihnen ein Gefühl dafür zu geben, was diese Richtung ist:
  • Beim Entwerfen von Dateneingabeformularen wie E-Mails sollte ein gutes Programm die Groß- und Kleinschreibung der E-Mail-Adresse ignorieren. Beim Drücken der FESTSTELLTASTE sollte kein Fehler ausgegeben werden, da die E-Mail-Adresse in Kleinbuchstaben eindeutig ist. Wenn das Programm eine neue E-Mail-Adresse als Eingabe akzeptiert, überprüfen Sie diese zu Beginn des Eingabevorgangs, um den Benutzer darauf aufmerksam zu machen, dass er das falsche Adressformat verwendet. Diese Lösung umfasst sowohl offensichtliche Prüfungen wie das fehlende „@“-Zeichen als auch weniger offensichtliche Prüfungen, z. B. die Prüfung auf die falsche Reihenfolge von Zeichen wie „gmail.ocm“.

  • Wenn der Benutzer umgeleitet wird, eine Aktion auszuführen, sollte sich ein gutes Programm seine aktuelle Position merken und ihn zurückgeben, wenn er fertig ist. Ein gutes Programm sollte sich auch die vom Benutzer bereits übermittelten Daten merken, was für die weitere Interaktion mit ihm wichtig ist.

    Angenommen, Sie suchen als Gast auf Expedia nach Flugreisen. Später entscheiden Sie sich, ein Konto zu erstellen. Die App sollte alle Ihre bisherigen Suchanfragen im neuen Konto speichern und Sie sollten von anderen Geräten aus darauf zugreifen können.


  • Wer ist ein Softwareentwickler?  Software Engineering VS
  • Ein gutes Programm wird unter Berücksichtigung von Benutzerverhaltensszenarien entwickelt. Sie müssen neue Funktionen nicht nur „mittelmäßig“ hinzufügen; versetzen Sie sich auch in die Lage des Benutzers. Eines Tages buchte ich Flugtickets und vergaß, meine Vielfliegernummer anzugeben. Nachdem ich die Bestätigung erhalten hatte, beschloss ich, die Website der Fluggesellschaft aufzurufen und sie hinzuzufügen, um den Rabatt zu erhalten. Um herauszufinden, wie das geht, habe ich gute 10 Minuten mit der Seite herumgespielt. Die Anwendung war so nicht offensichtlich, dass ich einfach ziellos durch verschiedene Seiten der Website gewandert bin, um das zu finden, was ich brauchte. Später stellte ich fest, dass ich schon ein paar Mal auf der richtigen Seite gelandet war, aber ich verstand es nicht einmal, da das Feld, das ich brauchte, zwischen anderen ähnlichen Feldern mit riesiger Form verloren ging.

    Es stellte sich heraus, dass ich zum Bearbeiten der Reiseinformationen etwa zwanzig Zeilen des Formulars durchblättern und die Kundenkartennummer und Telefonnummer eingeben musste, ohne die das Formular nicht zur Überprüfung gesendet werden konnte. Dies ist ein Beispiel für ein Programm, das entwickelt wurde, ohne darüber nachzudenken, wie komfortabel der Benutzer damit sein würde.

Zuverlässigkeit, Sicherheit und Schutz

Meiner Meinung nach besteht der wichtigste Unterschied zwischen einem professionellen Softwareentwickler und einem Amateur darin, dass bei der Erstellung Parameter wie Zuverlässigkeit, Sicherheit und Sicherheit der Anwendung berücksichtigt werden.
Ein echter Profi weiß, dass er für die Sicherheit seiner Lösung verantwortlich ist.
Teile des Programms müssen gegenüber falschen Eingaben, falschen Zuständen und falschen Interaktionen tolerant sein. Dies ist in der Tat sehr schwer durchzusetzen und der Hauptgrund dafür, dass wir Geschichten über Menschen hören, die aufgrund von Softwarefehlern sterben. Benutzer haben falsche Daten in das Programm eingegeben, geben diese weiterhin ein und werden dies auch weiterhin tun. Dies muss als Tatsache akzeptiert werden. Darüber hinaus tun einige dies absichtlich mit dem Ziel, die Anwendung zu zerstören und an die ihr zur Verfügung stehenden Ressourcen zu gelangen.
Wer ist ein Softwareentwickler?  Software Engineering VS
Hier ist ein Beispiel aus dem wirklichen Leben: Der Person, die angeblich für den jüngsten Datenverstoß bei Equifax verantwortlich ist, wird vorgeworfen, dass sie ihrer beruflichen Verantwortung nicht nachgekommen ist, die darin bestand, Lösungen zu entwickeln, um bösen und böswilligen Eingaben in allen der Öffentlichkeit zugänglich gemachten Softwareprodukten zu widerstehen. Bei Vorfällen im Zusammenhang mit der Informationssicherheit geht es nicht nur um fehlerhafte und böswillige Eingaben, sondern auch um falsch eingegebene Daten. Wenn ein Benutzer sein Passwort vergessen hat, wie oft kann er versuchen, es einzugeben? Wirst du ihn danach blockieren? Was passiert, wenn jemand anderes versucht, sein Konto zu sperren? Kann ein Benutzer seine Anmeldeinformationen über einen unverschlüsselten Datenkanal übertragen? Was passiert, wenn die Anmeldeanfrage von einem ungewöhnlichen Ort kommt? Was können Sie tun, wenn der Anmeldeversuch automatisch erfolgt? Was haben Sie getan, um Ihre Benutzer vor Cross-Site-Scripting, Cross-Site-Request-Forgery und häufigem Phishing zu schützen? Verfügen Sie über eine Backup-Strategie für den Fall eines DDoS-Angriffs auf Ihre Server? Diese Fragen verdeutlichen nur einige der Probleme, die berücksichtigt werden müssen. Das geschützte Programm speichert wichtige Informationen nicht in Textform. Es schützt es mit einer komplexen Einwegverschlüsselung (eine, die leicht zu verschlüsseln, aber ohne den Schlüssel kaum zu entschlüsseln ist). Dies sind Sicherungsmaßnahmen für den Fall, dass das Programm gehackt wird. Hacker werden verschlüsselte Daten entdecken, die für sie nutzlos sind. Selbst bei den besten Programmen treten unerwartete Probleme auf. Ein Programmierer, der nicht auf ihr Auftreten vorbereitet ist, kann kaum als Profi bezeichnet werden. Solange er nicht mit unerwartetem Verhalten rechnet, ist er kein Ingenieur. Er sei der „Autor unsicherer Programme“. Fehler in Programmen sind nicht immer offensichtlich. Unsere intellektuelle Fähigkeit, bekannte Fehler vorherzusehen und zu verhindern, ist begrenzt. Aus diesem Grund wissen Softwareentwickler, wie wichtig gute Tools sind, um korrekte und sichere Software schreiben zu können.

notwendige Werkzeuge

Es besteht kein Zweifel, dass wir unterschiedliche und gute Entwicklungstools brauchen. Ihre Rolle wird oft unterschätzt, aber tatsächlich sparen sie viel Zeit und Mühe und vereinfachen einige Aufgaben um eine Größenordnung. Stellen Sie sich vor, Sie müssten für die Bereitstellung immer noch Dateien per FTP hochladen, sozusagen auf die altmodische Art und Weise. Stellen Sie sich vor, Netzwerk- und Leistungsprobleme ohne Chrome DevTools zu beheben! Und wie ineffizient wäre es heutzutage, JavaScript-Code ohne ESlit und Prettier zu schreiben!
Wer ist ein Softwareentwickler?  Software Engineering VS
Jedes Tool, das die Feedbackzeit beim Schreiben von Code verkürzt, ist willkommen. Wenn ich ein Werkzeug finde, das mir vorher unbekannt war, das aber wirklich nützlich und effektiv ist, kann ich nur bereuen, dass ich es nicht vor diesem glücklichen Moment verwendet habe.
Bessere und modernere Tools helfen Ihnen, ein besserer Programmierer zu werden. Finden Sie sie, nutzen Sie sie, schätzen Sie sie und verbessern Sie sie, wenn Sie können. Und lassen Sie sich nicht auf das Gleiche ein: Wer weiß, vielleicht verbringen Sie bei einem neuen Tool einmal Zeit damit, es zu installieren und zu lernen, und dann lösen Sie Probleme um ein Vielfaches schneller?

Die Entwicklung des Software-Engineerings

Niemand kann Software-Engineering in zwei Monaten, sechs Monaten oder sogar einem Jahr erlernen. Wie man ein Software-Ingenieur wird, wird einem nicht in einem Kurs, an einer Universität oder einem Bootcamp beigebracht. Ich studiere seit mehr als zwanzig Jahren und lerne auch jetzt weiter. Erst nach einem Jahrzehnt des Lernens und Entwickelns, Erstellens und Wartens von Anwendungen, die von Tausenden von Benutzern verwendet werden, konnte ich mich getrost als erfahrenen Programmierer bezeichnen. Software-Engineering ist nicht jedermanns Sache, aber jeder sollte lernen, seine Probleme am Computer zu lösen. Wenn Sie lernen können, einfache Programme zu schreiben, sollten Sie das tun. Wenn Sie lernen können, öffentlich verfügbare Software zu verwenden, sollten Sie dies tun. Wenn Sie lernen können, Open-Source-Software zu verwenden und sie für sich selbst anzupassen, haben Sie eine Superkraft! Jeder Tag bringt Entwickler neue Herausforderungen und neue Probleme mit sich, weshalb Software-Engineering erforderlich ist. Die Hauptaufgabe dieses Berufs besteht darin, Software zu erstellen, damit sich ein normaler Mensch nicht viele Jahre lang damit auseinandersetzen muss. Damit keine langen Studien nötig sind, um mit Programmen zu interagieren. Und doch denken Softwareentwickler ständig darüber nach, bessere Tools zu entwickeln, die komplexere bekannte Probleme lösen können, und tun alles, um sicherzustellen, dass neue Probleme so selten wie möglich auftreten.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION