web-dev-qa-db-ja.com

CSの学位なしで成功するプログラマーになる方法

免責事項(回答にジャンプする前に必ずお読みください):

聞きたい質問に似た質問をいくつか見たので、ここに類似した質問をいくつか示します。

私見彼らは私が求めているものと完全に一致しているわけではなく、期待どおりに徹底しているわけでもありません(以下の質問に対する回答を一掃することを意味するのではなく、質問者の信用を落とすわけでもありません。もう少し徹底的に):

CSの学位は古いプログラマーにメリットがありますか?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certifications-for-Java-programmer-without-bs-degree

https://softwareengineering.stackexchange.com/questions/81591/in-the-absense-of-a-cs-degree-how-can-i-fill-in-the-gaps-so-to-話す

開発職に応募する際のCS学位の重要性?

はっきりさせておきますが、私は次のことを求めていません。

  • ゼロからプログラミングを自分で教える方法(CSの学位なし)
  • 優秀なソフトウェア開発者として自分自身を売り込む方法(CSの学位なし)
  • ソフトウェア開発者として高給の仕事を得る方法(CSの学位なし)

少しコンテキスト:

免責事項が出てきたところで、ソフトウェア開発者としての私の経験の簡単な歴史から始めて、私の質問を具体化しましょう。

まず、私は信じられないほど幸運でした。私はいくつかの仕事の機会(いくつかの重いバックエンドPHP/MySQLプロジェクト、およびXAML/C#のいくつかのWP7アプリ)を与えられ、ソフトウェア開発について知っているすべてを本当に学びました。私がこれまでに行ったソフトウェア開発の仕事のほとんどすべては、私が持つ資格がありませんでした(そして私が雇用する前に雇用主にそれを明らかにしました)。私はそれが原因ではない自分に信用を与えたくありませんが、私は 完璧な謙虚さは慎みを省く と言うでしょう。

これまでに経験したほぼすべての開発業務において、雇用主の期待を超え、貴重な資産であることが証明されました。もちろんあります 例外1 。しかし、私の考えは、私はかなり賢く、自分の仕事で成功するために知っておくべきことを自分自身に教えることができたということです。仕事をするごとに、どんどん伸びていきました。

私は ワシントン大学 のシアトルキャンパスに参加しており、現在4年生で、残り2年で数学の学位を取得しています。私がこれまでに行ったさまざまな仕事の間に(私のリストが必要な場合は、私の résumé を参照してください)また、フルタイムの学生として学校に通っていました。

ほとんどの開発者が同意するだろうと思うように、実際のコードの作成と比較した introductoryprogramming コースを含む一般的な一般的なed学部コースの研究 real2 製品、 awesome 人と協力して、 ユーザーの生活に良い影響を与える

ですから...物事が進むにつれ...勉強に集中するのではなく、時間とエネルギーの多くを費やすようになりました。時々、私は 恐ろしい を非常に上演しましたが、ほとんどの場合、自分の成績で浮かぶことができました。

ただし、UWの コンピュータサイエンスプログラムveryveryveryvery 競争力があります。

だから、私がプログラムに拒否されたとき、それは私にとって驚きではありませんでした。二回。皮肉なことに、メールで拒否された拒絶の通知を失望させたとしても、常に丁寧な30分の時間帯に、Amazonから夏のインターンシップを提供する電話がかかってきました4 SDEとして。

ソフトウェア開発で自分と同じ目標を共有する他の「私の年齢(21歳)の紳士(21)を見回すと、自分が今いるところ、何を学んでいるのか、私は誰で、何をしているのかについてかなり気分がいいできます。もちろん、私よりもはるかに優れた21歳の子供たちがいます。群衆の中で目立つと言っているわけではありません。平均的な仲間の進歩の背後にいるのは、私が天才ではないように感じるだけです。 。

ソフトウェアの世界で成功する自分の能力に自信を持っています。さらに重要なのは、成長し続け、学び、本当に必要なときに恥ずかしいほど謙虚になりたいという自分の能力と願望に自信を持っていることです。

数学の学位

私は、学位を取得することを唯一の目的として数学の学位を追求しています。中退して今すぐ仕事を始めるべきだと言う人もいました(私には機会があったので)、本当に学位を取得する必要があると言う人もいます。私は、どちらかのキャンプが持ち出す傾向とはまったく異なる理由で学位を取得することを決心しました。そのため、何らかの方法で私を奨励しないでください。 「クローズ」の問題を検討してください:)

* DEEP BREATH *...申し訳ありませんが、これは予想よりも長くなりました。

これは本質的に、私の質問です。

  • CSの学位を取得して、自分が今では不足しているかもしれない、または不足していないと思われる研究分野、一般知識、およびその他のスキルを客観的に判断するにはどうすればよいですか?
  • これらのスキルを最も重要な順に並べ替えるにはどうすればよいですか?

  • 私の教育を補完して、一流大学の学部レベルのCSのレベルと一致する、またはそれを超えるような方法でこれらの属性を達成するための最良の方法(今後2年間)は何ですか?

