Zunächst habe ich die Site bereits durchsucht und alle vorherigen Themen zu "Autodidakt vs. College" gelesen. Die Mehrheit der Antworten vertrat die Ansicht, dass der Besuch des Colleges aus zwei Hauptgründen die beste Wahl sei:
Wenn Sie zur Universität gehen, erhalten Sie die Zeitung, die für die Jobsuche besonders in wirtschaftlich schwierigen Zeiten unerlässlich ist.
Der Besuch des Colleges bietet Ihnen eine solide Programmiergrundlage und vermittelt Ihnen die Grundsätze, die unabhängig von der Sprache / dem Weg, den Sie einschlagen, von entscheidender Bedeutung sind.
Hier kommt meine Frage: Ich mache mir keine Sorgen um Grund 1, weil ich bereits eine eigene Firma (ich baue Websites / mache Affiliate-Marketing) und eine stabile finanzielle Situation habe, so dass ich mir ziemlich sicher bin, dass ich mich nicht umsehen muss für einen Job.
Ich mache mir allerdings Sorgen um Grund 2. Das heißt, ich möchte sicherstellen, dass ich eine solide Programmgrundlage habe wie jeder andere da draußen, und ich frage mich, ob das mit Selbstlernen möglich ist.
Angenommen, ich nehme mir Zeit, um die Grundlagen wie diskrete Mathematik, Algorithmusdesign, Programmierlogik, Computerarchitektur, Assemblierung, C-Programmierung, Datenbanken und Datenstrukturen zu studieren - hauptsächlich unter Verwendung von Büchern, Online-Ressourcen und viel Codierung. Angenommen, ich verbringe 1-2 Jahre damit, diese Grundlagen zu besprechen.
Glaubst du, dass mein Fundament solide wäre oder immer noch fehlt im Vergleich zu jemandem, der aufs College gegangen ist?
Antworten:
Auf jeden Fall. Ja es ist möglich. Wie soll ich wissen? Weil ich es getan habe!
Es ist schwierig. Machen Sie sich darüber keine Illusionen. Ohne einen Tutor, zu dem man gehen kann, wenn die Dinge nicht funktionieren, muss man selbst Probleme herausfinden. Es gibt viel zu lernen und wenn Sie nicht selbst motiviert oder nicht engagiert genug sind, können Sie es nicht tun. Für mich ist es schwierig, motiviert zu sein, aber ich lerne und programmiere so gerne, dass ich mich nicht selbst bekämpfen muss.
Einige Hinweise:
Woher weißt du, wann du fertig bist? Nun, der Grund, warum Sie einen Abschluss machen, ist, dass Sie die Programmierung beherrschen. Wenn Sie sicher sind, dass Sie in angemessener Zeit jede Software schreiben können, sind Sie Programmierer, aber das bedeutet nicht, dass Sie aufhören sollten zu lernen.
Übrigens leide ich jetzt unter Punkt eins. Es hilft auch nicht, weit weg von Softwareentwicklungsunternehmen zu sein.
quelle
Ich denke, die wichtigste Bezeichnung für das College / die Universität ist es, dir beizubringen, wie man Dinge auf eigene Faust lernt. Es ist egal, ob es sich um Programmieren, Physik, Chemie, Mathematik usw. handelt. Die Universität hat mir beigebracht, wie man ohne Hilfe lernt.
quelle
Einige Menschen gedeihen im akademischen Umfeld und verlangen sogar von ihnen, dass sie lernen (normalerweise als eine Form der Motivation). Andere (wie ich) tun es nicht und finden sie sogar abstoßend.
Ich hatte eine lange Karriere in der Software ohne Abschluss. Gegen Ende dieser Karriere hatte ich eine architektonische Rolle inne, und der leitende Architekt meines Projekts sagte, dass meine Kenntnisse in Software und Informatik (die beiden sind nicht dasselbe!) Mit einem Master der Waterloo University (eins) gleichzusetzen seien der besten CS-Schulen Kanadas).
Natürlich gibt es einige Mängel in meinem Wissenspool. Meine mathematischen Fähigkeiten reichen nur aus, um mit dem, was ich heute lerne, Schritt zu halten. Ich hasse reine Mathematik und kann im Allgemeinen nicht gezwungen werden, mich über das Neueste und Beste auf dem Laufenden zu halten. Dies hat gelegentlich zu einer Verschlechterung meines Verständnisses der Dinge geführt (wie beispielsweise Haskell), bis ich meine mathematischen Fähigkeiten auf ein ausreichendes Niveau gebracht habe, um die Konzepte zu verstehen. Es bleibt jedoch die Tatsache, dass die Informationen verfügbar sind, ohne dass ich mich in der Nähe eines Universitäts-CS oder einer Mathematikabteilung befinde. Eigentlich kann ich nur sagen, dass meine Lernsequenz manchmal nicht optimal ist - ich muss gelegentlich zurückverfolgen und Grundlagenmaterial einfüllen, bevor ich mit dem, was ich tue, fortfahren kann.
quelle
Ich denke, Ihr Fundament wird solide sein, vorausgesetzt Sie haben die Disziplin, sich zu setzen und sich all diese Dinge beizubringen und die Beispiele durchzuarbeiten. Ich habe einen Abschluss, aber er ist Ingenieur, nicht Informatik. Ich habe mit vielen ausgezeichneten professionellen Programmierern zusammengearbeitet, die sich alles beigebracht haben, was sie wissen müssen. Selbststudium ist sowieso etwas, was Sie brauchen, um ein guter Programmierer zu sein, da es immer eine neue Technologie gibt, die Sie in der Schule nicht gelernt haben.
quelle
Wie bei den meisten Dingen im Leben ist meine Antwort fest, es hängt von der Person ab . Ich bin der festen Überzeugung, dass Sie keinen Bachelor-Abschluss brauchen, um Programmierer zu sein. Meiner Erfahrung nach neigt das College jedoch dazu, Menschen Themen und Ideen auszusetzen, denen sie durch unabhängiges Lernen möglicherweise nicht auf eigene Faust begegnen.
In der heutigen Zeit kann eine motivierte Person online gehen und dank Quellen wie MIT Open Courseware einen Kurs für ein unabhängiges Studium zusammenstellen, der ihnen eine ziemlich breite Wissensbreite verleiht , und das ist diese Wissensbreite, die ich fühle Was macht einen guten Entwickler aus? Allerdings könnte jemand, der nicht so selbstmotiviert ist, feststellen, dass er in der Lage ist, eine einzelne Sprache zu lernen, und möglicherweise nur beruflich.
Wie ich bereits sagte, bin ich der Meinung, dass es die Breite des Wissens ist, die einen guten Entwickler ausmacht, da dies bedeutet, dass er mehr Problemen ausgesetzt war und seine Fähigkeiten zur Problemlösung entwickelt hat. Sie müssen nicht zur Schule gehen, um diese Wissensbreite zu erlangen, aber die Schule hilft in dieser Hinsicht definitiv, da ein guter Studiengang Sie zwingen wird, eine Wissensbreite zu entwickeln.
quelle
Als Programmierer spiele ich ständig mit nicht arbeitsbezogenen APIs und Sprachen (Ruby on Rails, Python, Node.js usw.). Ich mache das eher aus Interesse als für die Arbeit. Ich habe 2 Associates-Abschlüsse, aber selbst nach 10 Jahren Programmieren in Java / JEE vermisse ich die Theorie eines BS-Abschlusses (Big O, Algorithmen, Deskrete Mathematik usw.).
Ich nehme an Teilzeit-Abendkursen teil, um meinen Abschluss in Computer-Informationssystemen zu machen, aber in diesem Programm wird nicht viel CS-Theorie angeboten. Ich mache mein Studium hauptsächlich mit dem "Papier", da es eher geschäftlicher als technischer Natur ist, aber es ist meine einzige Option für Abendkurse.
Schauen Sie sich MIT Open Coursware an . Es ist kostenlos und eine großartige Ressource, um die Lücken der CS / Math-Theorie zu füllen.
quelle
Ich halte es für falsch zu glauben, dass das College / die Universität Ihnen per Definition eine gute Grundlage für die Programmierung bietet. Sie werden Ihnen viel Theorie beibringen und viele verschiedene Arten, über ein Problem nachzudenken. Das ist alles schön und gut, aber diese Theorie in die Praxis umzusetzen, ist eine andere Fähigkeit.
Der einzig wirksame Weg, um die richtige Anwendung der Theorie zu lehren, ist Mentoring und Handeln. Kurz gesagt, Sie müssen versuchen, die Theorie so gut wie möglich anzuwenden und sich auf jemanden mit mehr Erfahrung verlassen, der Sie konstruktiv kritisiert oder Sie in die richtige Richtung weist. Ihr Mentor wird Ihre Arbeit nicht für Sie erledigen, sondern Ihnen helfen, Ihre Arbeit besser zu erledigen.
Ich wäre nicht der Entwickler, der ich heute bin, ohne die Hilfe einiger guter Mentoren zu Beginn meiner Karriere. Die Arbeit an Open Source-Projekten ist ein guter Weg, um Mentoren zu finden, die bereit sind, einige Zeit damit zu verbringen, Details herauszufinden. Zumindest war das meine Erfahrung. Ich hatte auch einen Mentor in meinem ersten Programmierjob, der mir half zu verstehen, wie man einfach erweiterte Anwendungen entwirft.
Gibt es einen Vorteil für das College / die Universität? Ja. Sie können Ihnen jedoch nicht dabei helfen, die Theorie in die Praxis umzusetzen, es sei denn, Sie nehmen sie selbst in die Hand. Wenn Sie versuchen, das, was Sie an der Universität lernen, anzuwenden, können Sie die richtigen Arten von Fragen stellen, die Ihnen helfen, die Theorie auf einer praktischeren Ebene wirklich zu verstehen. Wenn Sie warten, bis Sie im Job sind, haben Sie gerade diesen wichtigen Lernprozess verzögert.
quelle
Die Menschen neigen dazu, die Bedeutung der theoretischen Grundlagen, der Mathematik und des algorithmischen Wissens IMO zu überschätzen. Die Gründe, warum Programmierer diese Dinge pushen und interviewen, sind, dass sie selbst Mathematikfans sind.
Jetzt gibt es natürlich einige Programme, bei denen es nützlich ist zu wissen, was eine "Zustandsmaschine" ist oder wie man eine "Booyer-Moore" -Suche verwendet. Es gibt sogar einige Probleme, bei denen es nützlich sein kann, echte Mathematik zu kennen, z. B. wenn Sie mit Finanzberechnungen oder Physiksimulationen arbeiten.
Die Sache ist jedoch, dass 90% der Programmierung im Allgemeinen keine davon ist, und nicht viele von uns entwickeln Hardcore-Algorithmen. Die meisten Dinge, die Sie lernen müssen, können Sie im Laufe der Zeit lernen. Sie müssen kein riesiges Fundament errichten, sondern müssen stets neugierig sein, wie Sie verschiedene Probleme lösen können.
Ich selbst bin zu 100% Autodidakt und hatte noch nie Probleme, etwas über Algorithmen zu lernen. Ich habe meine Arbeit mit Finanzsystemen gemacht und auch das war ohne tiefere theoretische Mathematikkenntnisse machbar.
Gute Programmierkenntnisse sind keine Grundvoraussetzungen, sondern es geht darum, die Toolbox ständig zu erweitern, und das Lernen, das Sie erhalten, ist um vieles mehr wert, wenn Sie es in einen Zusammenhang mit einem Problem stellen können, das wirklich gelöst werden muss und nicht nur theoretische Forschung.
Sie müssen nicht alles im Detail wissen, dafür gibt es Google, StackOverflow und Wikipedia :) Sie müssen jedoch die Existenz verschiedener Tools und Methoden kennen, um zu erkennen, dass sie für Ihre Situation brauchbar und anwendbar sind. Sie müssen auch die Erfahrung machen, welches Tool am besten geeignet ist. Grundlagen werden in der Regel von Anfängern verwöhnt, da sie nicht wissen, warum ein bestimmtes Werkzeug nützlich ist. Wenn Sie viel Erfahrung haben, werden einige Dinge einfach "einrasten".
Einige Dinge, die ich empfehlen würde:
Wenn Sie dies nicht getan haben, lernen Sie die Entwurfsmuster kennen. Dies ist das praktischste und universellste Werkzeug in Ihrer Toolbox.
Lesen Sie einige allgemeine Übersichten über verschiedene Algorithmen, wenn Sie neugierig sind, damit Sie wissen, was vorhanden ist, wenn Sie einen benötigen
Erfahren Sie mehr über Parallelisierung und Multithreading (und einige funktionale Programmierung). Die Fähigkeit, mehrere Kerne zu unterstützen, ist heutzutage wichtig und wird bald nicht mehr erforderlich sein, daher ist dies ein entscheidendes Wissen.
Mache herausfordernde und experimentelle Hobbyprojekte, die deine Fähigkeiten voranbringen und dich zwingen, Dinge im Kontext zu lernen.
quelle
Eine Sache, die Ihnen das College dabei helfen wird, wenn Sie Schwierigkeiten haben, sich selbstständig zu machen, ist die Fähigkeit, akademische Forschungsarbeiten, insbesondere Mathematik, zu lesen und zu verstehen. Auch dies kann auf eigene Faust erreicht werden. Es ist jedoch hilfreich, dass Sie von Lehrern und Kollegen im Lernprozess angeleitet werden, um das Wissen schneller und einfacher zu erlangen.
Als allgemeiner Programmierer von Informationssystemen werden Sie wahrscheinlich keine Forschungsarbeiten lesen, um gute Ergebnisse zu erzielen. Die heutigen Informationssysteme sind recht einfach und die meisten intensiven Algorithmen wie Suchen, Sortieren und Indizieren werden von den Datenbanksystemen ausgeführt. Solange Sie die Konzepte verstehen, sollten Sie keine Schwierigkeiten haben.
Wenn Sie sich für schwierigere Programmierbereiche wie die Entwicklung von Mikrobetriebssystemen, die Entwicklung von Compilern, künstliche Intelligenz usw. entscheiden, kann die Fähigkeit zum Lesen und Verstehen von Forschungsarbeiten für die schnelle und effiziente Implementierung von Systemen von entscheidender Bedeutung sein.
Das Wissen anwenden zu können, ist sehr individualistisch. Menschen, die ein College besuchen, sind möglicherweise nicht in der Lage, die Prinzipien auch auf jemanden anzuwenden, der kein College besucht. Es gibt ein altes Sprichwort: "Es ist nicht wichtig, was reinkommt, sondern was herauskommt."
Zusammenfassend lässt sich sagen, dass das Wissen, das Sie durch das Studium erhalten, Ihnen helfen kann, die akademische Welt besser zu verstehen und mit ihr zu kommunizieren. Das Wissen kann jedoch auch ohne College-Abschluss erworben werden. Ein Abschluss erleichtert es, andere davon zu überzeugen, dass Sie wissen, was Sie tun, und akademische Forschungsarbeiten verstehen.
quelle
Ich denke nicht, dass viele Menschen durch das Selbststudium eine so gute "Grundlage" bekommen wie durch das Studium, zumindest nicht im gleichen Zeitrahmen. Zwei Jahre Lesen von zufälligen Büchern und Spielen mit Spielzeugproblemen in Ihrer Freizeit bringen Sie nicht auf das gleiche Niveau wie zwei Jahre gezieltes Lernen mit einem organisierten Lehrplan. Bekommst du genug, um durchzukommen? Möglicherweise. Aber wenn Sie wirklich "eine so gute Grundlage wie irgendjemand da draußen" wollen, dann wird es länger als zwei Jahre dauern.
Um Sie nicht zu entmutigen, wäre es sicherlich keine Zeitverschwendung. Ich bin einfach nicht sehr zuversichtlich, dass viele Leute das Äquivalent von zwei Jahren College in zwei Jahren zusammenbringen können, während sie ihr eigenes Geschäft führen und eine Art persönliches / familiäres Leben führen.
quelle
Ich habe mich seit einem Jahrzehnt ohne Abschluss beruflich weiterentwickelt. Wenn ich Leute interviewe, bin ich an ihrer Fähigkeit interessiert, Probleme zu lösen und zu codieren. Wenn ich das sage, gibt es einige Unternehmen / Rollen, für die ich nicht berechtigt bin, nur weil sie auf einem Abschluss bestehen. Bestimmte Beratungsunternehmen haben diese Richtlinie, weil sie Sie für mehr an Kunden verkaufen können.
quelle
Wenn Sie das Zahlenspiel spielen, bekommen diejenigen mit einem Abschluss bessere Jobs und zahlen.
Nicht jeder, der den Abschluss gemacht hat, konnte sich an etwas erinnern.
Die meisten Menschen würden sich nicht die Zeit nehmen, viel über Theorie / Hintergrund / Grundlagen zu lernen, wie sie es tun würden, wenn sie aufs College gehen würden. Vielleicht unterstützen dich deine Eltern durch 4 Jahre Selbststudium. Alle anderen müssen einen Job bekommen.
Der Nachteil wäre, wenn Sie einen CS-Abschluss hatten und einen bestimmten Level nicht bestanden haben, können Sie als mit geringer Leistung angesehen werden. Seien wir ehrlich, wenn Sie es in 4 Jahren Löffelfütterung nicht geschafft haben, werden Sie es nicht auf der Seite herausfinden, während Sie sich niederlassen und Vollzeitjob haben. Ausnahmen natürlich.
quelle
Wenn Sie wirklich ohne Abschluss im Bereich Softwareentwicklung arbeiten möchten, wenden Sie sich an Ihre örtliche Universität. Erhalten Sie von ihnen eine Auflistung der Kurse, die erforderlich wären, wenn Sie einen Abschluss machen würden. Die überwiegende Mehrheit der Universitäten stellt diese Informationen auf Anfrage zur Verfügung sowie eine Übersicht / Lehrplan / Buchliste für jeden der Kurse. Gehen Sie diese Liste durch. Schlage die fraglichen Bücher nach. Sehen Sie, welche Themen sie behandeln. Wenn Sie etwas entdecken, das Sie nicht verstehen, kaufen / lesen Sie das Buch und lernen Sie es. Am Ende dieses Prozesses sollten Sie zumindest wissen, was Sie wissen und was Sie nicht wissen, und mit Ihrem durchschnittlichen Hochschulabschluss (der möglicherweise einige dieser Kurse ohnehin durchgeschlafen / betrogen hat) ziemlich konkurrenzfähig sein.
quelle
Ja und nein. Manche Sachen sind ohne Lehrer nur schwer zu fassen. Normalerweise ist es das Mathe-Zeug.
Ich glaube - und glaube immer noch, dass jeder ohne geistige Behinderung lernen kann, auf PHP / Java / C # -Ebene zu programmieren , nachdem er CS-Majors als TA eingeführt hat. Grundsätzlich ist es nicht schwer.
Dabei geht es auch nicht um die Montage und die anderen von Ihnen genannten Technologiebereiche. Dies sind Implementierungsdetails, die gut zu wissen sind.
Datenstrukturen, Algorithmen, digitales Design, Computerarchitektur und Datenbankalgebra sind ziemlich schwierig, wenn das Lernen tief ist.
quelle
Ich habe keinen Zweifel, dass eine motivierte und engagierte Person ein solides Fundament schaffen könnte, aber wenn Sie sich gegen ein Studium entscheiden, werden Sie viele Aspekte verpassen, die Ihre Entwicklung fördern. Eines dieser Dinge und möglicherweise das wichtigste ist die Begegnung mit Gleichgesinnten, mit denen Sie Ideen und Konzepte austauschen können. Es ist auch sehr schön, den Erfahrungen von Ausbildern zuzuhören, die wertvolle Weisheiten zu vermitteln haben und manchmal missverstandene Konzepte in ein oder zwei Sätzen ausräumen können. Es ist schön, Konzepte zum Zeitpunkt der ersten Enthüllung klären zu können, statt falsche Ideen zu haben und sie später zu klären.
quelle