Ist die ständige Suche nach Codebeispielen ein Zeichen für einen schlechten Entwickler? [geschlossen]


161

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?


14
Es kommt darauf an, woran ich gerade arbeite. Dinge, an denen ich viel arbeite, werden kaum nachgeschlagen. Etwas ungewohnteres, ich suche die ganze Zeit nach Beispielen.
Jaydee

11
Kommt drauf an, ob man tatsächlich selbst Code schreibt.

18
Meine Frau sieht sich diese Kochwettbewerbe und Cupcake-Meisterschaften im Fernsehen an, bei denen sie absurd wenig Zeit haben, um ein köstliches Essen aus zufälligen Zutaten zuzubereiten. Die meiste Zeit ist das Essen schrecklich oder unzureichend gekocht und sicherlich nicht die beste Qualität. Sie sind gut für die Show, aber ich möchte lieber, dass mein Koch sich Zeit nimmt und es richtig macht. Das gleiche gilt für Hackathons. Zuckerberg und seine Freunde waren Hackathon-Typen, die schnell eine beschissene Website geschrieben haben, die umgeschrieben werden musste, sobald sie mehr als ein paar Benutzer hatten. Die meisten Leute würden es vorziehen, wenn Sie es gleich beim ersten Mal richtig machen.
maple_shaft

88
Mein Chef sagt immer: "Das beste Maß für die Fähigkeiten eines Programmierers ist seine Fähigkeit, eine gute Google-Suche durchzuführen." Alle mir bekannten Programmierer suchen im Internet nach Beispielen, aber nur die schlechten fügen sie blind ein. Wenn jemand bereits getan hat, was Sie tun möchten, warum das Rad neu erfinden?
SSumner

9
Forschung ist wichtig. Nimm einfach nicht an dem teil, was ich BSDD (Blog-Spam Driven Development) nenne
Thomas Dignan

Antworten:


238

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).


21
@NewlyInsecure Das ist okay ... einige Softwareentwickler wie ich denken, dass Leute, die zu Hackathons gehen, lächerlich sind. Die meisten von ihnen sind großartige Programmierer, aber schreckliche Softwareentwickler, die einen zu viel Red Bulls getrunken haben.
maple_shaft

23
Ein Entwickler hat das Gehirn, um zu wissen, dass jemand etwas vor der Hand hat, und um nach Beispielen zu suchen und sie anzupassen. Ein Entwickler verschwendet keine Zeit damit, Schädel gegen die Wand zu schlagen.
David

19
@NewlyInsecure Vergleichsversuche. Im Ernst, je mehr Sie sich mit anderen vergleichen, desto demoralisierter, unmotivierter und ängstlicher werden Sie. Bilden Sie Ihre eigenen Überzeugungen auf der Grundlage der Wahrheit, nicht was alle anderen tun. Wenn die Leute bei Hackathons mehr Code schneller rauswerfen können, wen interessiert das dann? Selbst wenn das ein Indikator für Geschicklichkeit wäre, wird es immer klügere Leute geben als Sie, egal wie geschickt Sie werden.
Phil

5
Persönlich, wenn ich ein Codebeispiel finde, das bereits mehr oder weniger das tut, was ich tun möchte, studiere ich es, damit ich es verstehe. Wenn es ein größeres Stück Code ist, mache ich mir Notizen und pseudocodiere dann möglicherweise eine Lösung für meinen speziellen Fall und versuche dann, meinen Pseudocode mit tatsächlichem Code zu implementieren. Ich denke, der Schlüssel hier und was von tdhammers und David erwähnt wurde, ist, dass ich den Code nicht blind kopiere. Ich schaue es an, um zu verstehen, was es tut, und dann seine Ideen in meine spezifische Lösung zu integrieren.
Shufler

3
@NewlyInsecure: Sie haben auch zwei Probleme: Erstens sind APIs viel umfangreicher und komplexer geworden als früher, was es sehr viel schwieriger macht, sie sich zu merken. Das zweite ist das Alter, das Sie jetzt nicht haben, aber werden, bevor Sie es wissen. Wenn Sie älter werden, werden Sie feststellen, dass Sie sich nicht an alles erinnern können, und Sie werden anfangen, Ihre Gehirnzellen für das zu konservieren, was Sie wirklich wissen müssen. Es ist wichtig, die Fähigkeiten zu entwickeln, die erforderlich sind, um Nachforschungen anzustellen und die Details zu finden, die Sie vergessen haben.
Blrfl

