Programmiersprachen: Eine der wichtigsten Kompetenzen der Softwareentwickler:innen ist das Beherrschen einer oder mehrerer Programmiersprachen. Welche Programmiersprache zum Einsatz kommt, ist ganz davon abhängig, in welchem Bereich man sich als Softwareentwickler:in spezialisiert hat. Für Softwareentwickler:innen, die sich auf die Entwicklung von Microsoft-Plattformen und Microsoft-Services spezialisiert haben, eignet sich die Programmiersprache C#. Wer seinen Schwerpunkt hingegen auf die Entwicklung von Webanwendungen, die Daten verarbeiten können, gelegt hat, wird PHP nutzen. Wie in vielen anderen Bereich gilt auch hier, dass ein tiefes Verständnis einer Programmiersprache oft sinnvoller ist, als oberflächliches Wissen mehrerer Programmiersprachen.
Saubere und sinnvoll strukturierte Code-Struktur: Eine klar verständliche und gut strukturierte Code-Struktur ist meist ausschlaggebend für die Qualität und damit den Erfolg eines Projekts. Viele Unternehmen und Entwickler-Teams greifen dazu auf einen eigenen Code Codices zurück, um die Code-Struktur für alle Teammitglieder und Nachfolger verständlich zu machen. Teil eines solchen Code Codexes kann es z.B. sein, identifizierte Bugs umgehend zu kommunizieren und regelmäßige Reviews der Code-Struktur durchzuführen. Darüber hinaus kann innerhalb eines Codes Codexes festgehalten werden, wie und wann Kommentare innerhalb des Codes gesetzt werden, wie lange die Zeilen sein sollten oder wie der Code eingerückt werden sollte.
Versionsverwaltung: Unter Versionsverwaltung versteht man in der Softwareentwicklung ein System, das alle Änderungen am Quelltext protokolliert. So ist es zu einem späteren Zeitpunkt möglich, auf eine ältere Version des Quelltextes zurückzugreifen. Gerade in Teams, die sich aus mehreren Softwareentwickler:innen zusammensetzen, ist der Umgang mit einer Versionsverwaltung von Nutzen. Softwareentwickler:innen sollten z.B. Kenntnis darüber haben, wie Code ein- und ausgecheckt werden kann.
Projektmanagementmethoden: Mittlerweile gibt es zahlreiche Projektmanagement-Methoden, die in der Softwareentwicklung angewandt werden. Diese reichen vom Agilen Projektmanagement über Scrum, Kanban, Prince2 bis hin zur Wasserfall-Methode oder XP. Softwareentwickler:innen müssen nicht alle Projektmanagement-Methoden im Detail beherrschen können. Dennoch ist es wichtig zu wissen, um was es bei den einzelnen Projektmanagement-Methoden geht und wie diese im Tagesgeschäft angewendet werden können.
Algorithmen und Datenstrukturen: Treten bei der Entwicklung eines Softwareprodukts Problemstellungen auf, ist es für Softwareentwickler:innen von Vorteil, die gängigsten Algorithmen und Datenstrukturen zu kennen. Algorithmen geben Softwareentwickler:innen vereinfacht gesagt einen Lösungsweg für bestimmte Aufgaben mit auf den Weg, bei dem die Schritte eindeutig definiert sind. Ein Beispiel für einen Algorithmus im täglich Leben sind Navigationsgeräte, die aufgrund verschiedener Faktoren, wie Stau, Straßensperrungen oder Steigungen die kürzeste Strecke berechnen. Auch Kenntnisse über Datenstrukturen sind wichtig. Datenstrukturen dienen zur Speicherung und Organisation von Daten. Je mehr Softwareentwickler:innen über Datenstrukturen wissen, umso besser können sie verschiedene Problemstellungen lösen.
Datenbanken: In Zeiten von Big Data und Machine Learning ist zumindest Basiswissen rund um verschiedene Datenbankentypen angemessen. Softwareentwickler:innen sollten mit Datenbanken umgehen können und Kenntnisse darüber haben, wie Daten in Datenbanken eingefügt und gelöscht, upgedatet sowie vereinigt werden können.
Testing-Methoden: Ziel des Testings ist es, das Softwareprodukt auf die technischen Anforderungen hin zu testen und Bugs offen zu legen. Da das Testen von Softwareprodukten zu den Aufgabengebieten der Softwareentwickler:innen zählt, sollten diese auch Wissen über verschiedene Testing-Methoden haben. Zu den gängigsten Testing-Methoden zählt z.B. der Systemtest, bei dem alle Komponenten einer Anwendung, die neu entwickelt oder geändert wurden, geprüft werden.
Debugging-Methoden: Das Debugging ist dem Testing nachgelagert und beschäftigt sich mit der Behebung der in der Testphase offen gelegten Bugs. In diesem Zusammenhang sollten die Softwareentwickler:innen Kenntnis zu den verschiedenen Typen des Debuggings haben und sich mit Methoden und Tools auskennen, wie z.B. dem Kommandozeilentool GNU Symbolic Debugger (GDB), dem Just-in-Time-Debugging oder dem Post-Mortem-Debugging.