Zühlke – Empowering Ideas

Janko Sokolović, a software engineer at Zühlke Serbia and co-founder of ispovesti.com
Insights

Tech Talks: Bekenntnisse eines Software Engineers

Janko Sokolovic

Janko Sokolović, Software Engineer bei Zühlke Serbien und Mitbegründer von ispovesti.com, jedem und jeder Computer Nutzerin in Serbien wohlbekannt, verrät Tipps und Tricks, die er als Software Engineer bei der Programmierung der beliebten Website gelernt hat.

Insight in brief

In unserer Blog-Serie «Tech Talks» kommen talentierte Menschen zu Wort, die über ihre Erfahrungen und neueste Trends sprechen, um die Fachwelt zu vernetzen und die gesamte Branche voranzubringen.

Tipps zur Qualitätssicherung

Wenn jemand in der Softwareentwicklung tätig werden und sich dieser ganz verschreiben möchte, dann kann ich nur raten, auf die Qualität der Arbeit zu achten. Genau daran fehlt es vielen Unternehmen in Serbien. Mit Kursen und Workshops lässt sich hier eine hervorragende Basis legen, aber das garantiert noch nicht die Qualität bei der Umsetzung.

Besonders beim Front End Development, wenn Du immer wieder Neues lernen musst, um im Rennen zu bleiben, solltest Du dich nicht nur darauf konzentrieren, immer über die neuesten Technologien Bescheid zu wissen. Lege den Fokus stattdessen auf die Grundlagen wie sauberen Code oder eine testgetriebene Entwicklung.

Qualität erreicht man nicht über Abkürzungen, sondern nur mit viel Zeit und Erfahrung. Sobald Du einmal «kampferprobt» bist, verwendest Du mehr Zeit mit der Arbeit an realen Problemen und perfektionierst dein Können. Nur so blickst Du später auf frühere Arbeitsergebnisse zurück und erkennst, welche Fehler Du gemacht hast. Durch diesen Prozess stellst Du fest, warum bestimmte Dinge genau auf eine bestimmte Art und Weise gemacht wurden. Du erlebst einen Aha-Moment.

Wenn Du für verschiedene Kunden arbeitest, bekommst Du allerdings selten die Chance, zurückzublicken und Fehler in Projekten festzustellen. Deshalb ist es so wichtig, die Grundsätze von OOP SOLID usw. zu beherrschen, da sich diese sprach- und technologieunabhängig auf jedes Projekt anwenden lassen. So hast Du mehr Zeit, dir über gutes Design Gedanken zu machen und eine solide Grundlage für ein bestimmtes Projekt zu legen.

Nach Feierabend weiterlernen und die eigenen Kompetenzen erweitern

In Serbien hat der Wettbewerb in den letzten Jahren deutlich zugenommen. Gleichzeitig spielt die Technologie eine immer wichtigere Rolle. Nur während der Geschäftszeiten zu lernen, reicht einfach nicht mehr. Eine Branche, in der man laufend mit neuen Technologien konfrontiert wird, lässt eine solche Stagnation schlicht nicht zu.

Ich versuche, mich über die neusten Technologien zu informieren, um zu sehen, ob diese grundsätzlich Potenzial für einen Paradigmenwechsel bergen. Ich gehe aber nicht zu sehr in die Tiefe, da ich weiss, dass ich nicht lange brauche, um mich anzupassen, wenn die Zeit dafür reif ist. Wichtiger ist es, ein gutes Grundlagenwissen zu haben, das man laufend ausbaut.

In letzter Zeit habe ich mich zahlreichen Programmierwettbewerben und algorithmischen Problemen gestellt. Ich habe mich auch mit Design- und Architekturprinzipien beschäftigt, da diese für alle möglichen Technologien gelten, die künftig aufkommen könnten. Wer nur liest und Tutorials schaut, erfährt nicht, was wirklich wichtig ist und worauf man besonders achten sollte. Bei Programmierwettbewerben entsteht im Allgemeinen keine Beziehung zwischen jüngeren und erfahreneren Kollegen, denn jeder kämpft für sich allein. Bei Zühlke veranstalten wir solche Wettbewerbe manchmal für und mit unseren jüngeren Teammitgliedern. So können wir ihnen helfen und gemeinsam lernen. Viele der Themen, die wir dabei bearbeiten, werden selbst in Uni-Seminaren nicht gelehrt.

Die Weitergabe von Wissen wird immer schwieriger, da es im Zuge der technologischen Entwicklung immer mehr zu lernen gibt. Bei einer solchen Fülle von Informationen kann die Entscheidung, was relevant ist und worauf man sich konzentrieren sollte, schwierig sein. Es wäre unrealistisch zu glauben, dass fünf Uni-Seminare einen zum guten Programmierer machen. Das ist ein Prozess, der ein Leben lang andauert.

Wie mit dem «Hochstapler-Syndrom» umgehen

Wer lernen möchte, darf nicht schüchtern sein. In unserer Branche haben viele Programmierer das Gefühl, dass ältere und erfahrenere Kolleginnen und Kollegen mehr wüssten – das sogenannte Hochstapler-Syndrom – und sie es nicht mit diesen aufnehmen können. 

