Worum geht es in diesem Artikel?
Tatsächlich geht es in dem Artikel darum, wie sich meine Denkweise mit dem Berufswechsel, dem Verständnis des Kontextes und den zu beachtenden Momenten hätte ändern sollen und wie sehr sich die Wahl von „Was soll ich unterrichten?“ Auf die folgenden Jahre meiner persönlichen Karriereentwicklung auswirkt.
Ich muss sofort sagen, dass ich es nicht und nicht für sinnvoll halte, wie in den meisten Artikeln zu beginnen, welche Programmiersprache ich wählen soll. Es macht keinen Sinn. Nein, Sie wählen keine Programmiersprache. In der Tat wählen Sie Ihre Zukunft, nicht mehr und nicht weniger. Ihre zukünftige Wahl hängt von Ihrer Anwendung und Plattform ab.
Ein bisschen für mich
Ich wurde Anfang 2016 im Alter von 35 Jahren Programmierer. Wenn Sie sich die Geschichte der Aktivitäten in meinem GitHub-Profil ansehen und den ersten ernsthaften Job annehmen. Ziemlich anständiges Alter für einen Berufswechsel. Ja, das ist kein unwichtiger Moment - ich habe das Design verlassen. Dies ist tatsächlich eine sehr radikale Veränderung, und zwar nicht nur, weil Sie sich zum ersten Mal mit dem Beruf befasst haben, der in meinem Fall eher humanitär ist, mit Bildern, Design, Komposition und sogar Benutzerfreundlichkeit, und dann plötzlich in Code, Technologie, Kompilierung und Basis springen Daten und so weiter. Dies ist im Wesentlichen nur die Spitze des Eisbergs, die von außen sichtbar ist. Ich werde im Text etwas weiter auf tiefere persönliche Schlussfolgerungen eingehen.
Wie ist das passiert und warum? Es gibt zwei Gründe - ich habe das Design dieses Mal nicht verwaltet, Depression ist zwei. Um so erfolgreich wie möglich ein erfolgreicher Designer zu werden, brauchte ich einen WOW-Effekt und nicht nur logisches UX, eine präzise Komposition, Betriebsszenarien für die Verwendung des Produkts und einige Fähigkeiten des Produktmanagers. Wir brauchten coole, saftige Bilder. Für sie hatte ich nicht genug Besitz an der Farbkomposition, und entweder wegen Depressionen oder aus einem anderen Grund konnte ich sie nicht beherrschen. Und dann ... zuerst, als ich den Film Ex Machina sah, drehte mich etwas um und ich schrieb mich für einen Kurs zum maschinellen Lernen von Andrew Ng ein. Ich mochte es wirklich, nur wild, trotz schlafloser Nächte und roter Augen am Morgen.
Dann traf ich meiner Meinung nach die trivialste und einfachste Entscheidung - ich traf die unvermeidliche Wahl für das Volumen und die Qualität des Wissens der modernen IT-Branche und meine Fähigkeiten, die ich zu dieser Zeit hatte. Ich habe mich entschlossen, schrittweise von der Front-End- zur Front-End-Programmierung von browserbasierten Anwendungen in JavaScript zu wechseln. Und von hier aus können wir den wahren Weg des Versuchs und Irrtums sagen, indem wir über den Rechen gingen und eine unzählige Reihe erstaunlicher Entdeckungen begannen.
Jetzt bin ich an einem Punkt angelangt, an dem ich meine Gedanken über diesen Übergang bereits geordnet ausdrücken kann, welche Gruben und Rechen auf dem Weg zu erwarten sind. Ich hoffe, dass jemand, der vor der gleichen Wahl steht wie vor einigen Jahren, nützlich sein wird. Also mach weiter!
Über einen Rechen und Fehler des Anfängers
Als ich meinen Beruf wechselte, wusste ich nicht ein paar Dinge und machte einige Fehler, für die ich mit Nerven, schlaflosen Nächten und Geld bezahlen musste.
Erstens gibt es, wie ich denke, eine bestimmte Skala, auf der Sie einen Programmierer und wahrscheinlich auch eine Person definieren können. An einem Ende ist alles für ihn interessant, er möchte der gemeinsamen Sache helfen, am anderen Ende wird er sich ganz auf eine Sache konzentrieren, er wird jahrelang, jahrzehntelang einen Graben graben, und damit ist er (wahrscheinlich) einverstanden. Sowohl dort als auch dort gibt es Vor- und Nachteile sowie Fallstricke, die Sie kennen müssen. Ich selbst gehöre zum ersten Typ, dem "verrückten Tiger", damit ich mehr über ihn sprechen kann. Entscheidend ist jedoch, dass Sie so früh wie möglich verstehen, zu welchem Typ Sie gehören.
Wenn Sie eine Sache ausgraben möchten, ist es unwahrscheinlich, dass Sie Probleme haben, einen Job auf dem offenen Arbeitsmarkt zu finden. Engstirnige Spezialisten sammeln gleichzeitig schnellere und tiefere Erfahrungen auf ihrem Gebiet. Der Arbeitgeber kann Sie leichter aufnehmen, weil er das sogar weiß Sie haben einen Hund in einer Sache gefressen, die ihm sehr wichtig ist - zum Beispiel in der Optimierung der Animation von Schaltflächen in einem Browser auf einer Website. Aber nicht so einfach. Bei der Einstellung werden Sie natürlich sehr glücklich sein, aber während der Arbeit können Schwierigkeiten auftreten, da Kollegen sehr wahrscheinlich eine Beteiligung am gesamten Produkt und seinem gesamten technologischen Stack erwarten. Hilfsbereitschaft, auch über den Rahmen ihrer direkten Pflichten hinaus - ohne eine bestimmte TK zu arbeiten, mit einem Lebensmittelgeschäft zu stürmen, mit einem Geldgeber in seiner Sprache zu sprechen usw. Und hier wird es wahrscheinlich bis zu einem Ort sein. Sie werden höchstwahrscheinlich nicht erzogen, und Sie selbst werden es nicht wollen. So wie ich es verstehe, wechseln diejenigen, die am Rande dieser Skala sitzen, ein oder zwei Mal im Jahr den Arbeitsplatz, um die Löhne zu indizieren. Denn dies ist im Grunde der einzige Weg, wenn Sie im Büro arbeiten. Der zweite Weg ist die freiberufliche Tätigkeit mit Zugang zu stärker entwickelten Märkten. Wenn Sie jedoch wirklich viel Geld benötigen, müssen Sie Ihr Arsenal an Fähigkeiten erweitern.
Wenn Sie eher bereit sind, Kollegen zu helfen, machen Sie sich bereit. Sobald Sie genug (für die erste Einstellung) haben, um eines zu lernen, werden Sie mit Ihrer Entscheidung, zum ersten Mal auf den Markt zu kommen, von Stapel zu Stapel von Technologie zu Technologie gewickelt. Sie befinden sich in der Rolle eines Entwicklers, eines Projektmanagers, eines Produktdesigners (nicht desjenigen, der zeichnet), eines Architekten und des Teufels, der weiß, wer sonst noch. Sie werden eine sehr abwechslungsreiche Erfahrung sammeln und etwas zu erzählen haben. Und wenn Sie in ein gutes, vielseitiges Team mit einem großartigen, interessanten Produkt eintreten, dann behalten Sie mich sieben. Das Problem ist, dass Projekte enden, Unternehmen bankrott gehen, Chefs sich lächerlich machen und Sie hier ohne Arbeit sind, einen offenen Arbeitsmarkt haben und ihn nicht brauchen, er braucht zuverlässige, enge Spezialisten. Alle Türen werden geschlossen. Nun, selbst wenn Sie alle technischen Interviews in einer Spezialisierung durchgehen, werden Sie feststellen, dass Sie die Knöpfe in den letzten Jahren nur sechs Monate poliert haben und einen Knopfpolierer benötigen. Und dann stellt sich heraus, dass Sie zum Hauptentwickler oder höher gehen müssen, aber ein Mist - sie nehmen es normalerweise nicht von der Straße. Ich weiß nur, wie ich eine persönliche Marke aufbauen kann. Es spielt keine Rolle, ob Sie in einem Büro oder im Rahmen von Verträgen arbeiten - tun Sie etwas. Referenzen helfen Ihnen übrigens nicht weiter. Bisher kenne ich zwei Möglichkeiten: Teilnahme an Branchenkonferenzen, Präsentation von Chic im Allgemeinen und Schreiben eines persönlichen Blogs. Alles, zumindest jeder Unsinn, aber im ersten Jahr ab dem Moment, in dem Sie zum ersten Mal eingestellt wurden, damit zu beginnen. Es ist wichtig.
Hier gibt es ja einen Widerspruch zum Arbeitsmarkt - sie wollen eine Sache bei der Einstellung sehen, aber dann wollen sie in einem Team mit einer anderen arbeiten.
Über Technologie und "Welche Sprache soll ich wählen?"
Hier haben wir wieder die Abstufungsskala. Nicht einmal ein maßstabsgetreuer, mehrdimensionaler Raum. Es gibt modische Technologien, über die auf Konferenzen oft gesprochen wird. Sie schreiben viel in Blogs und sozialen Netzwerken. Es gibt Technologien, die keine Konkurrenten haben, wie JavaScript und seine Variationen in Webbrowsern. Es gibt alte Dinosaurier, auf denen viele Dinge geschrieben sind, und dies muss unterstützt werden. Und zwischen diesen Punkten gibt es verschiedene Schnittpunkte in Form von Sonderfällen.
Wenn Sie sich entscheiden, müssen Sie sich entscheiden, und je früher, desto besser - um zu erkennen, dass Ihre gewählten Stapelbegrenzungen nicht sehr gut sind. Entscheide, was du willst - Zuverlässigkeit, Geld und eine gute Wissensbasis, oder ich weiß nicht einmal etwas anderes. Wenn das erste - es scheint mir besser, aus den Dinosauriern zu wählen, die noch leben und sich gut entwickeln. Da ich mich selbst mit dem Internet beschäftige, kann ich sagen, dass es zwei zuverlässige Technologien gibt. C # und Java. PHP-Entwickler mögen empört sein, aber ich schlage vor, diese Frage sozusagen dem Geschmack und der Farbe zu überlassen ... Die Besonderheit ist, dass Projekte nur dann lange ohne zusätzliche Schwierigkeiten leben und sich entwickeln können, wenn sie in ausgereiften Sprachen mit ausreichenden Werkzeugen zur Strukturierung des Codes geschrieben sind. Diesmal. Die zweite Wahl wird ein spezifischer Rahmen sein. .Net oder Spring oder etwas anderes ist möglich. Hier ist das Kriterium das folgende: Es sollte häufig gefunden werden, in großen Unternehmen und langlebigen Projekten verwendet werden, und im Idealfall sollte es bequem zu bearbeiten sein. Mit Spring Boot können Sie beispielsweise schnell Prototypen für Services erstellen und wichtige Dinge mit einer sehr ausgefeilten Architektur und vielen Funktionen schreiben, die das Unternehmen benötigt, und diese sofort bereitstellen.
Im Gegenteil, alles, was „modisch“ ist - in der Regel sehr jung, hat eine schwache oder naive Infrastruktur, aber die Community der Fans mit brennenden Augen ist bereit, Ihnen alles nur aus Freundlichkeit zu verkaufen. Das Problem bei all diesen neuen oder nicht weit verbreiteten Technologien ist, dass sie nicht über genügend vorgefertigte Tools verfügen. Sie müssen höchstwahrscheinlich einen Großteil der trivialen Funktionen selbst schreiben, z. B. die Autorisierung über soziale Netzwerke. Das ist eigentlich monströs. Ein Unternehmen möchte selten Geld für Fahrräder bezahlen. Und dann müssen Sie diesen Code noch pflegen. Beispiele? Für Python gibt es kein einziges vollwertiges Webframework (außer Django, mit ein paar Vorbehalten), mit dem Sie leben und nicht verrückt werden können, wenn Sie länger als ein oder zwei Jahre an einem Projekt arbeiten. Ihre Probleme beginnen sofort und sind ziemlich trivial, wie z. B. der zyklische Import von Modulen. Es tut mir leid, dass ich PHP umgangen habe, sie machen eine Menge Dinge, aber es gibt einen Punkt - ich habe nicht gehört, dass eines der großen Unternehmen es verwendet hat, und nicht eine stark überarbeitete Gabel wie Facebook.
Separate Linien sind eine Art Monopol. Swift für das Apple-Ökosystem, das selbst eigene Frameworks für die Anwendungsentwicklung erstellt. Google mit Android (übrigens auch Java / Kotlin). R Sprache und Entwicklungsumgebung für die Datenanalyse. JavaScript als einzige Programmiersprache, die in Browsern ausgeführt wird.
Mit Swift scheint alles klar zu sein. Es gibt nur wenige Programmierer, sie zahlen gut (Gerüchten zufolge), die Sprache entwickelt sich schnell, sie ist in Mode, aber sie unterscheidet sich vom Hype dadurch, dass sie abwärtskompatibel mit dem ObjC-Dinosaurier und allem ist, was seit vielen Jahren darauf geschrieben wurde. Apple steht ebenfalls dahinter und entwickelt schnell Plattform-Frameworks. Darüber hinaus kann es in andere Systeme kompiliert werden und scheint Abwärtskompatibilität mit C / C ++ zu versprechen. Wenn dies passiert, weiß ich nicht einmal ... es wird etwas oder sehr Gutes oder etwas anderes geben. Da in C / C ++ bereits so viel geschrieben wurde, dass Sie den Kopf drehen können, ist dies eine riesige Ressource.
Javascript Sprache als Sprache. Viele halten es für eine minderwertige Sprache. Er hat viele Probleme, das stimmt. Dies sind hauptsächlich Geburtsverletzungen, die im technischen Sinne kaum zu überwinden sind. Es kann für Serveranwendungen verwendet werden, aber ich würde diesen Pfad nicht empfehlen. NodeJS ist ein reiner Hype, über den sein Schöpfer selbst direkt sagte, dass bei seiner Entstehung grundlegende Fehler gemacht wurden. Für die Browserentwicklung würde ich empfehlen, das zu verwenden, was derzeit am häufigsten verwendet wird. Dies ist React in Verbindung mit Redux. Nur viel davon. Er wird überall gebraucht. Sie werden einen Job finden. Obwohl Sie nur im Browser sind, reicht ein Diener von einem Keramikgrill immer auf Filet aus, selbst wenn Sie voll gestapelt sind.
Als Ergebnis Ihre persönlichen Schlussfolgerungen
Wenn ich mich erneut auswählen würde, würde ich eine Menge Java / Spring + React nehmen. Natürlich ist Frühling dann jetzt nicht Frühling, und das Gleiche gilt für React, aber die Kriterien sind dieselben.
Was mich in diesem Stapel persönlich berührt. Es ist relativ einfach, an einen React-Kunden zu „verkaufen“. Es ist jedem bekannt, da es sich um einen Hype handelt, der gleichzeitig die Infrastruktur überwachsen hat und fest im Markt verankert ist, sodass er in ernsthaften Projekten eingesetzt werden kann. Gleichzeitig gibt es keine störenden Widersprüche in Bezug auf die Entwicklung und Zukunft der Browserprogrammierung - sie ist komponentenorientiert, die Community ist sich der reaktiven Programmierung bewusst, die jetzt ziemlich relevant ist, und nutzt sie. Neue Versionen von React brechen alten Code nicht ohne Warnungen, die Regeln für die Anwendungszusammensetzung ändern sich nicht dramatisch. Man kann nicht über Angular sagen, das seinen Ruf schon oft getrübt hat (ich hoffe jetzt ist alles in Ordnung und keine Stürme mehr). Nun, bis auf Vue ist alles andere besser, es überhaupt nicht zu berühren, scheint mir.
Java hingegen bietet ein riesiges Feld an vorgefertigten Lösungen, und fast jede „Wunschliste“ Ihres Kunden oder Arbeitgebers kann, wenn auch nicht einfach, aber zumindest nicht durch einen Zaun aus Krücken realisiert werden. Ich bin der festen Überzeugung, dass mit .Net und insbesondere der Entwicklung des plattformübergreifenden .Net Core alles genauso gut ist, aber ich persönlich mag C # nicht wirklich, nun, es hat sich herausgestellt.