Wie kann ich meine Programmierkenntnisse verbessern?

Anstatt bestimmte Möglichkeiten vorzuschlagen, um sich mit bestimmten Arten der Programmierung vertraut zu machen, möchte ich auf die Überforderung eingehen, die Sie zu erleben scheinen. Nachdem Sie die Beschreibung Ihrer Frage gelesen haben, scheinen Sie zwei Probleme zu haben:

    1. Sie kennen nicht den “optimalen Ort, um Ihre Aufmerksamkeit zu lenken”.
    2. Sie fragen sich, wie Sie sich verbessern können, wenn Sie diesen Fokus kennen.

    Wo Sie sich konzentrieren müssen, ist das Wichtigste, um das Richtige zu tun. Sie werden Zeit darauf verwenden wollen, sich in Bereichen zu verbessern, die Ihnen wichtig sind, und weniger Zeit darauf verwenden wollen, ein Alleskönner zu werden, der Sie nicht interessiert. Sie können Ihre Richtung klären, indem Sie sich überlegen, was Sie nicht mehr programmieren möchten. Programmieren ist ein Überbegriff für viele Arten von Aktivitäten, die eine Vielzahl unterschiedlicher Fähigkeiten umfassen. Wenn Sie daran interessiert sind, schwierige mathematische Probleme algorithmisch zu lösen, machen Sie sich keine Sorgen über die Besessenheit von HTML / CSS. Wenn Sie an der Erstellung großartiger Webanwendungen wie Quora interessiert sind, denken Sie vielleicht über die Verarbeitung natürlicher Sprache nach, aber konzentrieren Sie sich noch nicht darauf. Wenn Sie daran interessiert sind, ein kompetenter Mitarbeiter zu werden, konzentrieren Sie sich vielleicht auf die Vorschläge von Jonas Bruun Nielsen.

    Seien Sie sich bewusst, dass Ihr Fokus Ihre Richtung ist und dass Sie nicht versuchen sollten, alles zu lernen, was es überhaupt gibt, um etwas über das Programmieren zu lernen. Zumindest noch nicht. (Hinweis: Sie können nicht.) In ähnlicher Weise glaube ich persönlich, dass eine Informatikausbildung für algorithmisch Neugierige und für diejenigen, die an der akademischen Kultur interessiert sind, von grundlegender Bedeutung ist, aber ich glaube nicht, dass eine allgemeine Herangehensweise, alles zu lernen, darunter liegt Die Sonne ist im Großen und Ganzen der beste Weg, um eine Sache zu beherrschen. Ich kenne gute Webanwendungsentwickler, die nicht die beste Gewinnstrategie für den ersten Spieler in einem bestimmten Setup von Nim vorschlagen konnten.

    Nachdem Sie wissen, worauf Sie sich konzentrieren, ist es viel einfacher, dorthin zu gelangen. Es ist wahr, dass es hier ein Paradoxon der Wahl gibt; All die unterschiedlichen Fähigkeiten, Technologien und Methoden, die Sie zum Üben auswählen können, befreien Sie nicht, wenn Sie sich Sorgen machen müssen, dass Sie eine schlechte Wahl treffen. Aber die Auswahl ist gut, denn wenn Sie sie durch Fokussierung eingegrenzt haben, ist keine der Auswahlmöglichkeiten schrecklich – sie sind effektiv (da sie Ihnen helfen, Ihr Ziel zu erreichen), auch wenn sie sich als nicht die effizientesten herausstellen ( Eine Möglichkeit ist möglicherweise etwas schneller als eine andere. Aber anstatt zu versuchen, den effizientesten Weg dorthin zu finden, üben Sie, worauf Sie sich am meisten freuen, und sparen Sie sich Zeit für die Analyse von Lähmungen. Der Weg, den Sie gehen, ist wahrscheinlich nicht so wichtig wie die Tatsache, dass Sie, egal für welchen Weg Sie sich entscheiden, genug lernen, um Ihrem Ziel näher zu kommen.

    Kleine Projekte, auf die Sie sich freuen, sind großartig, um Ihre Fähigkeiten in den meisten Bereichen zu verbessern. Es ist vorzuziehen, dass es klein und handlich ist, aber um die Motivation aufrechtzuerhalten, hilft es umso mehr, wenn Sie selbst über das Endergebnis aufgeregt sind. Es könnte einen persönlichen Juckreiz auslöschen, ein Problem für Ihr Unternehmen lösen oder einfach etwas sein, auf das Sie stolz sein können, wenn Sie es den Menschen vorführen. Sie können ein Projekt erstellen, das nahezu jede Technologie verwendet, über die Sie mehr erfahren möchten. Auf diese Weise ist der Abschluss des Projekts ein messbarer Indikator dafür, ob Sie Ihr kurzfristiges Lernziel erreicht haben. Projekte können auch eine großartige Gelegenheit sein, ein Bild zu sehen, das größer ist als Ihre Unterprogramme und Variablen, Mitarbeiter einzubeziehen, ein Portfolio zu erstellen oder etwas zur Open-Source-Community beizutragen.

    • Während Sie tatsächlich etwas bauen, lernen Sie, was Sie nicht wissen. Online nachschlagen und RTFM.
    • Seien Sie ein Experte für jeweils eine Technologie. Sogar mit einer kleinen API, mit der Sie arbeiten… denken Sie daran, die Anweisungen zu lesen und das Design und die Funktionalität wirklich zu verstehen. Lesen Sie ein Buch über die von Ihnen verwendete Programmiersprache. Sie werden feststellen, dass Sie den Experten sogar ein oder zwei Dinge über die Dinge beibringen können, die Sie beherrschen.
    • Wenn sich einer Ihrer “Vorgesetzten” die Zeit nimmt, Sie zu unterrichten, nutzen Sie die Gelegenheit und lernen Sie alles, was Sie können. Wenn Sie etwas nicht verstehen, schauen Sie es später nach.
    • Scheuen Sie sich nicht zu fragen, wenn Sie bei Stack Overflow hängen bleiben. Normalerweise finde ich heraus, dass ich, während ich eine Frage richtig formuliere, die Antwort selbst herausfinden werde, bevor ich sie poste.
    • Lassen Sie nicht nach, sondern lernen Sie Technologien kennen, die Ihnen das Leben erleichtern, BEVOR Sie Ihren Code schreiben. Es ist keine leichte Aufgabe, herauszufinden, ob Code vorhanden ist, den Sie wiederverwenden können.
    • Profitieren Sie mit Begeisterung von Code-Überprüfungen.

    Das Codieren ist nur ein Teil des Prozesses der Problemlösung. Sie sollten das zugrunde liegende Problem und die effiziente Lösung innerhalb der gegebenen Einschränkungen verstehen. Also werde ich Ihnen besser sagen, wie Sie Probleme besser lösen können:

    Programmiersprache & Informatik grundlegend : –
    In erster Linie sollten Sie mit einer der gängigen Sprachen (C / C ++ / Java / Python) vertraut sein. Ich rate Ihnen, zwischen C ++ und Java zu wählen, da beide bei allen Codierungswettbewerben weit verbreitet sind und über bessere Ressourcen verfügen Lass dich trainieren. Abgesehen von der Kenntnis der Sprache
    Stellen Sie sicher, dass Sie gut darin sind, selbst geschriebenen Code zu debuggen und zu testen
    mit allen szenarien.

    Ressourcen:-
    CS106A: Programmiermethoden (Stanford Java Tutorial)
    Eclipse und Java Video Tutorials
    CodingBat Java (Grundlegendes Problem bei der Java-Programmierung, um die Dinge anzukurbeln)
    Coursera (C ++ Kurs)
    Kaufen Sie die Programmiersprache C ++ (Bjarne Stroustrup)
    Seite auf stanford.edu (CS101-Kurs der Stanford University für Nicht-CS-Studenten / Anfänger in Informatik)

    Datenstruktur und Algorithmus : –
    Sie können ein guter Programmierer sein, wenn Sie eine Programmiersprache gut kennen, aber um ein guter Programmierer zu werden, müssen Sie die zugrunde liegende Datenstruktur und den zugrunde liegenden Algorithmus verstehen.

    Ressourcen:-
    Einführung in das Algorithmus-Buch (CLRS), einfache Sprache, sehr detaillierte Erklärung zu jeder Algorithmus-Technik (Bibelbuch 🙂)

    Die Kunst der Computerprogrammierung: Grundlegende Algorithmen v. 1 Buch

    Datenstrukturen und Algorithmen leicht gemacht: Zweite Auflage: Data Structure and Algorithmic Puzzles Book

    Youtube Kanal:-

    Mycodeschool

    Saurabhschule

    Coursera (Algorithmuskurs der Stanford University)

    DOS:-
    1. Versuchen Sie, jede Lösung zuerst auf Papier zu implementieren, bevor Sie den Code starten
    2. Analysieren Sie das Problem, definieren Sie die Einschränkung, vergleichen Sie Ihre eigene Lösung mit dem Parameter der zeitlichen / räumlichen Komplexität und beginnen Sie dann mit dem Codieren.

    Zu diesem Zeitpunkt wären Sie ziemlich zuversichtlich, sich vorzustellen, welcher Technik ich folgen oder welchen Algorithmus ich zur Lösung eines bestimmten Problems verwenden soll. Jetzt ist Übungszeit !!!
    1. Lösen Sie das Problem mit Sphere Online Judge (SPOJ), 200 Probleme
    2. Wenn Sie Schritt 1 abgeschlossen haben, probieren Sie Topcoder-Probleme für DP und andere algorithmische Techniken aus (lösen Sie etwa 300 div2 oder div1, bis Sie sich sicher fühlen).
    3 ( Optional ) Wenn Sie nach einer Interviewvorbereitung suchen, starten Sie die Problemlösung ab
    Cracking the Coding Interview: 150 Programmierfragen und -lösungen
    GeeksforGeeks – Ein Informatikportal für Geeks

    Fazit: – Es ist nicht der einzige Weg, eine gute Programmiermentalität zu erreichen, aber es ist ein besserer Weg, der mir geholfen hat, mich mit besseren Programmierkenntnissen auszustatten.