これが私がすでに取っているステップです:

  1. 開発コミュニティに質問する(この投稿)
  2. 私と同様のキャリアパスを共有する経験豊富な開発者とメンターシップを追求する
  3. 短期および長期の「学習」目標と、研究のトピックの概要を示す後続のシラバスを定義する
  4. コードを書き続け、私が情熱を傾けているプロジェクトに取り組みます

ここまで来たら、あなたは cookie :)に値します。

それで...開発コミュニティ、熟練した開発者、私と同じ船に乗っている仲間の学生たち、あなたはどんなアドバイスをしますか?

また、この投稿の冒頭にある私の免責事項[〜#〜] [〜#〜]が求めていないことを忘れないでください。

更新:

私の質問に対する「答え」が成功したと私が思うものについて、非常に具体的なパラメーターを提供しなかったことに気づきました。質問は非常にあいまいで、多くの「正しい」答えを正当化できると思います。

妥当な時間が経過した後、次の属性に当てはまる答えを選択します。

  • 回答の背後にある理由を説明します
  • ある程度の経験から語ることができる(採用/相互作用するか、私の靴を履いている/いる人である)
  • 簡潔ですが徹底的で、具体的な例と組み合わせた幅広い原則を提供します
  • 最後に、上記に一致するために必要と思われる長さを考慮して、読みやすくてよく伝えられる答えにしてください。将来これに興味を持つかもしれない他の人たちが、反応によって教育されるだけでなく、楽しまれることを願っています。

したがって、「正しい」にはいくつかのパラメータがあります。それらは非常に高いと思いますが、私が「最良の」答えとなると想定するものの概要のようなものとして設計しました。明らかに十分な時間が与えられたので、最もよく一致する応答を「回答」として選択します。


(1)-このウェブサイトの以前のバージョンで作業していましたが、明示的な
の会話はありませんでしたが、まったくうまくできないと感じました(これは
であり、彼らはその後ウェブサイトを完全に変更したという事実から証明されます)
(2)-まず、はい、それは実際の製品です(私がChromeでこの投稿を書いている場合でも)。 ..)、そして
それはお尻を蹴ります。第二に、私は高校のインターン開発者であり、IE8のいくつかの新機能の
概念コードの証明を書いたので、しばらく前でした。
(3)-Atこの投稿の時点で、私はこのアプリを作成した開発者です。コードベースの責任は負いません
 [4]-私のインターンシップは2012年6月に始まります。ウェブストア
チームで働いている。
46
Paul Hazen

わかりました、あなたの質問に答えないのは魅力的すぎるので、ここにいます...


最初に私のこと


私は26歳であり、私の父(数学者で現在は教授として働いている)のおかげで、私の人生の非常に早い段階からコンピューターの周りにいるチャンスがありました。 (私が生まれた1986年にさかのぼりますが、当時最も一般的なことではありませんでしたが、私たちは常に1台または2台のコンピューターを自宅に置いていました)。そうは言っていますが、明らかに私の好奇心が強く、数学に傾倒している/問題解決志向の性質が原因であるのですが、プログラミングに夢中になるのはそう長くはかかりませんでした。最初は7歳から8歳のPascalでしたが、その後はほとんどすべてのことが続いていました。

まず、学校にいる間、数学が好きだったからといって、数学に長けていたと思います。正直なところ、父親の例にならって数学者になることも簡単にできました。しかし、それは起こりませんでした。

起こったことはおそらく私の人生の最大の間違いでした(これまでのところ):誰かがそれを何と呼ぶでしょうコードに恋して、誰が話す15 +言語があり、18歳までに数千行のコード(コンパイラーからマイクロカーネルやWebフレームワークまで)を書いています(突然、理由はまだはっきりしていませんが、一般的な、微妙な影響があっても、環境は決して無視できません)-医学でキャリアを追求することを決定します? 「間違い」だと思います。

結果? 5年後(23歳)、およびMedの学位を取得する1年前(まだ個人的なオープンソースプログラミングプロジェクトに趣味として取り組んでいます)で、十分だと判断し、辞めることにしました。そして、私はこの新しい分野(医学)をとても嫌っていただけでなく、この全体的な状況で不安な何かがありました、飽くなきかゆみが内部に隠されていました...()さらに、私は自分の趣味、私が考えていたことgreatであると想像していましたが、想像もしていませんでした本当の仕事として、お金をもたらすだけでなく、たくさんのお金をもたらすことができ、個人として私を幸せに保ちます。それで、やめることにしました。 (=最良の選択です。たとえ少し遅れても、私は今まで作ったことがあります)。

