Ich habe mir zum Ziel gesetzt, nächstes Jahr um diese Zeit ein anständiger Entwickler zu werden. Damit meine ich die volle Erfahrung mit dem Entwicklungslebenszyklus, ein paar guten Apps / Sites / Webapps, und vor allem die Fähigkeit, in einem konstanten Tempo zu arbeiten, ohne stundenlang durch einige, die dies bereits wissen sollten, außer Gefecht gesetzt zu werden Technik.
Ich fange nicht bei Null an. Ich habe viel HTML / CSS, SQL, Javascript, Python und VB.net geschrieben und andere Sprachen wie C und Java studiert. Ich kenne mich mit Dingen wie OOP, Entwurfsmustern, TDD, Komplexität, Computerlinguistik, Hinweisen / Referenzen, funktionaler Programmierung und anderen akademischen / theoretischen Angelegenheiten aus. Ich kann nur noch nicht sagen, dass ich diese Dinge wirklich getan habe .
Also möchte ich auf dem Laufenden bleiben und wissen, welche Dinge ich bis zu einem späteren Zeitpunkt zurücklassen kann. Zum Beispiel ist es interessant, Algorithmen und die Mathematik dahinter zu studieren, aber bisher brauchte ich kaum etwas anderes als die grundlegendsten verschachtelten Schleifen zu schreiben. Es wäre cool, die Versammlung zu untersuchen, um ein klareres Bild von Operationen auf niedriger Ebene zu erhalten ... aber ich stelle mir vor, dass die tägliche Arbeit selten verletzt wird. Ein Blick auf eine funktionierende Programmiersprache kann mir andererseits helfen, Programme zu schreiben, die verständlicher und weniger anfällig für versteckte Fehler sind (im Moment stelle ich fest, dass die größte Schwierigkeit darin besteht, dass die Komplexität der App meine Fähigkeit zum Verstehen übersteigt - Zum Beispiel war das Weitergeben von Daten in Ordnung ... bis ich mit AJAX anfangen musste, was ein schmerzhafter Schritt war).
Ich bin ein Programmierer mit grundlegenden Fähigkeiten - auf welche Fähigkeiten sollte ich mich konzentrieren, um sie zu entwickeln?
(Auch meine Unix-Kenntnisse sind sehr schwach und ich kenne mich nicht mit der Windows-Konfiguration aus. Ich bin mir nicht sicher, wie viel Zeit ich dafür aufwenden soll.)
Antworten:
Dies sind Vorschläge, die nicht auf dem basieren, was ich getan habe, sondern auf dem, was ich im Nachhinein hätte tun sollen:
Eigentlich können Sie alles überspringen, wenn Sie Ihrer Lernfähigkeit vertrauen. Ich denke, dass das, was Sie wissen möchten, mit einer Frage wie der folgenden besser bedient worden wäre:
Denken Sie daran, dass gute Entwickler über alles Bescheid wissen, denn beim Computing geht es selten um das Computing selbst, sondern vielmehr darum, es auf alle Bereiche des menschlichen Lebens anzuwenden, sei es theoretische Physik, Erhaltung des Ökosystems oder fotografische Effekte in The Matrix .
Zuletzt informieren Sie sich über Design, Abstraktion, Algorithmen und Komplexität. Ich, die Programmierer, die mich unterrichtet haben, und die Programmierer, die ich respektiere, werden Ihnen danken und Sie dafür schätzen. Wenn Sie Zeit zum Lernen haben, würde ich empfehlen, die erste Ausgabe von Code Complete zu lesen .
quelle
Wählen Sie eine Haustieranwendung. Dies sollte etwas sein, das sehr einfach beginnen kann, aber eine gewisse Komplexität aufweist, wenn Sie tiefer graben. Es sollte auch etwas sein, das Sie interessiert, weil Sie viel Zeit damit verbringen werden. Stellen Sie auch sicher, dass es etwas tut. Versuchen Sie jetzt nicht, ein Framework oder einen Webservice zu schreiben. Nur eine normale benutzergesteuerte App.
Laden Sie git, mercurial oder bazaar herunter und erfahren Sie, wie Sie mit ihnen ein Repository erstellen (ganz einfach).
Implementieren Sie jetzt Ihr Lieblingsprojekt mit einer beliebigen Technologie, die Sie nach besten Kräften einsetzen. Geben Sie sich eine Frist, damit Sie sicherstellen können, dass alles erledigt wird. Verwenden Sie das von Ihnen vorgenommene Quellcodeverwaltungs-Repository, um Änderungen nachzuverfolgen. Machen Sie sich keine Sorgen über Zweige und ähnliches, stellen Sie nur sicher, dass Sie in der Lage sind, Fehler zu vermeiden.
Wenn Sie Ihre App fertig geschrieben haben, beschriften Sie sie. Das ist deine V1. Holen Michael Feathers' Effektiv arbeiten mit Legacy - Code , Bob Martin Agile Software Development Principles, Patterns und Practices und Clean Code , und Andrew Hunt und David Thomas' The Pragmatische Programmierer . Fühlen Sie sich frei, sie in beliebiger Reihenfolge zu lesen, auch zwischen ihnen herumzuspringen. Viele der Ideen wiederholen sich, aber sie stärken auch Ihr Verständnis, weil sie aus verschiedenen Perspektiven präsentiert werden. (Wahrscheinlich möchten Sie das GoF Design Patterns- Buch als Referenz mitnehmen. )
Versuchen Sie beim Lesen der Bücher, das Gelernte anzuwenden, um Ihr Projekt zu verbessern. Stellen Sie sicher, dass Sie Ihre Quellcodeverwaltung als Journal für die von Ihnen vorgenommenen Änderungen verwenden.
Wenn Sie es richtig gemacht haben, sollten Sie eine Reihe guter Fähigkeiten erlernt haben: Refactoring, testgetriebenes Design, Verbesserung des vorhandenen Codes und wie (und wann) Sie Entwurfsmuster anwenden (unter anderem).
Idealerweise hätten Sie einen Mentor, der Ihnen hilft, Ihre Fortschritte zu messen. Bei Interesse können Sie sich an mich wenden (firstinitiallastname bei kharasoft dot net), und ich helfe Ihnen mit einem Plan und einer Überprüfung.
Herzlichen Glückwunsch zum Ergreifen der Initiative, um Ihre Karriere voranzutreiben! Viele Belohnungen werden davon kommen.
quelle
Sie kennen das Geheimnis eines guten Entwicklers?
Sie wissen nicht alles, aber Sie wissen, was Sie nicht wissen und wo Sie weitere Informationen darüber finden, was Sie nicht wissen, wenn Sie es benötigen.
Der Versuch, das Unmögliche zu erreichen, führt nur zu Angstzuständen, Schlaflosigkeit und zum Verlust des Selbstvertrauens.
quelle
Ich denke, die Antwort wird für jeden Entwickler unterschiedlich sein, je nachdem, worauf er sich spezialisieren möchte. Ich empfehle den folgenden Algorithmus, um eine gute Antwort für sich selbst zu finden:
Wählen Sie ein einfaches Projekt aus, das eine Fertigkeit verwendet, die Sie lernen möchten.
Implementiere es und konzentriere dich auf diese Fertigkeit.
Beachten Sie, was Ihnen an dem Projekt gefällt und was Ihnen nicht gefällt.
Fragen Sie sich, was Sie an dem Projekt interessiert: "Könnte ich mich darauf spezialisieren, dass es mir Spaß macht, oder hängt es mit etwas zusammen, auf das ich mich spezialisieren und das mir Spaß macht?"
ein. Wenn ja, denken Sie an andere Fähigkeiten, die mit dieser Spezialisierung zusammenhängen, und schreiben Sie sie auf.
b. Wenn nicht, klopfen Sie sich auf den Rücken, stellen Sie fest, dass Sie gut darin sind, und fahren Sie fort.
Fragen Sie sich, was Ihnen an dem Projekt nicht gefallen hat: "Ist dies etwas, das ich tun sollte (oder wissen möchte, wie es zu tun ist), oder ist dies ein Aspekt der Entwicklung, den ich könnte und möchte? allgemein anderen überlassen? "
ein. Wenn Sie der Meinung sind, dass Sie wissen möchten oder sollten, wie es geht, fügen Sie es der in Schritt 4a gestarteten Liste hinzu. b. Wenn du denkst, du könntest diesen Aspekt anderen überlassen, melancholisch über deine Grenzen als Mensch seufzen, ihn als Schwäche wahrnehmen und weitermachen.
Wählen Sie aus der Liste der Dinge, auf die Sie sich spezialisieren könnten, und der Dinge, die Sie aus 4a und 5a wissen sollten, eine Fertigkeit aus. Wählen Sie, was Ihrer Meinung nach am wichtigsten ist, um Ihre Programmierung dem näher zu bringen, was Sie möchten.
Brainstorming von einfachen Projekten, die Sie mit dieser Fähigkeit durchführen können. Wählen Sie eine, möglicherweise ein Projekt, mit dem Sie eine andere Fertigkeit üben können, die ebenfalls ganz oben auf der Liste steht, damit Sie zwei Fliegen mit einer Klappe schlagen können (obwohl n / 2 die gleiche Komplexität wie n hat, ist dies dennoch schneller).
Kehren Sie mit diesem Projekt zu Schritt 2 zurück.
Wiederholen Sie diese Schleife für den Rest Ihres Lebens oder bis Sie nicht länger ein guter Programmierer sein möchten (hey, wenn Sie das Programmieren beenden möchten, um hungrige Waisen zu ernähren, werde ich Sie nicht aufhalten!).
Ich habe mich auf Tests und n-Tier-Webanwendungen spezialisiert. Mein nächstes Projekt wird TDD und vielleicht ASP .NET MVC 2 sein. TDD soll meine Teststärke fördern (ich bin ein SDET, daher würde TDD mir nur einen Einblick in das Testen von Einheiten geben, was ich normalerweise nur mache auf meinen Testwerkzeugen) und auch bei einer Schwäche im guten Design zu helfen (hoffe ich), und MVC ist, bei meiner Schwäche im Front-End-Design zu helfen. Meine Liste enthält Dinge wie Leistungstests, Websicherheit und die Zusammenarbeit mit einem Webdesigner, um eine gute (und gut aussehende) Website zu erstellen.
Ein weiterer Rat, den ich schon früh erhalten habe und der sich als sehr nützlich erwiesen hat: Spezialisierungen können entweder umfassend oder tiefgreifend sein. Mit anderen Worten, ein bisschen von allem zu probieren, ist eine Art Spezialisierung. Denken Sie daran, wenn Sie herausfinden möchten, was Ihre Spezialisierung sein soll.
Tut mir leid, wenn Sie etwas Schnittiges wollten. Ich glaube nicht, dass die Frage eine solche Antwort hat.
quelle
Ich programmiere seit Jahren ein und aus (seit ich 7 war - ich bin jetzt in meinen späten 30ern).
Wenn ich in Ihrer Position wäre, würde ich dringend empfehlen - aber was ich in den meisten anderen Antworten nicht sehe, ist, mindestens einen anderen Programmierer zu finden, mit dem ich ZUSAMMEN an einem definierten Projekt arbeiten kann.
Lesen Sie dabei etwas über Agile Programmierung - SCRUM usw. und arbeiten Sie agil und testgetrieben. Arbeiten Sie zusammen - aber lassen Sie nicht zu, dass einer von Ihnen den größten Teil des Codes schreibt - und arbeiten Sie wirklich als Entwicklerpaar daran.
Und während Sie Ihre eigene Version von allem schreiben, kann dies informativ sein - die allerbesten Entwickler, die ich kenne, sind Meister darin, das Schreiben von Code zu vermeiden, AUSSER für das, was sie unbedingt selbst tun müssen - dh den Kern dessen, was an ihrem Projekt einzigartig ist.
In der restlichen Zeit wird der Code weitgehend wiederverwendet. Rufen Sie APIs auf, verwenden Sie Open Source-Projekte (sofern zutreffend) und vermeiden Sie es, das Rad (oder die Datenzugriffsschichten usw.) nur zu diesem Zweck neu zu erfinden.
Dabei werden sie - insbesondere bei Open Source-Projekten - auch einen Beitrag zu diesen Projekten leisten - den Code lesen, bereinigen, Fehler beheben, Erweiterungen beisteuern usw.
Bei der Entwicklung in der realen Welt geht es normalerweise darum, als Teil eines Teams zu arbeiten. Deshalb möchte ich Sie ausdrücklich dazu ermutigen, dies zu tun. Wenn Sie keine anderen Programmierer kennen, die mit Ihnen an einem bestimmten Projekt arbeiten möchten, empfehlen wir Ihnen, einen Blick auf die 1000 Open Source-Projekte zu werfen und eines oder mehrere auszuwählen, an denen Sie sich aktiv beteiligen können kratzen Sie ein persönliches "Jucken" - und sehr wahrscheinlich werden Sie ein Projekt finden, an dem Sie mitwirken können, und andere Entwickler finden, mit denen Sie arbeiten können.
Und persönlich würde ich den Rat, dass Ihre Einstellung "Überspringen, was ich kann", eine schlechte ist - wenn ich Entwickler anstelle, möchte ich Entwickler, die nicht versuchen, alles selbst zu tun. Ich bevorzuge Entwickler, deren erster Instinkt es nicht ist, es selbst zu schreiben, sondern Entwickler, deren erster Instinkt es ist, zu sehen, wie sie die Geschäftsanforderungen und -anforderungen erfüllen können, ohne Code zu schreiben (und dann den minimal benötigten Code zu schreiben).
Während Sie gleichzeitig die Geschäftsanforderungen testen und im Auge behalten - und ja, manchmal zeigt sich, dass Sie tatsächlich Code neu schreiben oder ihn selbst schreiben müssen (manchmal können Sie dies dann zur Verbesserung eines Projekts beitragen).
quelle
Es ist einfach eine Frage des Lesens und Lernens, wenn Sie es brauchen.
Wenn Sie irgendwo hängen bleiben oder das Gefühl haben, dass "meiner Lösung etwas fehlt" - dann sollten Sie sich etwas Zeit nehmen, um mehr darüber zu erfahren!
quelle
Der Versuch, Teile zum Überspringen zu finden, ist nicht die beste Einstellung.
Abgesehen davon können Sie sich auf bestimmte Bereiche konzentrieren, sobald Sie eine Vorstellung davon haben, welche Teile des Seins ein Entwickler sind, den Sie bevorzugen.
Vielleicht bleiben Sie bei der Webentwicklung, zum Nachteil von Windows Dev zum Beispiel.
Ich mag es, ein Alleskönner zu sein, weil es mich nützlicher macht.
quelle
In einem Jahr werden Sie wahrscheinlich nicht "ein paar gute Apps / Websites / Webapps" fertig haben, besonders in einer steilen Lernkurve. Das einzige, was Sie lernen werden, ist Burnout.
Konzentrieren Sie sich stattdessen auf eine, die Sie interessiert, und verwenden Sie diese als Ihr Lernwerkzeug. Sorgen Sie sich nicht um die Qualität der Produktion (das wird es nicht sein), sondern verwenden Sie sie als Sandbox, zu der Sie immer wieder zurückkehren können.
Zum Beispiel interessiere ich mich für Fantasy-Baseball. Im Laufe der Jahre habe ich viele Dinge entwickelt, die damit zu tun haben, angefangen von einem Bildschirm-Scraping-Roboter über eine reine HTML-Website bis hin zu einer vollständigen Web-App mit einer skalierbaren SQL Server-Datenbank, die ... Mein nächstes Lieblingsprojekt könnte eine Echtzeit-Silverlight-App sein, mit der die Jungs sich an einen virtuellen Tisch setzen können, um den Entwurf zu erstellen.
Keines dieser Dinge ist außerhalb meiner Welt so nützlich. Jeder von ihnen hat mir jedoch geholfen, ein besserer Programmierer zu werden und Technologien außerhalb meiner Komfortzone zu erlernen.
quelle
Machen Sie sich keine Gedanken darüber, in welcher Sprache Sie mit dem Programmieren beginnen sollen.
Wählen Sie einfach eine Sprache und fahren Sie fort.
Verbringen Sie Ihre Zeit damit, die Details der API zu lernen.
Hier ist der Grund:
Joel Spolsky, "Lord Palmerston über Programmierung" http://www.joelonsoftware.com/articles/LordPalmerston.html
quelle
Ich würde mir nicht allzu viele Sorgen um das "sollte-das-schon-wissen" -Syndrom machen. In dieser Branche lernt man immer etwas Neues. Ein- oder zweimal im Jahr sendet mir mein Chef einen Link zu einem Dokument mit 200 bis 300 Seiten für ein Kommunikationsprotokoll oder eine integrierte Schaltung oder so etwas und beauftragt mich, der Resident Expert für dessen Inhalt zu werden. Niemand erwartet von Ihnen, dass Sie zu einem Punkt kommen, an dem Sie mit dem Lernen "fertig" sind.
Wenn es um den Entwicklungsprozess geht, nehmen Sie das einfach so, wie es kommt. Sie werden nicht wirklich wissen, was am nützlichsten ist, bis Sie es ein oder zweimal falsch machen. Bewerten Sie Ihre Leistung und verbessern Sie sie beim nächsten Mal.
Zum Beispiel hatte ich letztes Jahr viele Probleme mit der Build-Instabilität. Ich hatte Angst vor einem Update aus der Quellcodeverwaltung, weil es mir so vorkam, als würde ich einen halben Tag damit verbringen, alles erneut zu kompilieren. Wenn ich jedoch zu lange zwischen den Aktualisierungen gewartet hätte, wäre die Zusammenführung am Ende fürchterlich. Ich habe auch gelegentlich dringende Fehler, bei denen ich die Aktualisierung nicht verschieben kann und die es schwierig machten, Teiländerungen zu verfolgen, die ich bereits für neue Funktionen vorgenommen hatte.
Nun, meine Firma arbeitet daran, das im Allgemeinen zu korrigieren, aber ich brauchte etwas, das ich in der Zwischenzeit für mich selbst verwenden konnte. Ich habe einige Untersuchungen zur Build-Stabilität durchgeführt, die verteilte Versionskontrolle entdeckt, mit einigen Verzweigungsmodellen experimentiert und habe jetzt ein sehr funktionsfähiges Hybridsystem, das lokal mehrere Basarzweige und die zentralisierte Quellcodeverwaltung meines Unternehmens verwendet, wenn ich sie freigeben muss.
Mein Punkt ist, wenn Sie mich vor zwei Jahren gefragt hätten, was ich als nächstes über Software-Tools und -Prozesse erfahren soll, hätte ich es Ihnen nicht sagen können. Wenn Sie keine ähnliche Arbeitsumgebung haben wie ich, ist eine hybride Quellcodeverwaltung nur eine zusätzliche Komplexität, die keinen nennenswerten Nutzen bringt. Sie hat jedoch meine persönliche Produktivität und meine geistige Gesundheit enorm verbessert.
Als nächstes arbeite ich an meinen Schätzfähigkeiten, aber ich habe keine Ahnung, was danach kommt, und ich weiß mit Sicherheit nicht, was ein Fremder im Internet in einem Jahr am nützlichsten finden wird. Das können nur Sie beantworten.
quelle
Ich möchte hier zwei Punkte teilen:
GURU
. Sie müssen immer weiter lernen und diese Tatsache im Voraus akzeptieren und weiter lernen.quelle
Es ist egal, was du tust, solange du dabei bleibst und lernst, es gut zu machen .
Alle Ideen, die Sie veröffentlicht haben, sind gut zu wissen und werden Ihnen helfen. Welches interessiert dich am meisten? Sie haben erwähnt, dass Ihre Unix-Kenntnisse schwach sind. Haben Sie darüber nachgedacht, Linux auf Ihrem Computer zu installieren? Die Kenntnis von C würde bereits helfen, da Sie sich beim Programmieren von Unix-Systemen die Füße nass machen könnten, ohne den zusätzlichen Stress zu haben, eine neue Sprache zu lernen. Dies könnte auch eine Gelegenheit sein, sich über Gerätetreiber zu informieren, falls dies Sie interessiert.
Ich würde Ihnen wärmstens empfehlen, irgendwann in Ihrer Entwicklerausbildung die Montage- und Funktionsprinzipien zu erlernen. Beides hat sich für mich in meiner "normalen" Rolle als Java-Programmierer als äußerst nützlich erwiesen. Ich habe Lisp und Prolog gelernt. Persönlich bevorzuge ich Lisp, aber das ist Ansichtssache. Assembly lehrt Sie, darüber nachzudenken, wie der Computer Ihr Programm sieht, und ich denke, das ist wichtig, damit jeder Programmierer lernt. Die funktionale Programmierung lehrt Sie, deterministischer zu denken, was mir in meinem Fall geholfen hat, prüfbareren Code zu schreiben, und das ist threadsicher.
Suchen Sie sich also etwas aus, das Ihnen gefällt, und verbringen Sie ein paar Monate damit. Sie werden der Bessere sein und es könnte sich als Sprungbrett für das nächste Projekt in Ihrer Selbsterziehung erweisen. Oh ja, und was auch immer Sie tun, hören Sie nicht auf zu lernen. Sobald Sie dies tun, fangen Sie an zu stagnieren.
quelle
Hören Sie auf, in einem Jahr zu lernen, ein anständiger Entwickler zu sein. Lerne in 10 Jahren, ein guter Entwickler zu sein.
Aus dem verlinkten Artikel:
In einem Jahr werden Sie immer noch ein Glücksspiel sein. Daran können Sie nichts ändern. Gute Unternehmen betrachten Junioren als Investition. Was sie suchen, ist keine gute aktuelle Fähigkeit, sondern potenzielle Fähigkeit, ein gutes Verständnis der Grundlagen und Begeisterung. Sie müssen diese Eigenschaften in einem Interview vermitteln, um einen Einstiegsjob zu bekommen.
Wie viel programmierst du in deiner Freizeit? Dies ist wahrscheinlich der Schlüsselfaktor, um einen potenziellen Arbeitgeber davon zu überzeugen, dass Sie sich schnell verbessern werden. Welche Projekte haben Sie abgeschlossen ? Abgeschlossene Projekte zeigen Engagement.
Ich war nur bei 2 verschiedenen Unternehmen beschäftigt, aber jedes hatte seine eigene interne Technologie, die ich lernen musste, bevor ich produktiv sein konnte. Diese anfängliche Beule wird nicht viel mit der Erfahrung, die Sie haben, verringern. Gute Arbeitgeber erwarten eine erste Lernphase.
Hör auf, dir Sorgen zu machen und mach dich ans Programm. : D
quelle
Ich möchte Ihnen nur meine Schritte zu inspirierenden Lesungen und meine wichtigsten Momente bis jetzt geben.
Es gab einige "WOW" -Momente in meiner Software-Karriere. Sie gingen wie folgt vor:
Head First Design Patterns - Dies hat mir wirklich die Welt von OOP / OOD eröffnet, ein absolutes Muss.
Robert C. Martin - Clean Code - Ich habe tagelang nicht geschlafen, vor Aufregung! So einfach es ist, Junge, hatte ich vergessen, was es bedeutete, sauberen Code zu haben, und das brachte mich gleich wieder auf die Strecke.
Robert C. Martin - Agile Muster und Praktiken - Ich lebe jetzt meine Karriere als Programmierer basierend auf diesen Prinzipien. Das Wort SOLID geht mir für jeden einzelnen Code durch den Kopf. Dies in Kombination mit Clean Code hat mich so sehr beeindruckt, dass ich meinen damaligen Arbeitgeber davon überzeugt habe, es dem gesamten Unternehmen von rund 15 Entwicklern beibringen zu lassen. Ich war nicht einmal ein Senior, gut in Präsentationen, aber meine Begeisterung machte es möglich.
Mein letzter "WOW" Moment war die Entdeckung von TDD. Ich teilte meine Erkenntnis mit 2 anderen engen Freunden, die ebenfalls den gleichen "WOW" -Effekt hatten. Wir waren alle begeistert und üben jetzt so viel wie möglich und diskutieren immer, wie wichtig es ist, im Software Development Life Cycle zu testen.
Ein letzter Punkt von mir, der mir sehr am Herzen liegt, ist, dass Sie, wenn Sie jemals ein grundlegendes Verständnis für eine Technologie wie einen Skript-Parser, eine REST-Bibliothek, ein Test-Framework usw. haben möchten, eines schreiben! Nur zum Spaß! Sie werden es nicht nur genießen, aber ich habe festgestellt, dass der Versuch, die Dinge zu schreiben, die ich noch nicht vollständig verstehe, mir viel mehr Respekt und ein viel tieferes Verständnis dafür gibt und mich dazu zwingt, es gründlich zu verstehen.
Entschuldigung, mir ist gerade aufgefallen, wie sehr ich von der Frage abgewichen bin. Was ich oben erwähnt habe, war mein absoluter Kern. Keines der oben genannten Materialien hat mich verlassen und mir ein so starkes abstraktes Denken vermittelt, dass das Lernen in der Tat umfassender und einfacher geworden ist. Versuchen Sie daher, bei der Beantwortung Ihrer Frage die Kernprinzipien des Codeschreibens und des Softwaredesigns nicht zu überspringen. Andere spezifische Tools zur Lösung spezifischer Probleme sind nicht so wichtig.
quelle
Lernen und Anhäufen von Wissen ist wie das Bauen eines Gebäudes, jeder Baustein liegt auf einem anderen, sie verlassen sich auf ihre Fundamente.
Wenn Sie anfangen, Dinge zu überspringen, stürzen Sie sich durch, und Sie erhalten wackelige Fakten, die von der Luft unterstützt werden. Du wagst es nicht, sie zu benutzen, aus Angst, sie könnten durchfallen, und sie würden es tun. Tatsachen können falsch sein, wenn sie nicht mit der Vernunft verbunden sind, da Sie ihre Grenzen kennen müssen.
Ich mache mir besonders Sorgen, dass Sie die Grundlagen, die Mathematik, die Algorithmen und ihre Verwandten überspringen möchten. Ohne ein sicheres Verständnis werden Sie nie in der Lage sein, "etwas anderes als die grundlegendsten verschachtelten Schleifen" auszuführen .
Seien Sie nicht in Eile, die Arbeit ist für immer da, die Zeit für ununterbrochenes Lernen ist es nicht. Erfahren Sie alles, was Sie können, und lassen Sie in der Reihenfolge, in der Sie es benötigen, keine Lücke offen.
quelle
Wie Jeff O vorschlägt, hört man nie auf zu lernen, wenn man ein guter Programmierer sein will.
Man muss sich darüber im Klaren sein, dass es so viel zu lernen gibt, das nur mit dem Programmieren zu tun hat. Wenn man alles wissen und gut darin sein möchte, würde man Millionen von Jahren dort sein. Konzentrieren Sie sich also nur darauf, was Ihr Leben gut machen wird. Egal, ob es sich um puren Genuss, Geld, wissenschaftliche Bemühungen oder eine Mischung aus verschiedenen Gründen handelt, Sie haben die Wahl, in was Sie Ihre Zeit und Ihren Schlaf investieren sollen.
Fragen Sie sich genau, was ein anständiger Entwickler ist, und machen Sie genau das: Üben Sie Ihre Kunst an realen Projekten, bei denen Sie vergessen, wie spät es ist.
Als anständiger Entwickler verstehe ich unter anderem, wie man gute Anforderungen erhält und schreibt, wie man ein Projekt verwaltet, wie man testet, wie man Ergebnisse präsentiert, wie man beurteilt, wer mir helfen kann und wer nicht (rekrutiert), wie man Verbünde dich mit anderen, um den Chef und den Kunden zufrieden zu stellen.
Auf technischer Ebene bedeutet für mich, ein guter Entwickler zu sein, in der Lage zu sein, nützliche Benutzerhandbücher zu entwerfen, zu überprüfen, zu codieren, zu debuggen, zu testen, zu schreiben, den Code für andere Entwickler sinnvoll zu kommentieren, Versionen zu verwalten, zu simulieren und immer eine zu finden Lösung zur täglichen Verbesserung der Produktivität und zur Automatisierung von Aufgaben (Test, Debugging, Datenanalyse für Lastprognosen oder was auch immer). Es bedeutet, in der Lage zu sein, schnellen und schmutzigen Code zu erstellen, wenn dies erforderlich oder gerechtfertigt ist, aber auch sauberen und gut durchdachten Code zu erstellen.
All das wird nicht durch Lernen erlangt, sondern durch Lernen zu einem Zweck, um ein Bedürfnis zu lösen, das Sie dort und dann haben. Lernen ist gut, um eine solide Basis zu schaffen, aber Lernen für einen bestimmten Zweck ist gut, um ihn zu verwirklichen.
Ein guter Entwickler ist am Ende derjenige, der in der Lage ist, die für die jeweilige Aufgabe erforderlichen Informationen zu erfassen.
quelle
Es sieht so aus, als ob Sie überall sind. Ich denke, die Leute lernen am meisten, wenn sie sich auf einen bestimmten Bereich konzentrieren und sich wirklich darauf konzentrieren, denn wenn Sie dies tun, werden Sie ausnahmslos auf bestimmte Probleme stoßen, die das Erlernen eines anderen Tools erfordern. Auf diese Weise können Sie Ihre Fähigkeiten organisch und in enger Verbindung erweitern, sodass Sie nicht das erworbene Wissen verlieren, da Sie mit jeder neuen Idee oder jedem neuen Werkzeug, das in Ihre mentale Toolbox aufgenommen wird, andere leichter erlernen können.
quelle
Suchen Sie sich ein gutes Open Source-Projekt aus, das Sie interessiert, und lernen Sie den Code kennen, und bringen Sie Fehlerbehebungen und neue Funktionen ein. Das sollte jeder Programmierer tun.
Starten Sie jetzt ein Projekt. Sie können nur lernen, Lösungen für ein echtes Problem zu finden. Wenn Sie nichts bauen, haben Sie noch kein Problem zu lösen.
quelle