Ich begann zu programmieren, als ich in der High School war. Mir wurden unter anderem Pascal und HTML beigebracht. Ich nahm aber auch an einigen Sommerprogrammierkursen in einem IT-Institut teil. Dort lernte ich Visual Basic und das Design von Software und Datenbanken (damals verwendeten wir MERISE (Méthode d'Etude et de Réalisation Informatique pour les Systèmes d'Entreprise)). Ich habe schließlich Visual Basic auf meinem Heimcomputer installiert und ein Buch gefunden aus dem ich alleine üben konnte.
Aber erst nach meinem Abitur habe ich während des Studiums fast Vollzeit angefangen, C # zu lernen und anzuwenden, und das habe ich als meinen eigentlichen Einstieg in die Programmierung und Softwareentwicklung angesehen.
Ich habe in den letzten zehn Jahren einige Lektionen gelernt und dachte, ich würde mir einen Moment Zeit nehmen, um meine Gedanken zu diesen Themen zu sammeln.
Ich habe viel experimentiert, um diese Dinge herauszufinden.

 

1. Das Erlernen einer Programmiersprache ist der einfache Teil: Achte auf Plattformen
Nimm zum Beispiel C#. Das Erlernen der C# Sprache ist nicht schwierig. Wenn du bereits ein gutes Verständnis der Grundlagen der Computersprache hast und Erfahrung in anderen objektorientierten Sprachen hast, kannst du innerhalb weniger Tage ein kompetenter C# Programmierer werden, zumindest was die Sprache selbst betrifft. Der tatsächliche Preis für das Lernen liegt jedoch nicht in der Sprache, sondern auf der Plattform. Um mit C# unter .NET zu entwickeln, musst du Folgendes wissen:
- das .NET Framework
- eine oder mehrere .NET-Technologien wie ASP.NET oder WPF
- und die Visual Studio-Entwicklungsumgebung.
Die Zeit, die erforderlich ist, um die .NET-Entwicklung zu beherrschen, wird im Allgemeinen in Monaten gemessen, selbst für einen erfahrenen Entwickler. Das Erlernen einer Plattform ist immer teurer als das Erlernen einer bestimmten Sprache. Daher ist die Auswahl der Plattform die wichtigste Entscheidung.
Lernen hat immer Kosten und diese Kosten sind einer der Schlüsselfaktoren, die bei der Auswahl der Technologie, die du lernen möchtest, berücksichtigt werden müssen. Die tatsächlichen Kosten des Lernens liegen in der Zeit, Lernen braucht immer Zeit. Da du nicht die Zeit hast, alles zu lernen, ist es wichtig, strategisch darüber nachzudenken, was du lernen möchtest. Und da die Sprachen einfach sind, musst du auf die Plattformen achten: die mit der Sprache verbundenen Technologien, die Entwicklungs- und Bereitstellungstools, die Betriebssysteme und andere Infrastrukturen.

 

2. Ich wiederhole, das Erlernen einer Programmiersprache ist der einfachste Teil: die grundlegenden Konzepte der Softwareentwicklung verstehen
Die Syntax an sich, die Wörter, die du verwendest, wenn du die Sprache verwendest, sind relativ einfach und du kannst sie leicht lernen. Dies reicht jedoch bei weitem nicht aus, um Qualitätscode zu erstellen, der häufig OOP, TDD, BDD und SOLID Prinzipien, Komponententests, Entwurfsmuster und andere technische Konzepte umfasst, dieden Rahmen dieses Artikels sprengen. Naja...

 

3. Tatsächlich ist das Schreiben von Code nur ein (kleiner) Teil des Jobs
Ein Softwareentwickler ist häufig an technologischer Forschung, Konfiguration von Tools und Projekten, Verwaltungs- und Bereitstellungsaufgaben, Debugging- und Testverfahren, Dokumentation und technischen Schulden (Codekorrektur und Refaktorierung) beteiligt bestehende). Außerdem muss er über Lösungen und Designsysteme nachdenken: Manchmal wird die wichtigste Arbeit erledigt, wenn wir nicht an der Tastatur sitzen.

 