だから、ここで私は今、医者になるつもりです(正確には神経衰弱精神病医の危機に瀕しています;私をバカにしてください!)CS度 (実際に私の3年目に。そして、正直なところ、恐ろしい典型的な資格...)に欠けないようにするためにそれを追求し、より幸せなプロの仕事私が崇拝している何か、間違いなく私が最も提供しなければならないテーマについて。


いくつかの観察(私自身の経験から)


  • プログラミングは、本当に優れたフィールドが何であれ、常にうまくいく数少ないフィールドの1つです。そして、これは間違いなく典型的な資格の問題ではありません(正直なところ、私が会社を持っていてプログラマーを募集したい場合、彼が学位を持っていてもいなくても、ほんの数分で誰が上手かを簡単に知ることができます)

  • 優れたプログラマになるために必要なことは、数学指向の知能(ただし、それ自体は数学ではない)と情熱(これにより、負担;そして、私がそれに気づかなかったとしても、私は自分の人生の主題に関する大量の資料を研究しました、純粋に私だけです)。正式な教育はいいことですが、少し過大評価されています。成功の核となる要素は最初の2つです。

  • CSが生まれたのは間違いなく数学です。しかし、CSはもはや単なる数学ではありません。私は常に強力な数学指向の頭脳を持っていましたが、決して数学の第一人者ではありません。そして正直なところ、毎日のプログラミングでは(グラフィックエンジンやローカライズされたものを構築する場合を除いて)、単純な算術(加算、減算、乗算、除算、モジュロ)といくつかのこと以外はほとんど必要ないでしょう。配列について。 (多くの場合、おそらく数学者やあまりにも学術指向のプログラマーには反対ですが、微積分を習得することは、優れたプログラマーになるために必要なことではありません)。良い数学の背景があれば役立つかもしれませんが、数学自体のためではありません。それは、これら2つのフィールドが共有する1つの共通事項、つまり問題解決スキルにのみ基づいて支援します。

  • 数学は科学(そして私が尊敬する科学).

  • プログラミングは芸術です。(そして、もしあなたが主張するなら、応用科学も同様です)しかし、心に留めておいてください:芸術-そして、それは私がいつもそれを扱ってきた方法です。そして、すべての芸術と同様に、それを教えることはできません。私はあなたに顔を描く正式な方法を教えてあなたを平均よりもよくするかもしれませんが、それはあなたをダヴィンチもクリムトにもしません。モナリザは、慎重に教育を受けた画家ではなく、ダヴィンチによって描かれています。優れたコードは、優れたコードアーティストによって書かれています。そして、スキルと献身は、正式な教育を容易に上回ります。


それで、*本当に*良いプログラマーになるには何が必要ですか?


  • 賢く、優れた問題解決スキルと主題への情熱(持っていない場合はそのままにしてください。平凡であることは言い訳にはなりません)
  • 主題に専念するための多くの時間
  • 常に勉強する( 'coz you'll simply never it it all all; and note:why'studing' is must be related toある程度自分のペースで物事を行うことがはるかに楽しいことを発見した...)
  • 常にコードを書く(読んだ本の数に関係なく、コーディングレベルは書いたコードの量と直接同等です)
  • 繰り返しますが、[〜#〜]愛[〜#〜]件名について(十分に愛していない場合、つまり本当に愛しています、すべて上記は遅かれ早かれ我慢できなくなります;私にとって、仕事としてのコーディングはまだお金を払われるようなものです...映画を見る:まったくばかげていますが、それでも単に素晴らしいです)

あなたの質問について


  • CSの学位を取得して、自分が今では不足しているかもしれない、または不足していないと思われる研究分野、一般知識、およびその他のスキルを客観的に判断するにはどうすればよいですか?

数学の学位が含まれていることを本当に知っている必要がありますが、まとめてみましょうCS学位から欠落している可能性が最も高いもの(コース/科目/その他-に触発された 私の大学の研究プログラム )順不同:

  • デジタルシステムの論理設計(いくつかの低レベルの回路、および/または/ xors/etc-関連しているようには見えないが、それでも本当に教育的である)
  • コンピュータアーキテクチャ(いくつかのアセンブリコーディングとともに使用する可能性が高いnever使用するが、どれだけの形状にできるかわからないプログラマーとしてのあなたの態度)
  • データ構造(リンクされたリストから、複雑なツリーなど)、見た目は簡単ですが、遅かれ早かれ、これらに関する優れた背景が必要になります。ready-を使用してあなたが理解していない解決策は、良いプログラマがすることではありません)
  • コンパイラ(そうです、コンパイラ!コンパイラを書くことはありますか?おそらく書かないでしょう;しかしあなたがcanを書かない限り、あなたは本当に知らないでしょう。どうやって動くか...)
  • オペレーティングシステム(上記と同じ)
  • コンピュータネットワーク
  • 人工知能とエキスパートシステム(Prologでコーディングすることはほとんどありませんが、それでもコーディングブレインを形成し、そこから物事を見せるようにするものの1つです。根本的に異なる視点)
  • これらのスキルを最も重要な順に並べ替えるにはどうすればよいですか?