110

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."


8
Manchmal denke ich, dass ich kein so guter Entwickler bin. Ich habe dann so ein Zitat gelesen und fühle mich viel besser in Bezug auf mich.
Der Krug

18
@TheJug, denk dran, du bist sowohl ein besserer Entwickler als auch ein schlechterer Entwickler, als du dir vorstellst.
Joe

71

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 ...

... Ich spreche hier von flüssiger Sprache. Nicht nur zu etwas fähig sein , sondern auch fließend.

Wissen Sie, was es heißt, fließend zu sein? Es ist, wenn für jemanden, der Sie ansieht, es so aussieht, als ob Sie während der Eingabe codieren ...

  • ... als ob der richtige Code einfach von Ihren Fingern auf den Bildschirm fließt. Als ob Sie die API-Dokumente, Tutorials und Handbücher nicht überprüfen. Eigentlich Sie tun , sie alle überprüfen, aber das ist unsichtbar , weil es alles in deinem Kopf ist. Sie haben das gesamte Wissen, das Sie benötigen, direkt in Ihrem Gehirn - aufgeladen, geladen und einsatzbereit.

... das ist fließendes Wissen. Es ist, wenn Sie eine Minute brauchen, um das zu tun, was Neulinge in einer Stunde brauchen. Die Mühe lohnt sich wirklich. Es riecht nach Sieg.

... und die Praxis ist für mich der einzig verlässliche Weg, um flüssig zu werden.


14
AUSGEZEICHNETER Punkt über Geläufigkeit. Ich spreche fließend COBOL. Ich habe 20 Jahre Pause von der IT gemacht und lerne jetzt wieder Java. Ich weiß instinktiv, wie man etwas in COBOL macht ... aber ein Teil des Prozesses zum Erlernen von Java-Sprachkompetenz besteht darin, Codebeispiele aufzusuchen, zu analysieren, warum sie funktionieren, und sie an meine speziellen Bedürfnisse anzupassen. Wenn Sie eine neue VERBAL-Sprache lernen, greifen Sie zunächst häufig auf Ihr Italienisch-Englisch-Wörterbuch zu, es kommt zu Grammatik- und Zeitfehlern, und eines Tages sprechen Sie wie ein Muttersprachler. Zeit und Übung sind der Schlüssel. Mach dir keine Sorgen ... :)
Dwwilson66

10
@ dwwilson66 Die Sache ist jedoch, dass ich mich täglich an vier "Sprachen" erinnern muss - die serverseitige Programmiersprache, die clientseitige Skriptsprache, die clientseitige Markup-Syntax und die clientseitige Stilsyntax. Ich kann einfach nicht alles im Kopf behalten - es ist, als würde ich versuchen, gleichzeitig Gespräche auf Italienisch, Chinesisch, Englisch und Klingonisch zu führen.
Tacroy

@Tacroy - GENAU! Ohne die Geläufigkeit BRAUCHEN Sie Ressourcen, um zu helfen. Es macht Sie nicht "weniger" von einem klingonischen Sprecher, wenn Sie gelegentlich vollständige Phrasen nachschlagen müssen, anstatt nur ein Wort - nur nicht so fließend wie andere.
Dwwilson66

4
Der letzte Satz verdient hervorgehoben zu werden, nicht im Index versteckt. Es gibt keinen anderen Weg, um fließend zu werden als durch Eintauchen.
jmlane

@ dwwilson66 beachte, dass es Dinge gibt, die in Java ganz anders gemacht werden sollten als in COBOL. Objekte sind nicht dasselbe wie Kopierbücher.

54

Es gibt eine Lerntheorie namens Kolb-Zyklus (nach der Person, die sie beschrieben hat). Die Einträge in diesem Zyklus sind:

