What insights do expert hackers have for novice programmers?
Wenn Sie einen Programmierer fragen, wird er dies aus Erfahrung wissen ... oder vielmehr, dies ist so ziemlich die Erfahrung, und niemand scheint dies zu lehren. Einige der Antworten hier drücken ein wenig die Waffe. Kennen Sie das schon vor Ihrer ersten Codezeile:
Top 3 Insights für Programmieranfänger
1. Du liegst immer falsch.
Der Computer macht nur genau das, was ihm gesagt wird, nicht mehr und nicht weniger. Es gibt kein Richtig oder Falsch. Da sind Sie, der Computer und Ihre Fehler.
Für manche Menschen ist dieses Konzept überraschend schwer zu verstehen. Bei der Ausführung von Code gibt es keine Mehrdeutigkeit. Es mag Unklarheiten oder unerwartete Ereignisse geben, aber das ist unser Problem. Computer sind niemals kaputt.
Wenn etwas Unerwartetes passiert, ist es eines von drei Dingen. Entweder ist Ihr Code falsch, der Code einer anderen Person ist falsch, oder Sie haben die Spezifikationen falsch verstanden. Genauer gesagt: Entweder fehlt in Ihrem HTML-Code eine Klammer, in Internet Explorer ist ein Fehler aufgetreten, oder Internet Explorer wurde auf diese Weise entwickelt, aber Sie wussten es noch nicht.
Wenn Sie codieren, kommunizieren oder erzählen Sie nichts oder bestehen nicht darauf oder verhandeln oder drücken nichts aus. Sie listen einfach Befehle in der genauen Reihenfolge und Syntax auf, die der Computer benötigt. Das ist es. Das Ende.
Stellen Sie sich eine Fernbedienung mit 1000 Tasten vor. Computer reagieren nur auf die Tasten, die wir drücken. Codezeilen sind nur eine Liste von Tastenkombinationen. Niemals wird HTML oder CSS oder JS oder C ++ oder Pascal Englisch sein. Sie befinden sich nicht auf demselben evolutionären Weg. Wenn es sich um Sprache handelte, glauben wir unbewusst, dass der Computer möglicherweise falsch ist, je nachdem, wie Sie Ihre Argumente formulieren. Aber nein, der Computer ist nie falsch, Sie sprechen nicht mit ihm und er kann nur das tun, was ihm gesagt wird. Es ist keine Sprache, es ist Code.
2. Es kann nur das tun, was es bereits kann.
Mit keinem Code kann Ihr Laptop Jumping Jacks ausführen, es sei denn, er verfügt über programmierbare Arme und Beine, die bereits Jumping Jacks ausführen können. Programmierung ist das Organisieren und Umorganisieren bestehender Computerfunktionen.
Nehmen wir an, Sie möchten ein Video auf Ihrer Webseite sehen, um dies in einen besseren Kontext zu bringen. Es scheint, dass jeder Programmierer in der Lage ist, diese sehr einfache Aufgabe zu erledigen, wenn er weiß, dass ein Computer voll videofähig ist. Doch selbst heute ist es schwierig, Ihr Video auf jeder Plattform kompatibel zu machen. Sie werden wahrscheinlich einen Service oder etwas anderes nutzen, und das aus gutem Grund. (Beim Programmieren muss häufig auf das Programmieren verzichtet werden.)
In erster Linie müssen Sie also wissen, was der Computer kann. Dann müssen Sie die verschiedenen Anweisungen herausfinden, die akzeptiert werden, um bestimmte Aktionen auszuführen.
3. Modellieren Sie die Welt, codieren Sie sie nicht einfach.
Richtige Namenskonventionen zu verwenden, gründlich zu kommentieren und Code zu schreiben, der offensichtlich ist, ist alles gesunde Praxis, und wie andere Ihnen sagen werden, ist die Lesbarkeit von Code für uns Menschen von unschätzbarem Wert. Der Computer kann alles lesen. Wir sind die Idioten, die Hilfe brauchen. Aber der Computer schreibt niemals Code. Es fehlt die Grundausstattung, um dies zu tun. Richtig, es hat kein Gehirn. Sie müssen den Code nicht verstehen, um ihn auszuführen, aber Sie müssen ihn verstehen, um ihn zu schreiben.
Die Ausführung ist einfach. Es ist schwer zu verstehen, was Sie zu bauen versuchen. Das Modellieren Ihres Codes um das Verstehen herum erleichtert natürlich das Verstehen Ihres Codes. Aber wie gut ist Ihr Verständnis?
Verständnis kann durch Abstraktion verschlüsselt werden. Das trennt die Architekten. Das Maß für ein gutes Programm liegt in seinen Ergebnissen, aber das Maß für guten Code liegt in seinen Abstraktionen. Zugegeben, erstaunliche Programme können mit schlechtem Code geschrieben werden. Aber als Programmierer ist es Ihre Pflicht, guten Code zu schreiben.
Schreiben Sie Code absichtlich und zielgerichtet. Verstehen Sie das Problem, entwerfen Sie Ihre Abstraktionen und implementieren Sie sie mit Code. Modellieren Sie die Welt, codieren Sie sie nicht einfach. Wenn sich Ihr Verständnis vertieft, schreiben Sie neu. Codieren Sie nicht zum Zweck der Ausführung oder unabhängiger Ergebnisse.
Programmierung ist ein Werkzeug, das die Abstraktionen von Gedanken und Konzepten konkret und real werden lässt. Diese Abstraktionen sind geschichtet, und die unterste Schicht ist die Implementierung der Maschine. Die oberste Ebene ist die Absicht des Programmierers, die wiederum den Benutzer zufriedenstellt. Das Verständnis des gesamten Stacks, einschließlich der Zufriedenheit Ihrer Benutzer, ist Teil der Programmierung.
MS Office, Facebook, Twitter, iTunes ... alles Paradigmen, die durch Programmierung verwirklicht wurden. Keiner von ihnen handelt von Computern oder Computern. Jemand hatte eine neue Idee und baute diese Werkzeuge, um einen Zweck zu erfüllen. Die Konzepte, die an der Oberfläche der Erfahrung stehen, sollten sich auch an der Oberfläche Ihres Codes befinden.
Die Vogelperspektive
Die folgenden 3 Programmierkenntnisse waren und werden es immer sein. Alles andere hat und wird sich ändern und schnell ändern:
Abstraktionsdesign - Die Fähigkeit, Steine zu bauen und Spezifikationen zu erfinden. Dies ist die harte Kodierung von Merkmalen und Intelligenz. Benennen und Organisieren von Objekten und Funktionen, die die erforderlichen Entitäten, Verhaltensweisen und Informationen für ein bestimmtes Programm ordnungsgemäß darstellen.
Informationsarchitektur - Die Fähigkeit, Bausteine zu stapeln und mit Spezifikationen zu arbeiten. Dies ist die weiche Kodierung dessen, was bereits vorhanden ist. In Anbetracht der Abstraktionen, wie man sie organisiert und strukturiert, sei es in Datenbanken, Datenstrukturen, Grafiken, Webseiten, Schnittstellen und sogar auf Papier.
Leistungsoptimierung - Dies ist die technische Kodierung. Welche Leistungsverbesserungen können auf verschiedenen Ebenen vorgenommen werden, ohne die Ordnung, Einfachheit und die Absicht der Architekten zu beeinträchtigen?
3 nicht programmierbare Fähigkeiten, die von großer Relevanz sind:
Verwalten - Egal ob Programmierer oder Projekte, wenn Sie ein Programmierer sind, der in 10 Jahren in die Zukunft blickt, sollten Sie das Management im Auge behalten.
Bleiben Sie auf dem Laufenden - Beschränken Sie sich niemals auf eine Programmiersprache oder ein Paradigma, geschweige denn auf eine aktuelle Version davon. Ein wertvoller Programmierer hält sich immer auf dem Laufenden, wenn nicht ein bisschen früher.
Kommunizieren - Wie Sie Ihren Code erklären, kommentieren und dafür argumentieren, sowie in der Lage sind, Ihre Ideen zu teilen und die Ideen anderer zu schätzen, sind alles wesentliche Fähigkeiten für die Arbeit in jeder Gruppenumgebung.
Wie andere gesagt haben, sind bestimmte Sprachen und Technologien winzige Details. Sie sollten mit jeder Sprache und jeder Spezifikation vertraut sein.
Das Schreiben von Code bietet große Freiheit, erfordert jedoch auch Planung und einen gründlichen Entwurfsprozess. Große Projekte sind wie der Bau eines Autos. Sie könnten mit einem BMW aus den 80ern oder einem Lamborghini enden. Bis auf alles ist unsichtbar.
Die Essenz der Programmierung
Was ist die Programmierung im Kern? Wenn jeder Computer eines gemeinsam hat, dann ist es, wie aus Abstraktion Spezifikationen werden, auf jeder Ebene, in jeder Konstruktion, in der Vergangenheit, in der Gegenwart oder in der Zukunft.
Abstraktion ist die Kodierung von neuer Intelligenz aus vorhandener Intelligenz. Diese Abstraktionen werden wiederum als Spezifikationen (specs) für eine bestimmte Sprache, ein bestimmtes Gerät, eine bestimmte API usw. angezeigt. Kurz gesagt, wenn Sie es sehen, hat es jemand geschrieben.
Innerhalb eines Computers gibt es diese Spezifikationen in Ebenen (Abstraktionsschichten) und in Gruppen (APIs). Die Gruppe der Spezifikationen für das Front-End der Webprogrammierung besteht beispielsweise im Wesentlichen aus HTML, CSS, JavaScript und den Spezifikationen der wichtigsten Browser. Als Programmierer besteht Ihre Aufgabe darin, diese Spezifikationen zu übernehmen und das zu implementieren, was Sie möchten.
Die Spezifikationen sind oft sehr umfangreich, jede Sprache hat ihre eigene Syntax und es gibt eine Menge unvorhersehbarer Fehler, über die Ihnen niemand etwas erzählen wird. Auch kann man nur bauen was die Angaben zulassen. Ja, es macht Spaß, sie zu dehnen, aber nehmen Sie an, Sie öffnen für jeden zusätzlichen Zentimeter eine neue Dose Würmer. Die Grundlagen funktionieren am besten. Auch die technischen Daten, insbesondere die Webspezifikationen, entwickeln sich weiter. Man muss mithalten. Nichts wird einmal gelernt.
Wenn Sie an dem Punkt angelangt sind, an dem Sie Ihre eigenen Spezifikationen schreiben, verspüren Sie ein hohes Maß an Freiheit und Leistung. Sie können Ihre eigene Intelligenz codieren und beobachten, wie andere davon Gebrauch machen. Alles ist jedoch immer noch in etwas anderem geschrieben, und die meisten Programmierer werden immer noch mehr mit vorhandenen Spezifikationen als mit ihren eigenen arbeiten.
Das wegnehmen
Das Schreiben von Code ist einfach. Es ist schwierig, mit Menschen zusammenzuarbeiten und etwas Erstaunliches aufzubauen.
Jede Codezeile, jede Hardware, jedes Byte, das direkt oder indirekt auf die Festplatte geschrieben wird, ist eine Handlung von jemandem mit einem Zweck. Sie können entweder ein Slave des Systems sein oder Ihren Zweck ergänzen.
Was ist dein Zweck? Wenn es üblich ist, hat es bereits jemand geschrieben, und Sie finden den Code online. Wenn es ungewöhnlich ist, fragen Sie sich zuerst, warum, denn es gibt nur so viele Dinge, auf die wir kommen können.
Wenn Sie sich etwas Einzigartiges und Nützliches einfallen lassen, dann teilen Sie es auf jeden Fall mit. Fügen Sie der Welt Ihren Zweck und Ihr Verständnis hinzu.
Viel Glück!