Ein kleiner Hintergrund
Ich bin heute 28 Jahre alt und hatte noch nie eine formelle Ausbildung in Softwareentwicklung. Ich habe jedoch zwei Hochschulabschlüsse, die einem BA in Public Relations entsprechen, und einen Executive MBA mit Schwerpunkt auf Projektmanagement. Ich habe ungefähr 6 Jahre auf diesen Feldern gearbeitet und vor 2,5 Jahren habe ich meinen Job gekündigt / verloren und mich entschieden, die Richtung zu ändern.
Nachdem ich einen Monat lang nachgedacht hatte, beschloss ich, freiberuflich kleine Websites in WordPress zu entwickeln. Ich habe es selbst gelernt und kann heute sagen, dass ich eine bescheidene, aber erfolgreiche Karriere als Entwickler von Themen und Plugins für meine Kunden habe - hauptsächlich Agenturen, die einen Teil ihrer Entwicklungsarbeit für mittlere und große Websites auslagern.
Aber manchmal habe ich das Gefühl, dass es mich wirklich zurückhält, wenn ich nicht genug Mathe studiert habe oder kein formales Verständnis der Dinge habe, wenn ich mit erfahreneren Entwicklern konkurrieren oder arbeiten muss. Ich bin ständig auf der Suche nach Möglichkeiten, mehr zu lernen, aber mir fehlen anscheinend die Grundlagen.
Leider ist es derzeit nicht möglich, noch vier Jahre in Informatik zu verbringen. Deshalb versuche ich, aus Büchern und Online-Ressourcen alles zu lernen, was ich kann. Diese Methode wird die NASA niemals dazu bringen, mich einzustellen, aber es ist mir im Moment wirklich egal. Mein Ziel ist es, zuerst die Messlatte zu überschreiten und mich als echten Programmierer bezeichnen zu können.
Momentan verbringe ich meine Freizeit damit, Java für Programmierer (um eine Sprache zu erlernen, von der jeder sagt, dass sie schwierig / anspruchsvoll ist), Auszüge aus Code Complete (um Best Practices zu erlernen ) und auch Code: The Hidden Language of Computer zu lesen Hardware und Software (um das Innenleben von Computern zu erfassen).
TL; DR
Meine derzeitige Situation ist folgende: Ich bin grundsätzlich in der Lage, jedes vollständige System in PHP zu schreiben (mithilfe von Google und einigen Büchern), Ajax, SQL und so weiter zu integrieren und vielleicht ein bisschen langsamer, als es ein erfahrener Entwickler erwarten würde aufgrund all der Forschung beteiligt.
Aber ich war gestern gestrandet und habe versucht, eine Lösung für den FizzBuzz-Test zu finden (nicht Google), weil ich den if($n1 % $n2 == 0)
Methodenmodul- Operator nicht auswendig gelernt habe.
Was würden Sie als einen guten Weg zur Lösung dieses Dilemmas vorschlagen? Welche Fächer / Bücher sollte ich studieren, um Probleme schneller und vielleicht "auf programmiererische Weise" zu lösen ?
EDIT - Scheint, dass es einige Verwirrung darüber gab, was ich nicht wusste, um FizzBuzz zu lösen.
Vielleicht habe ich mich nicht richtig ausgedrückt: Ich kannte die notwendigen Schritte, um das Problem zu lösen. Was ich mir nicht gemerkt habe, war der Moduloperator. Das Problem bestand darin, die Grundrechenarten in das Programm zu übertragen, nicht darin, die Grundrechenarten zu kennen.
Ich habe den Test zum Spaß gemacht, nachdem ich ihn in Coding Horror gelesen hatte . Ich habe gerade entschieden, dass es eine gute Basis-Vergleichslinie zwischen mir und formal ausgebildeten Entwicklern ist.
Ich habe dies nur als Beispiel dafür verwendet, dass ich keine Zeit damit verliere, mich mit Mathematik in einer Computerumgebung auseinanderzusetzen, um grundlegende Dinge wie Moduloperatoren nachzuschlagen, um einfache Probleme lösen zu können.
I'm basically capable of writing any complete system in PHP (with the help of Google and a few books)
und dies mit Ihnen kombiniere, ohne es zu wissenif($n1 % $n2 == 0)
, wundere ich mich über die Belichtung, die Sie mit Dingen hatten, die in PHP geschrieben wurden. Ich denke, die meisten Dinge, die Sie tun, gehen über eine einfache Modulo-Berechnung hinaus. Könnten Sie uns einen Einblick geben, wozu Sie Ihrer Meinung nach in der Lage sind?stuck b/c I didn't memorize %
Problem sollte beachtet werden, dass es auch andere Möglichkeiten gibt, dies zu tun: (unter der Annahme von $ n2! = 0)if (is_int ($n1 / $n2))
oderif (($n1 / $n2) == (int) ($n1 / $n2))
Schlüsselwörter zu kennen, ist eine Sache, und zu wissen, wie die zugrunde liegenden Ideen in Abwesenheit einer integrierten Lösung ausgedrückt werden Ein weiterer.Antworten:
In Ihrem Fall, da Sie Autodidakt sind und bereits einen guten, gesunden und BS-freien Lernansatz haben. Noch ein paar Vorschläge ...
Übung macht den Meister
Ich denke, Sie sollten in Programmierübungen eintauchen, wie die:
Nehmen Sie sogar die Prüfungsfragen bekannter Universitäten in Ihrer Nähe oder lokaler (oder entfernter) Programmierwettbewerbe zur Kenntnis. Zum Beispiel haben wir in Frankreich ein nettes Programm für angehende High-School-Programmierer namens Prologin , das jedes Jahr eine gute Reihe von Puzzles bietet (wahrscheinlich nur für Franzosen, sorry, aber das ist die Art von Dingen, die ich meine ).
Für mehr: Wo finde ich Programmierpuzzles und Herausforderungen?
Klassische Bücher und Referenzen
Wir könnten auch eine sehr lange Liste erstaunlicher Bücher empfehlen , aber ich würde sagen, die Zen-Antwort ist, dass es keinen einzigen richtigen Weg zur Erleuchtung gibt.
Es ist schwer zu sagen, welche ganz oben auf der Liste stehen. Lesen Sie also eine Menge Dinge durch, um allgemeine Fallstricke zu vermeiden und bewährte Methoden zu befolgen, wie Sie es jetzt richtig machen.
Für mehr:
Die Grenzen ausreizen
Achten Sie auch auf Material, das den Kopf zerkratzt, wie:
Nicht unbedingt als Beispiel für Dinge zu sehen, die heutzutage zu tun sind, aber es lohnt sich herauszufinden, was zum Teufel dort vor sich geht.
Peer-Systeme sind motivierend
Möglicherweise möchten Sie auch in den folgenden Communities herumlungern (und sich daran beteiligen), um Ihre Fähigkeiten schrittweise zu verbessern, indem Sie mit anderen konfrontiert werden.
Teilzeitausbildung
Wenn Sie nicht die Zeit oder die Motivation haben, sich für einen weiteren 4-jährigen Kurs oder Ähnliches zu engagieren (was möglicherweise nicht einmal notwendig oder lohnend ist und teuer), können Sie online nach Lehrmaterialien suchen. Natürlich sind diese nicht auf Informatik beschränkt.
Dank der ursprünglichen Bemühungen von MIT OpenCourseWare folgten inzwischen Unmengen von Universitäten , und Sie können viele Kursmaterialien auf Universitätsniveau kostenlos finden. Es ist nicht immer einfach, alleine zu navigieren und zu lesen, aber einige sind ziemlich gut gemacht. Betrachten Sie auch die Khan-Akademie, um von Grund auf zu beginnen und ganz nach oben zu gehen .
Einige gehen noch ein bisschen weiter und bieten echte Online-Kurse an, bei denen Sie ebenfalls Zugriff auf das Kursmaterial haben, bei denen Sie aber auch Vorträge halten und regelmäßig Selbsteinschätzungen vornehmen können. Besuchen Sie beispielsweise Coursera oder Udacity .
Die meisten der oben genannten veröffentlichen ihre Vorträge häufig auf Youtube oder iTunesU, sodass Sie viel Material finden, wenn Ihr Wissensdurst nicht bereits durch alle vorherigen Links gestillt wurde.
Wenn Sie etwas wollen, das der "realen" Universität eine nähere Erfahrung bietet, können Sie Remote-Universitäten in Betracht ziehen, die es Ihnen auch ermöglichen, Teilzeit zu arbeiten, aber von Ihnen verlangen, dem Tempo zu folgen und sowohl Selbsteinschätzungen als auch das Ende von zu haben Jahresprüfungen (manchmal vor Ort), wie bei der OpenUniversity und ihren internationalen Varianten.
Leidenschaft hält Sie am Laufen
(und genug Augäpfel auf deinen Code werfen, um dich zu kritisieren und verschiedene Perspektiven zu haben)
Die Franzosen sagen:
Mach weiter, was du tust, und irgendwann wirst du ein Experte. Es braucht Zeit und Arbeit.
Weitere Vorschläge finden Sie unter Ich habe Probleme beim Lernen .
PS: Obwohl es ein sehr kontroverses Tool für Interviews ist und nicht dazu beiträgt, gute Kandidaten zu identifizieren, benutze ich FizzBuzz oft, um zumindest die unglaublich "schlechten" auszusortieren. Also fang an zu üben! :)
quelle
Ich habe noch nicht lange programmiert (habe vor ungefähr 27 Monaten angefangen, mir SQL beizubringen, und habe vor ungefähr 20 Monaten angefangen, in Perl zu programmieren), aber das obige Zitat klingt wie ein paar Dinge, die ich von ehemaligen Schülern gehört habe:
Okay, das letzte war wahrscheinlich ein bisschen hart ... aber der Punkt, den ich versuche, ist, dass das Lösen von Problemen nicht das Auswendiglernen ist . Wenn es so wäre, könnte ein Genie einen Computer programmieren, um jedes Problem zu lösen, und keiner von uns würde jemals wieder darüber nachdenken müssen (was für eine höllische Welt das wäre ...).
Nun ist es wahr, dass jedes intellektuelle Unterfangen zumindest ein bisschen auswendig gelernt werden muss. Insbesondere wenn Sie in PHP programmieren möchten, sollten Sie die grundlegenden Datentypen (Zahlen, Zeichenfolgen, Arrays) und die grundlegenden Funktionen kennen, die Sie damit ausführen können (für Zahlen: Addition, Subtraktion, Multiplikation, Division und Modul; für Zeichenfolgen: Verkettung, Teilzeichenfolgen, Ersetzung und zumindest einige Kenntnisse über reguläre Ausdrücke; für Arrays: Verkettung, Anheften von Elementen, Herausspleißen von Elementen, Schleifen, Zählen von Elementen usw.) und die grundlegenden logischen Strukturen, die verwendet werden können (if / then / else-Anweisungen, foreach-Schleifen, while-Schleifen usw.).
Wenn Sie auf ein Problem stoßen, verwenden Sie das Problem, um den Kontext für die benötigten Tools bereitzustellen. In FizzBuzz müssen Sie feststellen, wann eine Zahl durch 3, 5 oder 15 teilbar ist. Okay, es handelt sich also um Zahlen. Mit welchen grundlegenden Tools können wir feststellen, wann eine Ganzzahl durch eine andere teilbar ist? Nun, der Moduloperator. Also, benutze das. (Natürlich, wenn Ihre Nummer ist
$n
, könnten Sie ausgefallen sein und sehen, ob die letzte Ziffer von$n
0 oder 5 ist, und / oder ob sich die Ziffern von$n
zu etwas addieren, das durch 3 teilbar ist, aber ich schweife ab ...) Sie müssen Tun Sie dies für jede Zahl zwischen 1 und 100. Verwenden Sie eineforeach
Schlaufe , um zu vermeiden, dass Karpelltunnel entstehen .Die Moral der Geschichte ist, dass, wenn Sie einerseits sagen "Ich bin grundsätzlich in der Lage, ein komplettes System in PHP zu schreiben" und andererseits FizzBuzz nicht codieren können, die erste Behauptung falsch ist. Einige meiner ehemaligen Kalkülschüler schworen auf und ab, dass sie die Konzepte verstanden, aber sie konnten die Probleme in der Prüfung ... oder die Hausaufgabenprobleme ... oder die Quizprobleme einfach nicht lösen. Sie haben sich auch in ihrem Verständnis geirrt.
Hör auf, Ausreden zu machen und lerne die Grundlagen.
quelle
Sie denken vielleicht, FizzBuzz sei ein Spielzeugproblem. Wann muss ich den Modul-Operator jemals in einem echten Programm verwenden? Aber wirklich benutzt du es die ganze Zeit. Drei gängige Beispiele:
row_number % 2 == 0
) und zeigen eine Farbe für gerade Zeilen und eine für ungerade Zeilen an.if item_number % N == 0
als das Äquivalent (if item_number|divisbleby: N
) geschrieben wurde.if cur_item_number % 50 == 0 then commit_data
.Sicher gibt es andere Möglichkeiten, all diese Dinge zu tun. Sie können jedoch Fizz Buzz ausführen, ohne den Modulusoperator zu verwenden oder die Gleitkommadivision mit der Ganzzahldivision zu vergleichen. Für FizzBuzz könnten Sie beispielsweise den folgenden Pseudocode verwenden.
Zum Schluss, wenn Sie eines Tages ein großartiger Programmierer sein möchten, sollten Sie keine Sprachbücher lernen. Ja, in einem PHP / Java-Buch erhalten Sie Antworten von Google / Stackoverflow und halb-funktionierenden Programmen viel schneller als alles andere. Aber um wirklich wissen zu können, wie man qualitativ hochwertige Programme schreibt und wie ein Programmierer denkt, muss man sich mit echten CS-Büchern auseinandersetzen.
Beginnen Sie mit einem CS-Buch, das eine Programmiersprache und den CS-Hintergrund vorstellt, mit dem berühmten Beispiel der Struktur und Interpretation von Computerprogrammen (das Schema - einen Lisp-Dialekt lehrt) oder vielleicht etwas anderem wie Think Python Wie man wie ein Computer denkt Wissenschaftler (den ich nicht gelesen habe). Beide sind online kostenlos.
Sie müssen schließlich ein gutes Algorithmusbuch lesen, wobei das Beste die Algorithmen von CLRS (nicht kostenlos) sind, obwohl dieses kostenlose Online- AlgorithmusbuchDies könnte ein kostengünstiger Ersatz sein (wenn Sie jedoch nur CLRS kaufen können). Das Algorithmenbuch zeigt Ihnen, wie Sie Computerprobleme lösen und stellt Ihnen eine Vielzahl von Datenstrukturen (Arrays / verknüpfte Listen / Heaps / Binäre Bäume / B-Bäume / HashTables) sowie wichtige Algorithmen vor, deren optimale Verwendung Sie wissen müssen . Sie müssen sich nicht jeden Beweis merken oder wissen, wie man jeden Algorithmus perfekt schreibt (wer jemals einen Fibonacci-Haufen benutzt); Sie sollten aber intuitiv wissen, dass zwei verschachtelte for-Schleifen O (N ^ 2) sind. Vergleichsarten sind bestenfalls O (N lg N), binäre Suche ist O (lg N), kann Median in O (N) finden, warum Festplattendatenbanken B-Trees verwenden usw.). Zumindest helfen Ihnen gute Kenntnisse des Algorithmenbuchs dabei, technische Programmierinterviews mit der Vielfalt von Google / Facebook zu erstellen. Überfliegen / lesen Sie beim Lesen von Programmierbüchern nicht nur; Sie'
Ich empfehle Ihnen auch ein Buch über Software-Engineering (entweder Code Complete oder Pragmatic Programmer), nachdem Sie das Handbuch zu CS und Algorithmen durchgearbeitet haben. Dort erfahren Sie, wie Sie guten Code schreiben, der gewartet werden kann (eindeutige Namen; kommentieren Sie ihn nur, wenn dies erforderlich ist) ; Code zusammenhalten; bei Bedarf überarbeiten; Versionskontrolle verwenden; etc).
quelle
Niemand merkt sich das Ding. Sie sollten sich das selbst einfallen lassen. Wenn Sie den Moduloperator kennen und wissen, was er tut, passt er problemlos zum FizzBuzz-Problem.
Ich werde hier auf die Sprünge gehen und generell vorschlagen, dass das Problem PHP ist. Ich möchte sagen, dass Java die schlechteste Sprache ist, die jemals entwickelt wurde, und PHP die schlechteste Sprache, die jemals entwickelt wurde , weil selbst die Entwickler zugeben, dass es nie entwickelt wurde. Es ist schwierig, gute Softwareentwicklungspraktiken zu erlernen, wenn Ihre Umgebung praktisch die Definition dafür ist, wie dies nicht getan werden soll. Und abhängig von einem Framework, um alles zu erledigen, ist nicht viel zu sagen.
Java ist eine der einfachsten und schlimmsten Sprachen, die es gibt. Es gibt nur eines: die manuelle Vererbung durch Speicherbereinigung. Wenn Ihre Freunde oder Berater sagen, dass Java schwierig ist, dann finden Sie neue Freunde. C ++ ist eine schwierige Sprache, die viele Konzepte enthält und die niemand bestreiten wird. Sie können auch C # ausführen , das zumindest einige Generika und Lambdas enthält.
Wie werden Sie das Programmieren lernen, wenn Ihre Sprachen von Leuten entworfen und implementiert wurden, die nicht programmieren können, und Sie für alles, was Sie tun, auf Frameworks angewiesen sind?
quelle
Ich denke, Sie müssen sich genau überlegen, warum Sie gestrandet waren, um FizzBuzz herauszufinden. Angenommen, Sie haben sich daran erinnert, dass es einen Operator gibt, der
$n
Ihnen mitteilt, ob er durch eine Zahl teilbar ist. Und du hast Pech zu vergessen, was es ist. Gut, warum versuchst du es nicht auf andere Weise? Wenn Sie etwas über Code wissen, sollten Sie in der Lage sein, ein Dutzend anderer Möglichkeiten zu finden. Einige von ihnen sehen vielleicht seltsam aus - zum Beispiel, wenn Sie jedes Vielfache von 5 in ein Array setzen und dann prüfen, ob sie$n
unter ihnen sind - und es ist eine schlechte Lösung, aber es wäre immer noch eine Lösung. Sie sagen jedoch, dass Sie keine hatten, sondern nur feststeckten. Es kann ein Symptom für ein größeres Problem sein.Es gibt zwei Dinge in der Programmierung, die Sie lernen müssen.
Aus Ihrer Beschreibung sieht es so aus, als hätten Sie mit dem ersten Teil begonnen, dem zweiten Teil fehlt es jedoch etwas. Ein guter CS-Kurs hilft normalerweise sehr, ist aber nicht der einzige Weg. Der Versuch, verschiedene Probleme zu lösen und zu lesen, wie diese Probleme gelöst werden müssen, und das Lesen der hier zitierten grundlegenden Bücher - all das würde helfen. Sobald Sie die Einstellung des Programmierers kennen, werden Sie feststellen, dass der Einstieg in eine neue Trickkiste kein großes Problem darstellt. Sie müssten natürlich hier und da googeln, aber Sie werden nie gestrandet sein.
quelle
Sie entwickeln sich so gut, wie Sie in etwas anderem gut werden: Üben. In der Programmierwelt gibt es ein nettes Konzept, das sich Code Kata nennt . Dies ist im Wesentlichen eine Übung, bei der Sie eine Lösung für ein relativ kleines Problem codieren, analysieren, was gut und was schlecht ist, alles ausrangieren und es erneut tun. FizBuzz ist eine Kata für sich. Also, mach es und mach mehr. Wenn Sie Dinge finden, die nicht sehr gut zu sein scheinen oder einfach nicht funktionieren, recherchieren Sie und gehen Sie gründlich damit um. Stellen Sie Fragen auf Q & A-Sites, lesen Sie Artikel und Blogs, sehen Sie, wie andere damit umgehen, und üben Sie dann , was Sie gelernt haben.
In dieser Übung lernen Sie, wie viel zusätzlichen mathematischen / theoretischen Hintergrund Sie möglicherweise benötigen. Wenn Sie auf Konzepte stoßen, mit denen Sie sich einfach nicht abfinden können, lesen Sie diese und ihr vorausgesetztes Wissen durch und entscheiden Sie von Fall zu Fall, ob Sie einen Kurs belegen oder was Sie haben, um Ihr Wissen zu erweitern theoretischer Hintergrund.
quelle
Ich interpretiere das so, dass Sie nichts über den Moduloperator wussten und / oder sich nicht daran erinnern. In diesem Fall müssen Sie zunächst die Sprachkonstrukte in der von Ihnen verwendeten Sprache überprüfen. Überprüfen Sie alles, was Sie nicht "kalt" wissen, und lernen Sie alles, was Sie einfach nicht wissen.
quelle
Kodieren Sie weiter, lernen Sie weiter. Mit genügend Engagement werden Sie sich FizzBuzz ansehen und sich fragen, warum Sie überhaupt darüber nachdenken mussten. Viele Unternehmen stellen zu Beginn ihrer Befragung eine Frage im FizzBuzz-Stil. Wenn Sie diese Frage also einmal nicht beantworten, haben Sie zumindest etwas über den Einstellungsprozess gelernt.
Schreiben Sie einfach weiter Code, lassen Sie sich Projektideen einfallen und recherchieren Sie.
quelle
Darf ich empfehlen, JavaScript vor Java, C ++ zu lernen? Gründe für Sie:
Kostenlose Ressourcen für Anfänger
http://www.codecademy.com/tracks/code-year
https://stackoverflow.com/tags/javascript/info
Ich hatte ungefähr 10 weitere Links, aber SE lässt mich diese erst veröffentlichen, wenn ich 10 Wiederholungen erreicht habe.
Das Erlernen von C ++, Java usw. ist ebenfalls hilfreich, aber IMHO hat nicht die gesamte Auswirkung auf die Webprogrammierung wie JS, da Sie es sowohl für das Front-End als auch für das Back-End verwenden können. Habe Spaß!
quelle
Sie könnten andere finden und ihnen helfen, z. B. Code geben (Offenlegung: meine Website) oder Code für Amerika oder was auch immer. Dies ist ein ausgezeichneter Weg, um Probleme zu bekommen, die nicht mit PHP-Webseiten zusammenhängen, und sich auch gut zu fühlen.
Wenn Sie ein Problem zu lösen haben - oder helfen, es zu lösen oder einfach nur zu verstehen -, ist es selbstverständlich, dass Sie den Code mitnehmen. Ein Ziel zu haben ist der beste Weg, etwas zu lernen.
quelle
Sie konnten das FizzBuzz-Problem also nicht lösen. Große Sache. Jetzt können Sie und ich wette, Sie werden nie all die unzähligen Möglichkeiten vergessen, wie. Versuche nicht so eifrig zu sein, dich als schlechten Programmierer zu brandmarken, nur weil du nicht ein einziges dummes Problem auf Anhieb lösen konntest.
Das ist ein Problem. Das andere ist, dass Sie sich ein bisschen hinter der Lernkurve für das Programmieren zu fühlen scheinen. Wie andere bereits gesagt haben, schreiben Sie weiter und lesen Sie weiter. Je mehr Sie tun, desto besser werden Sie. So einfach ist das. Beginnen Sie mit dem, was Ihrer Meinung nach das größte Loch in Ihrem Hintergrund ist, und fahren Sie von dort aus fort.
quelle
Ich glaube nicht, dass ich es ablehnen würde, jemanden zum Mieten zu empfehlen, weil er nicht wusste, dass dies der Moduloperator ist, vorausgesetzt, dass:
Es ist nicht immer (obwohl normalerweise)%, und einige Sprachen sind komisch. Und zum Teufel, nach einem Jahrzehnt kann ich nicht ehrlich sagen, dass ich alle Perl-Operatoren kenne (und was macht das Raumschiff noch einmal?), Und ich kann mich auch nicht immer perfekt an die bitweisen Operatoren erinnern. Es ist ein paar Jahre her, dass ich irgendetwas getan habe, was diese überhaupt erfordern würde.
Was mich zögern lassen könnte, jemanden zu empfehlen, wäre, wenn er eine Panikattacke bekommt, weil er diese Frage / diesen Test verpasst. Das könnte den Eindruck erwecken, dass sie ein wenig zu grün waren (es sei denn, es war eine Einstiegsposition). Niemand braucht jemanden, der diese Dinge auswendig lernt (oder das Bedürfnis danach hat). Sie brauchen jemanden, der weitaus umfassendere Konzepte versteht. Es wird niemanden interessieren, ob Sie das bei Google nachschlagen, aber Sie müssen im Interview sicher sein, dass das Wissen um% keine große Sache war und dass Sie "operator" als Keyword verwenden, wenn Sie schnell googeln Suche.
Auch das ist nur eine Idee ... aber wenn Ihre örtliche Volkshochschule ein Compsci-Programm hat, würden alle Ihre anderen Credits übertragen, und Sie würden wahrscheinlich nur etwa 20 Credits für den 2-Jahres-Abschluss benötigen. Könnte das fast in einem Semester beenden. Sie müssten einen Kurs über Datenstrukturen machen, hoffentlich auch Algorithmen ... die Sie ein bisschen stärker machen könnten.
quelle
Hier ist ein Beispielkurs: http://www.ox.ac.uk/admissions/undergraduate_courses/courses/computer_science/computer_science_.html
Ich schlage vor, zuerst Folgendes zu lesen: Objektorientierte Programmierung (sehr häufig, wird überall verwendet, hier kommt Java ins Spiel) Parallelität (um Java-Programme zu schreiben, die in der realen Welt nicht auf mysteriöse Weise abstürzen, lernen Sie mehr über Deadlocks) Datenbankkonzepte (Die meisten Anwendungen müssen Daten speichern, Theorie ist hier wichtig.) Programmierparadigmen (Lesen Sie mindestens eine andere Sprache, die vorzugsweise funktional ist, um Ihr Denken zu erweitern und neue Dinge zu lernen.)
Wenn ich mir die 4 Jahre comp. Naturwissenschaftlicher Ausbildung ansehe, gibt es ehrlich gesagt nur eine Handvoll Kurse, die Sie ernst nehmen müssen.
Datenstrukturen und Algorithmen (und Sie brauchen Mathematik, um wirklich gut zu werden und von anderen Programmierern ernst genommen zu werden), Computernetzwerke und Betriebssysteme werden als die wichtigsten betrachtet. Andere Themen, die sich mit Code auf niedrigerer Ebene befassen, z. B. die Möglichkeit, in der Assembly zu codieren, sind für Sie wahrscheinlich nicht so wichtig. Durch Software-Engineering und -Tests werden Sie mit nützlichen Konzepten konfrontiert, die Sie mit der Zeit erfassen können.
Laden Sie einfach ein PDF herunter, in dem diese Konzepte auf intuitive Weise erläutert werden, und schon sind Sie unterwegs.
In einigen comp-naturwissenschaftlichen Kursen, zumindest in meinen, ist das erste Jahr eine Einführung in alle Bereiche des Ingenieurwesens, wie z. B. Maschinenbau, Elektrotechnik, Bauwesen usw. Es gibt eine Menge komplizierter Mathematik, was wiederum relevant sein kann oder auch nicht für die meisten Anwendungsprogrammierer heute. Viele der Ingenieure von heute haben nur 3 Jahre echte naturwissenschaftliche Ausbildung (Ich hoffe, Sie fühlen sich dadurch besser :)
Der springende Punkt der Antwort: Sie können sich jeden Tag etwas Zeit zum Lernen nehmen, etwa eine Stunde, und über einen bestimmten Zeitraum hinweg ein ziemlich guter Programmierer werden. Lerne einfach weiter. Und denken Sie daran, jeden Tag Code zu schreiben.
quelle
Für mich ist meine Strategie, dass ich nur das Problem angreife, das für meine Arbeit relevant ist. Mein Rat ist also, dass Sie nicht alles lernen müssen, sondern nur die Dinge lesen, die für Ihre Arbeit relevant sind. denn wenn Sie versucht haben, alles auf einmal zu lernen, besteht die Tendenz, dass Sie sich niederwerfen und am Ende die Programmierung hassen.
Frieden
quelle