Wird das Programmieren im Allgemeinen mit zunehmender Erfahrung einfacher zu lesen, zu schreiben und zu verstehen? [geschlossen]


80

Ich bin ein Anfänger im Programmieren und habe Bücher gelesen, studiert, Artikel gelesen und so weiter. Ich habe großartige Ergebnisse erzielt, seit ich angefangen habe, Programmieren zu lernen, und als ich ein Anfänger war, dachte ich, ich wüsste alles über Programmieren, aber als ich mehr lernte, wurde mir klar, wie schwierig dieses Feld ist. aber darum geht es nicht).

Heutzutage habe ich funktionale Software geschrieben und ich habe die GRUNDLAGEN von 3 Sprachen gelernt und ich bin in nur einer Sprache dazwischen. Wenn ich mir fortgeschrittene Dinge wie MYSQL, OpenGL-Programmierung oder sogar Visual Studio C ++ ansehe, bekomme ich Kopfschmerzen, und selbst wenn ich den HTML-Quellcode vieler Websites visualisiere (Die meisten Quellcodes auf Websites, die von Google Chrome angezeigt werden, wirken sehr unordentlich und unorganisiert ) Es verwirrt mich bis an die Grenzen meines Gehirns. Auf den ersten Blick scheint alles einfach, aber wenn ich mir diese fortgeschrittenen Dinge anschaue, frage ich mich, wie man so viel lernen kann.

Kurz gesagt, die Frage ist, ob diese Dinge für einen Programmierer im Laufe seiner Karriere klarer werden. Werden komplizierte Themen wie die oben aufgeführten (OpenGL, MySQL, erweiterte HTML-Sites) mit zunehmendem Lernaufwand einfacher zu lesen, zu schreiben und zu verstehen, oder wird es im Laufe der Zeit nur noch komplizierter? Wie können Sie das Gefühl bekämpfen, eine Ameise in der Programmierwelt zu sein und dieses Zeug ist der Fuß, der Sie zerquetschen wird?


24
Ich schlage vor, Sie lesen diese: norvig.com/21-days.html
James P.

Wie alles andere ja. Bis sich die Technologie auf Sie ändert. :-)
MathAttack

3
Solange Ihre "Erfahrung" nicht immer und immer wieder dieselben Dinge liest. Dehne dich mit neuen Sachen.
JeffO

Ein kleiner Tipp für die Analyse komplexer HTML-Seiten: Verwenden Sie Firefox's Firebug oder Chrome's Inspect Element.
Lie Ryan

6
"Als Anfänger dachte ich, ich wüsste alles über Programmierung." Ich war dort und je mehr ich lerne, desto mehr merke ich, wie wenig ich weiß.
Lieven Keersmaekers

Antworten:


134

Kurze Antwort: nein.

Lange Antwort:

Das Lesen des Codes anderer Leute wird einfacher, ja. Aber nur lesen. Je mehr Erfahrung und Fähigkeiten Sie sammeln, desto größer werden Ihre persönlichen Anforderungen als Entwickler.

  • Sie möchten nicht nur Code schreiben. Sie möchten schönen Code schreiben .

  • Sie gehen nicht davon aus, dass Ihr Code unter idealen Bedingungen ausgeführt wird . Sie denken über alle schlechten Dinge nach, die beim Ausführen Ihres Codes auftreten können, behandeln Ausnahmen, denken über Hardwareprobleme und Netzwerklatenz nach, und das Problem wächst, wenn Ihre Fähigkeiten zunehmen.

  • Sie lesen und schreiben Code nicht in der einzigen Sprache, die Sie kennen. Als erfahrener Entwickler wissen Sie, dass die funktionale Programmierung eine viel bessere Alternative ist , um dieses spezielle Problem zu lösen. Daher müssen Sie jetzt Code in funktionaler Programmiersprache lesen und schreiben.

  • Sie beschränken sich nicht auf eine kleine Anzahl von Bibliotheken, die Sie kennen. Wenn Sie in C # codieren, möchten Sie die volle Leistungsfähigkeit vieler Bibliotheken von .NET Framework kennen und nutzen .

  • Sie benutzen den Notizblock nicht mehr. Sie benötigen Ihre leistungsstarke IDE und möchten wissen, wie Sie Code testen, worum es bei Codemetriken geht und was Hunderte von Optionen und Fenstern bedeuten, die Ihre IDE für Sie darstellen kann.

  • Sie möchten sich nicht bescheiden auf eine Reihe grundlegender Tools beschränken, die Ihnen die Sprache bietet . In C # möchten Sie Generika, Codeverträge, Reflektion, ereignisgesteuerte Entwicklung, funktionale Aspekte mit LINQ, reaktive Erweiterungen und eine Menge anderer Dinge, die Sie gelernt haben, in einem einzigen Projekt verwenden, wenn diese Dinge Ihnen helfen, besser zu schreiben Code.

  • Sie schreiben keinen Code . Sie verbringen 80 bis 90% Ihrer Zeit mit dem Sammeln von Anforderungen , dem Erstellen der Architektur Ihrer Anwendung, dem Schreiben von Komponententests, dem Schreiben von Dokumentationen usw. und nur 10 bis 20% Ihrer Zeit mit dem Schreiben von tatsächlichem Code .

  • Sicherheit ist Ihnen wichtig . Sie kennen die rechtlichen Probleme, die mit den von Ihren Anwendungen manipulierten Daten auftreten können. Sie wissen, was ITIL ist . Sie kennen einige ISO-Normen und wenden sie täglich in Ihrer Arbeit an.