4. Bewährte und effektive Rezepte: alte und langweilige Techniken sind manchmal die besten
Es ist nicht wirklich "alt gegen neu" oder sogar "cool gegen langweilig", sondern die Technik, mit der du die meiste Erfahrung hast. Wie man zu sagen pflegt,vertraue ich nicht dem Entwickler, der 1000 Technologien einmal praktiziert hat, aber ich vertraue dem Entwickler, der die relevante Technologie 1000 Mal praktiziert hat. Wenn das Ziel darin besteht, etwas so effizient und schnell wie möglich aufzubauen, wäre es produktiver, die Technologien zu verwenden, die du am besten beherrschst.
Zum Beispiel verdient einer meiner Kontakte 25.000 US-Dollar pro Monat mit einem SaaS, das er mit einer langweiligen Kombination erstellt hat: ASP.NET + SQL Server + Angular 1, da dies die Technologien sind, die er am besten kannte. Er hostet es unter Windows, weil er weiß, wie man Windows schnell und sicher macht. Dies gelang ihm, weil er seine ganze Zeit darauf verwendet, die von seinen Kunden geforderten Funktionen aufzubauen, anstatt die beliebtesten Technologien zu erlernen.
Es ist wichtig zu wissen, dass das technologische Laufband niemals stehen bleibt. Es gibt immer neue Dinge zu lernen. Während du dies liest, könnte ein weiteres JavaScript-Framework veröffentlicht worden sein. Die heutige Spitzentechnologie gab es noch nicht einmal, als ich anfing (EF Code First, Xamarin, ASP.NET Core, Razor), und dies führt uns zu den beiden nächsten Punkten.

 

5. Fokus auf nachhaltige Technologien
Die einzige Konstante auf der Welt ist der Wandel. Zeiteinteilung und Aktionsmanagement sind einige wichtige fähigkeiten für Entwickler, insbesondere weil wir uns auf einem technologischen Laufband befinden, das in Bewegung bleibt oder sogar beschleunigt. Zum Beispiel werden Webtechnologien, die um das Jahr 2000 populär waren (Flash, ASP Classic und Java Applets), fast veraltet und immer weniger marktfähig. Heute sprechen wir über ASP.NET Core, SignalR, Angular2, React und VueJS. Keine dieser Technologien existierte im Jahr 2000, und diese neuen Technologien werden wahrscheinlich innerhalb von 10 Jahren veraltet sein.
Was hat sich nicht wirklich geändert? Die Grundlagen von Sprachen wie C++ / C#, ihre Implementierung von Algorithmen und ihre Prinzipien sind auch nach mehreren Jahrzehnten noch relevant. Wenn du die Grundlagen eines stabilen Systems beherrschst, kannst du dich besser an Veränderungen anpassen, es schätzen und zur Weiterentwicklung nutzen.

 

6. Gleichgewicht zwischen Erkundung und Nutzung
Beim Erkunden geht es darum, neue Dinge zu lernen, neue Techniken zu lernen, Bücher zu lesen, Video-Tutorials anzusehen, Fähigkeiten zu üben und zu verbessern. Die Verwertung besteht jedoch darin, das zu nutzen, was wir bereits wissen, um Probleme im wirklichen Leben zu lösen. Es geht darum, kreativ darüber nachzudenken, wie wir das Wissen nutzen können, das wir bereits haben, um Wert für andere zu schaffen.
Ja, diese beiden Aufgaben sind sowohl notwendig als auch wichtig. Das Risiko besteht darin, sich zu sehr auf eine dieser Aktivitäten zu konzentrieren.
Wenn du zu viel erkundest, wirst du nie ein nützliches Maß an Fachwissen in der gewählten Technologie erreichen. Diese Art des leichten Lernens ist mit enormen Opportunitätskosten verbunden, denn obwohl es deinen Geist erweitert, impliziert die dafür benötigte Zeit, dass du die bereits erworbenen Fähigkeiten nicht wirklich verbesserst.
Andererseits kann eine zu starke Verwertung dich davon abhalten, dich in neuen Technologien weiterzuentwickeln, und deine Beschäftigungsmöglichkeiten einschränken.

 

7. Es ist einfach, exzellent zu sein... Es ist schwierig, konsequent zu sein.
Es ist einfach, 2 Minuten lang großartig zu sein. Es ist schwer, jeden Tag großartig zu bleiben.
Wenn du eine gute Idee für ein neues Projekt hast, verspürst du den großen Wunsch, zu recherchieren, zu entwerfen und zu programmieren. Du hast das Bedürfnis, deine Idee in etwas Reales zu verwandeln, und du wirst super produktiv. Das Problem ist jedoch, dass diese Motivation mit der Zeit nachlässt.
Ja, es ist lustig und es ist einfach, neue Ideen zu bekommen und daran zu arbeiten. Aber dann müssen die Anstrengungen unternommen werden, die Anpassungen, der Start, die Wartung, die Korrekturen, die Verbesserungen und so weiter. Über mehrere Monate. Das ist der schwierige Teil. Es ist schwer, sich über Monate und Jahre auf dieselbe Idee und dasselbe Projekt zu konzentrieren. Es erfordert viel Disziplin.
Es ist einfach, exzellent zu sein. Es ist schwer, konsequent zu sein.

 

8. Diversifiziere deine Fähigkeiten
Sei nicht nur ein Programmierer, sondern werde ein Experte, der programmiert, ein Experte auf einem anderen relevanten Gebiet, für das du eine Leidenschaft hast. Du kannst ein Unternehmer, ein Projektmanager, ein Big-Data-Wissenschaftler, ein Forscher, ein Sicherheitsspezialist usw. sein. Wenn du ein Experte bist, der programmiert, kannst du möglicherweise programmieren (möglicherweise in Vollzeit), und du hast auch eine zusätzliche Glaubwürdigkeit, die mit etwas anderem als Software-Engineering zusammenhängt.
Daher ist es wichtig, eine höhere Ausbildung zu absolvieren. Wenn du zur Universität gehst und bereits weißt, wie man programmiert, wirst du wahrscheinlich nicht viel über das Programmieren lernen. Das bedeutet nicht, dass du nicht in diese Schulen gehen solltest. Du brauchst eine bestimmte Kultur, und Universitäten sind großartige Orte, um das zu bekommen. Du erwirbst Kultur, indem du die Welt, die Menschen geschaffen haben, aus verschiedenen Blickwinkeln studierst und verstehst. Es wäre schwierig, diese Art von Wissen zu erwerben, wenn du nur Programmieren studierst.

 

9. Wähle deine Nischen, um dich abzuheben
Je kleiner die Nische ist, die du wählst, desto größer ist deine Chance, als herausragend in deinem Bereich angesehen zu werden. Zum Beispiel ist es für Entwickler sehr schwierig, sich mit einem Titel wie "PHP Webentwickler" hervorzuheben. Sie sind kompetent, vielseitig, nützlich, aber nicht bemerkenswert. Ein Entwickler, der nur weiß, wie man mit dieser Technologie arbeitet, fühlt sich leicht austauschbar, weil es so viele Leute mit vergleichbaren Fähigkeiten gibt. Das Feld ist zu breit, als dass du dich leicht von der Masse abheben kannst. Wenn du andererseits in eine Nische wie Xamarin.Forms oder JavaScript-Visualisierungen bekannt wirst, bist du für diejenigen, die speziell nach diesen Fähigkeiten suchen, mit größerer Wahrscheinlichkeit wertvoll.

 

10. Zeitalter der Fähigkeiten
Informationen sind das spezifische Wissen, das du zur Lösung von Problemen benötigst. Fähigkeiten repräsentieren die Fähigkeit, Lösungen mit deinem Wissen zu implementieren.
Was macht den Unterschied in einer Welt aus, in der die meisten Kenntnisse und Werkzeuge praktisch kostenlos sind? Die Fähigkeiten natürlich. Wir sind keine wissensbasierte Gesellschaft mehr, wir sind eine kompetenzbasierte Gesellschaft. Es gab eine Zeit, in der fast alle Universitätsabschlüsse einen guten Job garantierten. Dies ist jetzt nicht mehr der Fall. Niemand kümmert sich darum, was du weißt. Die Leute kümmern sich darum, was du tun kannst. Sie bezahlen dich, um Dinge zu tun, nicht um Dinge zu wissen.

 

Lerne in 10 Jahren zu programmieren
Forscher haben gezeigt, dass es ungefähr zehn Jahre (oder 10 000 Stunden) dauert, um Fachwissen auf einem Gebiet zu entwickeln.
Die Lösung ist reflektierende Praxis: Es reicht nicht aus, dieselben Dinge immer wieder zu wiederholen, aber du solltest dich mit einer Aufgabe herausfordern, die deine derzeitigen Fähigkeiten übersteigt.
Du solltest versuchen, die Entwicklung deiner Leistung zu analysieren und alle Fehler zu korrigieren. Dann wiederholen. Und noch einmal wiederholen. Es scheint, dass es keine wirklichen Abkürzungen gibt. Lernen durch Lesen ist gut. In der Praxis ist es jedoch besser, dich die Hände schmutzig zu machen. Die beste Art des Lernens ist Lernen durch Handeln.
Persönlich haben mir kleine Projekte und Prototypen tatsächlich geholfen, mich zu verbessern. Aber es gibt noch interessante Dinge zu meistern, deshalb lasst uns weiter lernen.