CSは常に変化する分野で何を優先すべきかを知ることは常にギャンブルになります-推測ゲーム

あなたが何をしたいのかを知り、あなたの信念を信頼してください。もちろん、確かな基本知識を持っていることは必須です。しかし、あなたが掘り下げるものは、それは完全にあなた次第です。また、キャリアを慎重に計画してください。雇用されたい場合は、ターゲットを選択し、それで上手くいきましょう(例Googleで雇用されることを希望し、方法がわからない場合)簡単なPythonスクリプトはおそらくこれらの立ち入り禁止の状況の1つです)を読んでください。自分で(会社で)何かを始めている場合は、「上司はいない」 "満足するには、自分に最も適したものを選んでください。

たとえば、Web関連のことをしたい場合は、必ずPHP/MySQL/HTML/CSS/JavaScript(+ jQuery/AJAX)にアクセスすることをお勧めします。しかし、それは私だけです。誰かが好きかもしれません(またはより多くの未来を見てください)Ruby/Rails PHPよりも。

たとえば、私は現在、主にObjective-C/Cocoaでコーディングしています。それを追求することをお勧めしますか?絶対にありません。つまり、Macに興味がない場合や、Mac/iPhone関連のソフトウェアを販売したいと考えている場合を除きます。 Windows開発に夢中なら、C#/ .NET Frameworkを選ぶのがおそらく最良の選択です。 (私が主に何をしているのかを知りたい場合は、 my StackOverflow Profile を見てください)

  • 私の教育を補完して、一流大学の学部レベルのCSのレベルと一致する、またはそれを超えるような方法でこれらの属性を達成するための最良の方法(今後2年間)は何ですか?

たくさん勉強して(本、インターネット、他の人のコードなど)、できるだけ多くのコードを書いてください。

ああ、コード関連の仕事に就こう。 (私は最初に フリーランサーとして働き始めました 、そしてそれは本当に価値のある体験でした。実世界で物事が実際にどのように機能するかを見るだけです)。


ちょうど私の.2フレンドリーセント... :-)

サイドノート:私は私の論点のいくつかが物議を醸すように見えるかもしれないことを知っています、そして私は多くがあると確信しています誰が私に反対するでしょう。それは許容できます。しかし、それでも私が物事を見る方法、特に私の好きな物事は変わりません。

17
Dr.Kameleon

CSの学位を取得して得たであろう研究分野、一般知識、およびその他のスキルについて、現在欠けているかもしれない、または欠けているかもしれない分野を客観的にどのように判断しますか?

UWのCS部門のカリキュラムを閲覧し、必要な読み物を借りて閲覧し、以前の試験と実習(宿題)を確認します。問題への取り組み方がわからない場合は、知識に穴があります。

これらのスキルを最も重要な順に並べ替えるにはどうすればよいですか?

将来どのようなプログラミングをしたいか考えてみてください。 WebサイトやCRUDアプリケーションの作成に満足している場合は、必要な知識がすべて揃っているようです。

[分散]データベース、Webサーバー、コンパイラーとインタープリター、オペレーティングシステム、ネットワークプロトコルなどが内部でどのように機能するかに興味がある場合は、CSの教育が視野に入りますそして、そのようなシステムを自分で構築することに興味があります。

私の教育を補完して、一流大学の学部レベルのCSのレベルと一致する、またはそれを超えるような方法でこれらの属性を達成するための最良の方法(今後2年間)は何ですか?

私は知らない。私にとって、大学の最大の利点は、1)視野を広げること(私は大学で学んだ詳細の90%を忘れてしまいましたが、概念とアイデアを覚えています)、および2)ものを学ぶ意欲を維持することです衰退:卒業するまで、試験や別の試験など、目標に向かって動いているときにモチベーションを維持する方が簡単です。 (また、自己教育の構造化は簡単な作業ではありません。)

[追加:CSプログラムをフォローしたい大学を選択し、興味のあるトピックのコースを選択して、カリキュラムを自分で実施します:宿題、試験など。ほとんどのコースは、過去の講義スライドと課題/試験を公開しています。]

アドバイスの一言:数学の学位をあきらめないでください。聡明な人なら誰でもプログラムを学ぶことができますが、流体シミュレーションや機械シミュレーション、コンピュータグラフィックス、画像処理、認識、機械学習アプリケーションなど、CRUD /フロントエンド以外のアプリケーションで作業したい場合は、数学によって競争力が高まります。 (ファイナンスも!)など.