Ja, Sie erwerben Erfahrung und Fähigkeiten, und es wird einfacher, ein bestimmtes Problem mit all dem Wissen und den intellektuellen Fähigkeiten zu lösen, die Sie erworben haben. Aber Probleme, die Sie lösen müssen, wachsen auch, und Sie sind einfach nicht begeistert davon, die Probleme auf der Ebene der Probleme zu lösen, die ich zu Beginn der Programmierung gelöst habe.

Während Sie Fähigkeiten erwerben, erhalten Sie auch einen Einblick in die Komplexität der Softwareentwicklung, lernen die Aspekte kennen, die Sie sich zu Beginn des Programmierens nicht vorstellen konnten, und Sie möchten und müssen all das anwenden, was Sie täglich lernen.

Zusamenfassend:

  1. Der erste Tag, an dem Sie das Programmieren lernen, ist die Aufgabe, alle Zahlen von 1 bis 100 durch zwei teilbar aufzulisten, sehr komplex: Sie haben gerade gelernt, wie man Schleifen erstellt und Zahlen auf dem Bildschirm anzeigt, aber Sie wissen nicht, wie Sie feststellen können, ob Die Zahl ist durch zwei teilbar.

  2. Zehn Jahre später scheint die gleiche Übung äußerst einfach zu sein. Aber auch zehn Jahre später schreiben Sie Anwendungen, die Transaktionen verwenden müssen, auf mehreren Servern gehostet werden und den Sitzungsstatus zwischen Servern ordnungsgemäß verarbeiten müssen. Außerdem speichern Sie die Bankkontodaten Ihrer Kunden mit allen daraus resultierenden Sicherheits- und rechtlichen Aspekten.

  3. ... und du wunderst dich "Wie könnte ich das tun?" Genau wie vor zehn Jahren, als Sie Zahlen auf einem Bildschirm mit einer Schleife anzeigen mussten.

Wenn Ihnen in einer Domäne alles leicht fällt, bedeutet dies, dass Sie entweder in dieser Domäne die Perfektion erreicht haben oder sich einfach nicht mehr darum kümmern.

Perfektion in einem Bereich zu erreichen, der so umfangreich wie die Softwareentwicklung ist, ist unmöglich, egal wie schlau Sie sind.


36
Das Laufen auf dem Wasser und das Entwickeln von Software aus einer Spezifikation ist einfach, wenn beide eingefroren sind (es zeigt, dass "Sie nicht anfangen, Code zu schreiben. Sie verbringen Monate damit, Anforderungen zu sammeln", etwas unrealistisch ist)
jfs

9
"Funktionale Programmierung ist eine viel bessere Alternative " ist umstritten.
jfs

15
Ich hoffe mit Sicherheit, dass das Bit "funktionale Programmierung" nur ein Beispiel für "das richtige Werkzeug für den Job verwenden" ist, anstatt zu implizieren, dass funktionale Programmierung für den allgemeinen Gebrauch tatsächlich besser ist.
Ben Brocka

7
Ich werde auch bemerken, dass "Monate, in denen Anforderungen gesammelt werden", ohne Entwicklung nur in einem idealisierten Wasserfallmodell stattfinden werden. Wenn Sie nicht iterieren, bringen Sie sich selbst und das Projekt um.
Ben Brocka