Concrete experience -> Reflective observation
    ^                        |
    |                        v
Active experimentation <- Abstract conceptualisation

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.


2
+1 Interessant. Intuitiv würde ich erwarten, dass man zumindest einige dieser Stufen durchläuft, um zu lernen, oder? Das heißt, nur zu beobachten reicht wahrscheinlich nicht aus, um wirklich zu lernen - Sie müssen über das, was Sie gesehen haben, nachdenken und es ausprobieren.
Caleb

Das gefällt mir wirklich gut. Ich beginne mit Reflective Observation in den meisten Sprachen, aber in PowerShell beginne ich normalerweise mit Active Experimentation
Caleb Jares,

@caleb richtig. Es ist ein Zyklus, in dem Sie von Stufe zu Stufe wechseln und vielleicht etwas erst dann vollständig verinnerlichen, wenn Sie alle vier durchlaufen haben. Hier fängt man an, was sich am meisten ändert.

39

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.


11
Es gibt einige sehr gute Punkte hier, aber ich denke, es leidet an der "guten alten Zeit". Die Entartung der jungen Generation wird seit Jahrtausenden entlarvt. Ich habe noch keine überzeugenden Beweise dafür.

4
+1 @ JonofAllTrades ..man, ich wünschte, ich könnte zwanzig Jahre zurückgehen und eine Million Dollar verdienen, weil ich wusste, .. FoxPro. nur. Aber nein, heutzutage muss man sich mit Technologien für kleine Galaxien auskennen, um um einen regulären Job zu konkurrieren. Können Sie sowohl Apache als auch IIS einrichten und konfigurieren? Fühlen Sie sich in einem oder zwei SQL-Dialekten wohl, können Sie SPROCs schreiben und sind Sie zumindest in der Lage, leicht zu verwalten? Sind Sie in einigen serverseitigen Sprachen und mindestens einer funktionalen Skriptsprache für die Datenbearbeitung kompetent? ..und wenn Sie für das Web programmieren, funktionieren Ihre Inhalte auf den wichtigsten Browsern UND Mobilgeräten?
Elrobis

Dieses Argument ist nur für Technologien sinnvoll, die bereits vor 20 Jahren existieren. Und ja, Sie haben das große Glück, einen Job zu bekommen, der nach heutigen Maßstäben nur über Kenntnisse in SQL (Ihrem "Hof") verfügt.
Preußen

@prusswan, ich bin Spezialist und es gibt weit mehr Jobs, als sie in meiner Arena ausfüllen können. Aber wie das für das, was ich in der Antwort sage, relevant ist, ist mir ein Rätsel. Die Dinge, über die ich spreche, sind für alle Technologien möglich. Das Problem ist, dass die Leute nicht lernen oder verstehen, was sie tun, weil sie keine Informationen speichern, und nicht, dass einige von uns ältere Technologien verwenden. Es ist genauso einfach, Wissen für neue Technologien zu behalten wie für ältere. Wenn Sie Ihr Wissen behalten, lernen Sie das nächste und entwickeln sich schneller.
HLGEM

24

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.


2
Ich gehe alles durch, was ich kopiere, und ich verstehe alles, was ich lese. Es ist nur ein Teil der Syntax und Funktionalität, die so langwierig sind, dass ich nicht glaube, dass ich alles von Grund auf neu hätte machen können. Sogar Dinge, die einfach und selbstverständlich sein sollten, wie JSON oder eine Datenbankabfrage usw. (wahrscheinlich schlechte Beispiele). Vielen Dank für Ihre Antwort, ich weiß das wirklich zu schätzen.
Neu Unsicher

2
Und Sie sollten auch zweimal überlegen, bevor Sie Codebeispiele in Ihr eigenes Projekt kopieren und einfügen. Es könnte sinnvoller sein, sie in einer Klasse zu trennen und wiederzuverwenden.
Stralsi

@SilviuStraliciuc: Ich denke, es geht eher um 1- oder 2-zeilige Beispiele. Was keinen Sinn macht, Funktionen einzuschließen. Aber ich gebe diese normalerweise erneut ein, anstatt Strg-C + Strg-V zu verwenden, damit ich die richtige Formatierung anwende und Bezeichner und ähnliches sofort ersetze.
Jan Hudec

1
Manchmal ist es sinnvoll, die 1- oder 2-zeiligen Beispiele in eine Funktion einzuschließen, besonders wenn die Möglichkeit besteht, dass Sie später Ihre Meinung darüber ändern, was genau Sie mit den 1- oder 2-zeiligen tun möchten (und jetzt müssen Sie die 200 finden) Stellen, die in Ihrem Code verstreut sind, an denen Sie dieses 1- oder 2-zeilige Muster verwendet haben). Mit einer entsprechend benannten Funktion ist es zumindest einfacher, diese Orte zu identifizieren, selbst wenn Sie etwas falsch machen, das noch an 200 Stellen behoben werden muss.
David K

14

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.


8
Gute Antwort, aber es sollte nicht heißen, dass es in Ordnung ist, Mittelmaß zu akzeptieren. Behalten Sie Ihre eigene Arbeit im Auge und sorgen Sie sich nicht, dass andere Menschen besser sind als Sie, sondern arbeiten Sie, um sich zu verbessern.
Caleb

12

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 ...)


Psst, keiner braucht Klammern, es sei denn, Sie führen Unterabfragen in einem SELECT oder einer komplexen booleschen Logik in dem WHERE durch. ;)
Izkata

2
@ Izkata: Nein? Lassen Sie mich einen alten Code anschauen. Oh, es ist eine INSERT- Anweisung, die Klammern benötigt.
RalphChapin

8

... Ich bin zu der Erkenntnis gekommen, dass ... ich zu viel auf anderen Code verweise. Ich google ständig nach Funktionen für viele Dinge, von denen ich glaube, dass ich sie von Grund auf neu machen sollte, und das hat mein Selbstvertrauen ein bisschen gebrochen.

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.

Ist eine Person ein schlechter Entwickler, indem sie ständig nach Codebeispielen für mittelschwere bis komplexe Aufgaben sucht?

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.


7

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.


Ich bin damit einverstanden - es gibt immer Dinge, bei denen sich die Syntax und der Ansatz von Sprache zu Sprache so stark unterscheiden, dass ich im Allgemeinen prüfen muss, ob eine Aktivität häufig genug ist (Lesen aus einer Datei, Herstellen einer Verbindung zur Datenbank, Erstellen einer HTTP-Anfrage usw.). Auf diese Weise setzen Sie diese grundlegenden Bausteine ​​zusammen, um etwas Neues und Nützliches zu schaffen, das das Schlaue ist
Kris C

5

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.


6
"Ich erinnere mich nie an etwas, das sich leicht in einem Buch nachschlagen lässt." - Albert Einstein, 1922.
gbjbaanb

3
@gbjbaanb Albert Einstein verwendete 1922 die Versionskontrolle? Wow, er war wirklich großartig.
Svick

4

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.


3

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.


3

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.


2
Als vorwiegend solo arbeitender Entwickler habe ich keine Kollegen, die meinen Code überprüfen, Probleme mit mir lösen und mich inspirieren könnten. Beispiele im Netz sind für mich sowohl zum Lösen bestimmter Probleme als auch zum Erlernen neuer Fertigkeiten / bewährter Verfahren von wesentlicher Bedeutung.
cjmUK

3

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.


