大学や大学に行かなくても、しっかりしたプログラミング基盤を得ることができますか?[閉まっている]


28

まず、私はすでにサイトを検索し、以前の「独学対大学」のトピックをすべて読みました。回答の大部分は、2つの主な理由から、大学に行くことが最良の選択であると擁護しました。

  1. 大学に行くと論文が得られます。これは、特に厳しい経済状況の場合、上陸の仕事に不可欠です。

  2. 大学に進学することで、しっかりとしたプログラミングの基礎が得られ、その後の言語/進路に関係なく不可欠な原則を教えることができます。

ここに私の質問があります:私はすでに自分の会社(ウェブサイトを構築している/アフィリエイトマーケティングを行っている)と安定した財務状況を持っているので、理由1についてまったく心配していません。仕事のために。

しかし、理由2が心配です。つまり、私は他の誰と同じくらい強固なプログラミング基盤を持っていることを確認したいのですが、自己学習でそれが可能かどうか疑問に思っています。

離散数学、アルゴリズム設計、プログラミングロジック、コンピューターアーキテクチャ、アセンブリ、Cプログラミング、データベース、データ構造など、ほとんどの書籍、オンラインリソース、大量のコーディングを使用して、非常に基本的なことを勉強するとします。これらの基本をカバーするのに1〜2年費やしたとします。

私の基盤はしっかりしていると思いますか、それとも大学に行った人と比べてまだ足りないと思いますか?


2
この惑星には少なくとも一人の人がいる可能性があります。ところで、理由1は依然として重要です。他のすべてが等しい場合、「彼ら」は通常、より正式な教育を受けた人を好むでしょう。
仕事

1
私はあなたに一つのことを言うことができます、あなたは大学で固体が何を意味するのかわかりません。
ピーターターナー


ポイントは、プログラミングを学ぶのに10年かかることであり、これらの年の一部を大学で学ぶことは、助けになります。
バジルスタリンケビッチ

回答:


17

絶対に間違いなく。はい、可能です。どうやって知るの?私がやったから!

難しい。これについて幻想を抱かないでください。物事がうまくいかないときに行くための家庭教師なしで、あなたは自分で問題を把握する必要があります。学ぶべきことはたくさんあります。自分のやる気がなかったり、献身的でないと、それをすることができません。私にとって、何にでもやる気を起こさせるのは難しいと思いますが、私は学習とプログラミングが大好きなので、自分で戦う必要はありません。

いくつかのヒント:

  • 行うことによって学びます!バイナリツリーの仕組みを知りたいですか?作る
  • 学習してください。野心的なプロジェクトを設定して、新しいことを学ばなければ完了しないようにします。注意:難しすぎるプロジェクトを自分で設定すると失望しやすくなりますが、簡単すぎるプロジェクトを自分で設定するとあまり学習しません。あなたはバターゾーンを探しています。
  • C言語から始めましょう。高級言語は怠け者になります。最初にpythonを学んだなら、Cを学んだことがなかったでしょう。
  • ウィキペディアは、あなたが学ぶ必要のある概念の最初の呼びかけであるはずです。
  • 単一のプロジェクトを決して終わらせなくてもかまいません(結局のところ、何が終わったか)。新しいことを学ぶことがより重要です。だからと言って、プロジェクトを完成させようとしないでください。あなたが作ったものを見ると、それが大きな動機付けになります。簡単に追跡できますが、心配は無用です。

完了したらどのようにわかりますか?まあ、あなたが学位を取得する理由は、プログラミングに習熟するためです。妥当な時間を与えられればどんなソフトウェアでも書くことができると確信するなら、あなたはプログラマーですが、それは学習をやめるべきだという意味ではありません。

ちなみに、私は今ポイント1に苦しんでいます。ソフトウェア開発会社から遠く離れていても助けにはなりません。


こっちも一緒。論文の学位を取得しました。私はあまり学びませんでした。ほとんどはすでに知っていたすべてのものです。私は最初の考えよりもJavaを本当に嫌っていることを学びました(最終プロジェクトに使用しなければなりませんでした)。私は多くのことを学んだ彼の個人的な経験から教えてくれた素晴らしい教授が1人いました。
エコーによると、モニカの復職

@Echo、それは価値がありましたか?
dan_waterworth

@Dan_waterworth、私はそう思うのが好きです。
エコーは

高レベルのプログラミング言語、特にPythonから始める方がずっと理にかなっていると思います。もちろん、基本を学んだ後に取り組むタスクの種類によって異なります。ハードコアシステムプログラミングを行いたい場合は、Cルートを選択します。エンドユーザーアプリケーションを開発する場合は、 Cに悩まされてPythonのようなものを探してください。
ゾルトTörök

C部分に同意しません。高レベルの抽象化を維持したい。Cはあなたを怠zyにし、機械語を学ぶと主張することができます!Cのようなパフォーマンスが必要ない場合は、Pythonを使用してもかまいません。
-segfault

12

大学の最も重要な指定は、自分で物事を学ぶ方法を教えることだと思います。プログラミング、物理学、化学、数学など、それは問題ではありません。大学は誰にも助けられずに学ぶ方法を教えてくれました。


1
まあ、私はすでに国際経済学の学位を持っているので、その部分はカバーされています。
ダニエル

1
<noname>の学位を持っている友人がいます。彼はFlash / PHPプログラマとして成功しています。それはすべてあなた次第だと思います。例えば、私は物理学の学位を持っていますが、ソフトウェア開発者です。2年前、CSで修士号を取得することを決めました。それが必要だったからではなく、欲しかったからです。
ソランティス

5
大学での教育を受けて、オンラインチュートリアルから1〜2日で新しいコンピューター言語を習得しました。すでにそれを行うことができれば、あなたは素晴らしい教訓を学んでいるでしょう。
apoorv020

1
はい、しかしあなたはコミットされた独学である必要があります。
-Dietbuddha

3
一部の人々は独立して学ぶ方法を学ぶ必要はありません。
dan_waterworth

6

一部の人々は、学問的な環境で繁栄し、彼らに学ぶことを要求さえします(通常、動機の形として)。他の人(私のような)は、それらを不快に感じることさえありません。

私は学位を取得せずにソフトウェアで長いキャリアを積んでいました。そのキャリアの終わりに向かって、私は建築の役割を担い、私のプロジェクトのシニアアーキテクトは、ソフトウェアとコンピューターサイエンス(2つは同じことではありません!)の知識は、ウォータールー大学(1つカナダのトップCS学校の)。

もちろん、私の知識プールにはいくつかの欠陥があります。私の数学のスキルは、今日学んでいることについていくのに十分です。私は純粋な数学が嫌いであり、一般的に最新で最高のものを最新の状態に保つことを嫌うことはできません。これは、概念を理解するのに十分なレベルまで数学のスキルを上げるまで、物事の理解(Haskellなど)に時々ひっかかります。しかし、私が大学のCSや数学科の近くにいなくても情報が利用できるという事実は残っています。私が本当に言えるのは、時々私の学習シーケンスが次善であるということです-私は時々、私がしていることを続ける前に、いくつかの基礎資料をバックトラックして記入する必要があります。


4

あなたが実際に座って自分自身にそれらのことすべてを学び、例を通して働く規律があれば、あなたの基盤はしっかりしていると思います。私は学位を持っていますが、それはコンピューターサイエンスではなく工学です。私は彼らが知る必要があるすべてを自分自身に教えてきた多くの優秀なプロのプログラマーと働いてきました。学校で学ばなかった新しい技術が常に出てくるので、自習は、とにかく良いプログラマーになるために必要なものです。


3

人生のほとんどのものと同じように、私の答えは堅実あり、それは人次第です。プログラマになるために学士号を取得する必要はないと確信しています。しかし、私の経験に基づいて、大学は、人々が独立した研究を通して自分で出会わないかもしれない問題やアイデアに人々をさらす傾向があります。

この日と年齢では、やる気のある人はオンラインに行くことができ、MIT Open Coursewareなどの情報源のおかげで、独立した学習コースを作成し、かなり幅広い知識を与えました。優れた開発者となるもの。しかし、自分のやる気がない人は、単一の言語を学習することで得られることを知り、キャリアに関して賢明に得ることができるかもしれません。

前に述べたように、より多くの問題にさらされ、問題解決スキルを開発したことを意味するため、優れた開発者を作るのは知識の幅だと感じています。この幅広い知識を得るために学校に行く必要はありませんが、良い学位プログラムは知識の幅を広げることを強制するので、学校はこの点で間違いなく役立ちます。


2

プログラマーとして、仕事以外のAPIや言語(Ruby on Rails、Python、Node.jsなど)を常に使用しています。私は仕事よりも興味のためにこれを行います。私は準学士号を2つ持っていますが、Java / JEEで10年間プログラミングした後でも、理学士号の理論(Big O、アルゴリズム、Descrete Mathなど)が本当に恋しいと思います。

コンピューター情報システムで理学士号を取得するために、夜間のパートタイムクラスを受講していますが、このプログラムで提供されているCS理論はあまりありません。技術よりもビジネスであるため、主に「論文」を取得するために学位を取得していますが、夜のクラスの唯一の選択肢です。

チェックアウトMITオープンCourswareを。無料で、CS / Math理論のギャップを埋めるのに最適なリソースです。


2

大学は、定義上、優れたプログラミング基盤を提供すると考えているのは間違いです。彼らはあなたに多くの理論と、問題について考える多くの異なる方法を教えます。それはすべてうまくいきますが、その理論を実践に変えることは異なるスキルセットです。

理論の適切な応用を教えるための唯一の効果的な方法は、指導と実践です。要するに、できる限り理論を適用し、建設的な批判を与えるか、正しい方向に導くために、より多くの経験を持つ人に頼る必要があります。メンターはあなたのためにあなたの仕事をするつもりはありませんが、あなたがあなたの仕事をするのが上手になるのを助けます。

私は、キャリアの早い段階で優れたメンターの助けがなければ今日の開発者にはなりません。オープンソースプロジェクトに取り組むことは、詳細を打ち出すのに時間を費やすことをいとわないメンターを見つける良い方法です。少なくともそれは私の経験でした。また、最初のプログラミングの仕事で、簡単に拡張できるアプリケーションを設計する方法を理解するのに役立つメンターもいました。

それで、大学/大学には利益がありますか?はい。しかし、彼らはあなたが自分でそれを引き受けない限り、あなたが理論を実践に変えるのを助けるために装備されていません。大学で学んでいることを応用しようとするなら、理論をより実用的なレベルで真に理解するのに役立つ適切なタイプの質問を始めることができます。あなたが仕事に就くまで待つなら、あなたはその重要な学習プロセスを遅らせただけです。


同意する。私がやったほぼすべてのビジネスプログラミングは、大工のような貿易で働くことに似ています。見習い/ジャーニーマン/マスタープログラミングトラックは、大学よりもプログラミングの方法を学ぶのに役立つと思います。
-cfeduke

2

人々は、理論的基礎、数学、アルゴリズム知識IMOの重要性を過大評価する傾向があります。プログラマーがこれらのことをプッシュしてインタビューする理由は、彼ら自身が数学の「バフ」だからです。

もちろん、「ステートマシン」とは何か、または「Booyer-Moore」検索の使用方法を知るのに役立つプログラミングもあります。金融計算や物理シミュレーションで作業している場合など、実際の数学を知っていると役立つ問題もあります。

ただし、プログラミングの90%は一般にこれらのいずれでもないため、ハードコアアルゴリズム開発を行っている人は多くありません。あなたが学ぶために必要なほとんどのものは、あなたが進むにつれて学ぶことができます。基盤の巨大な建物を構築する必要はありませんが、さまざまな問題を解決する方法を常に好奇心を保ちます。

私は100%独学で、アルゴリズムについて学ぶのに問題はありませんでした。私は金融システムで仕事をしてきましたが、さらに理論的な数学のスキルがなくても実行できました。

プログラミングが上手になるのは、基礎に関するものではなく、ツールボックスを継続的に拡張することであり、純粋な理論的研究ではなく、本当に解決する必要がある問題のコンテキストに入れると、得られる学習は非常に価値があります。

すべてを詳細に知る必要はありません。それがGoogle、StackOverflow、Wikipediaの目的です:)ただし、さまざまなツールや手法が存在することを知っておく必要があります。また、どのツールを適用するのが最適かを知る経験も必要です。基礎は、特定のツールが有用である理由を経験していないため、一般的に初心者に甘やかされています。あなたが多くの経験を持っているなら、いくつかのものはただ「カチッ」と音がするでしょう。

私がお勧めしますいくつかのこと:

  • そうでない場合は、デザインパターンについて学習を開始します。これは、ツールボックスで最も実用的で普遍的なツールです。

  • 興味がある場合は、さまざまなアルゴリズムの一般的な概要を読んでください。

  • 並列化とマルチスレッド(およびいくつかの関数型プログラミング)について学びます。今日、複数のコアをサポートできることが重要であり、まもなく明らかになるので、重要な知識です。

  • やりがいのある実験的な趣味のプロジェクトを行い、スキルを向上させ、文脈の中で物事を学ばせます。


プログラミングの約90%が強力な理論的内容を持っていないという推定は、おそらくほぼ正しいでしょう。残念ながら、ほとんどのプログラマーは定期的に他の10%を使用するため、必要です。
11

2

大学があなた自身で取得するのが難しいと感じるかもしれないことであなたを助ける1つのことは、学術研究論文、特に数学を読んで、理解する能力です。ただし、これは自分で行うこともできますが、インストラクタやピアが学習プロセスを案内し、知識をより迅速かつ簡単に取得するのに役立ちます。

情報システムの一般的なプログラマーとして、あなたはよく研究論文を読むことはないでしょう。今日の情報システムはかなりシンプルで、検索、並べ替え、インデックス作成などの強力なアルゴリズムのほとんどはデータベースシステムによって実行されます。概念を理解している限り、問題はないはずです。

マイクロオペレーティングシステムの開発、コンパイラー開発、人工知能などのプログラミングのより困難な分野に関与することに決めた場合、研究論文を読んで理解する能力を持つことは、システムを迅速かつ効率的に実装するために重要です。

知識を適用できる限り、それは非常に個人主義的です。大学に行く人は、大学に行かない人にも原則を適用できないかもしれません。「何が入ってくるかは関係なく、何が出てくるか」という古いことわざがあります。

要約すると、大学に通うことで得られる知識は、学界とのより良い理解とコミュニケーションに役立ちます。ただし、大学に行かなくても知識は得られます。学位を取得すると、自分が何をしているかを理解し、学術研究論文を理解できることを他の人に説得しやすくなります。


2

少なくとも同じ時間枠では、多くの人が大学に行くときほど、自習を通して良い「基礎」を得るとは思わない。2年間のランダムな本を読んだり、暇なときにおもちゃの問題で遊んだりしても、2年間の組織化されたカリキュラムによる集中的な学習と同じレベルにはなりません。それで十分だろうか?かなり可能性があります。しかし、「世の中の誰よりも優れた基盤」を本当に望むなら、2年以上かかるでしょう。

がっかりしないように、それは確かに時間の無駄にはなりません。私は、多くの人が自分のビジネスを運営し、ある種の個人的/家庭生活を持ちながら、2年間で2年間の大学に相当するものをまとめることができると確信していません。


やった。実際、私の研究の大部分は2年未満(約6か月)でしたが、私は定期的に60〜70時間の週をしています。
dan_waterworth

TMNに同意します。GENERALでは、あなたの正式な教育はどこに行き着くのか分かりません。BREADTHの特定の範囲があります(つまり、多くの領域をカバーする傾向があります)。前回の投稿での私の例:コースの一部であるCompiler Constructionを使用すると思ったことはありません。20年以上後、私が今までで最も重要なコースの1つになったことが判明しました。今、問題は、頭の後ろにその知識を持っていない人のためです-あなたはあなたが知らないことを知らない。そして、そのレベルの無知は、長期的にあなたの効果を低下させます。
すぐに

1

私は、学位なしで10年間専門的に開発してきました。人々にインタビューするとき、問題解決とコーディングの能力に興味があります。そうは言っても、学位を主張しているために純粋に資格がない会社/役割もあります。特定のコンサルタント会社がこのポリシーを採用しているのは、より多くの顧客に顧客を販売できるからです。


これは、主に人事(HR)部門を通じて雇用が行われる場合の問題です。それに対処する最善の方法は、あなたまたは少なくともあなたのことを知っているITマネージャーのビジネスソーシャルネットワークを構築し、HRの「フィルター」プロセスを回避することです。言い換えれば、度のない人々は傾向がある自分自身を自分のスキルやサービスのマーケティングではなく、広告を出して位置を申請するに優れていることが持っています。ほとんどの有能なITマネージャーは、確かな実績と評判(つまり、信頼できる誰かからの紹介)に基づいて採用します。政府の仕事を得ることを期待しないでください。最近ではまれです
-mctylr

1

数字ゲームをプレイすると、学位を取得した人はより良い仕事を得て給与を得ることができます。

学位を取得したすべての人が何かを学んだ/覚えていたわけではありません。

ほとんどの人は、大学に行った場合のように多くの理論/背景/基礎を学ぶのに時間をかけません。たぶんあなたの両親は4年間の自習を通してあなたをサポートするでしょう。他の誰もが仕事を得なければなりません。

欠点は、あなたがCS学位を取得していて、特定のレベルを取得できなかった場合、馬力が低いとみなされる可能性があることです。直面してみましょう、4年間のスプーンフィードでそれを取得しなかった場合、押しながらフルタイムの仕事中に横にそれを理解しません。もちろん例外です。


1

学位を取得せずにソフトウェア開発分野で生計を立てたい場合は、地元の大学に連絡することをお勧めします。あなたが学位を取得するために必要なコースのリストを彼らから入手してください。大学の大多数は、各コースの概要/シラバス/書籍リストと同様に、リクエストに応じてその情報を利用できます。そのリストを下に移動します。問題の本を調べてください。彼らがカバーするトピックを参照してください。理解できない内容が表示されている場合は、本を購入/チェックアウトして学習してください。そのプロセスの終わりには、少なくとも自分が知っていることと知らないことを知って、平均的な大学卒業生と競争力を保つ必要があります(とにかくこれらのコースのいくつかを寝た/だまされたかもしれません)。


1

離散数学、アルゴリズム設計、プログラミングロジック、コンピューターアーキテクチャ、アセンブリ、Cプログラミング、データベース、データ構造など、ほとんどの書籍、オンラインリソース、大量のコーディングを使用して、非常に基本的なことを勉強するとします。これらの基本をカバーするのに1〜2年費やしたとします。

はいといいえ。教師なしでは把握しにくいものもあります。通常、それはよりマシなものです。

私は信じている-とまだ信じていた後、 CS専攻をTAて始めたも、精神遅滞のない人はPHP / Java / C#レベルでコーディングを学ぶことができるます。基本的には難しいことではありません。

また、そのことについては、アセンブリとあなたが言及する他の技術分野でもありません。これらは実装の詳細であり、知っておくと便利です。

学習が深い場合、データ構造、アルゴリズム、デジタル設計、コンピューターアーキテクチャ、およびデータベース代数はか​​なり困難です。


0

やる気のある献身的な人が強固な基盤を達成できることは間違いありませんが、学位を取得しないことを選択した場合、開発を促進する多くの側面を逃してしまいます。これらのことの1つであり、おそらく最も重要なのは、アイデアや概念を交換できる、同じような考えを持つ人々に触れることです。また、伝える価値のある知恵があり、時には誤解された概念を1つか2つの文章で整理できるインストラクターの経験に耳を傾けることができることは非常に素晴らしいことです。間違ったアイデアを取り込んで後で整理する必要があるのではなく、最初の公開時にコンセプトを明確にできると便利です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.