6 Nichttechnische Fähigkeiten, die jeder Softwareentwickler benötigt

Siehe auch: Soft Skills

Softwareentwickler regieren die Welt. In Ordnung, es mag nicht so dramatisch sein, aber die Tatsache bleibt, dass die Softwareentwicklung zu einem der wirkungsvollsten Bereiche geworden ist.

Nahezu jedes Produkt oder jede Dienstleistung, die wir täglich nutzen (abgesehen von offensichtlichen Ausnahmen), hat ein Team von Softwareentwicklern. Es ist auch eine spannende Arbeit, bei der Ideen in die Realität umgesetzt werden und man wirklich etwas bewirken kann.

Unter dem Gesichtspunkt des Lebensunterhalts ist die Softwareentwicklung ebenso interessant wie die Die Nachfrage übersteigt das Angebot erheblich . Ein Nachfragerückgang ist auch auf absehbare Zeit definitiv nicht zu erwarten.



Während technische Fähigkeiten für jeden Softwareentwickler, der es vor Ort schaffen möchte, unerlässlich sind, können nichttechnische Fähigkeiten ebenso wichtig sein. Viele Menschen werden anderer Meinung sein, aber in bestimmten Situationen können diese nichttechnischen Fähigkeiten sogar wichtiger werden als die technischen Kernkompetenzen.


Also, über welche nicht-technischen Fähigkeiten sprechen wir genau?

Entwickler Soft Skills

Problemlösende Fähigkeiten

Wenn Sie mit erfahrenen Softwareentwicklern sprechen, fassen sie häufig die gesamte Softwareentwicklung in einem Wort zusammen (oder in zwei, je nachdem, wie Sie es buchstabieren) - zur Problemlösung.

Wenn Sie es auf das Wesentliche reduzieren, ist die Entwicklung von Software eine reine Problemlösung.



Auf Makroebene ist jede Software eine Lösung für ein Problem, das Menschen haben, auch wenn sie nicht wissen, dass sie es haben. Auf der Mikroebene geht es bei der Entwicklung von Software darum, unzählige kleine Dinge zu tun, die unterschiedliche Namen haben können, aber nur Probleme sind, die elegante, einfache Lösungen erfordern.

Die einfachste Art des Zuhörens ist

Leider verstehen dies nicht alle Leute, die in der Softwareentwicklung arbeiten, und viele von ihnen arbeiten nicht an ihren problemlösende Fähigkeiten , infolge.

Sie verstehen das Problem falsch und schaffen am Ende zusätzliche. Sie halten an alten Praktiken fest, weil sie in der Vergangenheit gearbeitet hatten, obwohl das Problem völlig anders ist. Sie verschwenden Tage und Wochen mit etwas, das einige Stunden hätte dauern können, wenn sie es richtig angegangen wären.



Die Beispiele sind endlos.

Das muss nicht so sein. Problemlösung ist eine Fähigkeit, die aktiv erlernt und verfeinert werden kann, und jeder, der Softwareentwicklung betreiben möchte, sollte sich dafür Zeit nehmen.

Lernfähigkeiten

Die Softwareentwicklung ändert sich wahnsinnig schnell, besonders wenn man sie mit einigen anderen Bereichen vergleicht. Technologien und Frameworks kommen und gehen, neue Plattformen und Geräte werden eingeführt und traditionelle werden ausrangiert.

Dies geschieht häufig mitten in der Entwicklung einer bestimmten Software.



Dies bedeutet, dass kein Softwareentwickler alles über seine Branche erfahren und als erledigt betrachten kann. Mit anderen Worten, jeder Softwareentwickler mit Selbstachtung muss viel Zeit darauf verwenden, sich über die neuesten Entwicklungen auf diesem Gebiet zu informieren.

Hier ist einer Lernfähigkeiten wird wirklich einen Unterschied machen.

Stellen wir uns zwei Softwareentwickler vor, die in jeder Hinsicht absolut gleich sind - Ausbildung, Erfahrung, aktuelle Codierungsfähigkeiten usw. Der einzige Unterschied besteht darin, dass Entwickler A. hat große Lernfähigkeiten und Entwickler B. hat weniger als hervorragende Lernfähigkeiten.



