
Damals, als ich gerade anfing, das Codieren zu lernen, vertraute ich den alten weisen Wieseln mit ihrem Mantra „Programmiersprachen spielen keine Rolle“. Ich war besessen von der Idee, eines Tages ein Entwickler zu werden, der einfach alles kann. Dieser Typ, der seine Erfahrung von einer Technologie auf eine andere überträgt und die Kleinigkeiten überschreitet. Aber diese Idee ist kläglich gescheitert.
Die Besessenheit, alles zu wissen
Ich lernte C # und .NET in verschiedenen Anwendungsdomänen (asp.net, wpf, xamarin), js / ts (reagieren / reduzieren, Knoten) und überzeugte mich davon, dass ich alles tun konnte, was ich wollte. Mein Denken war abstrahiert, ich war in mehreren Programmierparadigmen gleichzeitig effizient und ich hatte praktische Fähigkeiten in allen Aspekten des professionellen Software-Engineerings. Ich war bereit, diese 40-Jährigen mit ihrer Sucht nach einer einzigen Technologie lächerlich zu machen, die ihr halbes Leben damit verbracht hatten, zu ergründen, was ich in einer Woche verstehen konnte. Ich war kurz davor zu erklären, dass es für Idioten, die glücklich waren, für den Rest ihres Lebens den gleichen Job zu haben, tief in einen Wissensbereich vordrang, während ich von allem abstrahiert war.
Ich dachte, alles sei genau das Gleiche, also sah ich ein einheitliches Muster. Wenn mein Job das Codieren in einem lächerlichen Python beinhaltete, sagte ich: „Geben Sie mir etwas Zeit, um die Spezifikation schnell durchzulesen, und ich bin bereit, mit dieser Scheiße auf einer höheren Ebene zu arbeiten. Warum, welche Komplikationen könnte es wahrscheinlich geben, wie ich sie noch nie gesehen habe? ' Und so fiel ich dem Detail-Vernachlässigungskult zum Opfer. Lassen Sie Junioren mit den Details herumspielen und sehen, dass sie mit der Abstraktion inkompetent sind.
Ich habe einmal ein Design entwickelt, das auf abstrakten Klassen in TypeScript basiert, und wurde verspottet, weil es anscheinend niemand in TypeScript so macht. Ich habe mit Sicherheit so getan, als wären meine Kollegen hoffnungslose Idioten. Früher hat es geholfen, aber dieses Mal hatte ich einen schlechten Nachgeschmack.
Ihr Ruf als guter Entwickler kann Ihre Wissenslücken sowohl gegenüber Ihren Kollegen als auch gegenüber Ihnen selbst verschleiern. Sie kennen daher eine enorme Anzahl kritischer Besonderheiten nicht, können sie aber natürlich nicht sehen, gerade weil Sie nichts über sie wissen.
Dann begann meine schlechte Serie. Poof! Ich hatte keine Ahnung von den Arten von Indizes in SQL. Bam! Ich habe vergessen, wann ich einen statischen Konstruktor in C # aufrufen soll. Ups! Ich konnte IDisposable nicht korrekt implementieren, ohne es bei Google nachzuschlagen. Oh, und ich habe versucht, den Zustand einer Reaktionskomponente zu mutieren.
Ich vermutete dann, dass meine Abstraktion nicht wirklich funktionierte. Dass die Arten von Technologie, mit denen ich zu tun hatte, doch unterschiedlich waren und dass Details wichtig waren. Jedes technische Ökosystem hat seine eigenen Best Practices. Ihre .NET-Erfahrung wird bei der Arbeit mit jvm nicht schaden, kann sie jedoch nicht ersetzen. Meine selbstbewertete Fähigkeit, „gelernt zu haben, wie man lernt“, erwies sich als ein Spiel der Fantasie. Meine Lerngeschwindigkeit war nicht schneller als die anderer. Diese Erkenntnis kam viel zu spät.
Meine Fähigkeiten waren nur eine Tüte widersprüchlicher Ideen - ich wurde von hier und da mit ein bisschen Wissen auseinandergerissen. Ich wurde nicht automatisch ein hochrangiger Alleskönner. Stattdessen wurde ich ein vielseitiger Entwickler auf mittlerer Ebene, ein Gespött für 40 Senioren, die eine Technologie beherrschten. So wurde mir klar, dass die Wahl des Full-Stack-Pfades ein Fehler war.
Ich habe mich verprügelt
Das Problem ist, dass Unternehmen Full-Stack-Entwickler benötigen. Nein, nicht die Imitationen wie ich, sondern vielseitige Senioren, die Jungs, die fünf Jahre Erfahrung in jeder der Full-Stack-Technologien haben.
Diese Einhörner gibt es jedoch nicht, weshalb Unternehmen sich selbst täuschen. Sie nehmen einen mittelmäßigen mittelständischen Ingenieur, der sich auf drei große Technologien spezialisiert hat, und nennen ihn einen hochrangigen Full-Stack-Entwickler. Diese Berufsbezeichnung macht den Ingenieur zum Betrüger und dient als unerschöpfliche Quelle eines Minderwertigkeitskomplexes. Jeder gewöhnliche Entwickler, der sich auf nur eine Technologie konzentriert, weiß es besser. Jetzt kann ich zugeben, dass ich nicht bereit bin, gleichberechtigt mit Menschen zusammenzuarbeiten, die in etwas viel besser sind als ich. Sonst dauert es eine Woche, bis ich mich zu Tode geprügelt habe.
Selbstbeschuldigung ist eine große Krankheit in unserer Branche, aber wir heilen sie mit dem falschen Mittel. Wir tauschen Proklamationen darüber aus, wie wir Superhelden sind, die von Arschlöchern umgeben sind. Wir leugnen so etwas wie die Abwertung von Senioren, wir sagen immer wieder, wir unterschätzen uns selbst, wir müssen nur unsere Demut wegwerfen und an unsere interne Göttin der Softwareentwicklung glauben. Wir denken, wir müssen den Arroganzhut aufsetzen und jedem den Finger geben, der zu wenig Vertrauen in uns hat.
Nun, wir müssen nur anerkennen, dass die Entwicklung nicht nur für Außenstehende, sondern auch für uns schwierig ist. Es ist in Ordnung, zu einem bestimmten Zeitpunkt nichts zu wissen. Wenn Sie eine Lücke haben, bedeutet dies nicht, dass Sie weniger wert sind und aus der Community ausgeschlossen werden müssen.
Aber irgendwo auf der tiefsten Ebene der Selbstreflexion schlagen wir uns immer noch zusammen. Full-Stack-Entwickler verfluchen sich dafür, dass sie keine tiefen technologischen Kenntnisse haben. Einzeldisziplin-Experten beklagen, dass sie nicht über ein breites Spektrum an Fähigkeiten verfügen.
Lernen in der Breite vs. Lernen in der Tiefe
Hier haben wir das gleiche alte Dilemma: Sie können entweder in der Breite oder in der Tiefe lernen, aber nicht beide gleichzeitig. Ich habe einen interessanten Nebeneffekt bemerkt: Wenn Sie anfangen, eine neue Technologie zu lernen, scheint die alte weniger interessant zu sein. Wenn Sie jedoch in der IT-Welt Ihr technologisches Wissen nicht innerhalb eines Jahres auffrischen, sind Sie veraltet.
Wenn Sie weiterhin ein Full-Stack-Entwickler sein möchten, müssen Sie die Versionshinweise von TypeScript durchlesen und all dies beim Lesen testen, auch wenn Sie keine Lust dazu haben. Trotzdem sind Sie meilenweit von einem Entwickler entfernt, der jeden Tag speziell in TypeScript codiert.
Das Hauptproblem dieses Konflikts ist, dass wir keine Ahnung haben, was am besten ist. Wir und insbesondere Unternehmen wollen es in beide Richtungen. Jeder hat die richtigen, tiefgreifenden Fähigkeiten.
Ich weiß nicht, was am besten ist, aber ich weiß, wie es sich vom Standpunkt eines Full-Stack-Entwicklers anfühlt. Sie werden viel mehr Zeit mit Lernen verbringen als mit einsprachigen Entwicklern. Dies wird so lange so bleiben, wie Ihre Karriere dauert, und dennoch wird es Ihnen an Kompetenz mangeln.
Sie werden überall willkommen sein, aber nirgendwo wirklich zu Hause. Trotz Ihrer enormen Anstrengungen wird jeder Guru des nächsten großen Dings vor dem Mund schäumen und behaupten, dass Sie es nicht wert sind, als Senior bezeichnet zu werden.
Sie werden für immer auf mittlerem Niveau stecken bleiben.
Ich jedenfalls beschloss, auf meinem Weg zu bleiben. Ich könnte versuchen, etwas wirklich gründliches zu lernen, ich könnte mich für das Management weiterbilden (der Bereich, in dem oberflächliches Wissen ein Industriestandard ist), aber ich werde lieber so bleiben, wie ich bin, und Leiden ertragen, bis ich wirklich alles über irgendetwas lerne.