8
"Es wird nie einfacher, du gehst nur schneller." / Greg LeMond /
daGrevis

20

Als Kind lernst du zu sprechen und dann deine Muttersprache zu lesen. Die schlichte Mechanik davon ist zunächst ein Kampf, aber irgendwann kommt es fließend. Sie haben jedoch immer noch einen unendlichen Vorrat an Büchern, die Sie noch nicht gelesen haben, und bei einigen Themen müssen Sie zuerst Ihren Wortschatz erweitern, um das Buch verstehen zu können.

Gleiches gilt für die Computerprogrammierung. Irgendwann fühlt sich die Sprache selbst nicht mehr wie eine Fremdsprache an, aber es gibt immer noch eine Menge Dinge in dieser Sprache, die Sie noch nicht kennen. Aber alles ist Ihnen mit einigem Aufwand zugänglich.

Einige Programmierjobs wiederholen sich sehr und implementieren im Grunde genommen sehr ähnliche Software für verschiedene Kunden neu. In diesen Berufen könnten Sie das Gefühl haben, ein Lernplateau zu erreichen. Bei anderen Jobs machen Sie immer etwas Neues und Einzigartiges und hören nie auf, Neues zu lernen.


18

Hier gibt es bereits einige wirklich gute Antworten, aber ich dachte, ich könnte noch ein paar kurze Punkte hinzufügen:

Als Anfänger dachte ich, ich wüsste alles über Programmierung, aber als ich mehr lernte, wurde mir klar, wie schwierig dieses Feld ist

Dies nennt man den Mahn-Krüger-Effekt . Es ist äußerst verbreitet bei Programmieranfängern und in der Tat Anfängern in vielen Bereichen.

Die meisten Quellcodes auf Websites, die von Google Chrome angezeigt werden, wirken sehr unordentlich und unorganisiert

Wollten die Leute, die diese Websites geschrieben haben ,, dass Sie sie verstehen können? Wahrscheinlich nicht. Es liegt in ihrem Interesse, Code zu haben, der schwer zu verstehen ist.

Ich frage mich nur, wie man so viel lernen kann.

Durch Spezialisierung . Ich bin ein Experte auf einem außerordentlich engen Gebiet: dem Entwurf und der Implementierung von semantischen C # -Compiler-Analysatoren. Wenn ich fünfzehn Jahre lang OpenGL oder XML oder HTML oder was auch immer studiert hätte, wäre ich ein Experte dafür und würde von semantischen Analysatoren verwirrt. Das habe ich aber nicht und daher verstehe ich OpenGL, XML und HTML nur sehr grundlegend.

Kurz gesagt, die Frage ist, ob diese Dinge für einen Programmierer im Laufe seiner Karriere klarer werden.

Ja, weil Sie anfangen, die größeren Muster zu sehen. Nehmen wir zum Beispiel OpenGL. Sie haben wahrscheinlich eine Reihe von "API-Bibliotheken" gesehen - große Teile des zugehörigen Codes, bei denen die Art und Weise, wie Sie mit dem Code interagieren, darin besteht, eine Reihe benannter Funktionen mit bestimmten Argumenten aufzurufen. Und Sie können ein grundlegendes Verständnis von OpenGL erhalten, indem Sie lediglich verstehen, dass es sich um eine API handelt.

Wenn Sie mehr Erfahrung gesammelt und eine Reihe verschiedener Programmiertechniken kennengelernt haben, stellen Sie fest, dass scheinbar nicht verwandte Technologien - beispielsweise OpenGL und LINQ in C # - Gemeinsamkeiten aufweisen. Beide sind APIs, in denen Sie Workflows erstellen, um die Daten weitergeleitet werden, und in denen Sie Optimierer und andere Transformationen für den Workflow auf vielfältige und interessante Weise ausführen können. Sobald Sie dieses Konzept in Ihrem Werkzeugkasten haben, wird es plötzlich viel einfacher, die volle Leistungsfähigkeit einer API zu nutzen, die dieses Muster verwendet.

Werden komplizierte Themen wie die oben aufgeführten (OpenGL, MySQL, erweiterte HTML-Sites) mit zunehmendem Lernaufwand einfacher zu lesen, zu schreiben und zu verstehen, oder wird es im Laufe der Zeit nur noch komplizierter?

