Ein umfassender Leitfaden, um ein Autodidakt zu werden

Teil II: Denken, planen und ausführen wie ein Programmierer

Jetzt, da Sie wissen, wie man Probleme löst, über die Lösung nachdenkt und Ihre Ideen fließend kommuniziert, ist es Zeit für Sie, diese Fähigkeiten wie ein Programmierer in die Praxis umzusetzen.

Donald Knuth: Zweifellos einer der größten Informatiker, die das Feld je gesehen hat.

In diesem Teil gibt es drei Dinge, die Sie lernen müssen. Zunächst lernen Sie C ++ als zweite Sprache, die im Vergleich zu Python näher an Beschreibungen auf Maschinenebene liegt. Python liegt näher am Spektrum des einfachen Englisch, während C ++ näher am Ende des Spektrums von 0 und 1 liegt. Wenn Sie C ++ lernen, werden Sie mit mehr Programmierkonstrukten wie Zeigern vertraut. Zweitens verbessern Sie Ihre Codierungsgeschwindigkeit, indem Sie intensiv üben, die Dokumentation lesen und Ihre Debugging-Fähigkeiten weiter verfeinern. Schließlich lernen Sie die Rekursion, die Magie, mit der Programmierer und Informatiker die Rechenleistung nutzen.

Lernen Sie C++ und beginnen Sie mit dem Schreiben einfacher Programme

Sie haben Python bereits im vorherigen Teil gelernt. Python ist eine programmiererfreundliche Sprache, da sie viele Details auf niedriger Ebene vor dem Programmierer verbirgt, um die Verwendung zu vereinfachen. Wenn Sie jedoch Fortschritte erzielen möchten, müssen Sie unbedingt die Grundlagen der Programmierung in C ++ erlernen.

Worauf man sich konzentrieren sollte: Wenn Sie Code in C ++ schreiben, fühlen Sie sich programmiererähnlicher, da Sie sich mehr auf Beschreibungen auf Maschinenebene konzentrieren. Lernen Sie den Unterschied zwischen Syntax und Semantik. Verbringen Sie Zeit damit, statische und dynamische Eingabe, Speicherverwaltung und Zeiger zu lernen. Lernen Sie, Bedingungen, Schleifen, Funktionen, Datentypen und Dinge, die Sie in Python gelernt haben, in C ++ noch einmal zu implementieren. Wenn das alles wie Griechisch und Latein aussieht, mach dir keine Sorgen. Der Abschnitt Ressourcen wird Ihnen alles klar machen.

Umgang mit Fehlern: Wenn Sie einen Fehler erhalten, lassen Sie sich nicht entmutigen. Selbst die erfahrensten Programmierer haben Fehler und Bugs in ihren Programmen. Alles, was Sie tun müssen, ist den Fehler zu lesen, eine schnelle Google-Suche durchzuführen und das Problem in Ihrem Code zu beheben. Verstehen Sie dabei, wo Sie einen Fehler gemacht haben, korrigieren Sie Ihr Verständnis und fahren Sie fort. Manchmal müssen Sie möglicherweise ein wenig Dokumentation lesen. Überprüfen Sie den nächsten Abschnitt.

Das Lesen von Dokumentation sollte für Sie zur zweiten Natur werden

Genau wie bei einer Google-Suche hängt die Fähigkeit eines Programmierers davon ab, wie gut er Dokumentation verstehen und nützliche Programme schreiben kann. Wenn Sie lernen, Dokumentation zu lesen, lernen Sie auch, Ihren Code zu kommentieren, lesbaren Code zu schreiben und Dokumentation für den von Ihnen geschriebenen Code zu schreiben.

Warum sollten Sie das lernen? Viele Menschen haben Schwierigkeiten, neue Technologien zu erlernen, und suchen nach vorgefertigten Kursen, aus denen sie lernen können. Dies ist zwar in der Anfangsphase in Ordnung, aber wenn sich Ihr Wissen vertieft, werden Sie keine vorgefertigten Tutorials finden, mit denen Sie sich mit einem Löffel ernähren können. Sie müssen die Dokumentation durchlesen und abholen, was Sie brauchen. Lernen Sie erneut, Informationen herauszufiltern und genau das zu nehmen, was Sie benötigen, um die Arbeit zu erledigen.

Üben. Wiederholen. Üben.

Jetzt musst du nur noch üben. Gehen Sie zu Hackerrank und lösen Sie dort alle einfachen Probleme im Abschnitt Aufwärmen und Implementierung. Wenn es ein Problem gibt, das Sie nicht lösen können, lesen Sie die Diskussionen, lesen Sie das Editorial und sehen Sie, wie Sie es selbst lösen können. Wenn Sie etwas nicht verstehen, verwenden Sie Google.

Wenn Sie die Messungen im vorherigen Teil durchgeführt haben, sollten Sie hier kein Problem haben. Wenn Sie Probleme haben, würde ich vorschlagen, dass Sie diese Abschnitte erneut besuchen. Sie müssen gut darin werden, Code zu schreiben, überspringen Sie diesen Teil also nicht. Die Idee ist, Ihre einfachen englischen Lösungen fließend in ihre Programmieräquivalente umzuwandeln. Sobald Sie nicht von sprachlichen Besonderheiten verzettelt sind, können Sie fortfahren. Nehmen Sie alle Programme, die Sie in Python geschrieben haben, und codieren Sie sie in C ++.

Sie können auf den Hype um wettbewerbsfähige Programmierung stoßen, ich würde Ihnen empfehlen, sich zu diesem Zeitpunkt davon fernzuhalten, da dies mehr schaden als nützen wird. Sobald Sie Teil III beendet haben, können Sie damit experimentieren und, wenn Sie es richtig machen, Ihre Problemlösungsfähigkeiten enorm verbessern.

Rekursion gut verstehen

Dies wird Ihnen helfen, die Rekursion besser zu verstehen. Haha.

Das Herz eines Informatikers liegt in der Fähigkeit, Rekursion zu verstehen. Rekursion bedeutet, etwas in sich selbst auszudrücken. Alles, was Sie mit Schleifen tun können, kann rekursiv und auf sehr elegante Weise ausgeführt werden. Versuchen Sie, dies intuitiv zu verstehen, und sehen Sie sich die Videos an, die ich in den Ressourcen bereitgestellt habe. Wenn Sie ein Softwareentwickler sind, der die Rekursion nicht gut genug versteht, würde ich empfehlen, dies sofort zu tun.

Zusammenfassung

Bisher kennen Sie eine Low-Level- und eine High-Level-Sprache und können die Unterschiede in der „Kontrolle“, die Sie über Ihre Programme haben, ausreichend einschätzen. Inzwischen sollten Sie in der Lage sein, einfache Programme mit Python und C ++ zu schreiben und den Unterschied zwischen beiden Sprachen zu schätzen.

Von hier aus gehen viele Menschen in die Furche, mehr Sprachen zu lernen, was nichts anderes als eine nutzlose Übung für sich ist. Eine der häufigsten Fragen, die mir von Anfängern gestellt werden, lautet: „Wie viele Sprachen kennst du?“, was mir klar macht, wie fehlgeleitet Anfänger im Allgemeinen sind, wenn sie Programmierkenntnisse mit dem Wissen um mehr Sprachen in Verbindung bringen. Beim Programmieren geht es nicht darum, viele Sprachen zu kennen. Die Sprache, die Sie verwenden, ist nur eine Möglichkeit für Sie, Ihr Problem effektiv auszudrücken und zu lösen. In diesem Stadium sind Sie ein „Programmierer“, aber das ist nicht genug. Sie müssen jetzt Informatik lernen, um Ihre Fähigkeiten auf die nächste Stufe zu bringen.

Teil III: Dein Stelldichein mit Informatik

Ein solides Verständnis der Ressourcen in dieser Phase wird dich besser machen als die meisten Programmierer in deiner Peer Group. Sie können sogar besser werden als die meisten Ingenieurstudenten im 2. / 3. Jahr in Indien. Ihr Fortschritt von hier hängt von Ihrem Durst nach dem Material in diesem Abschnitt ab. Also konzentriere dich.

Um etwas von meiner philosophischen Note hinzuzufügen, ist das Eintauchen in die Informatik wie das Öffnen der Büchse der Pandora.

Die meisten Themen in diesem Abschnitt werden im 2. Jahr eines Informatikkurses behandelt. Ich habe sie etwas anders angegangen, um den Zielen dieses Leitfadens am besten zu entsprechen.

Wie unterscheidet sich das von einem regulären Bachelor-Curriculum? Regelmäßige Bachelor-Lehrpläne sind stark mit Theorie belastet. Die Kurse, die ich im Bereich Ressourcen vorgeschlagen habe, haben eine gute Mischung aus Theorie und Praxis. Während dies eine gute Sache für angehende Ingenieure sein kann, ist es für den Laien da draußen nicht sehr nützlich. Man verliert den Überblick, wo die Theorie aufhört und die Praxis beginnt. Ich werde genau darauf hinweisen, was Sie theoretisch lernen müssen, damit Sie direkt weitermachen und üben können. Theorie ist nur ein Werkzeug, um Ihnen zu helfen, besseren Code in dieser Phase zu schreiben, also lassen Sie sich nicht zu stark davon verzetteln.

Fun Fact: In meinem 2. Ingenieursemester hatten wir ein Fach namens DBMS (Database Management Systems). Ich war überrascht, Leute zu finden, die die besten ER-Diagramme für ihre Datenbankdesigns zeichnen würden, aber wenn es darum ging, eine Datenbank für praktische Anwendungen zu entwerfen, scheiterten sie kläglich. Sie waren so darauf konzentriert, die Details des Diagramms richtig zu machen, sie würden den Grund vergessen, warum sie es überhaupt taten. Ich beschuldige sie nicht, weil ihnen nie beigebracht wurde, dass das Diagramm für sie da ist, um bessere Datenbanken zu erstellen, nicht um ihre Skizzierfähigkeiten zu verbessern.

Diskrete Mathematik

Sie haben bereits unwissentlich diskrete Mathematik verwendet. Diskrete Mathematik ist eine Kombination von Bereichen der angewandten Mathematik, die in der Informatik wiederholt verwendet wurden. Die Experten auf diesem Gebiet beschlossen, alles zusammenzufassen und ihm einen Namen zu geben — den wir jetzt diskrete Mathematik nennen.

Keine Sorge, Mädchen, sie hat das erste Programm geschrieben

Wenn Sie diskrete Mathematik lernen, folgen Sie demselben Prinzip, das ich in Teil I beschrieben habe. Diskrete Mathematik erhöht einfach die Anzahl der Werkzeuge, die Ihnen zur Verfügung stehen, um Probleme anzugehen. Wenn Sie Ihre Angst vor Mathematik überwunden haben, werden Sie den Kurs, den ich im Abschnitt Ressourcen verlinkt habe, sehr genießen.

Datenstrukturen und Algorithmen

Dies ist das Rückgrat Ihrer gesamten Reise. Tatsächlich haben Sie die ganze Zeit bereits Datenstrukturen und Algorithmen verwendet — wieder unwissentlich. Jetzt werden wir es formalisieren und genauer untersuchen.

Linus Torvalds hat den Linux—Kernel gebaut – etwas, ohne das Android nicht möglich gewesen wäre was es heute ist

Als erfahrener Programmierer werden Sie überall Datenstrukturen und Algorithmen verwenden. Wenn Sie es gut genug verstehen, werden Ihre mathematischen Fähigkeiten und Werkzeuge erweitert, um effektive Rechenstrukturen für die Bewältigung häufiger Probleme aufzubauen. Sie lernen auch verschiedene Algorithmus-Design-Techniken, die wie Blaupausen für die Lösung einiger Themen in der Informatik sind.

In vielen Tutorials erfahren Sie, wie Sie Algorithmen und Datenstrukturen direkt lernen können. Der Grund, warum ich das nicht getan habe, ist, weil Sie in die Einstellung geraten würden, die eine feste Mentalität und Herangehensweise an Probleme hat. Vertrauen Sie mir, das lähmt Ihr Denken, weil Sie nicht über den Tellerrand hinaus denken. Am Ende werden Sie ein großartiger Problemlöser und Programmierer sein.

Best Practices

Beim Schreiben von Software geht es nicht nur darum, willkürlich Code zusammenzustellen, um Dinge zu erledigen. In den meisten professionellen Umgebungen sind Sie nicht der einzige Programmierer, der an einer Codebasis arbeitet. Es ist wichtig, dass Sie bestimmte Richtlinien und Konventionen befolgen, um die Programmierung der Codebasis für alle im Team zu vereinfachen. Dies erleichtert das Verständnis von Code, der von jemand anderem geschrieben wurde, und erleichtert es anschließend anderen, Ihren Code zu verstehen. Wenn Sie ein Junior-Softwareentwickler sind, konzentrieren Sie sich auf diesen Abschnitt.

Was können Sie tun? Verbringen Sie Zeit damit, das DRY-Prinzip (Don’t Repeat Yourself) zu verstehen und in die Praxis umzusetzen. Schreiben Sie keinen sich wiederholenden Code, da dies Sie verlangsamt und Sie anfälliger für Fehler macht. Schreiben Sie nützliche Kommentare und Dokumentation, wo immer Sie können. Als ich anfing, dachte ich, das sei eine dumme Sache, bis ich eines Tages ein altes Projekt öffnete und feststellte, dass mein gesamter Code unverständlich war. Als Programmierer müssen Sie sich nicht viel merken. Sie merken sich, was wichtig ist und schauen nach, was gebraucht wird.

Versionskontrolle (Git)

Dies ist etwas, was ich früh angefangen habe und es hilft enorm, den Code organisiert zu halten. Sie verfolgen Ihre Änderungen und wissen genau, welche Änderungen Sie benötigen, um bestimmte Funktionen zu implementieren. Sie lernen auch, wie Sie Fehler schnell verhindern und beheben können. Ich sehe viele junge Ingenieure, die nicht einmal wissen, was Git ist, und das ist extrem traurig. Sie werden ihre gesamte Karriere mit Versionskontrolle verbringen – wenn Sie einer von ihnen sind, gehen Sie direkt zu den folgenden Ressourcen.

Objektorientierte Programmierung

Eine Einführung in eine völlig neue Art der Programmierung. Bisher haben wir prozedurale Programmierung gemacht. Jetzt wechseln wir zur objektorientierten Programmierung, was insgesamt ein neues Paradigma darstellt. Eine Einführung in die Datenkapselung und -abstraktion hilft Ihnen weiter, die Gestaltung dieses Handbuchs zu verstehen. In OOP ist alles ein Objekt und die Idee ist, Ihre Schnittstelle und Implementierung klar zu trennen. Sie werden auch Klassen und Vererbung lernen. Am Ende beginnen Sie mit dem Entwerfen objektorientierter Lösungen und lernen, wie Sie clevere Blackboxen erstellen, um Probleme zu lösen. Java zu lernen ist ein guter Weg, um mit diesem neuen Programmierparadigma zu beginnen. Python unterstützt auch OOP, also versuchen Sie das zu erkunden!

Übe hart

Übe jede Fertigkeit/jedes Konzept/jeden Algorithmus in diesem Abschnitt, indem du Code-Snippets schreibst. Schreiben Sie alten Code mit dem neuen Wissen um, das Sie erworben haben. Schreiben Sie weiterhin kleine Programme und lernen Sie in jeder Phase etwas Neues daraus.

Bruce Lee: Der übermenschliche Mensch. R.I.P Legende

Lernen Sie weiter, während Sie Fortschritte machen. Ich habe Taschenrechner, Bibliotheksverwaltungssysteme und numerische Berechnungsskripte auf so viele verschiedene Arten erstellt, und jedes Mal habe ich etwas anderes gelernt. Sie werden schließlich feststellen, dass es keine goldene Kugel gibt, um alles zu reparieren. Das Leben ist voller Kompromisse. Das ist die Schönheit der Unvollkommenheit.

Zusammenfassung

Sie wissen mehr als genug, um bahnbrechende Software zu entwickeln. Sie müssen alles bis hier verinnerlichen, um zum nächsten Schritt zu gelangen. Von hier aus bringt Ihnen mehr Theorie nichts. Sie sollten nur Zeit in das Üben und den Aufbau nützlicher Projekte investieren. Programmieren ist eine angewandte Wissenschaft – befolgen Sie die 80/20-Regel, was bedeutet, dass Sie 80% der Zeit mit Üben und 20% der Zeit mit dem Lesen der Theorie verbringen.

Part IV: It’s Time for You to Build Some Cool Stuff

Wenn du der Anleitung bis hierher bis zum Ende gefolgt bist, bist du gut gerüstet, um einige großartige Projekte zu erstellen, die du in deinen Lebenslauf aufnehmen, deinen Freunden vorführen oder sogar Einnahmen aus deiner Arbeit generieren kannst. In dieser Phase möchte ich Ihnen beibringen, wie Sie unterwegs Dinge lernen können. Jedes neue Projekt, das Sie aufnehmen oder dem Sie zugewiesen werden, erfordert etwas Neues. Es ist wichtig, dass Sie dies mit der richtigen Einstellung angehen.

Ich war schon immer von Mark Zuckerberg für seine unsterbliche Einstellung zur Aufhebung des Scheiterns inspiriert

Es gibt einige Richtlinien, die Sie befolgen können, wenn Sie ein Projekt aufnehmen. Ich habe diese Rubrik für mich selbst entwickelt und festgestellt, dass es für Sie praktisch wäre, neue Projekte aufzunehmen.

  1. Identifizieren Sie das Problem, an dem Sie arbeiten, und geben Sie die Details genau an. Machen Sie sich Ihre Ziele klar.
  2. Suchen Sie nach bestehenden oder ähnlichen Projekten und identifizieren Sie, wo sie sich auszeichnen und wo sie fehlen. Sehen Sie, wo Ihre Idee passt, wie das Projekt mit den Zielen und Vorgaben übereinstimmt, die Sie im Sinn haben, und notieren Sie sich alles.
  3. Machen Sie eine Liste aller Fähigkeiten, die Sie lernen müssen, um das Projekt zu machen und das Ausmaß, in dem Sie die Fähigkeit entwickeln müssen, um das Projekt zu erledigen. Kennen Sie Ihre Stärken und Schwächen.
  4. Erstellen Sie einen Plan, um die notwendigen Fähigkeiten zu erlernen. Identifizieren Sie die richtigen Personen, die Ihnen helfen, und die erforderlichen Tutorials, um loszulegen. Konzentrieren Sie sich ausschließlich auf die Entwicklung der Fähigkeiten, um Ihr Projekt zu erledigen. Es ist leicht, sich in die Tiefe zu treiben. Denken Sie daran, dass Sie die Fähigkeit erlernen, das Projekt abzuschließen und keine Doktorarbeit darüber zu schreiben. Es sei denn, das ist dein Ziel.
  5. Beginnen Sie mit dem Projekt, aktualisieren Sie Ihre Ziele und Ziele und machen Sie sich Ihre Stärken und Schwächen klar. Teilen Sie das Projekt in machbare Teilaufgaben auf und weisen Sie jedem eine Objektivitätsmetrik zu. Dies bedeutet, dass Sie wissen müssen, wann Sie aufhören müssen, der Perfektion nachzujagen, und sich auf das Gesamtbild konzentrieren müssen.
  6. Ungeduldig ausführen. Wiederholen Sie, bis alle Ihre Ziele erfüllt sind.

Lesen Sie dies für Tipps und Tricks, wie Sie ein besserer Lerner werden können.

Mit Ihrem vorhandenen Wissen können Sie lernen, Websites, mobile Anwendungen, Spiele, kleine Skripte, Chrome-Plugins, Desktop-Apps und Datenanalysesoftware zu erstellen. Ich werde im nächsten Beitrag weitere Informationen dazu bereitstellen. Sobald Sie einige abgeschlossene Projekte unter Ihrem Gürtel haben, werden Sie ein gut genug Entwickler sein, um freiberuflich tätig zu sein und nebenbei Geld zu verdienen, was eine großartige Einnahmequelle ist, wenn Sie Student sind. Wenn Sie aus einem anderen Bereich kommen, haben Sie eine solide Basis, um Ihre aktuelle Arbeit mit Technologie zu erweitern. Was Sie mit Ihren aktuellen Fähigkeiten erreichen können, ist endlos, selbst ein ganzer Blogbeitrag kann dem nicht gerecht werden.



Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.