Es wird ein neues Framework für die Entwicklung von Apps entwickelt, das allem, was davor war, absolut überlegen ist (dies passiert übrigens im wirklichen Leben nicht), und plötzlich arbeiten alle daran.

Es braucht Entwickler A. zwei Monate, um das neue Framework zu meistern Entwickler B. kämpft sechs Monate später damit.

Plötzlich sind unsere beiden bisher identischen Softwareentwickler Welten voneinander entfernt. Der einzige Grund - Entwickler A. hatte überlegene Lernfähigkeiten.

In der realen Welt kommt es nicht auf ein einziges Framework an. Bei der Softwareentwicklung müssen ständig neue Praktiken erlernt und angewendet werden. Aus diesem Grund ist es für Softwareentwickler unbedingt erforderlich, an ihren Lernfähigkeiten zu arbeiten.

Teamfähigkeit

Nur sehr wenige Softwareentwickler arbeiten alleine an Projekten. Sicher, einige Projekte beginnen möglicherweise als Ein-Personen-Betrieb, aber in den allermeisten Fällen wird das Produktteam in Kürze an Zahl zunehmen.

Zum größten Teil arbeiten Softwareentwickler in Teams.

In der modernen Softwareentwicklung, insbesondere wenn es sich um eine agile Softwareentwicklung handelt (wir werden später darauf zurückkommen), ist die Fähigkeit des Teams, gut zusammenzuarbeiten, häufig der entscheidende Faktor dafür, ob die Software pünktlich und gemäß den erforderlichen Spezifikationen fertiggestellt wird. und innerhalb des Budgets.

Eine gute Teamzusammenarbeit stellt sicher, dass die Leute an dem arbeiten, woran sie arbeiten sollen, dass sich jeder wohl fühlt, wenn er um Hilfe bittet (und diese bekommt), dass Probleme frühzeitig erkannt und behoben werden, dass sich niemand überarbeitet fühlt und so weiter.

Nicht jeder wird als echter Teamplayer geboren und viele Menschen kämpfen darum, das wirklich zu übernehmen Zusammenarbeit Mentalität. Das Gute ist, dass dies eine weitere Fähigkeit ist, die man lernen kann und die alle Softwareentwickler untersuchen sollten.

Führungskompetenz

Softwareentwicklung ist ein Bereich, in dem es möglich ist, relativ schnell voranzukommen. Es dauert nicht Jahrzehnte, bis jemand ein leitender Softwareentwickler wird und in die Lage versetzt wird, ein Team zu führen.

Tatsächlich ist es üblich (zumindest in guten Softwareentwicklungsunternehmen / -teams), dass Entwickler Menschen mit weniger Erfahrung betreuen, auch wenn sie selbst nicht zu erfahren sind.

Dies bedeutet, dass die Mitarbeiter ihre Führungsqualitäten in der Softwareentwicklung früher entwickeln müssen als in den meisten anderen Branchen. Die Notwendigkeit hierfür wird durch die Tatsache weiter verschärft, dass die Realität der Softwareentwicklung oft recht hektisch ist und eine gute Führung wirklich einen Unterschied machen kann.

Es sollte jedoch darauf hingewiesen werden, dass sich die Führung in der Softwareentwicklung tendenziell von der Führung in einigen anderen Branchen unterscheidet (erneut) vor allem in der agilen Softwareentwicklung ). In der Softwareentwicklung ist Führung weniger maßgeblich und vorschreibend als in anderen Bereichen, wobei Personen in „Führungsrollen“ häufig hauptsächlich unterstützende und betreuende Personen sind.

Davon abgesehen einige klassische Führungskompetenz wird immer willkommen sein.

Agile Fähigkeiten

Schon seit seine 'Standardisierung' Im Jahr 2001 hat die agile Softwareentwicklung einen langen Weg zurückgelegt, und heute werden die meisten Softwareentwicklungsprojekte mit einem der folgenden Verfahren durchgeführt die vielen agilen Frameworks / Methoden / Ansätze oder eine Kombination von wenigen.