Sie werden sowohl einfacher als auch komplizierter. Einfacher, weil Sie, wie gesagt, die größeren Denkmuster erkennen, die dem Design des Systems zugrunde liegen und die es Ihnen ermöglichen, das System effektiver zu nutzen. Komplizierter, weil Sie das System jetzt verwenden können, um kompliziertere Probleme zu lösen , und dann beginnen, auf die Einschränkungen des Systems zu stoßen.

Wie können Sie das Gefühl bekämpfen, eine Ameise in der Programmierwelt zu sein und dieses Zeug ist der Fuß, der Sie zerquetschen wird?

Du bist eine Ameise; Wir sind alle Ameisen. Aber das Zeug ist nicht der Fuß, der dich zerquetscht; Es ist die Welt, die Sie erforschen, in der Sie leben, von der Sie profitieren und die Sie verbessern können. Du, Ameise, darfst nur einen winzigen Teil davon erforschen. Suchen Sie sich ein Teil aus, das Ihnen gefällt und in dem Sie einen echten Mehrwert erzielen und Experte werden können.


2
Vielen Dank für diese Antwort, sie steht über den anderen, weil sie nicht nur meine Hauptfrage beantwortet, sondern mir auch die Augen für bestimmte Dinge öffnet. +1
Bugster

@Eric: Was würdest du einer Person in dieser Art von Themen sagen, in denen er sagt "Spezialisierung ist für Insekten, nicht für Menschen"?
Joan Venge

@JoanVenge Würde das jemand sagen? Normalerweise geht es den Menschen nur darum, sich zu spezialisieren und einzigartig zu sein, und noch viel mehr, wenn sie das Bedürfnis verspüren, sich von Tieren (oder Insekten) zu unterscheiden.
Matthew Read

1
Sie missverstehen, was der Mahn-Krüger-Effekt ist, der definiert ist als die Unfähigkeit der Unqualifizierten, ihre eigene Unfähigkeit zu erkennen und ihre eigene Fähigkeit genau zu bewerten . Wenn Sie nicht erkennen können, dass Sie nicht alles wissen, können Sie nie etwas Neues lernen. Wenn Sie es erkennen können, ist es nicht DKE.

+1 für Wählen Sie ein Teil, das Ihnen gefällt, und Sie können einen echten Mehrwert schaffen und ein Experte dafür werden.
Akshay Khot

14

Kurze Antwort, ja.

Bei gegebener Zeit und Belichtung werden diese Dinge leichter zu verstehen.

Denken Sie daran, dass Websites, die Sie mit den Entwicklertools in Ihrem Browser betrachten, häufig von einem Framework generiert werden. Lassen Sie das eine beliebige Anzahl von Dingen sein ... ASP.NET, JSP, RoR, Django, ... wer weiß. Einige dieser Frameworks produzieren saubereren Code als andere.

Zum Schluss ... Exposition führt zu Kompetenz. Es gibt keine Möglichkeit, dieses Gefühl zu unterdrücken. Einfach erleben und lernen. Es braucht Zeit, um sich einzuarbeiten, Domänenkenntnisse zu erwerben und die Fähigkeiten zu erlernen, die Ihre Umgebung nutzt.


1
Das stimmt, solange die Person, die den Code geschrieben hat, bewährte Praktiken und die üblichen Redewendungen sowohl der Sprache im Besonderen als auch der Programmierer im Allgemeinen verwendet. Eine fehlerhafte Codierung und / oder absichtliche Verschleierung kann das Crawling verlangsamen. Versuchen Sie es mit CodeGolf.SE . Sogar die "in the clear" -Versionen können hartnäckig sein, da gute Praktiken bei der Änderung der Wettbewerbsmetrik geopfert wurden.
dmckee

@dmckee Selbst fehlerhafter Code wird mit der Erfahrung viel einfacher zu lesen. Ich bemerke das besonders in C ++ (und ich musste viel schlechten Code lesen ). Natürlich ist es eine extreme Hürde, aber es wird trotzdem viel einfacher, wenn Sie Muster mit schlechtem Design und häufigen Fehlern entdecken. Diese bilden auch eine Art Redewendung, die Sie lernen werden.
Konrad Rudolph

2