3

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:

  1. üben Sie die Sprache - tippen Sie sie ein, lassen Sie sie laufen, sprechen Sie sie, wenn es hilft; mach das wiederholt.
  2. Bauen Sie Ihre Einrichtung - verwenden Sie das gleiche Merkmal oder Muster in verschiedenen Situationen. Features zusammenstellen; programme machen.
  3. Geben Sie zwischen den Wiederholungen genügend Zeit , um sicherzustellen, dass die Dinge wirklich in Ihr Langzeitgedächtnis gelangen.

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.

  1. Wenn Sie mit der Syntax zu kämpfen haben, werden Sie möglicherweise nicht genug geübt. Dies gilt insbesondere dann, wenn Sie direkt in Ihren Code kopieren und einfügen, anstatt die Wiederholung zu entwickeln, und - darf ich sagen? - Muskelgedächtnis , das dir hilft, richtig gut zu werden. Um dem entgegenzuwirken, entwickeln Sie einfach Übungen und Disziplinen, die sich auf Wiederholung und Zeit konzentrieren und Ihre Einrichtung in den von Ihnen gewünschten Bereichen verbessern. Vorschläge:
    • Schreiben Sie jeden Tag ein einfaches Programm in derselben Sprache.
    • Geben Sie Beispiele ein, anstatt sie zu kopieren und einzufügen.
  2. Wenn Sie Schwierigkeiten haben, Lösungen für mittelgroße Probleme zu entwickeln, haben Sie möglicherweise nicht genügend Erfahrung mit dem Bauen. Probiere diese:
    • Starten Sie ein mittelgroßes Projekt in einer Technologie oder Sprache, in der Sie sich auskennen möchten. Oder probieren Sie sich an einem etwas umfangreicheren Feature eines Open-Source-Projekts, an dem Sie interessiert sind. Probieren Sie es jeden Tag ein bisschen aus. (Denken Sie daran, wenn Sie nach diesen größeren Projekten suchen: Gehen Sie Stein für Stein auf sie zu. Versuchen Sie nicht, das Ganze auf einmal zu bauen!)
    • Verwenden Sie dieselbe neue Funktion an vier aufeinander folgenden Tagen in vier verschiedenen Kontexten.
    • Fordern Sie sich heraus, etwas mit ausgeschaltetem Webbrowser zu codieren!
    • Machen Sie sich Notizen über Dinge, die Sie lernen. Fassen Sie zusammen, was Sie lernen, und schreiben Sie Ihre Beobachtungen auf. (Eigentlich hilft es mir sehr, Dinge aufzuschreiben und mich zu zwingen, etwas in meinen eigenen Worten auszudrücken.)
    • Schreiben Sie Antworten auf StackOverflow-Fragen zu der Technologie, die Sie in Anspruch nehmen, und überprüfen Sie diese. (Dies hat oft den zusätzlichen Vorteil, dass Sie sich beim Lernen einen guten Ruf verdienen. :-))
  3. Möglicherweise verbreiten Sie Ihre Praxis zu dünn. Sie scheinen in vielen verschiedenen Sprachen zu arbeiten. Dies hat viele Vorteile, hat aber den Nachteil, dass Sie Ihre Erfahrung verwässern. Wenn Sie in fünf verschiedenen Sprachen arbeiten, merken Sie sich weniger, als wenn Sie dieselbe Zeit in einer Sprache verbringen. Schlimmer noch, es gibt eine Menge nicht ganz ähnlicher Verwandter zwischen verschiedenen Sprachen (war das sonst, wenn, elsif oder elif ??), die Sie in die Irre führen könnten. Um dem entgegenzuwirken, schärfen Sie Ihren Fokus. Wählen Sie eine Sache zum Lernen und lernen Sie es kalt. Fahren Sie dann mit dem nächsten Schritt fort.

3

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.


3

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.


3

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.


2

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.


2

Entwickler werden nicht „großartig“ geboren, aber Größe geht nicht automatisch mit Erfahrung einher. Umgekehrt macht mangelnde Erfahrung einen Entwickler nicht „schlecht“. Der Unterschied zwischen einem großartigen und einem schlechten Entwickler liegt nicht in seinem Fachwissen, sondern in seiner Methodik. Das Kennzeichen eines großen Entwicklers ist, dass er bewusst codiert. Anders ausgedrückt, ein guter Entwickler weiß immer, warum er etwas tut. Aus Sicht der persönlichen Ethik erfordert dies intellektuellen Mut und Integrität.

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 ...


1

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?


Du hast einen guten Grund. Natürlich könnte man leicht argumentieren (sogar mit Ihrer eigenen Geschichte!), Dass es nur ein mangelhafter Programmierer ist, der nicht auskommt, ohne dass jemand ihm den Code gibt. Die Frage ist, ob das eine faire Einschätzung ist.
CHAO

1

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.


0

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.


-1

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?"


-1

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.