Angenommen, Sie programmieren seit über 10 Jahren. Sie kennen viele Sprachen, von denen nur wenige sehr detailliert sind. Sie haben Architekturen für Lösungen entworfen, an größeren Projekten gearbeitet und sie geliefert. Sie haben Muster, Best Practices, effektive Kodierungsrichtlinien, Komponententests, Multithreading usw. studiert.
Und dann entwickeln Sie langsam das Gefühl, dass die meisten Bücher, die Sie lesen, immer weniger wertvolle Informationen pro 100 Seiten Text enthalten. Also geben sie abnehmende Renditen. Sie lernen immer noch, aber Sie verbessern sich nicht mehr sprunghaft.
Warum wird Lernen im Vergleich zu früher weniger produktiv?
Damals änderte es Ihre Denkweise, brachte Ihnen neue Dinge bei und erweiterte Ihren Horizont, der später entweder Ihren derzeitigen Beruf verbesserte oder es Ihnen ermöglichte, etwas Neues zu erfinden, zu verwalten oder zu bauen. Warum ist das nicht mehr der Fall?
Antworten:
Erstens gibt es trotz der Art und Weise, wie Ihre Frage formuliert ist, kein Ende des Studiums, insbesondere nicht in unserem Bereich, in dem neue Dinge schneller auftauchen, als Sie darüber lesen können. Abgesehen davon, wenn Sie sich verbessern möchten, gibt es die folgenden Kategorien, die ich in Betracht ziehen würde. Für den größten Nutzen / ROI sollten Sie natürlich etwas aus Ihrem schwächsten Bereich auswählen.
Grundlagenwissen
Obwohl man Programmiersprachen kennt und praktische Erfahrung hat, hat man oft (insbesondere selbst erlernte) Bereiche, in denen grundlegende grundlegende Probleme unvollständig bleiben. Denken Sie an Dinge wie Datenstrukturen, Algorithmen, Cache-Strategien, Hash-Funktionen, ...
Beachten Sie, dass dies auch die Grundlagen von Programmiersprachen umfasst - von Compilern, Optimierungstechniken und Typsystemen bis hin zu Kategorietheorien, Monaden und dergleichen.
Wenn Sie gut unterrichtet sind, wie Sie es bereits seit mehreren Jahren mit einem Universitätsabschluss getan haben, sind Sie wahrscheinlich bereits stark in dieser Kategorie (bei weitem nicht abgeschlossen, aber auf einer soliden Basis). Versuchen Sie ansonsten, ein paar Bücher in diesen Bereichen zu lesen, um herauszufinden, ob etwas, von dem Sie nicht einmal wussten, dass es in Ihrem Repertoire fehlt. Diese Kategorie lässt sich am einfachsten überschätzen.
Paradigmatisches Wissen
Ich bin immer wieder erstaunt, wenn Programmierer auftauchen, die sich für Besserwisser halten, sich aber mit anderen als den gängigen Paradigmen nicht auskennen. Wenn Sie der Meinung sind, dass die Objektorientierung das Ende ist, ist dies Ihre Kategorie für Verbesserungen. Wenn Sie der Meinung sind, dass es auch funktionale Programmierung gibt und vielleicht sogar von logischer Programmierung gehört hat, ist dies immer noch eine gute Wahl. Es gibt weitaus mehr Paradigmen, und das Lernen über sie hat den tiefgreifenden Effekt, dass Sie eine neue Sicht auf die Welt des Programmierens erhalten.
Vergessen Sie nicht: Es gibt häufig (eher philosophische) Argumente darüber, was als Paradigma angesehen werden kann oder nicht. Lass dich von diesen nicht ablenken. Ihr Ziel sollte es sein, Ihren Horizont zu erweitern, und das bedeutet, dass Sie etwas über diese Dinge lernen, ob jemand anderes X als eigenes Paradigma ansieht oder nicht, das macht keinen Unterschied.
Fachwissen
Der einfachste von allen - und der am wenigsten nützliche zugleich. Natürlich können Sie sich auf eine einzelne Technologie festlegen und alle Einzelheiten kennenlernen, aber Sie sollten bereit sein, den Preis zu zahlen. Technologien altern und dies in immer schneller werdendem Tempo. Das macht es fast zu einer Garantie dafür, dass die hier investierte Zeit einige Jahre später wertlos sein wird.
Auch das Problem der sinkenden Rendite scheint hier auf. Spezialist für etwas zu sein, bedeutet natürlich, dass Sie unzählige Stunden mit diesem engen Thema verbringen müssen, und daher wird es per Definition lange dauern, bis Sie etwas Neues lernen, und dieses Neue wird ein winziges kleines Puzzleteil sein die Meinung von niemandem zu etwas ändern.
Fachwissen
Sei es, weil es der Bereich Ihrer Arbeit ist oder einfach auf Ihrem persönlichen Interesse basiert, aber ein Experte für Informatik und ein bestimmter Bereich zu sein, ist sehr wertvoll und lohnend. Ich spreche hier nicht über Nebenbereiche von CS, wie Computergrafik oder KI. Beachten Sie stattdessen, dass Computer das Leben aller erfasst haben und dass jedes andere Feld Computern und einem Bereich unterworfen ist, in den Sie vordringen können.
Dieses fällt eindeutig in die Kategorie "außerhalb Ihres Fachgebiets", ist jedoch kein scharfes mathematisches "außerhalb", sondern vielmehr ein Anwendungsgebiet. Betrachten Sie die Medizin: Ich rate Ihnen nicht, Arzt zu werden. Es lohnt sich jedoch, die Grundlagen der Medizin zu erlernen, um Ihr vorhandenes Wissen über die Informatik auf die Probleme dieses Fachgebiets anzuwenden. Dies reicht von Visualisierungstechniken über Robotik bis hin zu Expertensystemen und einfachem Datenmanagement für Buchhaltung / Administration. Während Sie das alles schon einmal gemacht haben, kann es eine völlig neue Erfahrung werden, es in einer anderen Domäne zu machen.
Bedenken Sie jedoch, dass dies eine viel radikalere Änderung in Ihrer Richtung ist als die anderen Kategorien. Möglicherweise haben Sie in Ihrer täglichen Arbeit keinen Kontakt zu diesem Bereich, was es äußerst schwierig macht, sich durchzusetzen. Es kann sogar bedeuten, Jobs zu wechseln. Außerdem benötigen Sie eine Art Zertifizierung für Ihre neue Domain - schließlich sind Sie ein absoluter Neuling in dieser Domain und müssen sich gegen Absolventen interdisziplinärer Studien behaupten, die sich bereits auf den Weg gemacht haben, um Experten in dieser Nische zu werden.
Ergänzungswissen
Wie Mike Brown hinzufügte, gibt es auch den Wissensbereich, der in gewisser Weise Ihren aktuellen Job begleitet, aber nicht unbedingt erforderlich ist. Sie müssen kein Projektmanager sein, um sich mit Projektmanagement vertraut zu machen, aber wie üblich erhalten Sie durch zusätzliches Wissen einen besseren Einblick, wie die andere Seite tickt. Man könnte dies sogar so weit verallgemeinern, dass man sich auf Soft Skills konzentriert. Ich denke, jeder, der mit anderen Menschen an einem echten Projekt gearbeitet hat, kennt den Wert dieser.
quelle
Ich denke, dass sich Software ständig weiterentwickelt, und daher liegt der Schwerpunkt auf ständiger Verbesserung. Ich verstehe, woher Sie kommen. In letzter Zeit habe ich mich ähnlich gefühlt und verfolge jetzt ein MCSM in SQL Server.
Lerne die nächste neue Sprache oder das nächste Framework oder was gerade "heiß" ist. Jedes Jahr gibt es eine Technologie, ein Framework oder eine Sprache, die herauskommt oder eine kritische Masse erreicht, die zu einem eigenen Modewort wird. Ich kann mir einige davon in den letzten Jahren vorstellen: node.js, Ruby, jQuery. Dies wird sich wahrscheinlich auch auf Ihre Denkweise für andere Plattformen auswirken. Sehen Sie sich beispielsweise an, was ROR mit Java mit Grails angestellt hat.
Es gibt immer Raum für Verbesserungen. Ich halte es für sehr unwahrscheinlich, dass Sie ein Experte für alles sein können, und ich lese viel und lerne immer. Ich stimme dem zu, was Sie über das Erlernen immer weniger pro 100 Seiten sagen, aber dies ist zu erwarten, wenn Sie ein Fachexperte sind.
In Bezug auf das, was Sie tun können, sind hier einige Vorschläge:
Bleiben Sie auf dem Laufenden über die Veränderungen in der Community und darüber, worauf sich die Leute einlassen. Lernen Sie die neuen Stacks kennen, damit Sie sie bei Bedarf empfehlen können
Nehmen Sie an solchen Q & A-Sites teil, auf denen Sie Ihr Wissen an andere weitergeben können. Wenn Sie sich die Zeit nehmen, die Beiträge anderer Leute zu lesen, werden Sie wahrscheinlich etwas lernen und zumindest die Perspektiven sehen, die andere Menschen haben.
Wählen Sie ein Hobby, das in irgendeiner Beziehung zu Ihrer Arbeit steht. Es gibt viele Hobbys mit Crossover, Think AI, Lego Mindstorms, RaspPi usw.
Versuchen Sie nicht nur, Ihr Wissen zu vertiefen, sondern auch, die Tiefe zu erhöhen. Erfahren Sie beispielsweise, wie EF im Hintergrund funktioniert, damit Sie diese seltsamen Eckfälle diagnostizieren können, anstatt nur das Framework zu verwenden.
Verfolgen Sie die Zertifizierung auf höchstem Niveau, um zu beweisen, dass Sie sich auskennen
Persönlich erzähle ich Ihnen, was mich gerade in den Bann zieht. Ich lese 97 Dinge, die jeder Software-Architekt wissen sollte, und ich bin nur teilweise davon überzeugt, aber es werden viele weise Ratschläge ausgesprochen. Das Buch kann online unter dem von mir angegebenen Link gelesen werden.
In Bezug auf das Hobby, das ich letztendlich aufnahm, beschäftigte ich mich mit der Fahrzeugdiagnose (natürlich mit dem Computer), wodurch ich mein eigenes Auto vollständig pflegte. Ich genieße die Zeit, die ich mit meinen Händen verbringe.
quelle
Nach einem bestimmten Zeitpunkt haben Sie genug über ein bestimmtes Thema gelernt, um problemlos ad hoc neues Wissen zu erlangen. Wenn Sie das Gefühl haben, dass es nicht mehr viel zu lernen gibt, ist es an der Zeit, ergänzendes Wissen zu erwerben, das Ihr Primärwissen ergänzt.
Ich beschäftige mich mit UX und Grafikdesign, weil ich der Meinung bin, dass ich als Entwickler nicht nur elegante Strukturen im Code, sondern auch elegante Benutzeroberflächen für den Endbenutzer bereitstellen kann.
Weitere Themen, mit denen Sie sich befassen können, sind Projektmanagement, Geschäftsanalyse, Systemadministration und Softwareprozessverbesserung. Wenn Sie sich in einer bestimmten Domäne befinden, ist es möglicherweise sinnvoll, tiefer in diese Domäne einzutauchen. Zum Beispiel habe ich in letzter Zeit viel im Finanzdienstleistungssektor gearbeitet. Ich habe mich für Kurse über Coursera zum Thema Finanzmodellierung angemeldet, die mir helfen, mit meinen Kunden über deren Bedingungen zu sprechen.
Es gibt immer mehr zu lernen, man muss nur über den Tellerrand schauen.
quelle
Diese Frage besteht aus zwei Teilen: Warum ist es schwieriger zu lernen und was können Sie tun?
Der erste Teil ist ziemlich einfach - fortgeschrittenere Themen sind schwieriger. So schwierig es auch ist, das Programmieren zu erlernen, so schwierig ist es, Programme gut zu entwerfen, und noch schwieriger ist es, das Entwerfen großer Anwendungen zu erlernen. Tatsache ist, dass fortgeschrittene Themen schwieriger sind, sonst wären sie nicht fortgeschritten. Sie müssen mehr Zeit damit verbringen, sie zu lernen. mehr Zeit zum Üben, um sie zu meistern.
Was Sie tun können, scheinen Sie sich auf die technischen Aspekte eines leitenden Software-Ingenieurs zu konzentrieren. Sie können viel mehr tun, um Ihrem Team bei der Erstellung von Software zu helfen, als Sprachen und Frameworks zu lernen. Soft Skills, wie andere Entwickler Mentoring, Verhandeln Anforderungen, Projektmanagement, Programmgestaltung, die Vision in Verbindung steht, die Umsetzung Team Norm ... All diese wichtigen Dinge benötigt , um eine machen Team von Entwicklern wirksam zu machen , Software, nicht nur Sie.
quelle
Jedes Mal, wenn ich auf die Website Lambda The Ultimate gehe , kann ich wirklich nicht denken, dass ich alles auf dem Gebiet der Computerwissenschaften weiß.
LtU gibt Ihnen einen guten Ausgangspunkt für Paradigmen und theoretisches Wissen, das Sie noch lernen müssen.
"Je mehr du weißt, desto mehr weißt du, wie wenig du weißt."
quelle