Ich stimme einigen der bereits gegebenen Antworten zu, aber ich denke, sie sind auch ein Grund, warum nicht über das Lesen von Code diskutiert wird. Als ich mich zum ersten Mal mit Open Source-Code befasste, wirkte er überwältigend und riesig. Aber rate mal was? es wird immer riesig sein. Irgendwann merkt man, dass man besser darin ist, das zu extrahieren, was man speziell wissen möchte, und weiterzumachen.

Ein Beispiel, das Sie angegeben haben, war das Betrachten einer Reihe von HTML-Code:

Warum schauen Sie sich HTML-Code an? Wahrscheinlich nicht, weil Sie den HTML-Code der gesamten Site lernen möchten. Es gibt wahrscheinlich einen bestimmten Trick, den Sie aufgreifen möchten. In diesem Fall suchen Sie einfach den entsprechenden HTML-Code mit einem Tool wie firebug.

Wenn Sie wirklich wissen möchten, wie die gesamte Website aufgebaut ist, haben Sie festgestellt, dass gerendertes HTML nicht der richtige Weg ist, dies zu tun. Sie sollten sich ein Open-Source-Projekt mit ähnlicher Technologie ansehen. Der Versuch, den Code eines gesamten Projekts zu lernen, ist jedoch nicht so lohnend, wie es sich anhört. Es ist langweilig, zeitaufwändig, leicht zu vergessen, was Sie gelernt haben, und Sie haben am Ende nichts mehr zu zeigen. Sie werden weniger lernen, wenn Sie den Code anderer Leute endlos lesen, und viel mehr, wenn Sie bestimmte, interessante Teile davon verwenden, um Plugins zu schreiben, Funktionen hinzuzufügen oder als Gerüste und Ratschläge für Ihre eigenen Projekte.

Versuchen Sie, das absolute Minimum zu lernen, um etwas von Ihrer eigenen Arbeit zu bekommen. Kehren Sie nur dann zu Ihren Referenzpunkten zurück, wenn Sie stecken bleiben oder eine bestimmte neue Sache lernen möchten. Dies steht im Widerspruch zu der üblichen Weisheit, dass Sie alles verstehen müssen, sonst programmieren Sie im Dunkeln. Aber irgendwann merkt man, dass das Ziel unmöglich ist und man lernt, die Ziele, alles zu wissen und das Ziel, das, woran man gerade arbeitet, tatsächlich zu beenden, in Einklang zu bringen.


2

Die kurze Antwort lautet JA, aber vieles davon hängt davon ab, wie Sie Erfahrung definieren.

Ich denke, es gibt mindestens 3 Teile für die Entwicklung. Je besser Sie in jedem Segment werden, desto klarer werden bestimmte Dinge.

  1. Verständnis der BUSINESS-Anforderungen . Auf diese Weise können Sie die Anwendung aus der Vogelperspektive betrachten. Je besser Sie verstehen, warum die Geschäftsregeln so sind, wie sie sind, desto schneller können Sie nachvollziehen, warum bestimmte Dinge auf eine bestimmte Art und Weise erledigt werden. ZB müssen Ihre Kunden die behördlichen Vorschriften X einhalten, weshalb sie das Dokument Y vorbereiten müssen, weshalb sie diese scheinbar nutzlosen Informationen speichern müssen.

  2. Verständnis der TECHNISCHEN Anforderungen . Dies ist wie die Nummer 1, mit der Ausnahme, dass es eher darum geht, das Warum auf technischer Ebene zu verstehen. Einige Tools und Technologien haben ihre eigenen Macken, bis Sie sich mit ihnen befasst haben, bevor es schwer zu verstehen ist, warum Dinge auf eine bestimmte Weise getan werden. Dies ist offensichtlicher, wenn Sie sich mit älteren Systemen befassen. ZB Die Anwendung verwendet einen bestimmten Service-Bus, der nur XML akzeptiert.

  3. Grundlegendes zu den LANGUAGE-Anforderungen . Wie bereits erwähnt, können Sie, je erfahrener Sie mit einer Sprache sind, umso schneller nachlesen, was der ursprüngliche Programmierer erreichen wollte. Ohne die Punkte 1 und 2 werden Sie feststellen, dass diese gesteigerte Fähigkeit ziemlich schnell ihren Höhepunkt erreicht.

Versuchen Sie, sich an mehreren Aspekten der Entwicklung zu beteiligen, da dies erst dann wirklich einfacher wird, wenn Sie alle Bereiche mindestens ein paar Mal ausgeführt haben.