Bei der agilen Softwareentwicklung stehen häufige Releases funktionierender Software, weniger Dokumentation, Selbstorganisation von Teams, verbesserte Zusammenarbeit, verbesserte Kundenkommunikation und eine Reihe anderer Ideen und Praktiken zur Bereitstellung besserer Software im Vordergrund.

Die Mehrheit der Unternehmen wird keinen guten Softwareentwickler weitergeben, nur weil sie nicht über das Wissen oder die Erfahrung in Agile verfügen. Bestimmte Grundlagen können relativ schnell und einfach übernommen werden, wobei der Rest der Akklimatisation im Laufe der Zeit erfolgt.

Stärken und Schwächen des Mckinsey 7s-Modells

Abgesehen davon kann die Verbesserung der agilen Fähigkeiten einen Softwareentwickler definitiv besser für die moderne Welt der Softwareentwicklung geeignet machen. Darüber hinaus können agile Werte und Ideen einem Entwickler helfen, unabhängig von seiner aktuellen Arbeitssituation besser zu werden.

Die gute Nachricht ist, dass es bei der agilen Softwareentwicklung nicht an Ressourcen mangelt. Zum einen gibt es eine Reihe von Agil und Scrum-Blogs wo man einen Schatz an theoretischem und praktischem Wissen finden kann. Für Entwickler, die einen praxisorientierteren Ansatz bevorzugen, moderne kostenlose Scrum-Tools kann eine großartige Möglichkeit sein, praktisch zu lernen. Es gibt auch Kurse und Organisationen, die formelle Zertifizierungen anbieten.

Gute altmodische Empathie

Wenn es um Softwareentwicklung geht, Empathie scheint nicht besonders wichtig zu sein. Wenn Sie jedoch erst einmal darüber nachdenken, werden Sie feststellen, dass dies den Unterschied zwischen einem anständigen und einem wirklich großartigen Softwareentwickler ausmachen kann.

Zum einen muss ein Softwareentwickler in der Lage sein, sich in die Lage seiner (zukünftigen) Benutzer zu versetzen. Ohne dies kann eine perfekt entwickelte Software leicht scheitern, einfach weil niemand sie benötigt oder zumindest niemand sie in dieser Form benötigt.

Leider werden selbst Entwickler, die sich nicht zu stolz oder kurzsichtig fühlen, oft von ihren unbewussten Vorurteilen und Überzeugungen über das, was die Leute wollen, besiegt.

Darüber hinaus müssen Softwareentwickler Einfühlungsvermögen für Menschen haben, die in Zukunft an ihrer Software arbeiten werden. Manchmal muss ein Entwickler zwischen beiden wählen:

  • Fertigstellung einer neuen Funktion (die die grundlegendsten Anforderungen erfüllt) in 30 Minuten und Schaffung eines Albtraums für Menschen, die darauf aufbauen oder sie in Zukunft beibehalten werden (und sich dabei auch zum Ziel unzähliger zukünftiger Flüche und Voodoo-Puppen machen) .
  • Verbringen Sie einen ganzen Tag mit der betreffenden Funktion und schreiben Sie sauberen, wartbaren Code, der zwei Jahre später ein Lächeln auf das Gesicht einer Person zaubert.

Während in beiden Fällen die Funktion funktionsfähig ist, wird Ihnen jeder in der Softwareentwicklungsbranche sagen, dass die zweite Wahl die einzig ethische ist.

Es geht darum, auch an andere Menschen zu denken.




Wort schließen

Ungeachtet dessen, was viele Leute denken, braucht es mehr als nur die Möglichkeit, schnell zu programmieren, um ein großartiger Softwareentwickler zu werden. Es erfordert viele Fähigkeiten und es ist sehr sinnvoll, Zeit und Mühe in die Entwicklung dieser Fähigkeiten zu investieren.


Weiter:
Entscheidungsfindung
Persönliche Entwicklungsfähigkeiten