Also, los geht's...

Du beendest gerade dein erstes Studienjahr (und glaube mir, in einem oder zwei Jahren wird sich nichts ändern). Aber in deinem Kopf ist so gut wie kein Wissen. Und selbst wenn du die Uni abschließt, kannst du im ersten Jahr mit einem Gehalt von 250, maximal 300 USD rechnen. Es wäre schwer, dich sogar als Junior zu bezeichnen, da du sehr wenig Theorie kennst und keine Praxis hast.
Du wirst die Theorie aus vier Gründen schlecht kennen:
- Es ist ein sehr umfangreiches Gebiet, und es ist unmöglich, alles im Rahmen eines Kurses zu lernen.
- Meistens wird veraltetes Material studiert.
- In den Vorlesungen sitzt du wahrscheinlich in sozialen Netzwerken, unterhältst dich mit Kommilitonen und bist nur da, um anwesend zu sein. Du verstehst nur 30-40 % des Geschehens, und selbst wenn das Thema einfach ist und du dir 80 % merkst, bestätigst du es nicht durch Praxis nach den Vorlesungen, indem du in deiner Freizeit am Computer sitzt. In den praktischen Übungen habe ich zum Beispiel oft im Netzwerk Counter-Strike gespielt (und es trotzdem geschafft, die Labore - das Minimum für die Prüfungen - irgendwie zu machen).
- Um etwas zu lernen und Wissen aufzunehmen, braucht man eine perfekte Stimmung, ein perfektes Interesse und eine ideale Umgebung. Um 8-10 Uhr morgens ist das für keinen Studenten wahrscheinlich, and als Ergebnis wird der Stoff schlecht aufgenommen. In den Uni-Vorlesungen zu sitzen und dieselbe Vorlesung abends zu Hause auf dem Sofa auf YouTube zu schauen, sind zwei verschiedene Dinge.

So wirst du nach der Uni über 20-22 Jahre alt sein. Du weißt nichts und kannst nichts. Im besten Fall findest du im letzten Studienjahr einen Nebenjob und sammelst dort wenigstens ein wenig Erfahrung.
Verbringst du all deine freie Zeit mit Spaziergängen, Serien und der Gestaltung deines Privatlebens? Wenn du bereits in die IT-Branche einsteigen möchtest, ist dieser Lebensstil wahrscheinlich nicht ideal für dich.
Ich habe das College und die Universität mit IT-Schwerpunkten abgeschlossen und habe eine andere Sichtweise auf die Dinge. Erstens: Die Ausbildung dort wird dir nicht alles beibringen, und ich habe vier gewichtige Gründe dafür genannt. Zweitens: Wenn dir diesem Bereich wirklich gefällt, musst du lernen, an dir selbst zu arbeiten und dich ständig weiterzubilden. Selbstlernen ist ein täglicher Prozess. Ich finde selten einen Tag, an dem ich nichts Neues lerne, sei es während der Arbeit im Hintergrund oder in meiner Freizeit.

Ich gehe auch täglich spazieren, habe ein Privatleben, mache Sport wie Joggen und Fußball und habe andere Interessen, Hobbys und reise gerne. Es geht darum, seine Zeit zu planen. Manchmal ist es sinnvoll, Wochen im Voraus zu planen, aber flexibel zu bleiben. Das Wichtigste ist, sich selbst zum ständigen Lernen zu motivieren. Programmierer neigen dazu, faul zu sein. Bücher sind großartig, aber ich höre auch Podcasts und schaue YouTube-Videos. Da ich mittlerweile ein gutes Verständnis für Programmierung habe, fällt es mir schwer, auf YouTube etwas wirklich Neues und Interessantes zu finden, aber ich finde trotzdem immer wieder etwas und schaue es mir an, und gelegentlich lese ich Bücher. Wähle Programmier-Podcasts, die dir gefallen, um über die neuesten Entwicklungen und Technologien in der IT-Welt informiert zu bleiben.