Denken Sie daran, dass Perfektion (und Zweck) im Code eines anderen immer relativ zu # 1 und # 2 ist. Dies sind die Hauptgründe, warum sich der Code in dem Zustand befindet, in dem er sich befindet. Häufige Änderungen in diesen beiden Bereichen sind der Hauptgrund, warum wir ständig Spaghetti-Code erhalten. Wenn Sie nicht mit den geschäftlichen und technischen Anforderungen vertraut sind, ist das Lesen von Code immer eine königliche Aufgabe von PITA.


2

Es wird gleichzeitig einfacher und komplizierter!

Andere zu kennen ist Weisheit;
Das Selbst zu kennen ist Erleuchtung.
Andere zu meistern erfordert Gewalt.
Das Selbst zu meistern erfordert Kraft;
Wer weiß, dass er genug hat, ist reich.
Ausdauer ist ein Zeichen von Willenskraft.
Wer dort bleibt, wo er ist, hält aus.
Sterben, aber nicht zugrunde gehen heißt, ewig präsent zu sein.

übersetzt in Software-Entwicklung

Viele Technologien zu kennen, ist Weisheit. (Alles stammt von ALGOL ab.) Zu
wissen, was du nicht weißt, ist Erleuchtung. (LISP)
Viele Sprachen, Frameworks und Plattformen zu beherrschen, erfordert viel Aufwand. (Java)
Nur das zu beherrschen, was Sie wissen müssen und nur das, was Kraft erfordert. (und Google oder stackoverflow.com)
Wenn Sie wissen, wann Sie mit dem Codieren aufhören und etwas zustellen müssen, wissen Sie Bescheid. (Keine Analyse Lähmung oder Vergoldung)
Arbeiten Sie weiter an dem, was Sie erreichen möchten, es erfordert Konzentration und Willenskraft. (Alles ändert sich ständig, Sie sind nie fertig)
Bleiben Sie bei ein oder zwei Technologien und Sie werden ertragen. (COBOL zahlt sich immer noch gut aus, genau wie C)
Das Programmieren zu beenden und in die Geschäftsführung einzusteigen, bedeutet, auf ewig präsent zu sein. (oder hinterlassen Sie ein Erbe der FOSS-Software, das jeder weiterverwenden wird, wenn Sie tot sind).


Also, anstatt eine Ameise zu sein, solltest du eine Kakerlake sein und einfach aufstehen, wenn sie dich zerquetscht, oder? :-P
Bugster

"Analysis Paralysis"! = "Weiß, wann mit dem Codieren aufzuhören ist". Es ist eher "wissen, wann man mit dem Codieren beginnen soll".
Ben Voigt

0

Kurz gesagt, die Frage ist, ob diese Dinge für einen Programmierer im Laufe seiner Karriere klarer werden. Werden komplizierte Themen wie die oben aufgeführten (OpenGL, MySQL, erweiterte HTML-Sites) mit zunehmendem Lernaufwand einfacher zu lesen, zu schreiben und zu verstehen, oder wird es im Laufe der Zeit nur noch komplizierter? Wie können Sie das Gefühl bekämpfen, eine Ameise in der Programmierwelt zu sein und dieses Zeug ist der Fuß, der Sie zerquetschen wird?

Ich werde etwas anders vorgehen als die anderen Befragten. Ich glaube, dass das Lesen und Schreiben von Code tatsächlich einfacher wird, wenn Sie es mehr tun, und ich werde es mit einer einfachen Analogie demonstrieren.

Denken Sie daran, wann Sie mit dem Sport angefangen haben. Gleich zu Beginn der ersten Sportart, die Sie gelernt haben, schien die grundlegende Koordination für die einfachen Aufgaben einer einzelnen Sportart sehr schwierig. Mit zunehmender Erfahrung haben Sie angefangen, die einfachen Aufgaben zu meistern, damit Sie nicht mehr über sie nachdenken müssen, und Sie haben festgestellt, dass es komplexere Aufgaben gibt, auf die Sie achten können (z. B. andere Spieler beobachten, um Vorhersagen zu treffen) ihr Verhalten).