更新2-経験[長い]:私はEE学部で修士号を取得しました。最初の2年間は一般的なカリキュラム(物理学、電気工学、アナログ&デジタルエレクトロニクス、および多くの数学)でした-線形代数;離散数学;実数、ベクトルおよび複雑な応用分析。)これは特に非常に価値がありました。 EEとエレクトロニクスの部分-HWとSWの混合プロジェクトに取り組むことができ、ハードウェア設計者との協力は非常に刺激的でした。 HWの設計には何も貢献しませんでしたが、HWデザイナーの回路図を「デバッグ」して、賢明な質問をすることができました[バグがSWにあるのかHWにあるのか不明でした-HWにあることがわかりました: -)]。

それからラインが分岐し、CSラインを選びます。 「詳細」の一部は、概念の根底に貢献しました(たとえば、ダイクストラのアルゴリズムを手動で「実行」する)。また、私は詳細CPUがどのように機能するか(バス信号、バス図の解釈、実行など)について、すでに廃止されたMotorola 68000の例について学びました。 、しかし、詳細を通じて学んだ概念は、最近のCPUでもそれほど変わらない。

その他の詳細、特にSWの実装(例:ダイクストラの実装)は、私にとって(高校でのコーディングが非常に得意なので)デバッグの無意味な練習であり、コンセプトの理解にZEROを提供しました。