Warte nicht darauf, dass nach deinem Abschluss alles anders wird. Stell dir vor, du hast gerade deinen Abschluss gemacht und musst weitermachen. Entscheide frühzeitig, was du in diesem Bereich machen möchtest. Wenn du dich für Programmierung entschieden hast, gibt es mehrere Richtungen:
- Systemprogrammierung (Betriebssysteme, Treiber) – niedrigstufig, etwas langweilig, aber anspruchsvoll.
- Spieleentwicklung – keine Kommentare nötig, Physikkenntnisse sind vorteilhaft.
- Webentwicklung – nicht allzu schwierig, ziemlich interessant, aber es gibt viel zu lernen.
- Mobilentwicklung ist auch nicht unbedingt schwierig (hier gibt es eher zwei Hauptbereiche: Android und iOS, obwohl es auch andere kleinere Bereiche gibt). In der Webentwicklung gibt es übrigens auch zwei Richtungen: Backend und Frontend.
- Anwendungsentwicklung – Programme für Laptops und PCs – ist ebenfalls von mittlerer Schwierigkeit und Interesse. Damit fängt man in der Regel an den Universitäten an.
- Wissenschaftliche Programmierung – etwas Spezifisches, das auf ein enges Fachgebiet und Wissenschaft ausgerichtet ist, sei es Biologie, Chemie, Mathematik usw.

Die am meisten nachgefragten Bereiche sind meiner Meinung nach Web-, Mobil- und Anwendungsentwicklung. Du kannst jederzeit die Richtung wechseln. Aber wenn du ein Senior in der Anwendungsentwicklung bist, bedeutet das nicht, dass du auch in der Mobilentwicklung ein Senior sein wirst. Dein Niveau wird für ein paar Jahre (im besten Fall ein Jahr) auf Mid-Level sinken, da es eine ganz andere Welt mit eigenen Regeln ist.
Programmierer werden auch nach deren Wissensstand klassifiziert:
- Junior – kann fast nichts, macht viele Fehler. Alle Aufgaben müssen überprüft und möglicherweise korrigiert werden. Ohne oder mit sehr wenig Berufserfahrung.
- Mid-Level – ein ziemlich guter Programmierer, der in der Lage ist, mittlere und manchmal auch schwierige Aufgaben (Algorithmen) zu lösen. Hat 1-2 Jahre Erfahrung. Er weiß schon einiges und man kann ihm vertrauen.
- Senior – ein sehr erfahrener Spezialist, kennt alles oder fast alles. Mindestens 4-5 Jahre Berufserfahrung. Manchmal kann es länger dauern, um dieses Niveau zu erreichen (abhängig von den persönlichen Qualitäten und möglicherweise dem Bereich).
Wiederum ist die Erfahrung und all diese Kategorien relativ. Ein Senior in unserem Unternehmen in Minsk könnte nur ein Junior bei Google sein.
Es gibt auch den Teamleiter (wir nennen ihn mal den "Vorarbeiter" im Team :) ). Er verteilt die Aufgaben in seinem Team, überprüft alles und übernimmt auch einige schwierige Aufgaben. Die Verantwortung für die Aufgaben seines Teams liegt bei ihm. In der Regel sind sie Senior, können aber auch sehr gute Mid-Level sein.
Dann gibt es noch Softwarearchitekten – extrem kluge Leute, auch Senior oder sogar höher (ich selbst habe diesen Zen-Zustand noch nicht erreicht, daher kann ich es nicht genau sagen :)). Alles hängt vom Grad ab. Um beispielsweise im Web die Architektur richtig zu entwerfen, reicht es nicht aus, ein Backend-Senior zu sein; man muss auch Frontend gut kennen – das ist dann quasi ein Full-Stack-Entwickler.
Hör nicht zu sehr auf Leute, die dir bestimmte Technologien und Programmiersprachen vorschreiben wollen, indem sie sagen, dass diese besser als jene sind... Alles hängt ausschließlich von den Situationen und Aufgaben ab. Auf dem Markt gibt es die Top 5-10 Sprachen, die sich seit etwa 20-25 Jahren nicht verändert haben und ihre Positionen nicht verlieren (manchmal tauschen sie nur die Plätze, wenn etwas Neues in Bezug auf Features, Updates oder Frameworks für diese Sprachen herauskommt, aber all diese Sprachen entwickeln sich immer noch weiter). Ich würde die folgenden Sprachen hervorheben: C, C++, C#, Python, Java, JavaScript und PHP. Von den neueren könnte man Go erwähnen, vielleicht auch Rust. Und die Sprachen für die mobile Entwicklung, wie Kotlin oder Swift – die letzten beiden sind wirklich relativ neu (sie werden wahrscheinlich erst seit etwa 4-5 Jahren aktiv genutzt) – das hat eine logische Erklärung, da die mobile Entwicklung eine der neuesten im Vergleich zur Web- oder Anwendungsentwicklung ist, und deshalb haben sich hier klare Sprachen und Richtungen später herausgebildet als anderswo.
Man muss generell verstehen, dass Programmiersprachen sowohl funktional als auch objektorientiert sein können (es gibt auch andere Paradigmen) und dass sie sich intern voneinander unterscheiden. Außerdem sollte man wissen, wie sie funktionieren: Manche nutzen einen Compiler, andere einen Interpreter (aber das sind schon Details). Es ist großartig, wenn ein Programmierer sich mit Asynchronität, Prozessen und Threads auskennt, aber das kommt auch nicht sofort.
Hör auch nicht auf diejenigen, die sagen, dass PHP eine schlechte Sprache ist – das ist die Meinung von Leuten, die ihre Unkenntnis im Programmieren zeigen (dieser Witz entstand wegen schlechter Programmierer, der niedrigen Einstiegshürde der Sprache, was eher ein Vorteil als ein Nachteil ist, und weil PHP früher wirklich schlecht war... aber das war in den 2000er Jahren, maximal bis 2007-2010. Heute ist es eine sehr gute Sprache und mehr als 70% der Webprojekte weltweit laufen darauf (Backend). Dasselbe kann man über JavaScript sagen (es gibt sogar einen Witz über eine Prostituierte und JS). Mir gefällt es auch nicht, aber ich benutze es oft. Ich habe auch Kritik an Java und Python gehört... obwohl ich denke, dass man über jede Sprache Witze finden kann. Also ist das alles reine Geschmackssache.
Sobald du dich für eine Richtung entschieden hast, werde ich versuchen, am Beispiel von Web-Technologien zu erklären, warum es so wichtig ist, so früh wie möglich mit dem Programmieren zu beginnen und warum man sich nicht auf Bildungseinrichtungen verlassen sollte. Um ein großartiger Spezialist zu sein, musst du nur ein paar Programmiersprachen gut kennen. Neben den Sprachen musst du eine Menge Technologien, Protokolle und allgemeines Wissen beherrschen, das nicht nur für Webentwickler, sondern für alle Programmierer wichtig ist. Ich lasse sogar außen vor, dass du Algorithmen kennen und idealerweise mathematische Disziplinen beherrschen solltest (von höherer Mathematik und Wahrscheinlichkeitstheorie bis hin zu diskreter Mathematik und mathematischer Modellierung). Obwohl, um ehrlich auf die Frage zu antworten, ob Mathematik für moderne Programmierer notwendig ist (wann es sich nicht um eine spezialisierte Arbeit handelt), lautet meine Antwort: "Nein, nicht notwendig." In 80% der Fälle läuft die Arbeit darauf hinaus, Daten aus einer Datenbank zu holen und sie in einer Ansicht darzustellen (einfach gesagt, auf dem Bildschirm anzuzeigen). Und es spielt keine Rolle, ob es sich um eine mobile, eine Anwendungs- oder eine Webanwendung handelt. Oder Daten in eine Datenbank zu schreiben. Es ist wichtiger, dies richtig zu tun, entsprechend einer bestimmten Architektur. Ich werde eine Liste erstellen, die sogar für einen guten Full-Stack-Entwickler im Webbereich geeignet ist (sowie für Frontend- oder Backend-Entwickler)... es ist eine riesige Liste. Aber man muss sie kennen. Also, los geht's:

Frontend:
- HTML5 (außerdem sollte man im Auge behalten, was in der 6. Version geplant ist).
- CSS (idealerweise sollte man sich die Entwürfe ansehen). Selektoren richtig verwenden (im Hinterkopf behalten, dass CSS von rechts nach links arbeitet usw.).
- Man sollte mindestens ein CSS-Framework kennen und verstehen, wie es funktioniert (Bootstrap ist dafür durchaus geeignet).
- Man sollte CSS-Präprozessoren kennen (Sass, Less usw.) – wissen, wie sie funktionieren, und sie benutzen können.
- Man muss die grundlegenden Prinzipien von SEO kennen – ohne das geht es nicht (verstehen, wie man HTML5-Tags verwendet, dass man keine Blockelemente in Inline-Elemente einfügen darf, wo und in welchem Umfang man die Tags h1-h6 verwendet usw.).
- JavaScript (mit ECMAScript 6) – hier kann man allein diese Sprache in ihrer reinen Form lange studieren... und es gibt noch viele andere Aspekte, auf die man achten muss:
- jQuery (eine sehr coole Bibliothek... aber Frameworks sind besser).
- Frameworks (React, Vue, Angular).
- npm – Paketmanager.
- Build-Tools (Gulp, Grunt, Webpack) – sie sind auch für SEO wichtig, damit auf der Seite nur der Code der Stile und Skripte ausgeliefert wird, der nur für diese Seite benötigt wird, und nichts Überflüssiges.
- Emmet beherrschen.
- Wenn dir normale Skripte nicht gefallen, lerne CoffeeScript oder TypeScript oder etwas Ähnliches. Dann vergiss nicht, Babel oder einen anderen Compiler in JS zu lernen.
- API der Suchmaschinen und Ranking-Algorithmen (das gehört eher zu SEO). (+ AMP, Turbo, Yandex.Zen).
- Layout (valide, cross-browser, modern, responsiv).

Backend (am Beispiel von PHP):
- Reines PHP.
- Content-Management-Systeme (habe mit vielen gearbeitet, aber ich empfehle WordPress).
- Frameworks (Laravel, Symfony, Yii oder ein anderes). Die ersten beiden sind die besten.
- PSR – Standards, wie man Code richtig schreibt, wo man Anführungszeichen umbricht, wo man Leerzeichen (Tabs) setzt, wie man Variablen benennt und vieles mehr.
- REST – das ist, wie Punkt 4, eine Methode des richtigen Programmierens und der richtigen Benennung von Methoden.
- Sicherheit. Ich weiß nicht, wie viel Aufmerksamkeit der Sicherheit in mobilen Anwendungen gewidmet wird, aber im Web ist das oft ein großes Problem. Und das ist logisch, denn das beste Debugging-Tool eines Webentwickler ist der Browser. Damit kann man viele Informationen über die Seite erhalten, und wenn man einige Erweiterungen installiert, kann man sogar ziemlich gute Manipulationen durchführen. Daher muss man im Web wissen, wie man sich zumindest vor SQL-Injektionen, XSS-Schwachstellen und CSRF (Cross-Site Request Forgery) schützt – obwohl das nicht die einzigen Bedrohungen sind (man kann auch DoS und DDoS hinzufügen – aber das gehört eher zur Serverkonfiguration).
- ORM-Systeme (Doctrine ist geeignet) and PDO.
- Konsole (ich benutze sie fast jeden Tag).
- Serverkonfigurationen (zumindest die Grundlagen, wissen, wie der Server funktioniert und was im Backend bei Anfragen passiert).
- Docker (es wäre gut, sich auch Internet-Cloud-Speicher und bereits konfigurierte "Container" für Projekte anzusehen. Außerdem wissen, was zum Beispiel Kubernetes, OpenShift ist. Und vielleicht ist es einfacher, sich der Cloud hinzugeben, als einen großen Technologie-Stack selbst aufzubauen).
- Composer.
- cURL.
- Protokolle – dieser Punkt hätte höher stehen sollen, bei den Punkten 4-6. Aber ich werde es nicht umschreiben. Man sollte wissen, wie sich HTTP, HTTPS, FTP, SSH und einige andere unterscheiden und wie man mit ihnen arbeitet.
- Eine IDE lernen, zum Beispiel PhpStorm oder gute Texteditoren (mit installierten Erweiterungen) – das gilt auch für das Frontend.
- Linux – die meisten Server laufen auf diesem Betriebssystem, daher ist es sehr empfehlenswert, sich damit auszukennen.
Darüber hinaus musst du Objektorientierte Programmierung (OOP) kennen. Es gibt funktionale Sprachen, in denen man ein ganzes Startup ohne eine einzige Klasse schreiben kann. Aber PHP (wie die meisten modernen Sprachen) ist objektorientiert, daher muss man OOP kennen. Je tiefer das Verständnis, desto besser (Klassen, Schnittstellen, Traits). Es wäre gut, verschiedene Programmierparadigmen zu kennen. Man muss verstehen, dass derselbe Code in derselben Sprache durch verschiedene Paradigmen unterschiedlich geschrieben werden kann. Und dein Projekt sollte einer bestimmten Paradigma folgen. Das gilt auch für die Benennung von Variablen, also entweder überall CamelCase oder Snake_Case.
Man muss Design-Patterns kennen – ich gebe zu, während meines Studiums an der Uni hielt ich das für das nutzloseste Thema. Und ich muss zugeben, es ist das schwierigste Thema (für mich). Jedes Pattern kann unterschiedlich interpretiert werden (nur im Web kann man mehrere Implementierungen eines bestimmten Patterns finden. Wenn man eine Anwendungs- oder mobile App betrachtet, könnte es dort eine etwas andere Implementierung geben). Kurz gesagt, es ist ein Thema, das schwer zu fassen ist. Aber es ist äußerst wichtig.
SOLID – wie man Code schreibt. Und SOLID sind nicht die einzigen Prinzipien. Übrigens können REST und PSR (die ich oben erwähnt habe) auch zu den Prinzipien des richtigen Schreibens von Code gezählt werden.
Testen – Mock- und Integrationstests bei Skripten, Unit-Tests in PHP. Aber das ist im Idealfall. Ich schreibe kaum Tests... obwohl sie notwendig sind. Man muss verstehen, dass es verschiedene Arten von Tests gibt: Funktionstests, Abnahmetests, Unit-Tests und andere.
Man muss Git, Mercurial oder ein anderes Versionskontrollsystem beherrschen.
Vergiss nicht, mit Datenformaten zu arbeiten: JSON, XML, YAML.

Gewöhne dich an, die Updates der Sprachen und Technologien, mit denen du arbeitest, im Auge zu behalten. Sprachen werden in der Regel nicht häufig aktualisiert, aber manchmal gibt es grundlegende Änderungen.

Als ich in Bildungseinrichtungen studierte, dachte ich, dass das Problem von Big Data und Code-Optimierung mich nicht betreffen würde oder zumindest nicht so bald. In Wirklichkeit ist das nicht so. Ich arbeite schon seit langem mit Daten, die aus mehrere zehntausend Einträgen bestehen. Wenn mir fundierte Kenntnisse in Datenbanken und die Normalisierung von Tabellen im Backend helfen (dort treten selten Probleme auf), so passiert das im Frontend häufiger. Suchmaschinen sind äußerst anspruchsvoll in Bezug auf Code, sowohl in Bezug auf die Optimierung als auch auf die Geschwindigkeit (insbesondere die Geschwindigkeit). Hier muss man verstehen, wie man alles asynchron oder verzögert laden lässt. Du kannst ein perfekt ausgearbeitetes semantisches Kern haben, aber was nützt es, wenn es keine Optimierung bei der Ladegeschwindigkeit der Seiten gibt – darauf muss man also auch achten.
Schreibe den Code richtig, damit nach Jahren (oder Monaten) beim Entfernen (oder Deaktivieren) von Modulen kein Code im Projekt zurückbleibt. So etwas kann beispielsweise im Frontend mit CSS und JS passieren, wenn der Code nicht richtig organisiert ist. Ich nenne solchen Code tot. Er wird nicht benötigt, aber Suchmaschinen finden ihn und beschweren sich darüber.
Dabei habe ich Datenbanken kaum angesprochen... das impliziert, dass du bereits weißt, wie man mit ihnen arbeitet. Welche Datenbanken genau, ist dabei nicht entscheidend.
Man muss architektonische Ansätze und Anwendungsarchitekturen kennen... wieder einmal sind sie überall völlig unterschiedlich: Web, Mobilgeräte und Anwendungen. Betrachten wir beispielsweise ein großes Projekt im Web: Das Backend besteht aus drei Teilen. Einer ist mit Symfony gemacht, der zweite mit Laravel, der dritte mit reinem PHP. Das Frontend besteht zum Beispiel aus zwei Teilen, die mit React und Vue erstellt wurden. Wenn man in einen dieser Teile eintaucht, findet man dort eine eigene Architektur, eigene Patterns – sowohl große als auch kleine. Große Codeabschnitte müssen in Schichten aufgeteilt werden (zum Beispiel das Einwickeln von Modellen in Repositories und der Zugriff nicht auf die Modelle, sondern auf die Repositories, die Verwendung von Observern usw.) – all das macht den Code elegant und die Anwendung modular und leicht erweiterbar. Gleichzeitig muss man jedoch bedenken, dass je dünner die Schicht ist, desto schneller arbeitet die Anwendung (zum Beispiel keine ORM-Systeme zwischen der Datenbank und der Sprache verwenden, wenn reines PDO ausreicht). Das Verständnis dafür wird mit den Jahren kommen.

Was auch sehr wichtig ist: Man sollte Frameworks verwenden (zumindest bei großen Projekten). Mit Frameworks zu arbeiten ist komplizierter als mit reinem Code, aber sie bieten einige gute Vorteile:
- Sie beschleunigen die Anwendungsentwicklung insgesamt.
- Sie geben einen bestimmten Stil und eine Philosophie vor, der man folgt, und man schreibt weniger schlechten Code.
- Es gibt viele fertige Module (zum Beispiel für die Authentifizierung), und es ist egal, wie sie unter der Haube gemacht sind (ob grundlegende Authentifizierung, Token-basierte, JWT oder etwas anderes).
- Sicherheit. Wie ich bereits oben geschrieben habe, ist das im Web ein Problem, dem man viel Zeit und Mühe widmen muss. Und oft haben Frameworks das bereits für jeden erledigt.

Es gibt die Meinung, dass ein Fullstack-Entwickler ein ewiger Middle ist. Zum Teil stimme ich dem zu, und ich widme viel meiner Freizeit dem Lernen und der Selbstentwicklung, damit dieser Satz nicht auf mich zutrifft und ich in der Lage bin, sowohl auf dem Frontend als auch auf dem Backend gute Projekte schlüsselfertig zu erstellen – und das fehlerfrei und mit etwas Neuem und Frischem.
Vielleicht habe ich etwas vergessen, denn man kann nicht alles im Kopf behalten. Und ja, über Englisch werde ich auch nicht sprechen... je besser, desto besser.
Du musst nicht unbedingt beide Richtungen auf einmal lernen, du kannst mit einer beginnen. Und denk daran: Wenn du deinen Code vom letzten Jahr als schlechten Code betrachtest und ihn besser schreiben könntest, dann denkst und entwickelst du dich in die richtige Richtung.
Also, ich habe das Web beschrieben... vielleicht habe ich etwas vergessen... aber glaube mir, das sind definitiv etwa 90% dessen, was man wissen muss, um ein guter Spezialist zu sein. Eine andere Frage ist, dass man all das jahrelang studieren kann.
Wie du siehst, verwende ich tatsächlich nur zwei Programmiersprachen, aber zusätzlich zu ihnen gibt es, wie ich oben aufgezählt habe, viele andere Dinge, die wirklich notwendig sind.
In anderen Bereichen der Programmierung denke ich nicht, dass sich etwas grundlegend ändern wird... dort gibt es eigene Technologien und Sprachen... aber das Prinzip und der Umfang sind ungefähr gleich.
Nicht alle Dinge, die ich lerne (besonders wenn es etwas völlig Neues oder Kompliziertes ist), kann ich beim ersten Mal verstehen... oft muss man es mehrmals lesen und ansehen, um vollständig zu verstehen, wie es funktioniert. Also erschrick nicht, wenn du etwas nicht beim ersten Mal verstehst. Viel hängt auch von der Quelle ab, die das Material präsentiert (einige Autoren und Erzähler erklären es besser, andere schlechter).
Jetzt weißt du, was dich erwartet, und du hast nur zwei Möglichkeiten: Entweder du nimmst das Dokument sofort oder du beginnst noch heute mit dem Programmieren.
Hier gibt es viele Fachbegriffe, die selbst für Studenten im 2. oder 3. Studienjahr schwer zu verstehen sind, aber all das findet man im Internet. Jetzt weißt du, womit du anfangen und was du lernen sollst. Diese Liste kann man als Mosaik betrachten, wobei jeder Punkt nur ein Puzzleteil ist, und indem du etwas aus Ethereum Liste beherrschst, wird das Gesamtbild der Webprogrammierung in deinem Kopf klarer und richtiger. Vielleicht hilft und lenkt dich diese unverständliche Liste in die richtige Richtung, aber sie existiert bereits. Denn als ich anfing, all das zu lernen, musste ich die kleinsten Puzzleteile selbst im Internet und in Büchern durch Versuch und Irrtum finden, indem ich eine Menge unnötiger und sich wiederholender Informationen aussortierte.

Und zum Abschluss fassen wir die Vor- und Nachteile des Programmierberufs zusammen.
Vorteile:
- Zukunftsträchtiger Beruf. Ein guter Spezialist wird nicht ohne Arbeit bleiben.
- Hohe Gehälter. Aber nicht sofort.
- Wenn du in der IT arbeitest, bist du so oder so über die neuesten IT-Ereignisse informiert.
- Oft flexiblere Arbeitszeiten als in anderen Bereichen. Möglichkeit, nicht nur zu flexiblen Zeiten zu arbeiten, sondern auch remote in anderen Ländern.
Nachteile:
- Man muss sehr viel wissen. Ständig seine Kenntnisse verbessern und aktuelle Methoden und Ansätze nutzen.
- Es ist sehr wünschenswert, Englisch zu können.
- Schlechter Einfluss auf die Gesundheit. Es heißt, dass dadurch das Sehvermögen schlechter wird. Programmierung ist ein sitzender Lebensstil, den man mit Sport oder anderen aktiven Hobbys ausgleichen sollte.
- Große Verantwortung (zum Beispiel bei der Arbeit mit Bank- und Finanzdaten).
- Manchmal ist es schwierig, mit Kunden und Managern auf einen Nenner zu kommen.