Dann, als Sie sich in einer anderen Sportart versuchten, stellten Sie wahrscheinlich fest, dass Sie nicht so weit zurück waren, als Sie anfingen. Einen Basketball zu fangen ist viel anders als einen Baseball zu fangen, aber jemand, der einen von ihnen gemeistert hat, wird es viel einfacher haben, den anderen aufzunehmen als eine Person, die noch nie einen gemacht hat. Mit Ihrer Erfahrung im Üben einer zweiten Sportart haben Sie festgestellt, dass die erste Sportart Ihnen sowohl spezifische als auch allgemeine Fähigkeiten vermittelt. Spezifische Fähigkeiten (Basketball fangen) sind nur in ihrer Domäne nützlich, aber allgemeine Fähigkeiten (Verfolgen eines sich schnell bewegenden Objekts, das sich im dreidimensionalen Raum nähert, und Entwickeln eines Plans, um damit umzugehen) verbessern Sie in allen verwandten Domänen.


Was hat das mit Programmierung zu tun? Die erste Codezeile, die Sie lesen, setzt Sie einer Welt aus, die auf bestimmten Regeln basiert. Sie haben diese Regeln (die Syntax und die Redewendungen dieser Sprache) als spezifische Fähigkeiten erlernt, aber Sie haben auch einige wertvolle allgemeine Fähigkeiten erlernt: Verstehen, wie Computer intern funktionieren und wie Sie Ihre Absichten so ausdrücken, wie ein Computer sie verstehen kann. Jede neue Sprache, die Sie lernen, bietet Ihnen einige neue spezifische Fähigkeiten, stärkt aber auch Ihre allgemeinen Fähigkeiten und hilft Ihnen dabei, die Muster zu sehen, die durch alle Computersprachen geschossen werden, wie Mineralvorkommen, die entlang einer Canyonwand geschichtet sind. Sobald Sie sich mit ein paar verschiedenen Sprachen wirklich vertraut gemacht haben, können Sie die "Form" der meisten Codes erkennen, wenn Sie die Unbestimmtheit entschuldigen, auch wenn Sie nichts über die Sprache wissen, in der sie geschrieben sind.

Beispielsweise haben alle drei von Ihnen erwähnten Sprachen (MYSQL, OpenGL, C ++) einige gemeinsame Merkmale:

  • Es ist möglich, kleine Teile eines Algorithmus separat zu berechnen und diese später zu einer vollständigen Lösung zusammenzusetzen
  • Der Computer erfordert in der Regel einige allgemeine Vorbereitungen, bevor Sie mit der Arbeit an Ihrem spezifischen Problem beginnen können (Erstellen einer Tabelle, Initialisieren einer Zeichenfläche oder Laden allgemeiner Bibliotheken).
  • Frühere Anweisungen haben Vorrang und wirken sich auf spätere Anweisungen aus, dh der Computer beginnt am oberen Rand des Codes und arbeitet sich nach unten

Je mehr Sie programmieren, desto mehr werden Sie feststellen, dass, egal wie die Kugel geformt ist, immer noch eine Kugel auf Sie zukommt und Sie wissen, wie Sie damit umgehen müssen, ohne zu viel darüber nachdenken zu müssen. Bei jeder Programmierung geht es darum, Ihre Absichten so auszudrücken, dass der Computer sie verstehen kann. Wenn Sie genug lernen, werden Sie in der Lage sein, die Absichten anstelle des Codes zu lesen.

PS: Jedes Mal, wenn du anfängst, dich auszukennen, wirst du auf etwas stoßen, das dir das Hirn bricht und dich wie ein Anfänger fühlen lässt. Das ist es, was wir an diesem Job lieben, es gibt immer etwas Neues zu lernen.


0

Kurze Antwort: Ja im Allgemeinen

Sie werden jedoch kein Spezialist, wenn Sie verallgemeinern. Spezialist zu werden bedeutet auch, all die Dinge zu realisieren, die man nicht kennt: Dies kann ein überwältigendes Gefühl sein.

Während du dich durch die Zeit bewegst, sammelst du Erfahrung.

Während Sie sich durch die Zeit bewegen, entwickeln sich andere Sprachen / Muster usw. parallel zu Ihrer Entwicklung.

Eine weitere Variable zu Ihrer Frage ist, ob Sie bedeutende Erfahrungen in Bezug auf die Branche sammeln, da diese sich ebenfalls durch dieselbe konstante Zeit bewegt. Die Technologiebranche ist ein bewegliches Ziel und unterscheidet sich von den meisten anderen Branchen.

Eine gute Frage könnte auch sein, ob Sie sich in einer bestimmten Sprache zu dünn oder zu dick ausbreiten.


0

Es ist eine unendliche Quelle des Staunens (und der Angst), wie viele Computersprachen es gibt und inwieweit sie sich ständig ändern. Hinzu kommt die Anzahl der verschiedenen Frameworks in jeder Sprache und für jedes Framework die Vielzahl der verfügbaren Bibliotheken und Plug-Ins. Fügen Sie dazu die Anzahl der Code-Editoren und IDEs hinzu.

Alle diese Variationen haben zwei Dimensionen der Komplexität.

  1. Ihr Wortschatz und ihre Syntax sind unterschiedlich.
  2. Die von ihnen unterstützten Abstraktionen (übergeordnete Konzepte) sind unterschiedlich.

Sie haben auch eines gemeinsam. Vollständigkeit prüfen. Mit genügend Aufwand eines Programmierers können alle Probleme gelöst werden! Wenn Sie also mit einer Sprache wie C beginnen (kleines Vokabular, komplexe Syntax und fast keine Abstraktionen), haben Sie definitiv das Gefühl, dass Sie alles können (ganz richtig).

Dann wechseln Sie zu "einfachen Dingen" wie CSS, HTML, Javascript und vielleicht auch zu Frameworks wie Bootstrap und React, und Ihr Gehirn wird braten - genau wie bei Albert Einstein. Die Leute denken "Ich kenne Französisch, deshalb sollte es einfach sein, Deutsch zu lernen". Nein!

Viele Programmierabstraktionen können aus Softwaremustern gelernt werden . Es gibt mehrere Bücher zum Thema. Muster gibt es überall, sie sind sprachunabhängig und können einmal gelernt und verstanden werden . Wenn Sie Ihre Muster kennen, können Sie sie in jeder Sprache verwenden und sie erkennen, wenn sie in Sprachen und häufiger in verschiedenen Frameworks integriert sind.

Die meisten Leute brauchen 1-2 Jahre, um eine neue Sprache fließend zu sprechen, und die Arbeitgeber wissen das. Das ist der Grund, warum sie keine Leute einstellen, die nicht in ihrer Sprache erfahren sind, weil der neue Mitarbeiter viel Zeit mit der Sprache zu tun hat und nicht genug Zeit hat, um die geschäftlichen Probleme zu lösen.

Zusammenfassend können Sie sagen, dass sich Informatikprinzipien / -abstraktionen, Softwaremuster und die Art der Geschäftsprobleme, auf die Sie treffen, nur langsam ändern. Sie können einmal lernen und inkrementell neues Wissen anhäufen. Umgekehrt ändern sich Computersprachen, Frameworks, sogenannte "Ökosysteme" und Komponentenbibliotheken, genau wie alle Tools, die sie umgeben, sehr schnell. Erwarten Sie hier, dass das Lerntempo langsam und zeitaufwändig ist!


-1

Werden komplizierte Themen wie die oben aufgeführten (OpenGL, MySQL, erweiterte HTML-Sites) mit zunehmendem Lernaufwand einfacher zu lesen, zu schreiben und zu verstehen, oder wird es im Laufe der Zeit nur noch komplizierter? Wie können Sie das Gefühl bekämpfen, eine Ameise in der Programmierwelt zu sein und dieses Zeug ist der Fuß, der Sie zerquetschen wird?

Wenn Fortschritte gemacht werden, verlernen wir und lernen neu, was wir dachten, dass wir vorher wussten. - Henry David Thoreau

Es gibt eine Geschichte über den Zen-Meister und die überfließende Teetasse .

Manchmal müssen wir unsere vorgefassten Vorstellungen und Meinungen aus der Vergangenheit loslassen, damit wir neue Konzepte erlernen können.

Denken Sie daran: Wenn Sie sich von einem neuen Konzept überwältigt fühlen, müssen Sie nach vielen Lehrern suchen.

Kürzlich, als ich den Auftrag erhielt, eine firmeninterne Software zu aktualisieren, die eine Skriptsprache verwendete, war ich nicht vertraut. Am Anfang war es sehr stressig. Nachdem ich meine Einstellung geändert hatte, fing ich an, Ressourcen zu finden, die die Syntax und die grundlegenden Konzepte erklärten. Ich habe das Projekt abgeschlossen und benutze jetzt diese Skriptsprache als eines meiner Werkzeuge, um mehr Dinge zu erledigen.

Ihre Einstellung macht den Unterschied.

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.