Welche Technologie muss ich als Softwareentwickler beherrschen?

10 technische Skills, die jeder Softwareentwickler braucht
Kommentare

In den letzten zehn Jahren haben sich die Aufgaben von Programmierern erheblich diversifiziert. Aber Soft Skills hin, Managementfähigkeiten her – technische Expertise bleibt nach wie vor das Kernelement des Programmiererberufs. Doch hier ergibt sich insbesondere für den Nachwuchs gleich das nächste Problem: Welche technischen Skills sollte jeder Softwareentwickler drauf haben? Wir haben die zehn wichtigsten zusammengetragen.

Obwohl ein Informatikstudium längst nicht mehr Voraussetzung für eine Karriere im Softwaresektor ist und mittlerweile auch Sozial- und Geisteswissenschaftler, Ökonomen und Naturwissenschaftler auf die eine oder andere Weise im großen IT-Geschäft mitmischen, stehen die Entwickler nach wie vor im Zentrum des Ganzen. Ihr Code ist die Kohle, mit der der Ofen befeuert und die Maschinerie am Laufen gehalten wird.

Gewissermaßen am Glutkern der Branche zu stehen, ist natürlich spannend. Aber dahin muss man es erstmal schaffen, und auch späterhin gilt es, sich immer wieder zu behaupten. Inspiriert von einem Artikel von John Sonmez haben wir 10 technische Skills zusammengetragen, die Einsteigern wie Fortgeschrittenen helfen sollten, sich vorteilhaft in der Arbeitswelt zu platzieren.

1. Programmiersprachen und –paradigmen

A man’s gotta have a code. Aber in welcher Sprache wird der formuliert? Und hilft vielleicht die Absicherung mit weiteren Sprachen? Sich nicht von der Vielzahl der Optionen überfordern lassen, dazu rät Sonmez in seinem Text. Ein tiefes Verständnis von einer Sprache zu entwickeln, sei sinnvoller, als möglichst viele Sprachen lediglich oberflächlich zu erlernen. Er empfiehlt Nachwuchsentwicklern deshalb, sich vorab Gedanken darüber zu machen, was für eine Art Entwickler sie sein möchten und sich dementsprechend zu orientieren.

Eine nicht unkontroverse Meinung. Markus Sprunck etwa behauptet exakt das Gegenteil: mehr ist besser. Das begründet er vor allem im Hinblick auf die Existenz unterschiedlicher Programmierparadigmen. Egal ob objektorientiertes, prozedurales, funktionales oder deklaratives Programmieren – Entwickler sollten für jedes Paradigma eine Sprache in petto haben. Es lohnt natürlich, die Angelegenheit zu vereinfachen, indem man auf eine multiparadigmatische Sprache setzt. Letztlich gibt Sprunck ebenso wie Sonmez der geschickten Auswahl den Vorzug vor einer überdehnten Sprachpalette. Dazu empfiehlt er außerdem, eine persönliche Top 10 der Programmiersprachen anzulegen, von der wiederum die ersten drei intensiver studiert und regelmäßig angewandt werden sollten.

2. Code-Struktur

Schon durch die Lektüre kruder Zeichenketten steht dem Beobachter das Endprodukt vor dem geistigen Auge: Was für den tauben Beethoven eine Selbstverständlichkeit war, hat im Coding natürlich keine so perfekte Entsprechung. Die Idee kann man sich aber durchaus zu Herzen nehmen. Denn gut geschriebener und sinnvoll strukturierter Code ergibt für den geübten Betrachter durchaus eine Vorschau auf die fertige Software. Präzise Planung im Vorfeld hilft laut Tim Evko dabei.

Schnell und überall: Datenzugriff mit Entity Framework Core 2.0

Dr. Holger Schwichtenberg (www.IT-Visions.de/5Minds IT-Solutions)

C# 7.0 – Neues im Detail

Christian Nagel (CN innovation)

Aber das sollte bitte nicht durch ausführliche Kommentierung geschehen, zumal diese später selten weiter gepflegt wird. Vielmehr muss der Code für sich selbst sprechen. Er sollte klar, verständlich und konzise sein. Eine gelungene Code-Struktur transportiert bereits seine Bedeutung. Damit beweist man nicht nur seine Skills, sondern erleichtert gleichzeitig Teamkollegen und etwaigen Nachfolgern die Arbeit. Am besten gelingt dies, wenn der Code möglichst kompakt und sauber gehalten wird.

3. Architektur und Systemdesign

Objektorientiertes Design (OOD) gehört heutzutage zu den populärsten Designparadigmen. Insbesondere weil sich die Komplexität großer Programme damit reduzieren lässt, unterstreicht Sonmez die Bedeutung von OOD-Kenntnissen. Generell haben sich Systemdesign und Architektur zu entscheidenden Feldern in der IT-Branche entwickelt. Einer Umfrage von Computerworld zufolge gilt IT-Architektur dieses Jahr als gefragtester Tech-Skill.

Dementsprechend empfiehlt es sich auch für Einsteiger, einen so integralen Bestandteil moderner Softwareproduktion zumindest ansatzweise zu beherrschen. Am effektivsten trainieren Bewerber ihre Fähigkeiten, Architekturen und Systeme zeit- und kosteneffizient sowie skalierbar und flexibel aufzubauen, übrigens durch konstante Arbeit an Projekten.

4. Algorithmen und Datenstrukturen