«Oh Mann, der hat gerade eine Technologie erwähnt, die ich nicht kenne, die ich noch nie benutzt habe und von der ich noch nicht mal gehört habe. Ich muss mir das gleich zu Hause anschauen, weil ich das Gefühl habe, nicht gut genug für diesen Job zu sein.»

Anstatt dich mit solchen Gefühlen und Gedanken herumzuschlagen, solltest Du offen und ehrlich sein und immer nachfragen, wenn Du etwas nicht weisst.

Finger weg, wenn es dir nur ums Geld geht

Motivation ist wirklich wichtig und Motivationslosigkeit das verbreitetste Problem unter Software Engineers in Serbien. Sie entscheiden sich nur des Verdienstes wegen für diese Branche. Und während es immer mehr Informatiker und Informatikerinnen gibt, sind es doch immer weniger, die ein echtes Interesse an unserer Arbeit haben. Wer also nicht richtig motiviert ist und es kaum erwarten kann, um 17 Uhr seinen Laptop zuzuklappen und nach Hause zu gehen, trägt dazu bei, dass der Markt zwar gesättigt ist, aber nicht mit Fachleuten, die wirklich gute Software programmieren. Wie in jedem anderen Beruf sollte man einen Job nicht nur wählen, weil er im Moment gut bezahlt ist, sondern vor allem, weil er Spaß macht.

Aber auch die wenigen Engineers, die nur auf das Geld aus sind, werden trotzdem noch gebraucht, da nicht bei allen Projekten höchste Qualität vonnöten ist. Viele IT-Projekte sind nicht geschäftskritisch, hier reicht Durchschnittsqualität aus. Leider werden diese Coding-Monkey-Projekte nicht weniger. Das sollte uns aber nicht davon abhalten, nach Besserem zu streben.

Wie mir die Idee zu ispovesti.com kam

Neben der Universität begann ich, mich mit Web Development zu beschäftigen. Ich hatte genug Zeit, die ich auf zusätzliche Projekte verwenden konnte. So fing ich an, mit einem Schulfreund zusammen Apps zu programmieren. Kurz darauf hatte ich eine einfache Idee, die später in ispovesti.com mündete.

Am Anfang war das eher eine Spielerei. Ich wusste nicht viel über die Grundsätze guter Programmierqualität, gutes Design und Architektur. Deshalb brauchte es nur wenige Hundert Nutzer, die die Website in Echtzeit verwendeten, bis die ersten Probleme, Versäumnisse und Bugs zutage traten. Es gab sogar einige Sicherheitsprobleme. Wenn ich zurückblicke, auf welchem Niveau ich damals programmierte, dann bin ich nicht gerade stolz darauf.

Aber ältere, erfahrenere Kollegen, die damals an der Uni waren, unterstützten mich. Sie halfen mir, die Lücken zu schließen. Wenn ich rückblickend etwas anders machen würde, dann würde ich vielleicht sagen: «Warte, bis Du mehr Wissen hast, um die Website besser zu machen.» Aber andererseits kam wahrscheinlich alles zum richtigen Zeitpunkt. Hätte ich auf den perfekten Code oder die perfekte Website gewartet, dann wäre vielleicht alles umsonst gewesen und ich hätte keine Besucher oder Follower gehabt. Ich wäre wahrscheinlich zu spät gekommen.

Man muss ein Gleichgewicht finden zwischen Qualität – dem sogenannten perfekten Code – dem richtigen Zeitpunkt und dem Nutzen, den wir den Usern bieten können. Dann ging alles plötzlich sehr schnell. Im Kern war es eine ganz einfache Idee, nämlich, dass Menschen irgendetwas schreiben können, ohne dass ihr Tun nachverfolgt wird oder sie irgendwelche personenbezogenen Daten hinterlassen.

Zusätzliche Fähigkeiten, die sich alle Software Engineers aneignen sollten

Menschen, die Aufgaben an Teams oder andere Softwareingenieure delegieren können, sind sehr gefragt. Die sogenannten technischen Leiterinnen und Leiter, die im Agile-Umfeld arbeiten, sind erfahren darin, Ideen vorzustellen und Pitches zu halten, und sie stehen im ständigen Austausch mit den Produktverantwortlichen und anderen Beteiligten. An den eigenen Soft Skills zu arbeiten, ist also neben dem Programmieren grundlegend und ein wichtiger Vorteil.

Zudem sollte man sich immer mal wieder aus seiner Komfortzone herausbewegen und zum Beispiel öffentlich referieren oder ein Fachthema vorstellen. Wer aus seiner Komfortzone heraustritt, vergrößert diese. Achte darauf, was genau Du lernst, und worin Du deine Zeit investierst, wenn es um Software geht. Schulwissen geht leicht vergessen, weshalb man es immer wieder auffrischen sollte.

Außerdem ist es wichtig, neue Trends und Technologien zu verfolgen, Konferenzen zu besuchen und neue Gegebenheiten und Tools aus dem eigenen Arbeitsumfeld kennenzulernen, damit man sie ausprobieren kann. Die andere Hälfte der Arbeit am eigenen Ich solltest Du deinen Soft Skills widmen. Verbessere deine Kommunikations- und Teamfähigkeit, und konzentriere dich auf das grosse Ganze, anstatt nur Aufgaben zu erfüllen.