そして私は博士課程に登録し、そこで義務的なコースを受講しなければなりませんでした。コースの選択に失望したのは、コースの多くが業界の要求に重点を置いているように思われたためです(たとえば、Pythonを科学的データ分析に使用する-ありがとう、私はプログラムを作成して、基本的な概念を教えるよりも、自分自身にそれを教えることができます(これもまた、無意味なコーディングがたくさん含まれていました)(幸い、離散最適化、プログラムの静的分析、およびPromelaによる形式分析のコースを掘り下げました)。

そのため、一部の詳細は概念の組み込みに役立ち、一部は明らかに不要な負担でした(別の例:2台のコンピューター間のシリアルポート通信のプログラミング。その後、HW仕様の読み取りと解釈およびレジスターを介したHWのプログラミングに慣れていたので、それだけでした。 。つまらないたぶん私は、平均的な将来のCSエンジニアがHWドキュメントの読み方について教育を受ける必要がないと仮定するのは初心者です)。

結論として、さまざまな概念(高レベルのアイデア)に身をさらし、優先順位を付けて非常に得意にしたい概念について詳しく説明します。 [すべてが非常に上手になることはできません!]

18
zvrba

これは本質的に私の質問です。CSの学位を取得して得たであろう研究分野、一般知識、およびその他のスキルについて、現在欠けているかもしれない、または欠けているかもしれない分野をどのように客観的に判断しますか?

回答1

あなたが学ぶなら何か新しいことあなたの研究から。それから、あなたは次のことができます客観的に CS学位を通してこれを取得したと言います。

A1。理由

CSの学位は概念的には学習に関するものです。正味の差がないCSの学位から戻った場合、その中核的な目標は達成されません。試験とコースワークは、学んだことの「公式」の尺度です。ただし、個人的な理解(新しいことを学びましたか?)の方がより客観的な尺度になるはずです。

A1。体験

私は両方とも学界にいて、今は専門的に働いています。コンピュータサイエンスの修士号を選択したのは、理解を深めたいと考えていて、学習に情熱を持っているからです。

コンピューティングの修士号を取得した結果、私の世界は広がりました。私の世界も専門的に働くことから拡大しました。

これらのスキルを最も重要な順に並べ替えるにはどうすればよいですか?

回答2

重要性はrelativeは誰がどのような状況で質問をしているのかということです。それが個人的なものである場合growthであれば、すべてが重要です。業界にとっては、アルゴリズムや優れたOOP /標準ソフトウェアプラクティスなどが重要です。

A2。理由

重要な「スコープ」は「コンテキスト」に大きく依存しています。コンテキストがなければ、スキルのメリットを分類することは困難です。

A2。体験

「大学」と「野外」で得られるスキルは異なることがわかりました。大学における「スキル」は、より「理論」であり、業界からは「実践」です。このため、この違いは、スキルの重要度が実際に異なってランク付けされていることを意味します。

私の教育を補完して、一流大学の学部レベルのCSのレベルと一致する、またはそれを超えるような方法でこれらの属性を達成するための最良の方法(今後2年間)は何ですか?

回答3

あなた自身を押してくださいbeyondブレークポイント、そしてあなたがbreakになったとき、再び自分を壊し続けます.

どういう意味ですか?

あなたが理解できないポイントに達したら、あなたは自分を壊しました。学習を続けるuntilわかります。次に、理解できない何かが見つかるまでPushさらに進みます(ad infininitum)

A3。理由

学習し、境界内にとどまるだけで、「大丈夫」になります。ただ「大丈夫」になりたくない。あなたはあなたができる「最高」になりたいです。常に境界を超えてプッシュしなければ、本当のポテンシャルに到達することはできません。

A3。エクスペリエンス

私は常に生涯の学生になるつもりです。現在のスキルセットを列挙するつもりはありません。興味があれば、私のプロフィールだけを見ることができます。

一つだけ言っておきますが、現在の知識では決して満足しません。私はもっ​​と高く飛んでもっと遠くを見て、もっと深く行きたいです。

7
Darknight

面接して大学を出たばかりのジュニアをたくさん募集しています。私は、彼らが取ったどのプログラムから得た主題スキルに基づいて、誰も雇っていない。これの理由は単純です。私が遭遇したCSプログラム(または他のプログラム)は、プロフェッショナルまたはコマーシャルレベルのプログラミングまたはソフトウェア開発に関連する具体的なスキルを教えていません。複雑な微分方程式のモデルとソリューションをクランキングして、最適化された特殊目的のソートアルゴリズムを作成できることは、学術的または科学的価値を持つ可能性がありますが、一般的なソフトウェア開発には影響しません。

そのとき私は何を探しますか?まあ、私は大卒者が学習技術を完成させたことを期待しています。つまり、結局のところ、良い大学が学生に教えるべきものは何でしょうか。一般的な問題を分析して、予測可能に解決可能な論理的な個別のコンポーネントに分解する方法。解決策に向けて知識と情報を見つけ、評価し、整理し、適用するための体系的なアプローチ。

また、一緒に働いてコミュニケーションをとる人々のグループは、個人の合計よりもはるかに価値があることを理解している人を探します。そのためには、成熟度と謙虚さ、そして助けを求めたり、求めたりする能力が必要です。

したがって、質問の範囲に戻ると、CSの学位を取得すると、最初の面接が大学を卒業する可能性が高まる可能性がありますが、開発者としての成功や熟練度にはほとんど影響がないと思います。私は常に「態度のために雇う、スキルのために訓練する」という哲学に従ってきましたが、それはうまくいきました。

私のアドバイス:それがあなたの興味を引くものであるなら、あなたの数学の学位を続けてください。どんな科学教育もあなたをうまく助けるでしょう、それであなたがExcelに入る可能性が最も高いものであるのであなたが最も好きなものを選んでください。次に重要なことを学ぶことに集中してください:学ぶ方法、問題解決法を分析してアプローチする方法構造化された方法、他の人々と対話して協力する方法、自分自身とチームメイトの両方の提供に対してリーダーシップと責任を取る方法。残りはテクノロジーとコーディングだけであり、貿易のツールです。それらは、あなた自身で学ぶことができ、そして学ぶでしょう。人気のデザインパターンやアーキテクチャパラダイムなど、いくつかの一般的な知識を身につけて学習します。練習するプログラムを書き始めます。かなり最新の言語とテクノロジーのベースを選択しますが、それが学習する最後のベースであると誤解しないでください。ツールと言語は常に変化するので、ソフトウェア開発はとにかく学ぶ絶え間ないプロセスです。

7
pap

CSの学位を取得して得たであろう研究分野、一般知識、およびその他のスキルについて、現在欠けているかもしれない、または欠けているかもしれない分野を客観的にどのように判断しますか?

学位要件を確認し、各クラスのシラバスを調べてください。

これらのスキルを最も重要な順に並べ替えるにはどうすればよいですか?

後知恵の恩恵なしでは、これを実際に自分で行うことはできません。ほとんどの独学のプログラマーに欠けている最も重要なことは、アルゴリズムの分析と設計です。残りは部分的な食事を拾うことができます。

私の教育を補完して、一流大学の学部レベルのCSのレベルと一致する、またはそれを超えるような方法でこれらの属性を達成するための最良の方法(今後2年間)は何ですか?

プログラムに入学していない場合でも、他の学部の科目を選択科目として履修することがよくあります。私のお気に入りのクラスの1つは、航空宇宙工学のプロジェクトクラスで、私は小型衛星の電子機器とファームウェアに取り組みました。

また、希望のクラスが使用しているテキストブックを購入することもできます。私は自分のスケジュールに合わせることができなかったいくつかのクラスのためにそれをしました。別のオプションは MIT openコースウェア です。

4
Karl Bielefeldt

CSの学位は成功したプログラマであることがとても重要だと思うのはなぜですか?

プログラマーとして成功するには、次のことが必要です。

  • プログラミングへの情熱
  • 新しいテクノロジーに関する知識への果てしない渇き
  • 業界に参入

通常、CSの学位を取得すると業界内に入ることができますが、知識への情熱と渇望がないと、苦しみ、優れたプログラマーになることはできません。

あなたはすでに業界に参入しているように見えますが、確かにあなたは知識への情熱と渇きの両方を持っているように感じます。

あなたが知っておくべきことは、研究と学習を続け、経験を積むことであり、業界は学位なしであなたを感謝する方法を知っています。

私が一緒に働いている誰かからの例

私のチームで働いているソフトウェア開発者の1人が法律の学位を取得しています...数年後、彼女は法律がまったく好きではないこと、そしてプログラマーになりたいことを理解しました。彼女はプログラマーとしての仕事を得ることができなかったため(経験がなく、学位もありません)、6か月のコンピューターコースを受講し、その後仕事を得ましたそれ以来、彼女は素晴らしい開発者です。

3
Mithir

IMHOプログラミングジョブ(または販売ジョブやsysadminジョブなど)はなく、問題解決ジョブのみがあります。コードを書くことは問題を解決することの一部にすぎません。はい、販売でさえ問題解決の一形態です。したがって、数学の学位は、CSの学位だけでなく、問題を解決できることを証明します。

あなたの投稿から、あなたが多くの経験/インターンシップを得ていることは明らかです。すごい!卒業後も就職の心配はありません。

質問に答えるには:

クラス?コード記述クラスではなく、理論的なCSクラスをいくつか選択してください。 CS/math以外のクラスを見つけます。それはあなたが群衆から際立つのを助ける哲学

優先事項?新しいことを学ぶ(すでに半分知っている簡単なクラスだけでなく)

次の2年?人と話し、学び、関係を構築し、外部の活動を探す。 (趣味/スポーツ/仕事/勉強から離れる時間は、応募者の意欲を確認するための1つの手がかりです。)

最終的なヒント:できるだけ早く卒業してください。連絡先のネットワークを構築します。そして唯一の安全な仕事はあなた自身の仕事を作ることです。あなた自身のビジネスを始めることができるアイデア/機会を探してください。幸運を。

2
jqa

最初に、私にLOLを、大作の終わり近くの「簡潔だが徹底した」規定で聞かせてください。ビジネスに至るまで:

CSの学位を取得して得たであろう研究分野、一般知識、およびその他のスキルについて、現在欠けているかもしれない、または欠けているかもしれない分野を客観的にどのように判断しますか?

他の人が述べたように、あなたは コースカタログ から始めることができます。しかし、私はあなたがそのリストの境界の外に踏み出すことをお勧めします。あなたが数学を専攻しているのは、実際にはgoodです。私が一緒に働いた多くのエンジニアは、単純な統合を実行する方法を思い出せず、従来のCS離散数学コースワークの壁の外を探索したことはありません。

この答えは、詳細に関してはかなりまばらです。私はCSの学位を取得しておらず、必要な分野で不足していることに気づきませんでした。しかし、私が興味のある他のことにもっと時間を費やしたいと思います。歴史、言語学、英語など。

これらのスキルを最も重要な順に並べ替えるにはどうすればよいですか?

愛するものを学ぶ

あなたにとって何が重要ですか?雇用主にとって何が重要ですか?私の個人的なヒューリスティックは、常に私にとって最も興味深いと思われるものを学ぶことでした–あなた必要あなたがしていることを愛すること。そうしないと、燃え尽きてしまいます。ソフトウェアは非常に広大な努力の分野であり、これらのスキルのanyに情熱を傾ける有能な開発者には、常に利用可能な仕事があるようです。

学ぶことを学び、自分をプッシュする

それが私を他の上位に置く2つのメタスキルに導くと思います:物事を精力的に学び、一生懸命に働きます。それらは決まり文句で痛々しいほど明白に聞こえるかもしれませんが、組み合わせはまれです。私は、「必要な」スキルの点で、マップ全体に行き渡っています。つまり、フロントエンドのHTML/JavaScriptから言語拡張、モバイル開発、コンピュータービジョン、システム管理、そして7つ以上の言語にまたがっています。私の無知を克服することを習慣にしたことすべてにおいて唯一の真のコアスキル。

私はジャックホワイトの ギターと音楽に関する哲学 (真剣に、それを見てください)が大好きで、プログラミングの世界に非常に当てはまると思います。物事を少し手の届かないところに置きます。無茶をする。それはeasyだと思われます。

私の教育を補完して、一流大学の学部レベルのCSのレベルと一致する、またはそれを超えるような方法でこれらの属性を達成するための最良の方法(今後2年間)は何ですか?

  1. 非主要CSクラス

    あなたのように、UWのCS部門は私を拒否しました...私の感覚に来る前に、彼らに3回それをさせたと思いますが。情報学を専攻し、応用数学を専攻しました。しかし、私はまだ全体メジャーではないCSトラックを取得しました。それは、CSE 373、410、413、415、および417です。ですから、最初に情熱に従うべきだと私は確信しています。私はそれらのクラスに私を導きました。理論的には少し軽いかもしれませんが、かなり包括的なコア教育を受けることができます。

    さて、これがクールなことです。インフォマティクスでは、これらのほとんどが私の必要な選択科目にカウントされます。数学部門では、明示的な承認を得る必要があるかもしれませんが、それはCSE 417以外では一続きになるかもしれません。

    DARS照会 (おそらくUWNetIDのみのリンク)を呼び出して、状況がどこにあるかを確認します。私はこれをさまざまなメジャーad nauseumに使用していました。

  2. AMATHクラス

    同じように、 Applied Math部門にはいくつかのクラスがあります 選択科目として使用できます。あなたは本当にあなたのようなAMATHでマイナーでさえあり得ました。

    なぜこれについて言及するのですか?数値計算–例AMATH 301/352 –ほとんどのプログラマにとって大きな謎です。それから何も得られない場合は、 興味深いブログ投稿 を書くことができます。しかし、言語の数値型を取り巻く問題を理解し、それらを測定および改善する方法を知ることは非常に重要であると私は主張します。

  3. 何かを作ろう!

    あなたができる最も重要なことは何か新しいものを作ることです。最初から最後までアイデアを取り入れます。それがあなたの快適ゾーン内にあるような簡単なものにさせないでください。

    私が取った最も実りあるプログラミングクラスalwaysには、実践的なプログラミングコンポーネントがたくさんありました。エンジニアにとって、理論は信じられないほど重要です–それが現実のものに変わることができる限り。ですから、クールなサウンドのCSペーパーを見つけて、実装してみてください。真剣に。

  4. 仕事を取得する

    さて、あなたはすでにアマゾンでインターンシップをしていると述べました。それは素晴らしいことです。実際の仕事の経験が本当に重要です!湿った紙袋から出て行く方法をプログラムできないCS学位を持つ人はたくさんいます。良い仕事の経験を持つことは価値がありますway学位以上。

1
abscondment

まず、私が長年にわたって私に問いかけてきた質問なので、あなたがこの質問をしてくれてとてもうれしいです。

今のところ、この分野で自分は少し成功していると思います。私は大学での経験があり、コンピュータサイエンスの大学教育を最終的に終了したいと思っていますが、私の人生のこの時点ではまだ学位を取得するに値していません。しかし、私はこの不利な点(10年間続く)にもかかわらず、ソフトウェアエンジニアリングでかなりの成功を収めてきました。私はあなたに正直でなければなりませんが、それは必ずしも簡単なことではありませんでした(もちろん、やりがいのあることはほとんどの場合最も簡単ではありません)。また、それはまだ簡単なことではありません。適切な候補者にチャンスを与えようとする企業はたくさんありますが、私はその大学教育の「承認シール」の欠如を恐れている他の企業と連絡を取りました。しかし、私はそれを望んでいました(それでもそれを望んでいます)ので、私はその時に就職したいと思っていた言語であらゆる経験を得るためにできることは何でもするつもりでした。

それは非常に大きな会社の.netから始まりました。当時はプログラマーではなかった(当時は技術サポート担当者として働いていた)ので、勤務先の会社に適用されたときに使用された言語と技術について、できる限りのことを学びました。さらに、これはおそらく最も重要なことです。私は、タイトルにソフトウェアエンジニアがいるディレクトリで見つけたすべての人にメールを送りました。迷惑でしたか?多分。私は常に礼儀正しく自己学習的で、学ぶ意欲がありました。昼食の予定を立てるか、カフェテリアで見つけて座って会話をしました。ときどき恥ずかしかったり、思わず思われたりすることもありましたが、最終的には期待通りの結果が得られました。一部の内部データベースに短時間の資格情報を取得することができ、しばらくすると、独自のプラットフォームでソフトウェアを開発するために必要な資格情報を取得しました。その後まもなく、私は社内で、当時取り組んでいた分析チームに内部ツール開発のスキルをいくらか与えることができました。そこから、私はいつも、可能な限り最も気取らない方法で部屋の中で最も賢い人になるように努力しました。私は熱心で、誰もがそれを知っていることを確認しました。私は常に可能な限り解決策を提供しようとしましたが、十分に努力すると、(量子論以外では)解決できない問題領域がほとんどないことがわかりました。

長い話になる可能性があることを締めくくるために(そして、太平洋岸北西部にいるなら、ビールについて話し合いたいです)、私にショットを与えてくれる小さな小さなスタートアップで私の「大きな休憩」を得ました。彼らは私の経験不足を少し低い給料と交換しました、そして私は実行を始めました。その後、数年間で小さな開発ショップから次のショップへと跳ね返り、途中で友情とスキルを身につけ、最終的には小さなエンジニアリング会社の主任開発者とディレクターになりました。

ここでの重要なポイントは、十分に効果的に伝えていなかった場合、ネットワークを構築する必要があるということです。友達を作り、ビールを飲み、笑いながら、あなたが働きたい分野にいる人を見つけましょう(できれば、選択したテクノロジースタック内で)。それがどんなに記念碑的であっても、仕事を成し遂げるためのあなたの意欲と仕事を成し遂げる熱意を人々が知っていることを確認してください。基本的に、正式な教育の欠如を「克服」する必要があります。飛び込んで楽しんでください。この業界は、私見で地球上で最高です。私はある場所から次の場所まで私を助けてくれた友情と連絡を長続きさせてきました。機会があればいつでも同じことを続けていきます。

1
Paul Shoemaker