Auch wenn es mittlerweile umfangreiche Bibliotheken mit Standardimplementierungen gibt, macht es doch Sinn, mit einigen Algorithmen vertraut zu sein. Wenn doch einmal eine individuelle Lösung gefunden werden muss, reicht es vielleicht schon, schnell eine Variation eines Algorithmus zu schreiben. Andernfalls zerbricht man sich das Gehirn über ein Problem, für das schon längst eine – wohlmöglich elegantere – Lösung existiert.

Je mehr Algorithmen ein Entwickler kennt, desto mehr Probleme kann er lösen. Ähnlich verhält es sich mit Datenstrukturen, wie dieser Post von Happy Bear Software unterstreicht. Wer sich ein bisschen mit den verschiedenen Datenstrukturen, d.h. etwa mit Arrays, Linked Lists, Stacks oder Queues, bekannt macht, versteht noch dazu besser, wie sein Computer funktioniert.

5. Entwicklungsplattformen, Frameworks, Stacks und Tools

Kommen wir zu den Produktionsmitteln des Entwicklers, seinen Fabrikhallen, Maschinen und Werkzeugen. Wer als Programmierer tätig sein will, muss sich in bzw. mit ihnen auskennen und sie geschickt kombinieren können. Frameworks bspw. existieren für bestimmte Plattformen und als Teil von bestimmten Stacks, mit denen sich Apps von Anfang bis Ende entwickeln lassen. Solide Kenntnisse über die für einen bestimmten Bereich der Softwareentwicklung vorhandenen Tools sollten ITler ebenfalls vorweisen können.

Zugegeben, dieser Punkt verhandelt viele wichtige Aspekte auf einmal; dazu kommt noch, dass bspw. umstritten ist, was überhaupt als Plattform qualifiziert. Aber ähnlich wie in Punkt 1 geht es hier mehr darum, Entscheidungen zu treffen. Denn einerseits gilt: das Sortiment ist groß. Aber andererseits ist es unmöglich, jede Plattform, jedes Framework, alle Stacks und Tools zu beherrschen. Also muss eine Wahl getroffen werden. Diese sollte klug und gut durchdacht sein.

6. Datenbanken

Nicht nur wegen der Big-Data- und Machine-Learning-Hypes sollten Entwickler sich zumindest ein grobes Verständnis von Datenbanken aneignen, sondern auch, weil nach wie vor Applikationsdaten in Datenbanken gespeichert werden. Es gibt zwei Typen, nämlich relationale und Dokumentendatenbanken. Wenigstens von relationalen Datenbanken sollte man schon einmal gehört haben und ungefähr wissen, wie sie funktionieren. Wie werden Daten abgefragt, eingefügt, geupdatet oder gelöscht? Wie werden Datensätze vereint? Darüber gilt es, Bescheid zu wissen.

7. Versionsverwaltung

Versionsverwaltungssysteme sind aus der modernen Softwareproduktion nicht mehr wegzudenken. Da fast alle Softwareprojekte heutzutage in Teams abgewickelt werden, sollten Entwickler mindestens mit einem Source Control-System umgehen können. Dass man weiß, wie Code ein- und ausgecheckt und Änderungen mit verschiedenen Ursprüngen vereinigt werden können, wird heutzutage vorausgesetzt.

8. Build- und Deployment-Systeme

Ebenfalls zum Standard bei IT-Projekten haben sich automatisierte Build- und Deployment-Systeme entwickelt. Ein Build-System kompiliert den Code und überprüft dabei, ob es keine Fehler gibt. Manche dieser Systeme führen auch Unit- oder Usertests durch, unterziehen den Code einem Qualitätscheck und geben Reports aus. Ein Deployment-System dagegen liefert den Code an einen Server und/oder eine Testumgebung aus. Wie im Falle der Datenbanken muss man auch hier kein Experte sein, aber sollte verstehen können, was vor sich geht.

9. Testing und Debugging

Zwar wird die Grenze zwischen Testen und Entwickeln langsam aber sicher eingerissen, dennoch kollidieren die hinter diesen beiden Konzepten stehenden Logiken. John Sonmez hat jedoch Recht, wenn er sagt:

Quality has really become the responsibility of the entire team—I’d argue that it always has been.

Die gängigen Testing-Methoden sollten sich Einsteiger demnach schon früh aneignen. Das gilt gleichermaßen fürs Debugging, einer Tätigkeit, die sowieso schon das Gros des Entwicklungsaufwands einnimmt. Effiziente Debugging-Methoden zu erlernen, hilft nicht nur mir selbst, sondern auch den Kollegen, die eventuell mit meinem Code arbeiten.

10. Methoden

Ob Agile, Waterfall oder Rational Unified Process – in der Softwareproduktion gibt es viele Vorgehensmodelle und die meisten Teams geben zumindest vor, eines davon anzuwenden. Obwohl man nicht mit jedem der Modelle aufs intimste vertraut sein muss, hilft es doch, mitreden zu können. Soll heißen: wenigstens die Idee hinter Agile und Co. sollte Entwicklern bekannt sein, um nicht schon an der Tür abgewiesen zu werden. Besser, man kann plausibel machen, dass einem die Methoden eines Teams bereits bekannt sind.

Fazit

Nun, da ist ja jetzt doch einiges zusammengekommen. Illusorisch wäre es wohl, anzunehmen, dass von jetzt auf gleich jeder der genannten Skills erlernbar wäre. Aber Übung macht den Softwareentwickler, auch wenn es lange dauert. Wer sich nicht entmutigen lässt, wird dafür mit dem Privileg belohnt, im produktiven Zentrum der Industrie mitmischen zu dürfen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -