Wie kann man einer Freundin das Programmieren beibringen, wenn man kein Lehrer ist, aber sie an dich glaubt

Когда твой парень - fullstack


Wenn dein Freund voll ist


Wenn Sie als Programmierer arbeiten und nur fünf Minuten zu Fuß vom Büro entfernt wohnen, ist es äußerst schwierig, Zeit zu haben, um sich von der Arbeit zu „entfernen“ und sich von der Arbeit zu entfernen.


Ich glaube, viele wissen es: In der letzten halben Stunde haben Sie über einen unklaren Fehler nachgedacht, der daraufhin kam, und als Ergebnis, ohne das Problem gelöst zu haben, prüfen Sie, ob alle Ihre Verpflichtungen in das Unternehmensregister geflogen sind, schalten Sie das Auto aus und verlassen Sie das Büro morgen früh, mit einem frischen Kopf, wird alles entschieden.


Egal wie falsch!


Natürlich kommt die Entscheidung im unpassendsten Moment: jemand setzt sich ans Steuer, jemand in der Straßenbahn, jemand, der das Glück hat, in der Nähe des Hauses, irgendwo auf dem Hof ​​und sogar im Aufzug zu arbeiten. In meinem Fall wird der Gedankengang nach der Entscheidung auf das Mädchen gegossen, das, wie man sagt, beim Programmieren nicht auf den Zahn tritt.


Dann kommt sie eines Tages zu dir und erklärt feierlich:
- Ich bin bereit! Bereit zu lernen, Programmierung! Komm schon!


In diesem Artikel wird es keine Quellcodes geben, in denen ich versuchen werde, die Fragen zu beantworten, die mir in der Planungsphase eines Programmierkurses für meine eigene Freundin standen.


Da ich keine praktische Erfahrung in der Ausbildung hatte, entschied ich mich dazu, eine Person in die Programmierung einzuführen, die erklärte, dass Sie "schlau sind" und "wir werden Erfolg haben".


Willkommen zurück!


Warum?


Auf diese scheinbar absolut faire Frage erhielt ich eine ebenso faire Antwort:
"Sie sprechen immer noch über das Programmieren, und ich verstehe Sie zumindest."


Ehrlich gesagt Ich bin nicht sicher, ob dies ein guter Grund ist, Programmierer zu werden, auch wenn es kein professioneller ist. Auf der anderen Seite bin ich zutiefst davon überzeugt, dass das Programmieren in der Zukunft, wenn auch nicht so weit entfernt, etwas Alltägliches wird, zumindest einen sehr ernsthaften Schritt in diese Richtung machen wird. Und wie Sie wissen, können Sie das Chaos nicht aufhalten - führen Sie es!


Nachdem ich die Unterstützung meiner Freundin gewonnen hatte, und die Hoffnung, dass ich ein bisschen von meiner Großmutter, die früher Lehrerin war, etwas bekam, setzte ich mich hin und erstellte einen Trainingsplan.


Fahrräder - unser alles


Natürlich war es auch möglich, Tutorials zu googeln, um etwas einfaches mit einem bedingten Python zu erstellen, aber ich liebe Fahrräder, wie es oft der Fall ist, was bedeutet, dass der Kurs von jemandem nicht für uns funktioniert - wir müssen es selbst tun.


Natürlich fand ich wie jeder Radfahrer sofort viele Gründe, vorhandene Lösungen nicht zu verwenden. Und vielleicht findet jemand sie nicht objektiv, aber ich behaupte nicht, der letzte Ausweg zu sein. Was ist also los mit einer Reihe kostenloser Online-Kurse?


Programmiersprachen


Der Unterricht der Russisch sprechenden Person sollte natürlich auf Russisch erfolgen. Viele Begriffe sind lesen regelmäßig unsere Dokumentation eines andere Sprache stdlib sehen wir, professionelle Programmierer, intuitiv statement, expressionoder auch parse- das ist , was wir haben , um es nicht zu übersetzen, auch wenn unser Niveau der englischen Übersetzung schon sagt, und nicht ein sofortiges Verständnis des Textes. Für eine Person, die nicht mit dem Programmieren oder auch nur mit der IT verbunden ist, brechen viele unserer Begriffe einfach den Kopf und entmutigen den Wunsch, weiter zu lernen.


Es gibt viele Russischkurse, aber alle sind meiner Meinung nach nicht für einen normalen Menschen geeignet. Warum


In erster Linie handelt es sich dabei meistens entweder um Webprogrammierkurse ( PHP , JS , Python usw.) oder aus diesem Grund um Ihr Unternehmen ( Java , C # usw.) oder um C / C ++ - dies ist kein Kuchen Neuling


In der ersten Kategorie wird das Programmieren in der Regel nicht selbst unterrichtet . Es bietet sich an, ein fertiges Produkt für mehrere Lektionen herzustellen - eine Site normalerweise. Ich sehe nichts Falsches daran, wenn das Ziel einer Person darin besteht, eine Website zu erstellen , aber seien wir ehrlich: Solche Kurse geben Ihnen ein bestimmtes architektonisches Muster (MVC, höchstwahrscheinlich), eine Codebasis für mehrere Module, und das ist alles - ohne Wissen. Dank dieser Kurse haben wir so viele dumme Fragen in den Telegrammkanälen und Foren, die sich mit Sprache oder Technologie befassen. Und es ist unmöglich, die neu geprägten Programmierer für diese dummen Fragen verantwortlich zu machen - sie haben kein Grundwissen erhalten, daher alle Probleme.


Was die anderen beiden Kategorien betrifft, so glaube ich auch, dass ein Neuling damit nicht anfangen sollte.


Ich erinnere mich, wie Kommilitonen an der Universität sich mit dem Thema "Hinweise" beschäftigten. Die meisten von ihnen verstehen immer noch nichts davon, und doch waren sie Paare: ein lebender Lehrer, die Möglichkeit des Dialogs, die Pflicht zu üben - alle Bedingungen.


Wenn ich mich nicht irre, bin ich übrigens der einzige meiner Kurse, der in der Spezialität arbeitet. Ich denke, das hat zu dieser Studie in der Schule von QBasic und Pascal beigetragen , einfach, verständlich und vermittelt ein grundlegendes Verständnis.


Ich habe all diese Gedanken in meinem Kopf getragen und kam zu dem Schluss, dass die beste Sprache zum Lernen meiner Meinung nach Go heute ist : einfache Syntax, starkes statisches Tippen, die Fähigkeit, ohne Tanzen mit einem Tamburin zu arbeiten, und viele wichtige Dinge zu sammeln Jede Plattform ohne den gleichen Tanzstil - das macht Go zu einem idealen Kandidaten für die ersten Programmiersprachen.


Ich sollte hinzufügen, dass ich vorher noch nicht auf Go geschrieben hatte, aber für die Arbeit musste ich nur einen schnellen Multithread-Webservice schreiben, was bedeutete, dass ich meine Freundin trainieren und gleichzeitig selbst lernen konnte.


Hier stellte sich heraus, dass es keine Materialien gibt, die eine Person lehren, von Grund auf Go in runet zu programmieren. Es gibt wunderbare Touren, spezialisierte Seiten und alles, alles, alles, was es Ihnen ermöglicht, die Sprache in ein oder zwei Tagen zu beherrschen, wenn Sie bereits wissen, wie man programmiert. Aber sie kann nicht.


Hallo Fahrrad


Praktischer Wert


Daher bieten die meisten Kurse an, dass Sie in Ihrem gemütlichen Repository eine beliebige Anzahl von verstreuten Beispielen oder ein fertiges Produkt haben, das normalerweise für Sie nicht erforderlich ist.


Natürlich ist der kostenlose Kurs „Simple Store on React + Redux “ eine Erfahrung, aber wie gesagt, in der Praxis ist er nur für eine Person nützlich , die einen Laden haben möchte , aber niemanden beauftragen möchte, um ihn zu entwickeln.


Tatsächlich werden Neuankömmlinge, die einen ähnlichen Kurs absolviert haben, keine Fortschritte bei der Programmierung machen.


Meiner Meinung nach wäre die ideale Option für einen Anfänger die Grundlagen der Programmierung zu studieren , aber am Beispiel der Erstellung eines interessanten Produkts für ihn .


Wenn Sie ein Projekt von Grund auf entwickeln, können Sie eine Person mit allen Lebensphasen des Projekts vertraut machen. Ich entschuldige mich für die Tautologie und ihr Design - bevor Sie sie in einer Kampfumgebung einsetzen und anschließend unterstützen.


In diesem Fall sollte der Student keine vorgefertigten architektonischen Lösungen und insbesondere Quellcodes erhalten. All dies sollte ein Produkt der Untersuchung relevanter Aspekte der Entwicklung sein.


Aber was könnte ein Mädchen interessieren?
Ich schrieb mein erstes Programm (abgesehen von dem, was wir in der Klasse geschrieben haben) für meinen jüngeren Bruder, als er anfing, die Multiplikationstabelle zu lernen: Er gab eine Reihe von Zahlen ein und gab zufällig zwei von ihnen an einen Bruder aus, mit dem Vorschlag, ihre Arbeit, den Test usw. in einem Kreis einzugeben.


Es war wahrscheinlich meine siebte Klasse. In diesem Alter war das Schreiben eines nützlichen (zumindest einigen) Programms Glück für mich, das heißt, ich war interessiert . Aber es ist leicht, einen siebten Schüler dafür zu interessieren, einen primitiven „Taschenrechner“ zu schreiben - woran kann ein erwachsenes Mädchen interessiert sein ?


Die Idee kam wie üblich aus dem Alltag. Wieder bat sie mich, die Proportionen der Zutaten in ein Notizbuch zu schreiben.


Schatz, wir brauchen dringend ein Fahrrad!


Groß und mit Beiwagen


Wir wollten schon lange ein Rezeptbuch anfangen, weil sie gerne mit mir experimentiert, und diese Experimente sind oft sehr erfolgreich.


Aber ist es wirklich nur eine Rezeptbasis?


Natürlich nicht!


Auf was , was und in welcher Reihenfolge wir schreiben werden, habe ich im selben Moment verstanden.


Back-End


Was wir mit Golang anfangen, ist, dass entschieden wurde, bevor klar wurde, dass wir schreiben würden. Nun konnte entschieden werden, wofür Go genau verantwortlich sein sollte .
API . Natürlich die API !


Die Sprache ermöglicht es der Standardbibliothek, einen einfachen http-Server aufzubauen, der eine Schicht zwischen der Datenbank und den Clients ist.


Es wurde übrigens beschlossen, PostgreSQL als Datenbank zu verwenden . SQL ist eine ausgezeichnete Sprache für die Entwicklung der Logik der Arbeit mit Daten. Außerdem können wir PL / pgSQL verwenden , was im Allgemeinen dem Go sehr ähnlich ist , was bedeutet, dass wir während der Entwicklung des Backends bereits drei oder einen Grad lernen können. Sprache.


Frontend


Da in dieser Situation keine Fristen und einzelne Entwicklungsteams vorhanden sind, können wir es uns leisten, das Frontend zu starten, nachdem unser Serverteil abgeschlossen ist.
Warum so


Erstens erlaubt es einem Anfänger nicht, zwischen zu vielen Sprachen und Technologien zu wechseln.


Zweitens müssen wir eine Person in die Architektur einweisen. Lassen Sie sie daher zuerst ein vollwertiges Backend entwickeln und dann erst zum Client gehen.


Auch für den Kunden war die Wahl für mich offensichtlich.


Den Trend zur Reaktivität zu ignorieren, ist dumm, weil wir nicht viele Legacy-Codes haben. Außerdem sind einige dieser Frameworks extrem einfach zu erlernen.


Wir sprechen über Vue.js . Natürlich könnte man React oder eine exotischere Lösung wie Svelte verwenden , aber es scheint mir, dass diese Technologien für ältere Entwickler gedacht sind .


Zusätzlich wird der Client-Teil in TypeScript geschrieben . Wahrscheinlich werden viele mit mir nicht einverstanden sein, aber ich glaube trotzdem, dass dynamische Typisierung zumindest ein Segen ist, aber es ist nur in den Händen derjenigen gut, die verstehen, was Typisierung im Allgemeinen ist.


Aus diesem Grund scheint es mir richtig, in einer Sprache mit statischer Typisierung weiter zu lernen. Es ist in der Sprache, also wurde Flow nicht berücksichtigt. Andererseits wollte ich die maximale Übereinstimmung mit JS beibehalten , ohne das Mädchen zu CoffeeScript , Elm usw. zu bringen.


Apropos Frontend und moderner Technologie-Stack: Die Progressive Web Application ( PWA ) kann man nicht vergessen .


Meiner Meinung nach ist dies die ideale Technologie zum Lernen, oder genauer gesagt, um den Schüler zu interessieren.


Eigene Anwendung auf einem Mobiltelefon unabhängig von der Plattform? Sie müssen für Anfängersprachen nicht schwer lernen? Das ist eine großartige Motivation, vielleicht eine der besten, denke ich.


Unser Frontend sollte daher vor allem alle Anforderungen an PWA erfüllen .


Gemeinsame Sprache


Die letzte Frage, auf die ich eine Antwort finden konnte, war das Format der Kommunikation des Clients mit dem Server.


Auf der einen Seite gab es sonst REST mit all seinen Vor- und Nachteilen und auf der anderen Seite GraphQL . Ich wollte kein reines REST anbieten , da dies bestimmte Probleme mit sich bringt, die zu Lösungen wie GraphQL führten . GraphQL selbst ist meiner Meinung nach jedoch auch keine gute Technologie, obwohl es von Interesse ist. Aber auch das interessiert mich für andere Entwickler - ja, aber für einen Anfänger von GraphQL als Lösung für Probleme, die mit der Verwendung von klassischem REST verbunden sind , wird das nicht interessant sein, weil der Anfänger all diese Probleme nicht kennt, oder?


Warum versuchen Sie nicht , die Ideen von REST und GraphQL zu kombinieren ?


Natürlich reicht das Nachdenken über die eigene Implementierung über das Erlernen der Grundlagen des Programmierens hinaus, aber das Schreiben ist keineswegs. Daher wurde beschlossen, Ihr eigenes Fahrrad heimlich zu erfinden und anzubieten, es im Rahmen des Projekts umzusetzen.


Ergebnisse


Was müssen wir gehen?


  • Zunächst müssen Sie eine serverseitige Architektur entwickeln.
  • Treffen Sie sich dann und gestalten Sie die Datenbankstruktur.
  • Mit einer Datenbank beginnen wir, Go zu studieren und die Server- API zu schreiben .
  • Als nächstes kommt die Bekanntschaft mit HTML und CSS .
  • Nachdem Sie die Grundlagen des Layouts beherrscht haben, können Sie die TypeScript- Syntax schnell analysieren .
  • Nachdem mit dem behandelten Typoskript , beginnt an dem vorderen Ende Schreiben Vue.js ;
  • Upgrade des Frontends auf PWA- Ebene .

Für mich ist dies die erste menschliche Lernerfahrung im Programmieren. Vielleicht zeigt sich dieser Ansatz nicht so, wie ich es in meinem Kopf sehe.


Ich hoffe jedoch, dass er sich immer noch rechtfertigt, und meine Erfahrung wird für jemanden nützlich sein, der in dieselbe Situation gerät.


Vielen Dank für Ihre Aufmerksamkeit!


Jetzt auch beliebt: