プログラミング分野での自己教育はどれほど重要ですか?[閉まっている]


74

私は16歳です。私は高校を始めようとした約1年前にプログラミングを始めました。私はプログラミングの仕事に就きますが、できる限り多くのことを学ぶために最善を尽くしています。最初に始めたとき、私は本からC ++の基本を学び、そこから自分で物事を学び始めました。今日、私は1年前よりもずっと経験を積んでいます。高校はプログラミングについて価値のあることを(おそらく)教えてくれないので、自分で勉強しなければならないと知っていました。

ここでの質問は、自分でプログラミングを学ぶことはどれほど重要ですか?


12
私が普段使っている言語は、私が大学に行くときに存在していませんでした。そのため、数年以上開発者になることを計画している場合、新しい技術を学ぶには自己学習が非常に重要です。
ジョンストレイヤー

5
あなたは今、あなたが1年前よりもはるかに経験を積んでいることに気づきました。実際、1年前にあなたはどれだけ学ぶことができるのか分からなかったに違いありません!これは2〜5年ごとに発生するので、振り返って「うわー、それはすべて間違っていて、もっとうまくやることができるとさえ知らなかった」と思います。適度に上手になりたい場合は、常に自己学習が重要です。さらに、私はそのように学ぶことができなかった誰かと働きたくありません。
ビルK

2
私はあなたの年齢だったとき、私がすることはできなかったでしょうではない、私がしようとした場合でも、自分でプログラミングを取ります。それはあまりにも楽しいです。そして、はい、それは私のキャリアにとって非常に重要かつ有用であることが判明しましたが、それは素晴らしい副産物でした。それの楽しみのためにそれをしてください、そして、あなたはあなたが経験を必要とするかどうかについて考える必要はありません。
ベン・リー

回答:


100

重要です。私は、あるレベルで独学ではなかった優秀なプログラマーを知ったことはないと思います。大企業の雇用管理者として、私は個人的なプロジェクト学びたいという願望を説明する候補者は毎回印象的な程度で1つに勝ると言うことができます。(ただし、両方を持つことが最善です。)

大学については次のとおりです。コンピューターサイエンスのコースは、テクノロジーではなく理論を教えます。ハッシュテーブルとBツリーの違い、およびオペレーティングシステムの動作の基本について説明します。彼らは一般的になりません、あなたのコンピュータ言語、オペレーティング・システムまたは浅いレベルを超えて他の技術を教えます。

私が最初のデータ構造クラスを取り込んだとき、私は「C ++」と呼ばれるこの新しい言語の薄いマニュアルを手に入れたので、彼らが学習を開始することに決めたときのことを思い出します。コードを書くのに十分な2週間をかけて取りました。それはそれ自体が良い教訓でした。それがあなたのキャリアの道です。

あなたの学校は、あなたが良い仕事を得るために必要なことをあなたに教えないでしょう。学校は何年も業界の注目を集めています。その後、仕事を得るでしょう。どんな会社に行っても、あなたを訓練するために特別な努力を払うことはほとんどありません。悪い会社は安すぎて、率直に言って、良い会社は彼らが行くようにそれを拾うのに十分なだけ賢く人々を雇います。

私は1987年に大学を卒業しました。DOS、NetBIOS、および「Terminate-and-Stay-Resident」プログラムの専門知識を持つCプログラマーとして働きました。それ以来、私は実際のトレーニングがあったとしてもほとんどありませんでした。求人広告をご覧ください...これらのスキルはあまり必要ありません!私が今日採用できる唯一の理由は、私がその間何年も絶えず学んできたからです。エンジニアとして成功するには、学習の習慣が必要です。地獄、私はそれを超えて行くだろう:あなたは学習の愛を持っている必要があります。面白そうだから、WebGL、Android、iOSをいじるような人である必要があります。あなたがそのような人であり、学習の習慣を維持している場合、あなたは業界ではるかに行きます。


3
この。理論も非常に重要であり、独学することは困難です。しかし、私は会社のトレーニングに反対します。私たちの分野は最近非常に需要があり、会社は優秀な人材を見つけるのに苦労しています。(少なくとも私の地域では)
-user606723

+1、私は2004年に学校の図書館で非常に古い「TSR in C」に気づいていました。それがまだあるのだろうか。
ジェスビンホセ

3
理論は重要ですが、多くの大学のクラスのビデオがオンラインで入手できるため、以前よりも自分で学ぶ方が簡単です。私は、平凡な人の講義に物理的に出席するよりも、偉大な教授の講義をオンラインで見ることにより多くを学ぶかもしれないと言っています。
ジャンヌピンダー

@Steven Burnap:「コンピューターサイエンスコースはテクノロジーではなく理論を教える」-それは真実ではない。私の大学(ドイツ、KIT)では、Java(およびいくつかの小さなプロジェクト)とCでの演習を学習する必要があります。提供されます。また、かなり大きなプロジェクトを作成する必要があります(1つのグループは、自然災害のためにネットがダウンした場合にモバイルネットワークを自動的に分散して確立できるWindows Phone用のアプリケーションを作成しました)。Scala / Haskellでも紹介しています。
マーティントーマ

1
しかし、プロジェクトを常に自分で作成する必要があるのは事実です。大学は多くの出発点を提供しています。興味がなければ、何か試してみたいと思わないなら、プログラマーとして(フルタイムの仕事として)働きたくないでしょう。
マーティントーマ

29

自己学習は非常に重要です。あなたはあなたの分野について知る必要があるすべてをあなたに教えるために正式な教育に頼ることはできません。しかし、それは言われていることですが、あなたがそのキャリア分野に十分な準備と設備を整えたいなら、正式な教育も非常に重要です。

私は大学に進学しており、過去4年間、ソフトウェア開発を独学で学びました。その結果、今ではエンタープライズアプリケーションを管理する有名な大企業で働いています。たくさんの才能は必要ありませんが、たくさんの仕事とモチベーションが必要です。学習に関しては、文学と実践が最善の策だと思います。また、特定のフィールドを選択することも重要です。すべてのフィールドで言語とロジックを使用できますが、特定のフィールドで十分な実践と理解を与えられた場合にのみ真に「偉大」になることができます。


8
正式な自己教育がありますが、実地指導者は不要です。これは、スキルを伸ばし、ソフトウェアが実際にどのように作られているかを学ぶ最良の方法です。
-JeffO

1
「しかし、言われているように、あなたが労働力で積極的な姿勢を取る準備ができているそのキャリア分野に参入したいのであれば、正式な教育も非常に重要です。」...この文は非常にあいまいです。「労働力」の「積極的な姿勢」?本当に?それは一体何の意味ですか?
-blesh

@blesh同意した。言葉遣いを変更しました。
ジョニーロッテン

1
仕事での経験が最も重要だと思います...しかし、その大部分は独学です。あなたのオフィスで誰もがあなたにすべてを教えることは、非常に最高のは、彼らがそれを得ることができるすべての場所から自分の経験を取ることを期待することはできません...
user606723

11

自分で学ぶことは非常に重要です。タスクを達成するために必要な知識を調査および収集する規律を持つことは、同じタスクを達成するために正式なトレーニングに依存している他の多くの人よりもはるかに先を行くでしょう。これは、ソフトウェア業界だけでなく、あらゆる業界に当てはまります。

誤解しないでください。正式なトレーニングや教育を受けることは役に立ちますが、スキルを向上させるためのあなた自身の動機は、より良いソフトウェア開発者に成長するのに役立ちます。新しいプラットフォームやプログラミング言語、実装する開発方法論、使用するツールとアルゴリズム、リストなど、学習すべきことが常にあります。正式なトレーニングを通じてすべてが紹介されるわけではありません。したがって、プログラミングのキャリアを通じて役立つ他のトピックやアイデアについて学ぶのはあなた次第です。


6

プログラミングでは、セルフティーチングが毎日行われます。変化し続けるコンピューター言語やツールだけでなく、多くのことを自分で学ぶ必要があります。他の人が書いたコードを学ぶ必要があり、最小限の指示と監督でそれを修正する必要があります。一部の組織では、実際のトレーニングを1年に1回以上受けることはまれです(もしあれば!)。これができることを確認してください。そうでなければ、まだ若いうちに別のキャリアを検討してください。


4

自己指導は、プログラマーにとって不可欠なスキルです。多すぎません。うまくいけば、あなたはこれからのキャリアでこのスキルを使うでしょう。


1
-1:自己学習は不可欠なスキルであることに同意しますが、それがそうであると言うだけではそうなりません。
ジムG.

1
+1反対票に反対します。私は同じことを言うだろうし、それも私の経験に基づいています。
-CodeART

1
@ジム-あなたがそこに持っているなんて絶対に不合理な推論。WTFはそれを実現することになっていますか?「同意しますが、あなたが言ったので-1。」O_O
エドワード・ストレンジ

@CrazyEddie:何らかのサポート理由を提供せずに何かが真実であると言うだけでは、このようなフォーラムでは役に立ちません。
ジムG.

@Jim-あなたの答えの初歩的なレビューは、「ガラスの家に住んでいる人は石を投げてはいけない」と答えさせてくれます。
エドワードストレンジ

3

自習は非常に重要です。なぜなら、あなたは常に正式なトレーニングを受ける機会がないからです。プロジェクト、インターンシップ、または仕事を探し始めたら、あなたに何かを本当に教えることができる堅実な上級開発者がいる人を見つけてください。物事を正しく行う環境にいることは、品質コードへの明白なルートになり得ます。


3

私は、仕事以外で自分のプロジェクトを持っていなかった人を考慮しない場所がいくつかあったことを伝えることができます。仕事に出て小切手を集めるだけでなく、プログラミングへの愛を示します。私はここで四肢に出てこう言います:プログラムを好まないすべてのプログラマーは仕事を吸います。さらに悪いことに、彼らは参加できるチームに追加するものが何もありません。

経験の浅いジュニア開発者を、彼が自由な時間にコードで遊んでいるのが大好きで、モーションを経験している3人の中規模の開発者よりも好きです。彼らよりも良くなることはありません。

新しいことを学んでいないのなら、あなたは自分の知っていることを忘れてただ座っているだけです。


2

タレントは過大評価されています。

特定の分野で優秀になるには、少なくとも10年の練習が必要です。したがって、早期に開始することが重要です。

あなたが人生の早い段階であなたが好きだと思われる何かをし始めたという事実は、すでにあなたをパックの先に進めています。したがって、作業するエリアについて再考しない限り、停止しないでください...停止しないでください!

自己学習は、特定の開発者にとって最高のスキルの1つであり、2番目は大学の学位であると考えています。優れた大学の学位は、それがあなた自身の知識ではおそらく非常に質を高め、おそらくあなた自身では集めることができないという理由だけで重要です。このルールには確かに例外がありますが、それだけです。例外。

また、早期に経験を積むほど、大学での楽しみが増し、提示された新しい概念をよりよく吸収できます。最初はとても簡単で無意味ですが、すぐにチャレンジを感じて、もっと学びたいと思うでしょう。

大学を卒業した後、学習をやめないでください。これはあなたの最高の機能の1つです。「才能は過大評価されています」を読むことをお勧めします。その本に関する次の簡単な記事をご覧ください。

http://www.devlounge.net/strategy/the-talent-myth


神話といえば...私は10年間の練習のマントラも神話であると信じています。あなたは多くの人々にあるスキルで100年の練習を与えることができます、そして彼らはまだそれを決して得ません。確かに、彼らは彼らが始めた時よりも良いかもしれませんが、それでもまだ十分でない場合、それは十分ではありません。また、ソフトウェア開発で非常に経験豊富な開発者を中心に新卒のサークルが走っているのを見ました。確かに、彼らにはまだ学ぶべきことがありましたが、10年の経験を持つ経験豊富な開発者もそうです。才能は非常に重要です。それがなければ、あなたはこれまでのところ得ることができます。
ダンク

@ダンク同意します。アイデアは、才能のある人でさえ何かをよく学ぶために少なくとも 10年は必要あり、才能はスターダムへのパスポートではないという意味ではもっとあると思います。長年にわたる才能と真の献身の組み合わせがそうです。
アレックス

仰るとおりです。練習のない才能は、それほど大きなものではありません。しかし、私は元の記事を読んだことを覚えているようで、著者は、与えられたスキルを持つ普通の才能を持つ人々でさえ、10,000時間の練習でかなり熟練することができると主張していました。私はその評価に心から反対します。特に中程度の複雑さのアプリケーションで作業している場合、ソフトウェア開発の分野で本当に明白になります。開発者の大半は、比較的簡単なことしか行えません。練習の量はポイントを超えてそれらを連れて行くようではありません
ダンク

@Dunkは、才能ではなく情熱を失っているのかもしれません。
アレックス

:才能を見つけることは、生で経験の浅い場合でも、決して得られない場合でも、非常に簡単だと思います。
ダンク

2

私が考えることのできる他のほとんどの分野と比較して、プログラミングは基本的にすべて自己教育に関するものです。正式なコンピューターサイエンス/ソフトウェアエンジニアリング教育は有用ですが、実際にコードを学ぶ場所ではありません。

本当にすべきなのは、プロジェクトに取り組み始めることです。あなたが存在したいものを構築することです。そして、オープンソースプロジェクトに参加して、もっと良くなりたいものに取り組んでください。学習は無料で提供されます...


2

あなたは自分で新しいことを学ぶ必要があります-あなたの好奇心があなたを連れて行くところに行きます。

正式な教育も受けてください-正式な教育で学んだことの90%は職場で使用されません。しかし、使用される10%は、その時点ではまったく役に立たないと思っていた奇妙で不明瞭なものです。

正式な教育を受けないと、「知らないことを知らない」と最もよく表される問題に悩まされます。正式な教育では、誰も外出してそれをすべて使用することはないという完全な知識の中で、多くのことを幅広く幅広くカバーしています。使用するものは、必要になるまでわからないものなので、どこに目を向ければよいかがわかるように準備することがすべてです。

自己学習/好奇心に基づいたものは、あなたをはるかに知識が豊富でバランスの取れた人にします。雇用主にとってより価値があることは言うまでもありません。

サイドノート:15歳くらいのプログラミングを始めて以来(25年以上... 30年近く)プログラミングを始めて以来、私の大学教育とは別に、ほとんどのトレーニングコース(知っている...フルタイムの3日)はまったく役に立ちません。これらは一般に表面的なものであり、「スキルを維持する」という大いに宣伝されている限り、技術的な詳細を詳しく知る必要がある人にはあまり役立ちません。本を購入し、インターネットを使用して、数学/物理学/建築/私が有用で価値あるものになったものを掘り下げます。ある段階では、私は特定の主題に関する特定の専門知識を持つ世界の約10人のうちの1人でした。そのすべての知識は、自習と実地学習によって得られました。

学習を停止する唯一の時間は、松の箱に6フィート足らずのときです。


2

それについて良いgood話があります:

ブリティッシュコロンビアで開催される毎年恒例の世界選手権。ファイナリストはカナダ人、ノルウェー人でした。

彼らの仕事は次のとおりでした。それらのそれぞれは、森林の特定の部分。勝者は、午前8時から午後4時まで、最大数の木を倒すことができる人です。

8時にホイッスルが鳴り、2人の木こりが位置を占めました。彼らは木の後ろで木を切り倒しましたが、カナダ人はノルウェー人が止まることを聞いていませんでした。これが彼のチャンスであることに気付き、カナダ人は彼の努力を倍加した。

カナダの9時、ノルウェー人が再び仕事に出たと聞いた。また、10人から10人のカナダ人がノルウェー人が再び停止したことを聞いたとき、彼らはほぼ同時に働きました。そして再び、カナダ人は敵の弱さを利用したいと働き始めました。

ノルウェー時間の10時に作業を再開します。10分から11時まで、彼は短時間中断しませんでした。歓喜の感覚の高まりとともに、カナダは同じリズムで働き続け、すでに勝利の匂いを感じていました。

それは一日中続きました。ノルウェー人は1時間ごとに10分間滞在し、カナダ人は働き続けました。午後4時に競技の終わりについて聞いたとき、カナダ人は賞金がポケットに入っていることを確信していました。

彼が失ったことを知って彼がどのように驚いたか想像できます。

  • どうしてこうなりました?-彼はノルウェー人に尋ねました。-1時間ごとに、10分間止まると聞きました。ええと、あなたは私よりも多くの木を切ることができましたか?それは無理だ。

  • 実際、すべてが非常に簡単です-ノルウェー語だけ言った。-1時間ごとに10分間停止しました。そして、あなたが木を切り刻み続けている間、私はxを研ぎました。

だから、xを鋭く保つために、いつも勉強するべきです。


1
  • それは重要です、そうでなければ、あなたは後ろにとどまります

  • 私は毎日、職場で、ここで、本を読んだり、質問したり答えたりすることで学びます。学べば学ぶほど、自分の知識がいかに少ないかを理解できます。


1

自己学習は、次の2つの理由で非常に重要です。

  • あなたの研究の後:他の答えですでに述べたように、自己教育はあなたが開発者としてあなたの日常生活の中ですることです。すべてを知ることはできず、企業はこれを知っています。知っておくべきことは、自分自身を改善する方法です。最高の開発者は、新しい言語、新しいテクノロジーを自分ですばやく習得する能力を備えています。
  • 勉強中:大学のコースがあなたに教えるものとあなたの仕事の現実との間の距離は巨大です。具体的には、メンテナンスと保守性について話しています。開発者の仕事の重要な部分は、レガシーコードの維持(バグ修正、改善、機能の追加など)にあります。読むことができますブランドの新しいソフトウェアの作成は、一般的にほとんどのプログラミングの仕事の主要な部分ですか?詳細については。
    レガシーコードの維持が不可欠であるため、保守可能なコードを自分で記述する必要もあります。これは正式なレッスンではほとんど行われません(保守性に関する学生のトレーニングを改善する方法を参照してください))。学習中に自習をせずによく読んでいると、平均よりも優れた開発者になるために必要なスキルを習得する可能性は低くなります。
    学習中に多くの言語/技術を学ぼうとするのではなく、優れた実践とクリーンなコーディングを学んでください。たとえば、学習中にハーバートシルトの「Java The Complete Reference」よりも、ロバートC.マーティンの「Clean Code」を読む方が良いでしょう。

-1

あなた自身の方法で概念を内面化し、それが本当に役立つので、セルフティーチングは非常に重要です。あまりにも多くの一般的な言語をあまりにも早く学びたいと思っています。あなたがc ++で始めたと言っているので、私はあなたにjavaをお勧めします。


-1

プログラミングに関連して知っていることの95%以上を自分で試してみて、それがどのように機能するかを学ぶことでおそらく学んだでしょう。学校は、優れたプログラミングスタイルを教えたり、コードの速度を最適化したりするのに役立ちますが、教科書を読むだけでは「良い」プログラマーになることはありません。プログラミングスキルを構築するための優れた方法は、コンピューターを使用して解決できる日常的な問題を見つけ、それを実現するためのコードを作成することです。立ち往生することは学習の一部です。私はウェブ開発者になりたいと思っていたので、ダミーのウェブサイトをかなり頻繁に作成し(もちろん、ホスティングもしない)、新しいものを試したいと思いました。それは私にとってはかなりうまくいきました!


-1

2年前にプログラミングを始めました。私の学校は言語を上手く教えることができなかったので、オンラインで自分自身について多くの研究をしなければなりません。私は学習が遅いので、最初のプログラムを書くのに2年かかりましたが、学校の仲間はまだ苦労しているか、プログラミングに専念しています。

これは、プログラマーが学校に依存するよりも独習する方が良いことを示しています。学校は情報の準備ができていないと考えているため、情報を常に隠します。


同意しません。自己教育は重要だと思いますが、間違いなく、他の人とコミュニケーションを取り、すでに解決されている問題の代わりに新しい問題に取り組むことを学ぶためのツールを提供する正式な教育から得ることができる基礎資料がたくさんあります。
jmort253

その間、誰もが学校が教えていることを理解するのに苦労しており、誰もが追いつくことができない非常に速いペースで教えています。
ジー・リアン

学校は基本的な概念の基礎を提供するように設計された教化プログラムですが、その後その教育を継続し、自分で学習を続けるのは私たち次第です。
jmort253

私はあなたの言うことに同意します。それは、プログラミングでより良くなりたいなら、自分で教えることは必須です。
ジー・リアン

-3

数学とコンピューターサイエンスの常として、2つの視点があります。1。必要なものと2.十分な主張

  1. ライブを通して(自己)学習する必要があります。優れたプログラマーであり続けるためのその他の選択肢はありません。
  2. 上記の点は十分な条件ではありません-あなたは数学の強いバックグラウンドを持っている必要があります-高校、そしてコンピュータサイエンスの分野で良い大学を卒業します。これは(おそらく)十分な条件です。あなたの脳はアルゴリズム的に考えるように教えられなければなりません。これは自己学習では達成できません。

1
あなたの脳は、大学なしでアルゴリズム的に考える方法を教えることができます。私は、大学に行くよりもこれを学ぶより良い方法があることさえ提案します(例えば、見習いは多くの人々にとってより効果的でしょう)。一方、コンピューターサイエンスの講座の数に関係なく、アルゴリズム的に考えることができない人がたくさんます。大学は確かにほとんどのプログラマーにとって大きな助けになりますが、必須ではありません。
フィル

教科書を読むのが上手な場合は、複数の本を読んで、stackexchange.comやプログラマーなどのオンラインツールを使用すると、コンピューターサイエンスとアルゴリズムの背景を十分に理解できます。
ピータースミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.