Ich bin ein CS-Student mit mehrjähriger Erfahrung in C und C ++. In den letzten Jahren habe ich ständig mit Java / Objective C an der App-Entwicklung gearbeitet und bin nun auf Webentwicklung umgestiegen und habe mich hauptsächlich auf Ruby konzentriert Rails und ich kamen zu der Erkenntnis, dass ich (wie bei der App-Entwicklung) viel zu viel auf anderen Code verweise. Ich habe ständig Google-Funktionen für viele Dinge, von denen ich mir vorstellen kann, dass ich sie von Grund auf neu erstellen kann, und das hat mein Selbstvertrauen ein bisschen erschüttert.
Grundlegende Grundlagen sind kein Problem, ich hasse es, dies als Beispiel zu verwenden, aber ich kann Javabat sowohl in Java als auch in Python bei einem Sprint durchlaufen - offensichtlich keine Errungenschaft, und was ich damit sagen will, ist, dass ich eine starke Basis für die Grundlagen habe Ich denke?
Ich weiß, was ich normalerweise verwenden muss, aber Referenzsyntax ständig. Würde mich über Ratschläge und Anregungen freuen, da es mich in Bezug auf die Suche nach Arbeit in diesem Bereich sehr zurückgehalten hat, obwohl ich mein Studium abgeschlossen habe. Mein Hauptgrund für das Nachfragen ist nicht wirklich die Beschäftigung, sondern vielmehr, dass ich nicht der einzige sein möchte, der bei einem Hackathon nonstop Code ausarbeitet und dort mit 20 geöffneten Google / Github-Tabs sitzt aufgrund eines leichten Vertrauensmangels ...
Ist eine Person ein schlechter Entwickler, indem sie ständig nach Codebeispielen für mittelschwere bis komplexe Aufgaben sucht?
quelle
Antworten:
Blind kopieren-einfügen: schlecht.
Dokumentation nachschlagen, Codebeispiele lesen, um ein besseres Verständnis zu erhalten: gut.
Ich würde lieber mit jemandem zusammenarbeiten, der die ganze Zeit nachschaut und sicherstellt, dass alles wie beabsichtigt funktioniert, als mit jemandem, der zuversichtlich ist, dass er alles weiß, es aber nicht weiß. Aber das Schlimmste ist, wenn jemand sich nicht darum kümmert, zu verstehen, wie die Dinge funktionieren, und nur unkritisch Code aus dem Web kopiert (und wenn dann die Fehlerberichte anfangen zu regnen, kann er nichts richtig reparieren).
quelle
Wenn Sie Ihre Lösungen auf wartbare Weise codieren und tatsächlich VERSTEHEN, was Sie kopieren / einfügen / ändern, gibt es kein Problem.
Ich sterbe jedes Mal, wenn ich einem leitenden Entwickler die Frage stelle, warum er was getan hat, und die Antwort lautet: "Ich weiß nicht, ich habe den Code kopiert und es hat zu diesem Zeitpunkt funktioniert."
quelle
Genau wie bei der Fähigkeit, mit / ohne API-Dokumentation zu programmieren , ist das Suchen nach Codebeispielen kein Zeichen für einen schlechten Programmierer, sondern für einen, dem es an Sprachkompetenz mangelt ...
... und die Praxis ist für mich der einzig verlässliche Weg, um flüssig zu werden.
quelle
Es gibt eine Lerntheorie namens Kolb-Zyklus (nach der Person, die sie beschrieben hat). Die Einträge in diesem Zyklus sind:
Verschiedene Menschen beginnen gerne an verschiedenen Stellen im Zyklus. Es ist also durchaus möglich, zu lernen, indem man nach Mustern sucht (die Phase der Reflexionsbeobachtung) und diese dann durch Abstraktion auf das Gesamtbild überträgt.
Andere Menschen lernen auf andere Weise: Manche Menschen versuchen es zunächst (dh mit Experimenten) und denken dann darüber nach, was richtig oder falsch gelaufen ist. Der Punkt ist, dass dies nur verschiedene Methoden sind, um das Problem des Lernens anzugehen: Keine davon ist falsch.
quelle
Vollständige Offenlegung - Ich bin eine alte Person, die in einem anderen vor dem Internet verfügbaren Zeitalter der Arbeit geschult wurde. Ich habe beobachtet, wie sich die Fähigkeiten der jüngeren Entwickler stetig verschlechterten, hauptsächlich weil sie keine Informationen mehr hatten oder die Lösung, die sie aus dem Internet bezogen hatten, nicht verstanden hatten. Ich habe festgestellt, dass das Kompetenzniveau, das eine Person vor 20 Jahren nach ein bis zwei Jahren Erfahrung hatte, jetzt das Kompetenzniveau ist, das eine Person nach fünf bis sieben Jahren Erfahrung hat. (Ja, das ist eine persönliche Beobachtung, aber ich habe viel eingestellt, ich habe keine statistischen Daten zu diesem Thema und ja, ich bin manchmal alt und mürrisch, nimm diese Aussage mit einem Körnchen Salz. Und halte mich von meinem Hof fern. )
Alles nachzuschlagen ist zeitlich ineffizient. Es ist auch ein Symptom für jemanden, der nicht über viel Wissen verfügt. Menschen mit fundiertem Wissen können Code schneller schreiben als Menschen, die nicht wissen, wie sie ein Problem lösen können, ohne nachzuschlagen. Es lohnt sich also zu lernen, mit mehr Dingen umzugehen, ohne ständig nachschlagen zu müssen.
Jetzt sage ich nicht, dass Sie niemals nachschlagen sollten, sondern dass Sie lernen sollten, Wissen zu behalten und nur nachzuschlagen, was Sie selten verwenden oder wenn Sie auf ein wirklich neues Thema, eine neue Sprache oder ein neues Paradigma stoßen. Und ich sage nicht, dass Sie nicht lesen sollten, um mit neuen Lösungen, Tools und Sprachen Schritt zu halten.
Meine eigentliche Sorge gilt Entwicklern, die zu oft nachsehen, dass zu viele von ihnen (nicht unbedingt Sie) niemals die analytischen Fähigkeiten entwickeln, um ihre Probleme und die erforderlichen Lösungen zu verstehen. Lesen Sie, wie viele Fragen es gibt, bei denen die Person die Fehlermeldung eingibt, die sie offensichtlich nicht versteht, die aber für jeden, der auf professioneller Ebene tätig ist, ganz klar sein sollte. Oder diejenigen, bei denen die Person sagt: "Es funktioniert nicht, warum?" Ohne Verweis auf die Fehlermeldung oder wie sie nicht funktioniert und der Code syntaktisch korrekt ist. Oder diejenigen, die einen Code erhalten, der funktionieren sollte,
Wenn Sie also nach Dingen suchen, die Teil der Kernfunktionalität der Sprache (n) sind (dazu sollte auch SQL gehören, wenn Sie auf Datenbanken zugreifen), die Sie seit mehr als sechs Monaten verwenden, suchen Sie vermutlich auch nach viel. Wenn es sich bei dem, was Sie suchen, um erweiterte Funktionen handelt, insbesondere um Funktionen, die Sie möglicherweise nur selten verwenden, geht es Ihnen gut.
Aber wie lernst du, mehr Informationen zu behalten? Verstehe zuerst, warum der Code kaputt gegangen ist. Selbst wenn Ihnen jemand eine funktionierende Lösung bietet, fragen Sie, warum dies nicht funktioniert hat und warum nicht. Wenn Sie die Fehlermeldung nicht verstehen, fragen Sie, was sie bedeutet, und versuchen Sie, sie selbst zu lösen.
Und schneiden Sie niemals eine Lösung aus, die Sie nicht verstehen. In der Tat, überhaupt nicht ausschneiden und einfügen. Wenn Sie Informationen behalten möchten, müssen Sie diese eingeben. Wenn Sie den Code tatsächlich physisch selbst schreiben, können Sie ihn leichter erlernen. Das ist eine bekannte Lerntechnik.
Üben Sie, Ihr Verständnis des Codes zu verallgemeinern. Ich habe gesehen, dass Menschen im Laufe der Zeit immer wieder ähnliche Fragen gestellt haben, weil sie nicht verstanden haben, dass die Lösung, die sie vor einem Monat für das Problem ABC erhalten haben, die gleiche Lösung für das neue Problem DEF ist.
Wenn Sie also etwas recherchiert haben, überlegen Sie sich, welche Arten von Problemen sich für die Lösung eignen, und schreiben Sie sich Notizen dazu. Wenn Sie ein zu lösendes Problem haben, überprüfen Sie zunächst Ihre eigenen Notizen, um festzustellen, ob Sie bereits eine mögliche Technik festgestellt haben. Wenn Sie mehrere Möglichkeiten zur Problemlösung evaluieren, notieren Sie sich die Art des Problems, die möglichen Lösungsansätze und die Vor- und Nachteile der einzelnen. Auch hier hilft das Aufnehmen von Notizen dabei, das Wissen in Ihrem Gehirn zu festigen. Sie haben bereits Ihren eigenen Denkprozess in Bezug auf die ausgearbeiteten Vor- und Nachteile und müssen dies nicht noch einmal tun (oder zumindest nicht so gründlich, wie Sie vielleicht möchten) suche noch weitere mögliche techniken) für das nächste ähnliche problem.
Wenn Sie entscheiden, was Sie als Nächstes lernen möchten, vertiefen Sie sich in eine Ihrer Haupttechnologien, bevor Sie in die ersten 30 Tage einer weiteren Technologie einsteigen (dies setzt voraus, dass Sie über genügend Wissen verfügen, um Ihren Job tatsächlich auszuführen, wenn Sie dies benötigen) Verwenden Sie 6 Technologien - erlernen Sie zuerst die Grundlagen aller sechs Technologien, bevor Sie sich vertiefen. Gehen Sie dann hin und her, lernen Sie neue Dinge auf einer grundlegenden Ebene, lernen Sie etwas ausführlicher und lernen Sie dann mehr neue Technologien auf einer grundlegenden Ebene. Wenn Sie dies im Laufe der Zeit tun, werden Sie feststellen, dass Ihre Grundkenntnisse in Bezug auf das, was Sie von einer neuen Technologie erwarten, viel tiefer liegen, da Sie fortgeschrittenere Fragen verstehen, die Sie dazu stellen müssen.
Eine andere Möglichkeit zu lernen, Wissen zu behalten, besteht darin, es einem anderen beizubringen. Beantworten Sie Fragen an solchen Orten, stellen Sie Ihrem Team Schulungsthemen vor, halten Sie Präsentationen in Ihren lokalen Benutzergruppen, schreiben Sie Blogeinträge und pflegen Sie ein Wiki mit Informationen in Ihrem Unternehmen, um anderen Entwicklern zu helfen.
quelle
Das Suchen nach Codebeispielen ist kein Zeichen für einen schlechten Entwickler. Man braucht selten so wenig Dinge, um sich alle Schnittstellen genau zu merken, also ist es normal, nachzuschlagen, und Codebeispiele sind normalerweise die am einfachsten zu verwendende Referenz.
Was Sie nicht tun sollten, ist das Kopieren und Einfügen von Beispielen, da diese dort funktionieren. Daher müssen sie auch hier funktionieren, ohne zu verstehen, wie sie funktionieren. Das führt in der Regel dazu, dass viele nutzlose Teile kopiert wurden und das Ergebnis schwer zu warten ist. Wenn Sie nicht wissen, wie es funktioniert, als Sie es geschrieben haben, werden Sie es auch nach sechs Monaten nicht wissen und können es nicht repariere es.
Solange Sie jedoch den Code verstehen, den Sie aus einem Beispiel kopieren, ist dies ein guter Weg, um die Arbeit schneller zu erledigen, und das ist normalerweise eine gute Sache.
quelle
Diese Antworten sind ziemlich gut. Aber Sie leiden unter einem viel tieferen Problem als Kopieren / Einfügen oder einem Mangel an "Geschicklichkeit".
Vergleich ist tödlich. Je mehr Sie sich mit anderen Menschen vergleichen und sich von deren Talent beeinflussen lassen, desto mehr werden Sie schrumpfen und innerlich sterben. Sie gehen nicht zu Hackathons, weil Sie befürchten, dass die Leute sehen, wie wenig Talent Sie haben. Und der einzige Grund, warum Sie denken, dass Sie nicht talentiert sind, ist, dass Sie sich mit Hackern vergleichen, die mehr Code schneller von Grund auf neu erstellen können.
Auch wenn "Codezeilen pro Minute" eine gute Metrik für die Messung von Fähigkeiten war, müssen Sie die Tatsache akzeptieren, dass es immer bessere Entwickler gibt als Sie . Und es ist in Ordnung , anderen zu zeigen, dass es Ihnen an Können mangelt.
Sie müssen nicht so gut oder besser sein als alle anderen. Sie müssen sich damit begnügen, dass Ihnen immer etwas fehlt und dass Sie ständig lernen. Wenn Sie nicht glücklich sind, ein minderwertiger Entwickler zu sein, werden Sie NIE glücklich sein.
Eine weitere Sache: Ihre Angst vor Ablehnung durch Leute, die Sie für "überlegen" halten, hindert Sie daran, sich mit besseren Entwicklern abzustoßen und von ihnen zu lernen. Ihre Angst verhindert also, dass Sie wachsen, was Ihre Angst aufrechterhält. Welches hindert Sie am Wachsen. Den Zyklus sehen? Sie müssen den Kreislauf irgendwo unterbrechen.
quelle
Ich denke, vieles hängt davon ab, wie dein Verstand funktioniert. Mein Gedächtnis stinkt, deshalb greife ich lieber zu Code, der so nah wie möglich an dem ist, was ich will, und überarbeite ihn, damit er den neuen Job erledigt. Es dient als Beispiel und als Erinnerung an alle Dinge, die ich tun muss. Ich habe zum Beispiel 20 Jahre lang einfaches SQL verwendet, kann mich aber nie an das Layout einer SELECT- oder UPDATE-Anweisung erinnern. (Ich denke, man braucht Klammern, aber ich kann mich nicht erinnern, an welche.) Andererseits ein paar Dinge, an die ich mich erinnern kann; Ich kann eine Java-Iterator-Implementierung mit geschlossenen Augen zusammenstellen.
Der meiste Code, den ich kopiere, ist mein eigener, aber ich kopiere auf jeden Fall den anderer, wenn ich etwas Neues lerne.
Ich weiß nichts über Hackathons. Sie können auf eine Untergruppe von Programmierern mit fotografischen Erinnerungen zurückgreifen. Ich würde es versuchen und sehen. Wenn Sie aussehen, als würde Sie ein Idiot stören, sollten Sie nicht programmieren.
Ich möchte Sie dringend bitten, den gesamten Code, den Sie kopieren und ändern, gründlich zu verstehen, aber bis ich einige der anderen Antworten gelesen habe, ist mir noch nie jemand eingefallen, der den Code möglicherweise ohne Verständnis kopiert. (Ich lerne anscheinend ständig neue Laster auf dieser Seite ...)
quelle
Dann hör auf. Gehen Sie eine Weile in die andere Richtung. Implementieren Sie alles selbst, auch wenn Sie wissen , dass Sie in viel kürzerer Zeit genau das finden, was Sie brauchen.
Was passiert ist, ist, dass Ihr Problemlösungsmuskel (lateinischer Name gluteus mojo ) durch Nichtgebrauch verkümmert ist und Sie es jetzt vermeiden, es zu verwenden, weil Sie wissen, wie schwach es ist. Sie müssen anfangen, diese Muskeln aufzubauen und zu trainieren, genau wie Sie im Fitnessstudio an Ihrem Bizeps arbeiten würden. Beginnen Sie mit hohen Wiederholungen und geringem Widerstand - viele einfache Probleme. Wenn Sie ein gewisses Maß an Selbstvertrauen aufbauen, wenden Sie sich längeren, schwierigeren Problemen zu.
Sie werden allmählich spüren, wie Ihr Mojo zurückkehrt und Ihr Bedürfnis, sich auf Google zu verlassen, sinkt. Trainieren Sie diesen Muskel jedoch weiter und achten Sie darauf, dass Sie nicht in Ihre alten Gewohnheiten zurückfallen. Fordern Sie sich selbst ein Problem zu lösen zuerst und nur dann zu anderen Lösungen suchen. Manchmal werden Sie feststellen, dass andere einen besseren Weg gefunden haben, um dasselbe zu tun, und manchmal werden Sie entscheiden, dass Ihre eigene Lösung besser ist.
Eine Person, die nicht in der Lage , etwas zu erledigen , ohne Beispiele zu finden , ist ein schlechter Entwickler. Die Sache ist: Sie werden nicht wissen, ob Sie in der Lage sind oder nicht, bis Sie es versuchen.
quelle
Sie sind jung und haben mit vielen Programmiersprachen gearbeitet. Ich gehe davon aus, dass Sie die neuen Sprachen wahrscheinlich schneller als die alten Sprachen lernen. Sie haben immer noch nicht genügend Zeit in eine einzelne Sprache für eine ausreichend große Anwendung investiert, um flüssige Sprachkenntnisse zu entwickeln.
Suchen Sie jedes Mal nach umfassenden Lösungen wie: dem gesamten Prozess des Verbindens eines Web-Grids mit einer Datenbanktabelle oder einem kleineren Teil wie dem Formatieren der Verbindungszeichenfolge? )?
Sie werden immer nach Hinweisen auf die Syntax verschiedener Codezeilen oder Funktionen suchen. Je mehr Sie programmieren, desto mehr Herausforderungen und unterschiedliche Umgebungen und Sprachänderungen treten auf. Wenn Sie jedes Mal, wenn Sie etwas tun, ein komplettes Tutorial benötigen, haben Sie ein Problem.
quelle
Ich hatte einen Professor, der sagte, er hasste es, Tests zu geben, die darauf beruhten, eine Menge Informationen aufzubewahren, die Sie in der Nacht zuvor überfüllt hatten, weil Sie danach sowieso viel vergessen haben. Es ist besser, Ihre Ressourcen zu kennen und sie richtig zu verwenden, um die Informationen zu finden, die Sie nicht kennen. Ich mag es, ein ähnliches Prinzip auf alles anzuwenden, was ich tue, einschließlich Arbeit.
Ich denke, die wichtigsten Werkzeuge, die Sie haben, sind Ihre Ressourcen, solange Sie sie richtig einsetzen. Wenn ich Code schreibe, gehe ich so weit wie möglich mit meinem vorhandenen Wissen um und recherchiere dann, indem ich andere Programmierer frage oder das Internet durchsuche, um die entsprechende Lösung besser zu verstehen. Das Wissen wird sich im Laufe der Zeit aufbauen und nach einer Weile werden Sie die Fähigkeiten natürlich besser kennen und verstehen. Ich schaue ständig nach, ob ich die Informationen wirklich brauche oder nicht, und ich kann ehrlich sagen, dass ich jeden Tag etwas Neues lerne.
quelle
Wenn Sie das Problem verstehen, das Sie lösen möchten, und wissen, wie Sie es lösen möchten, ist es meiner Meinung nach keine große Sache, die richtige Syntax zu finden.
Ich habe vor ungefähr zwei Jahren meinen Abschluss gemacht und wurde zu den Wölfen geworfen, als ich meinen Job bekam. Ich musste eine große Anwendung lernen, warten und aktualisieren, die in einer Sprache geschrieben war, die ich noch nie zuvor berührt hatte. Ich würde einen Fehlerbericht bekommen, den Code durchgehen und herausfinden, wie ich den Fehler beheben wollte, und dann Beispiele googeln müssen, wie ich die gewünschten Dinge in dieser Sprache erledige.
Wenn Sie Dinge erledigen und es so verstehen, dass es nicht zu unnötiger Abwanderung kommt, sind Sie wahrscheinlich in Ordnung.
quelle
Reines unkritisches Kopieren und Einfügen, wie oft in diesen Antworten angegeben, ist schlecht. Aber so schreibt man alles von Grund auf neu. Wenn es sich nicht um eine kritische Komponente handelt, die für Ihr Unternehmen von zentraler Bedeutung ist, suchen Sie zunächst nach einer Bibliothek oder einem Code-Snippet. Die Ausnahme beim Auffinden eines Snippets wäre, dass das Problem sehr einfach ist, Sie ein sehr klares Bild darüber haben, wie es zu tun ist und wenn Sie keine Bibliothek verwenden: dass Sie wahrscheinlich nicht mehr tun müssen.
Ich persönlich weiß, wenn ich etwas schreibe, das häufig vorkommt, habe ich wahrscheinlich einige subtile Fehler und vielleicht einen oder zwei, die nicht so subtil sind, ohne viel zu testen. Also suche ich nach einer ähnlichen Lösung, ändere und teste sie, um Zeit beim Testen und Entwickeln zu sparen. Denn am Ende bin ich dafür verantwortlich, ein Produkt zu liefern, das funktioniert, erweiterbar ist, das Budget einhält oder unterschreitet und die Fristen einhält. Die Wiederverwendung von Code und Bibliotheken ist ein guter Schritt in diese Richtung.
quelle
Ich denke, dass das Lesen von Codebeispielen und das bloße Lesen des Quellcodes dessen, was andere Leute im Allgemeinen entwickelt haben, der beste Weg ist, um Ihre Fähigkeiten zu verbessern. Ich denke wirklich, es öffnet Türen in Ihrem Gehirn, die sonst nicht geöffnet worden wären.
Wenn Sie sich eine Lösung A ausdenken und jemand anderes sich eine Lösung B ausdenkt, können Sie, wenn jeder von Ihnen Ihre Lösungen teilt, die Lösung C realisieren, die möglicherweise sogar besser als A oder B ist.
quelle
Ich denke, es gibt viele Ebenen der Softwareentwicklungskompetenz. Nur so, denn es gibt auch viele Ebenen der Dokumentationskompetenz in der Softwareentwicklung . Ehrlich gesagt sind Systeme heutzutage um Größenordnungen komplexer als zu der Zeit, als ich Mitte der achtziger Jahre mit der Programmierung von Computern begann.
Dann mussten Sie wissen, was der Computer tun sollte, und Sie hatten eine 6 Zoll dicke Dokumentation geschrieben, die Ihnen erzählte, wie der Computer bestimmte grundlegendere Dinge tat. Um das, was Sie wollten, in eine Form zu bringen, die der Computer annehmen kann, müssen Sie den Inhalt der Indexe dieser Bücher und eine Programmiersprache kennen (oder zwei. Wirklich, nach dem Erlernen von vier oder fünf Sprachen sind die anderen nur Dialekte).
Heutzutage erfordert diese Aufgabe die Kenntnis einer Sprache, eines Systems, eines Paradigmas, eines Programmiermodells und mindestens eines API-Satzes, die alle Ziele verschieben.
Eine Person mit einem gewissen Grundwissen, die nach etwas fragt, ist also keine gute Art von Programmierer. Er ist der beste Programmierer angesichts der heutigen Umstände und der Desinteressenlosigkeit, die Unternehmen wie Microsoft haben, wenn es darum geht, ihre eigenen grundlegenden Dokumentationen genauestens zu überprüfen. Das meiste davon ist selbstreferenzielles Referenzmaterial und ein sehr schlechter Beispielcode. (Zwei Beispiele, auf die ich gestoßen bin, sind "Windows Installer" und die APIs zum Erstellen von WMV-Filmdateien.)
Da sich Microsoft, Google und in geringerem Maße auch Apple darauf verlassen, dass "die Community" diesen sehr realen Mangel ausgleicht, ist das Herumfragen nicht nur wichtig, sondern von entscheidender Bedeutung. Genauso wichtig ist es, eine Person zu sein, die gefragt werden kann und die in der heutigen Umgebung fundierte Antworten und Rückmeldungen geben kann. Aus diesem Grund sind Websites wie stackexchange.com genauso hilfreich wie sie.
Stellen Sie also Fragen (fragen Sie intelligent!) Nach Mustern und respektieren Sie die Personen, die die Antworten liefern. Dies wird nicht als Zeichen eines "schlechten Entwicklers" angesehen.
Und noch etwas: Schlechte Proben zu liefern ist wirklich das Zeichen eines schlechten Entwicklers. Es macht die schlechten Entwickler leichter zu erkennen, sondern fummelt auch die Google-Suche. Wenn Sie kein Vertrauen in einfache, direkte und spezifische Codebeispiele haben, geben Sie sie nicht weiter.
Und verspotten Sie bitte nicht diejenigen, die fragen.
quelle
Es klingt für mich so, als ob das Problem für Sie weniger darin besteht, zu verstehen, worauf Sie sich beziehen, als vielmehr in Bezug auf Funktionen und Gedächtnis. Wenn es Ihr Selbstvertrauen untergräbt, dann ist es ja ein Problem - aber es kann auf jeden Fall angegangen werden!
Für mich ergeben sich solche Herausforderungen in vielen verschiedenen Aspekten meines Lebens. Um zum Beispiel ein gutes Musikstück spielen zu können, muss ich meine Unabhängigkeit von den Noten entwickeln, die ich bekomme. Wie kannst du die Musik wirklich fühlen, wenn deine Nase noch in deinem Booklet steckt? Wenn ich Zeit habe, kann ich mir manchmal das ganze Musikstück merken - auch wenn es für meinen Auftritt nicht erforderlich ist. Warum? Wenn die Noten weg sind, ist es für mich viel einfacher, mich auf die herausfordernderen und übergreifenderen Aspekte der Musik zu konzentrieren, die ich richtig machen muss, und es ist für mich viel einfacher, in diese unglaubliche Zone des reinen Musizierens zu gelangen. Daher finde ich, dass es die zusätzliche Mühe oft wert ist.
Meine Erfahrungen mit der Programmierung waren ähnlich. Ich denke, die Schlüssel sind:
Diese Prinzipien scheinen tatsächlich zu gelten, wenn man eine Sprache lernt! Siehe zum Beispiel Wie man sich neue Wörter merkt. So funktioniert auch die Pimsleur-Methode .
Ich habe festgestellt, dass mit diesen Schlüsseln fast alle Prinzipien, Syntax und allgemeinen Bibliotheken der Sprache und Technologien, die ich regelmäßig verwende, vollständig gespeichert werden können. Trotzdem durchsuche ich das Internet ständig nach Beispielen und Weisheit! Aber an diesem Punkt suche ich nach einer Bestätigung des Problems, das ich zu lösen versuche, nach verschiedenen Ansätzen, nach Tools, die helfen können, und nach Beratung für weniger häufig genutzte Bibliotheken. Es ist eine ganz andere Art der Suche, als ich sie verwende, wenn ich zum ersten Mal eine Sprache lerne, und in Tutorials und Handbüchern.
Aus Ihrer Geschichte sind hier einige spezifische Stolpersteine, denen Sie möglicherweise begegnen.
quelle
Ich denke, wenn Sie sich darauf konzentrieren, selbst moderaten Code zu entwickeln, werden Sie effizienter und produktiver. Es braucht wahrscheinlich mehr Zeit, um Code nachzuschlagen, ihn zu lesen / verstehen, seinen Quellcode zu kopieren, ihn entsprechend zu modifizieren usw.
Wenn Sie es sich selbst einfallen lassen, ist es höchstwahrscheinlich eher an Ihre spezifische Situation angepasst, und nach einer Weile werden diese Lösungen schneller bei Ihnen eintreffen, als wenn Sie sie nachschlagen.
Ich sehe es so, als ob Sie eine zweite Meinung zu einer bestimmten Lösung einholen möchten, also schauen Sie nach, wie andere (im Internet) dies tun. Wenn Sie feststellen, dass Sie dies zu sehr tun / wollen, fragen Sie einen Kollegen, was er / sie von einer Lösung hält. Wenn Sie Ihrem Kollegen alle 15 Minuten eine Frage stellen, wird er wahrscheinlich verärgert sein. Daher werden Sie weniger Fragen stellen und versuchen, diese selbst zu finden.
Visualisieren Sie dies, wenn Sie im Internet nachschlagen möchten.
quelle
Der beste Weg, um zu lernen, was Sie nicht wissen: google it! Ich denke, Sie sind den meisten Entwicklern ebenbürtig. Stecken Sie den Minderwertigkeitskomplex in Ihren Rucksack und gehen Sie offen damit um.
Haben Sie keine Angst, Fragen zu stellen, bei Google zu recherchieren, zu versuchen und zu scheitern. Es ist alles ein Teil davon.
quelle
Die Softwareentwicklung in Unternehmenseinstellungen erfordert eine erhebliche Wiederverwendung von Code. Warum eine Funktion / Methode umschreiben, wenn eine API bereits vorhanden ist und weit verbreitet ist? Es ist höchstwahrscheinlich genauso effizient wie alles, was Sie schreiben, und nimmt weniger Zeit in Anspruch.
Natürlich erfordert eine erfolgreiche Softwareentwicklung auch eine Pause von der Tastatur, damit Sie lesen und nachvollziehen können, was wirklich vor sich geht. Nehmen Sie ein beliebiges Web-Framework. Sie sollten wissen, was darunter vor sich geht, damit Sie den Code verstehen, den Sie schreiben, aber Sie werden wahrscheinlich nie ein Webframework von Grund auf neu schreiben müssen.
Sie müssen nur Code schreiben, der die Art des Frameworks ausnutzt (z. B. erfordert ein komponentenbasiertes Framework einen bestimmten Stil), und dies ergibt sich aus dem Verständnis des Gesamtbilds. Lerne das größere Bild und es wird dir gut gehen.
quelle
Aus den bereits gegebenen Antworten geht klar hervor, dass es nichts Falsches ist, Ihr Problem zu untersuchen, anstatt blind zu codieren. Aber die Frage, die nicht angesprochen wurde, weil Sie sie nicht direkt gestellt haben, ist, warum Sie sich so unsicher fühlen - und was können Sie dagegen tun? Immerhin googeln sich viele Leute durch Probleme und haben viel Selbstvertrauen (auch diejenigen, die es nicht sollten ...)
Also, was ist zu tun? Vielleicht brauchten Sie nur ein paar hundert Streicheleinheiten auf der Rückseite, die Sie gerade erhalten haben, und können jetzt sicher codieren. Aber wenn das nicht funktioniert hat, sollten Sie sich mit automatisierten Tests und testgetriebener Entwicklung befassen. Nichts sagt "gut gemacht" wie ein "Alle Tests bestanden" aus Ihrer Testsuite: Wenn Sie dort ankommen, wissen Sie , dass Sie es richtig gemacht haben.
Sie sollten sich auch ein bisschen herausfordern: Sie sagen, Sie suchen immer nach einer Syntax, die Sie bereits kennen. zwingen Sie sich also, Code zu schreiben, ohne die Syntax nachzuschlagen, und Sie werden (bald, wenn nicht sofort) feststellen, dass es Ihnen doch gut geht.
quelle
Es ist so wichtig, sich etwas Zeit zu nehmen und die Grundlagen zu verstehen. Komplexere Dinge bauen darauf auf. Wenn es keine Grundlage gibt, um die Sprache und die Vorgänge hinter den Kulissen zu verstehen, wird das Codieren einfach Hacking sein ...
quelle
Bücher mit Beispielen zu lesen und sich auf sie zu beziehen, ist schlecht. Das ist der Kontext Ihrer Frage. Nun, da nur wenige Leute ihre API dokumentieren, ist ein Buch alles, was wir übrig haben.
Ich weiß nicht, warum Sie diese Frage gestellt haben. Vielleicht können Sie sie selbst beantworten, nachdem Sie meine Situation gelesen haben, da ich auf viele Codebeispiele verweise.
Ich hatte im Alter von 16 Jahren noch nie die Chance, auf die Universität zu gehen, da ich auf der Straße war. Irgendwie war ich mit 24 Jahren in der Lage, ein Fernstudium zu absolvieren und Herstellerzertifizierungen als SCJP, SCJD, SCBCD und SCWCD zu machen. Ich muss zugeben, dass ich manchmal Probleme hatte und mich online um Beispiele bemühen musste. Obwohl ich zu diesem Zeitpunkt unwissentlich einen Gehirntumor im Kopf hatte (bis 2010 hatte er die Größe einer Orange). Nach 5 Gehirnoperationen, 6 Wochen kombinierter Chemo- / Strahlentherapie und 10 Monaten Chemotherapie programmiere ich immer noch mit handgeschriebenen codierten Websites, die in meinem Profil angezeigt werden können.
Ja, ich brauche jetzt viele Codebeispiele mit Hirnschäden. Macht mich das zu einem schlechten Programmierer?
quelle
Wie ich sehe, hast du erwähnt, dass du zu einem Hackathon gehst. Ich war im letzten Jahr schon bei einigen (mehr als 15) und habe festgestellt, dass sie sich hervorragend zum Lernen eignen. Und mit großartig zum Lernen meine ich das Lernen, wie man niemals wieder so codiert. Meistens versuche ich bei jedem Hackathon, an dem ich teilnehme, etwas Neues zu machen, um neue Dinge zu lernen. Da es eine enorme Zeitbeschränkung gibt, müssen Sie nur den gesamten Code kopieren, den Sie finden können, und dies wird Sie beim Testen in den Arsch beißen.
Es ergeben sich jedoch gute Dinge: A) LERNEN Sie so viel beim Testen von Fehlern (weinen Sie auch so heftig) B) Sie sollten wissen, dass Sie niemals wieder so codieren müssen, und lernen Sie bessere Codierungsmethoden. Außerdem triffst du bei Hackathons Leute, die dir so viele neue Dinge beibringen können, von denen du noch nie etwas gewusst hast, und tust Dinge, die du in der Schule niemals tun wirst.
Also, was ich sage, ist, dass das Einfügen von Kopien schlecht ist, und Sie werden nichts lernen, und die Zeit, die Sie durch das Einfügen von Kopien gespart haben, wird Sie später beim Testen von Fehlern beißen, und Sie haben keine Ahnung, was Sie überhaupt geschrieben haben. Es ist 08:00 Uhr. und werden mit dem ganzen Koffein getankt. Aber ich denke, solange Sie Ihren Code auf Fehler testen, MÜSSEN Sie alles lernen, was Sie zuvor kopiert haben.
quelle
Nun, ich bezeichne mich nicht als guten Programmierer. Aber was ich tue, ist einfach. Wenn ich nicht weiß, wie ich etwas machen soll, schaue ich mir tatsächlich einen Code / ein Beispiel im Internet an. Nachdem ich es gelesen habe, versuche ich, es neu zu schreiben, zu optimieren und das Material zu verwenden, das für den gewünschten Code am besten geeignet ist.
Hinweis: Das Lesen von Code aus dem Internet macht Sie nicht zu einem schlechten Entwickler. Es ist immer gut zu sehen, wie andere es tun, und Sie werden immer etwas lernen. Aber dann ist es nicht gut, es blind zu kopieren.
quelle
Wenn ein Entwickler / Student sagt .. Wikipedia .., dass er Code kopieren / in sein Projekt einfügen soll, versucht er einfach, ihn "zum Laufen zu bringen", dann ist die einzige Fähigkeit, die diese Person entwickelt, "wie man googelt". Es könnte dort einen Prozess der Osmose geben, aber nicht einen ganzen Haufen. (Sie würden nicht glauben, wie viele Leute dies in College-Kursen tun)
Wenn Sie jedoch den Code anderer Leute analysieren und wirklich darüber nachdenken, was im Code selbst vor sich geht, macht dies eine Person nicht zu einem schlechten Entwickler. Es macht sie zu einem entschlossenen Entwickler und zeigt wahrscheinlich einen Lernstil an, der taktiler oder visueller ist. Ich lerne durch Vorbild sehr gut. Wenn mir jemand etwas erzählt oder versucht, es mir zu erklären, bitte ich ihn normalerweise, mir zu zeigen, wovon er spricht.
Das Betrachten, Analysieren und Lernen von Code macht sie im Laufe der Zeit zu einem guten Entwickler , da sie in der Sprache lesen und lernen, die sie verwenden.
Ich scherze oft, dass ich die Vor- und Nachteile von Computersprachen besser kenne als meine englische Muttersprache. Was wirft die Frage auf; "Wirst du mir das in Java erklären?"
quelle
Ich denke, es ist ein bisschen wie Schach zu spielen. Wir überprüfen die Teile einzeln und verfolgen, wo sie sich gemäß den Regeln bewegen können, und wir müssen diese bewusste Überprüfung einige Zeit durchlaufen, bis sich das Unterbewusstsein einfügt, um Muster und inspirierte Sequenzen aufzudecken.
Beim Programmieren kann es mehr Teile und Regeln geben, ich stolpere oft über die Syntax und über Fehler, deren Auffinden durch das Durchlaufen der Regeln ewig dauert, aber irgendwann setzt das Unterbewusstsein ein. Wenn es lange genug bleibt, kann ich lesen manchmal zurück und staunen, was es kann.
quelle