CS学位のない成功したプログラマーになる方法[終了]


46

免責事項(回答する前に読んでください):

私が尋ねたい質問に似た質問をいくつか見たので、ここにいくつかの同様の質問があります。

私見彼らは完全に私が求めているものでもなければ、私が望んでいるほど徹底的でもない(私は以下の質問の答えを洗い流すつもりはなく、質問者を信用しない、私はただなりたいもう少し詳しく):

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-speak

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

はっきりさせてください、私は以下を求めていません:

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

少しのコンテキスト:

さて、免責事項がありましたので、ソフトウェア開発者としての私の経験の短い歴史から始めて、質問を具体化します。

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

私が経験したほとんどすべての開発ジョブで、雇用主の期待を上回り、貴重な資産であることが証明されました。もちろん例外があります1。しかし、私のポイントは、私はかなり頭が良く、仕事で成功するために知っておくべきことを自分自身に教えることができたということです。仕事ごとに、私はますます引き伸ばされました。

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

ほとんどの開発者は同意すると思うので、実際のコードの作成、実際の2製品の構築、素晴らしい人々との作業、ユーザーの生活にプラスの影響を与えることと比較した入門 プログラミングコースABSOLUTELY PALES を含む一般的な学部課程を勉強します3

だから...物事が進むにつれて...私は勉強に集中するのではなく、はるかに多くの時間とエネルギーを費やしました。ときどき非常に恐ろしいパフォーマンスをしましたが、ほとんどの場合、成績を維持することができました。

しかし、コンピュータサイエンスプログラム UWではある非常に非常に非常に非常に競争力のあります。

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

ソフトウェア開発で自分と同じ目標を共有している他の「21歳の男性」を見回すと、自分がどこにいて、何を学んでいるのか、自分が何であるのか、そして何についてできます。もちろん、私よりもはるかに素晴らしい21歳の子供たちがいます。群衆の中で目立つと言うつもりはありません。ただ、私は平均的な仲間の進歩の背後にあるとは思えません。 。

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

数学の学位

学位を取得することのみを目的として数学の学位を取得しています。(機会があったので)今中退して仕事を始めるべきだと言う人もいれば、学位を本当に修了すべきだと言う人もいます。どちらのキャンプも育ちがちな理由とはまったく異なる理由で学位を取得することを決心しましたので、その点で何らかの形で私を励まさないでください。「クローズ」という問題を検討してください:)

* DEEP BREATH * ...申し訳ありませんが、これは予想よりも長いです。

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

  • どの程度の研究分野、一般知識、および現在不足しているかもしれないCS学位を通じて得た他のスキルを客観的に決定するにはどうすればよいですか?
  • これらのスキルを最も重要な順に並べ替えるにはどうすればよいですか?

  • トップ大学のCS学部生のレベルに匹敵する、またはそれを超えるような方法でこれらの属性を達成するために私の教育を補うための最良の方法は何ですか(今後2年間)?

私がすでに取っている手順は次のとおりです。

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

ここまで来たら、クッキーに値します:)

だから...開発コミュニティ、ベテランの開発者、私と同じボートに乗っている仲間の学生、あなたはどのようなアドバイスがありますか?

また...私が求めていないことについて、この投稿の上部にある免責事項に留意してください。

更新:

私は、自分の質問に対する成功した「答え」とみなすものについて、非常に具体的なパラメーターを提供しなかったことに気付きました。質問は非常に曖昧で、多くの「正しい」答えを保証できると思います。

妥当な時間の後、次の属性に適合する答えを選択します。

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

そのため、「正しい」ためのパラメータがいくつかあります。それらは非常に高いと思いますが、「ベスト」アンサーが思い描くものの概要のようなものとしてデザインしました。明らかに十分な時間を与えて、最も近い一致する応答を「答え」として選択します。


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

17
世界には、数学の学位を持つより多くのプログラマが必要です。言っ途切れる。
ピーターB

1
心理学者やその他の個人のコンサルティングやアドバイスサービスの市場は巨大でなければなりません。私は転職を考えています....
Ingo

16
この質問を編集することから始めて、半分にカットします。
JeffO

8
@PaulHazenは、非常に冗長な背景と免責事項のコンテンツを削除して実際の質問にたどり着くと、次の3つのことを求めます。 、不足しているものに優先順位を付ける方法。3つの質問はすべて、重複した質問で完全に網羅されています。答えが気に入らない場合は、賞金を提供してください。それが彼らの目的です。

7
@PaulHazenまたは、リストした質問(以前の質問と重複している)に興味がない場合は、質問を修正して、特に新しいことだけを尋ねるようにします。あなたの質問は、あまりにも多くの情報を持っていることに苦しんでいます。そのほとんどはおそらくあなたが抱えている問題にとっては不必要なものです。

回答:


17

OK、あなたの質問に答えないのは魅力的だと思うので、ここにいます...


私についての最初のいくつかのこと


私は26歳で、父(数学者で現在は教授として働いています)のおかげで、人生のごく初期からコンピューターの周りにいることができました。(私が生まれた1986年、当時最も一般的なことではありませんでしたが、私たちは常に自宅に1台か2台のコンピューターを持っていました)。言われていること-そして、明らかに私の好奇心と数学に傾く/問題解決指向の性質のために-それは私がプログラミングに恋することに気づくのにそう長くはかからなかった。最初に7-8歳でPascalを使用し、その後、他のほとんどすべての作業を行いました。

まず、学校にいる間、私は数学が好きだったという理由だけで、数学関連のあらゆることに秀でていました。正直に言って、父の例にならって簡単に数学者になれました。しかし、それは起こりませんでした。

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

結果?5年後(23時)、および医学の学位を取得する1年前(個人的なオープンソースプログラミングプロジェクトに常に趣味として取り組んでいる)、私は十分だと判断して終了することにしました。そして、私はこの新しい分野(医学)をとても嫌っていただけでなく、この全体の状況に不安なものがありました、飽き飽きしたかゆみが奥深くに隠されていました...(もし...だったらどうだっただろう?)さらに、自分の趣味は、私が素晴らしいと思っていたが、実際の仕事だとは想像もしていなかったので、お金をもたらすだけでなく、たくさんのお金を持って来ることができ、個人として幸せになれることに気付いたばかりです。だから、辞めることにしました。(=少し遅れたとしても、私がこれまでに作った最良の選択です)。

だから、私は今、一度は医者になるつもりです(正確には、神経衰弱の精神科医の危機に;しています。私は愚かです!)CS学位(実際に私の3年目。そして、正直なところ、それらの恐ろしい典型的な資格に欠けないようにするためにそれを追求します...)と私が崇拝するもの、そして間違いなく私が最も提供しなければならない主題に取り組んでいるより幸せな専門家。


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


  • プログラミングは、非常に優れた分野が何であれ常に進歩している数少ない分野の1つです。そして、これは間違いなく典型的な資格の問題ではありません(正直ところ、私が会社を持っていてプログラマーを募集したいなら、彼が学位を持っているかどうかに関係なく、数分で誰が良いか簡単にわかります)

  • 優れたプログラマーになるために必要なのは、数学指向のインテリジェンス(ただし、数学そのものではありません)と情熱 (勉強の無限の時間を負担ではなく快楽にします;そして、私はそれを認識していなくても、信頼します私は私の人生の主題について、純粋に自分自身でたくさんの材料を研究しました)。正式な教育は良いことですが、少し過大評価されています。成功の核となる要素は最初の2つです。

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

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

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


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


  • 賢く、優れた問題解決能力と主題に対する情熱(あなたが持っていないなら、そのままにしておいてください。平凡であることは言い訳にはなりません)
  • 主題に専念するのに多くの時間
  • いつも勉強している(「だから、それをすべて知ることはないだろう、そして注意:なぜ勉強」はある程度関連しなければならないのか?自分のペースで物事をするのがずっと楽しいといつも思っている... )
  • 常にコードを書く(読んだ本の数に関係なく、コーディングレベルは書いたコードの量に直接相当します)
  • そして再び、LOVE用(あなたは十分にそれを愛していない、と私は意味ならば、本当に上記の意志のすべて遅かれ早かれは耐え難いとなり、それを愛し、私のために、ジョブとしてコーディングはまだのために給料のようなものです。.. 。映画を見る:まったくばかげているが、それでも単に素晴らしい)

ご質問について


  • どの程度の研究分野、一般知識、および現在不足しているかもしれないCS学位を通じて得た他のスキルを客観的に決定するにはどうすればよいですか?

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

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

CSが常にギャンブルであるため、常に変化する分野で何を優先すべきかを知ることは、推測ゲームです。

あなたが何をしたいのかを知り、あなたの素朴さを信頼してください。もちろん、しっかりとした基本的な知識を持つことは必須です。しかし、あなたが掘り下げることは、完全にあなた次第です。また、慎重にキャリアを計画してください:採用されたい場合は、ターゲットを選択してそれをうまく活用してください(たとえば、Googleで採用されたいが、シンプルなPythonスクリプトの読み方を知らないことは、おそらくこれらの禁止事項の1つです) )。自分で(会社)何かを始めようとしているなら、満足させる「ボス」はいません。自分に合ったものを選んでください。

たとえば、Web関連の何かをしたい場合は、PHP / MySQL / HTML / CSS / JavaScript(+ jQuery / AJAX)を使用することをお勧めします。しかし、それは私だけです。誰かがPHPよりもRuby / Railsを好む(または将来をもっと見る)かもしれません。

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

  • トップ大学のCS学部生のレベルに匹敵する、またはそれを超えるような方法でこれらの属性を達成するために私の教育を補うための最良の方法は何ですか(今後2年間)?

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

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


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

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


これはまさに私が探していたものです。ありがとう!他のほぼすべての応答も良好であり、間違っているまたは役に立たないものを含むものはほとんどありませんでした。質問を更新して、これを選んだ理由についての小さなセクションと、より詳細に説明するブログ投稿へのリンクを含めます(プログラマーではなく私のブログにそのような説明をする理由は、すでに膨大な長さの投稿と、質問がこのサイトに適していないとすでに感じている懸念モデレーターの数が増えています)。投稿されたまま。そして再び感謝します。
ポール・ヘーゼン

@PaulHazenどういたしまして!助けてくれてうれしい(もし私がやったなら)...(今、私の答えの巨大な長さについては... argh ...システムはそれを「コミュニティwiki」の投稿として自動的に認識し、モデレーターはそれを初期状態に戻します:簡単な-少し再編集された-答え)
カメレオン博士

meta(meta.programmers.stackexchange.com/questions/3513/…)で、実際に、より適切な宛先に移動するように奨励しています。公式FAQによると、このフォーラムには質問は適切ではありません。しかし、プログラマの事実上の使用を観察すると、ここにいることが適切だと感じています。モデレーターは、最適な場所を決めることができます。それを動かすことについての私の考えを要約すると:プログラマーが何をすべきかによって、それはここに属しませんが、プログラマーそれが完全に適合するかどうかによって異なります。
ポール・ヘーゼン

@PaulHazenまあ、少なくとも私にとっては(私は決してSOの専門家ではありませんが)、それは絶対に適切なようです。
カメレオン博士

ええ、私はちょっと空中で手を上げます。人々が少なくとも答えを見つけるためにグーグルまたはスタック交換を使用できる限り、私は幸せです。コンテンツは、将来同じ質問を持つ人々が簡単に発見できる必要があります。
ポール・ヘーゼン

18

どの程度の研究分野、一般知識、および現在不足しているかもしれないCS学位を通じて得た他のスキルを客観的に決定するにはどうすればよいですか?

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

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

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

あなたはどのようにデータベース、Webサーバー、コンパイラやインタプリタ、オペレーティングシステム、ネットワークプロトコルなど[分散]の仕事に興味を持って理解している場合はCS教育は絵に入るボンネットの下に、そのようなシステムを自分で構築することに興味があります。

トップ大学のCS学部生のレベルに匹敵する、またはそれを超えるような方法でこれらの属性を達成するために私の教育を補うための最良の方法は何ですか(今後2年間)?

私は知らない。私にとって大学の最大の利点は、1)視野を広げる(大学で学んだことの90%を忘れてしまったが、概念やアイデアを覚えている)、2)から物事を学ぶための本質的な動機を保つこと衰退:卒業するまで、試験、別の試験などの目標に向かって取り組んでいるとき、モチベーションを維持しやすくなります。(また、自己教育の構築は簡単な作業ではありません。)

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

アドバイスの言葉:あなたの数学の学位を放棄しないでください。優秀な人なら誰でもプログラムを教えることができますが、流体および機械シミュレーション、コンピューターグラフィックス、画像処理、認識、機械学習アプリケーションなど、CRUD /フロントエンド以外のアプリケーションで作業したい場合、数学は競争力を提供します。 (金融さえ!)など。

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

その後、ラインが分岐し、CSラインを選択します。「詳細」の一部は、概念の染み込みに貢献しました(たとえば、ダイクストラのアルゴリズムを手動で「実行」)。また、私は学んだ内容時代遅れモトローラ68000、すでにそれから、の例に(バス・ダイアグラム、実行などを解釈し、バス信号)どのようにCPUの作業については、その詳細を通じて学習の概念は、いずれかの近代的なCPUのための非常に異なっていません。

その他の詳細、特に SW実装(たとえば、Dijkstraの実装)は、私にとって(高校でのコーディングが非常に上手になったため)デバッグの意味のない演習であり、概念の理解にZEROを貢献しました。

そして、博士課程に入学しました。そこでは必須のコースを受講する必要がありました。コースの選択に失望しました。コースの多くは、業界の要求に向いているように思われたためです(たとえば、Pythonを科学データ分析に使用する-ありがとう、私はプログラミングできて、私はそれを教えることができます- -ここでも基本的な概念を教えることよりも多くの無意味なコーディングが含まれていました(残念ながら、離散最適化、プログラムの静的分析、Promelaによる形式分析のコースを掘りました)。

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

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


確かに+1。詳細の90%を忘れたという事実にもかかわらず、それらの詳細を学習した経験が概念やアイデアを染み込ませたものであったと言いますか? ?
ポール・ヘーゼン

@PaulHazen新しい編集を参照してください(UPDATE2以降-コメントフィールドに収まりませんでした;))
zvrba

私が現在行っている措置を非常に肯定しています。追加されたセクションは非常に貴重です。私が詳細を知りたいことのリストは長すぎて合理的ではないと感じています。私は歴史的にその点でスコーピングの問題を抱えています。業界を見て、興味のあるトピックのうち、詳細を知るのに最も有益なトピックを特定する良い方法はありますか?それとも、少数のセットを深く掘り下げる限り、私がどれを学ぶかは本当に重要ではないと言うでしょうか?この点に関して、業界は予測が難しいようです。
ポール・ヘーゼン

1
業界を予測しようとすることは、前もって失われたゲームです(たとえば、Twitter(ほとんど)Web用のIRCクローン)がそのような流行になると誰が推測できたかはわかりません。彼らが長期的にどのようにお金を稼ぐつもりなのか、それはまだ謎です。あなたは取らなければならない積極的な選択肢あなたが、それはそれを得るために必要なものを見つけるしたい仕事の種類についてを。どうやって?ターゲット産業で既に働いている人を見つけて、彼らと話してください。
-zvrba

1
@Paul概念は重要ですが、詳細は(通常)重要ではありません。必要なときに詳細を調べることができますが、そもそもその地域で見上げる価値のあるものがあることを知るために、全体像を学ぶ必要があります。
ドナルフェローズ

7

私はインタビューして、大学を卒業したばかりの多くの後輩を募集しています。私は、彼らが受けたプログラムから得た主題スキルに基づいて、まだ誰も雇っていない。その理由は簡単です。私が出会ったCSプログラム(または他のプログラム)は、プロフェッショナルな商業レベルのプログラミングやソフトウェア開発に関連する具体的なスキルを教えてくれません。複雑な微分方程式のモデルとソリューションを作成し、最適化された特別な目的のソートアルゴリズムを記述することは、学術的および/または科学的価値があるかもしれませんが、一般的なソフトウェア開発には影響しません。

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

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

だから、あなたの質問の範囲にループバックするために:CSの学位は大学からその最初のインタビューを得るチャンスを改善するかもしれませんが、私はそれが開発者としてのあなたの成功または習熟度にほとんどまたは全く関係がないと思います。私は常に「態度を雇う、スキルを鍛える」という哲学に従ってきましたが、それはうまくいきました。

私のアドバイス:それがあなたの興味を引くものであるならば、あなたの数学の学位を続けてください。科学的な教育はどれもあなたに役立つので、あなたが最も得意とする可能性が最も高いものとして、あなたが最も好きなものを選んでください。そして、重要なことを学ぶことに集中してください。構造化された方法、他の人とやり取りし、協力する方法、あなた自身とチームメイトの両方の配達のためにリーダーシップと責任を取る方法。残りは単なる技術とコーディング、取引のツールです。それらは、あなた自身で学ぶことができ、そして学びます。一般的なデザインパターンやアーキテクチャのパラダイムなど、いくつかの汎用的な知識を習得します。練習するプログラムの作成を開始します。かなり最新の言語と技術ベースを選択しますが、それを間違って考えないでください 最後に学習するものです。ツールと言語は常に変化するため、ソフトウェア開発はとにかく学習の絶え間ないプロセスです。


あなたの観点からすると、CS学位の中には、プログラマーとして成功するのに役立つものはほとんどありません。現在、私はあなたの答えが一番好きです。あなたは私が理解し理解しようとしている多くのことを確かに思いつきます。CS内で募集している分野に追加のコンテキストを貸してもらえますか?オペレーティングシステムの仕事のために新卒を雇う採用担当者は、あなた自身とは異なる見方をしているかもしれないと思います(しかし、それについては全く間違っているかもしれません)。あなたがかかった時間を感謝し、これは超便利です
ポール・ヘーゼン

私は、0-1年の経験の範囲でかなり多くを採用するITコンサルティング会社で働いています。OS開発ショップに関して自信を持って答えることはできません(いくつありますか?)。非常に少数の卒業生は、それだけで競争するのに十分な主題のスキルを持っているので、あなたは態度、潜在性、および学習する能力を雇います。
PAP

面白い。あなたは「+1」を与えましたか、私はあなたが他の誰よりも言わなければならないことを好むが、あなたはより正確に質問に答えている、「どうすればソフトウェア開発の分野に成功するか」 、しかし、私の関心は成功したプログラマーの属性を理解することであり、獲得可能なプログラマーの属性ではありません(明らかに成功したプログラマーも獲得可能ですが、常に逆の方向に進むとは限りません)。
ポール・ヘーゼン

既に成功している人や、成功する可能性と能力を持っている人を雇いません。だから私にとって、「賃貸可能」と「成功」は同じものです。誰かが他の基準で募集している場合、彼らは才能を見つけるのが間違っているか悪いのです。いずれにせよ、おそらく仕事に適した場所ではありません。しかし、雇用主としての鍵は、人々の潜在能力を活用し、それを実際の成功に変える方法を知ることです。それはトレーニング、メンタリング、コーチングの組み合わせであり、あなたがそれを持っていなくても、あなたがどんなに才能のある人を雇っても関係ありません。
-pap

7

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

回答1

勉強から何か新しいことを学んだら。その後、客観的に CSの学位を通じてこれを獲得したと言うことができます。

A1。なぜ

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

A1。経験

私は両方とも学歴があり、現在は専門的に仕事をしています。コンピューターサイエンスの修士号を選んだのは、理解を深めたいと思ったためであり、学習に情熱を傾けています。

コンピューティングの修士号を取得した結果、私の世界は広がりました。私の世界もプロとしての仕事から広がりました。

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

回答2

重要性がある相対的質問をし、どのような状況のためだ人に。それが個人的な成長のためなら、そのすべてが重要です。業界向けの場合、アルゴリズムや優れたOOP /標準ソフトウェアプラクティスなどが重要です。

A2。なぜ

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

A2。経験

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

トップ大学のCS学部生のレベルに匹敵する、またはそれを超えるような方法でこれらの属性を達成するために私の教育を補うための最良の方法は何ですか(今後2年間)?

回答3

限界点を超えて自己押してください、そして、あなたが壊れるとき、再びあなた自身を壊し続けてください。

どういう意味ですか?

あなたが理解できない点に到達した場合、あなたは自分自身を破壊しました。理解するまで学習を続けてください。次に、理解できない他の何か(広告無限)が見つかるまでさらにプッシュします。

A3。なぜ

境界線内で学習して滞在するだけであれば、「大丈夫」になります。あなたはただ「大丈夫」になりたくありません。あなたはあなたができる「ベスト」になりたい。常に境界を超えてプッシュしないと、本当の可能性に到達することはできません。

A3。経験

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

一つのことは、私が言うことです。私の現在の知識に満足することはありません。もっと高く飛んで、もっと見て、もっと深く行きたい。


確かに良い発言、これは私に共鳴します。応答を「正しい」とマークするのをまだ控えている理由がわからない場合は、更新を参照してください。
ポール・ヘーゼン

そして素晴らしいアップデート。信仰を守ってください、私は時が来たときにそのような答えをマークすることを忘れません。
ポール・ハーゼン

1
答えを整理してください。2つの繰り返しセクションヘッダーがあり、それぞれの下に異なるが類似したコンテンツがあります。
ポール・ヘーゼン

こんにちは、ポール、どうやってそれをきれいにしてほしいかわかりません。少しわかりにくいと思います。各小見出し、各質問に関連しています。つまり、各「質問」には「更新理由」と「経験」があり、更新でリクエストしたとおりに回答を裏付けています。明確さの点で変更を加えることができてうれしいです。
ダークナイト

ああ...それは私をとても混乱させたものでした、見出しを増やしたり、サブタイトルをマークするために**太字**テキストを使用できますか?明快さを向上させるのに役立つと思います。
ポール・ヘーゼン

4

どの程度の研究分野、一般知識、および現在不足しているかもしれないCS学位を通じて得た他のスキルを客観的に決定するにはどうすればよいですか?

学位要件を見てから、各クラスのシラバスを調べてください。

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

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

トップ大学のCS学部生のレベルに匹敵する、またはそれを超えるような方法でこれらの属性を達成するために私の教育を補うための最良の方法は何ですか(今後2年間)?

プログラムへの入学を許可されていない場合でも、他の学部のクラスを選択科目として受講することができます。私のお気に入りのクラスの1つは、航空宇宙工学のプロジェクトクラスで、小型衛星の電子機器とファームウェアの研究をしていました。

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


このようなベテランのユーザーは、他のユーザーの投稿された回答を読むのに時間をかけなかったことに驚いています。あなたの回答は、すでにここにあるものとほとんど同じです。既存の回答を確認するよう注意してください。回答が異なると思われる場合は、それを明確にしてください。
ポール・ヘーゼン

選択科目のためにCSクラスを受講することを勧める人は他にはいませんでした。残りの部分に近い重複は、巨大なマルチパートの質問をした結果です:
カールビーレフェルト

おaび申し上げます、あなたは正しいです。CSクラスを選択科目として提案した人は他にいませんでした。それは良いアドバイスであり、間違いなく間違いではありませんが、他の回答のいくつかはより徹底的であり、私の質問の残りの部分とより良いコンテキストで3つの質問に対処しました。あなたが与えたアドバイスを否定しないように(私はあなたに+1を与えます)、それは確かに心からとられます。心から感謝します。
ポール・ヘーゼン

3

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

プログラマーとして成功するために必要なものは次のとおりです。

  • プログラミングに対する情熱
  • 新しいテクノロジーに関する知識への渇望
  • とにかく業界に入る

通常、CSの学位は業界の内部に入りますが、情熱と知識への渇望がなければ、苦しみ、優れたプログラマーになることはありません。

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

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

私が働いている人からの例

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


これは素晴らしいコンテンツですが、私の質問に答えるという点ではあまり見当たらないと感じています(誤解のせいで、私のせいかもしれません)。私は、CS学位を取得することでプログラマーを成功させるとは固く信じていません。私の質問は、より多くの「CS度以内教え話題のどちらである、プログラマの成功に貢献する傾向があり、そしてどのように私は客観的に、私はこれらのトピックにまで測定方法を決定します、そしてどのようにIsupplement /エンリッチ私の既存の情熱、飢餓そのようなトピックに関する知識と業界経験についてはどうでしょうか?」あなたの答えは確かに間違っていません。
ポール・ヘーゼン

2

私見では、プログラミングジョブ(または販売ジョブやシステム管理ジョブなど)はありません。問題解決ジョブのみがあります。私たちは問題を解決するために人を雇って支払います。コードを書くことは問題を解決することの一部にすぎません。はい、販売さえも問題解決の一形態です。したがって、数学の学位は、CS学位と同様に問題を解決できることを証明します。

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

質問に答えるには:

クラス?コード作成クラスではなく、理論上のCSクラスを選択してください。いくつかの非CS / mathクラスを見つけます。哲学は、群衆から目立つのに役立ちます

優先順位は?新しいことを学びます(半分知っている簡単なクラスだけでなく)

次の2年?人々と話し、学び、関係を築き、外部の活動を探します。(仕事/勉強から離れた趣味/スポーツ/娯楽は、応募者のモチベーションを知る手がかりの1つです。)

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


これは素晴らしいです、あなたの応答に感謝します。「+1」を付けますが、それを答えとしてマークすることはできません。他の応答では、理由を徹底的に具体化し、学習目標を客観的に決定する方法を特定しました。これはあなたの反応を否定するものではありません。私はあなたの言うことを心に留めており、それは本当に役立つので、もう一度ありがとう。
ポール・ヘーゼン

@PaulHazen-「なぜ?」それから哲学のクラスを選んでください:-)しかし、真剣に、私はCコースのない4年間の理論的なCS学位を取りました。やりがいのあるだけでなく、素晴らしい人々と新鮮なアイデアのグループでした。そして、あなたの質問は、数学/ CS以外のクラスに必要なライティングスキルがあることを明確に示しています。
jqa

1

まず、あなたがこの質問をしてくれたことをとてもうれしく思います。なぜなら、それは私が長年にわたって自問してきた質問だからです。

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

それは非常に大きな会社の.netで始まりました。当時はプログラマーではなかった(当時は技術サポート担当者として働いていた)ため、私が働いていた会社に適用される言語と技術についてできる限りのことを学びました。さらに、これがおそらく最も重要なことです、私はネットワークを作りました。私は、タイトルにSoftware Engineerがいるディレクトリで見つけることができるすべての人にメールを送りました。私は迷惑でしたか?恐らく。私は、常に学習意欲を持ち、礼儀正しく自己防衛的でした。昼食を予約するか、カフェテリアで昼食を見つけて、座って会話をしようとしました。恥ずかしい思いをしたり、スナッピーしたりすることもありましたが、最終的には期待どおりの結果が得られました。私はいくつかの内部データベースに短時間の資格情報を取得することができ、しばらくして独自のプラットフォームでソフトウェアを開発するために必要な資格情報を取得しました。その後すぐに、社内で社内ツール開発のスキルを貸し出し、その時点で作業していた分析チームに役職に就けるようになりました。そこから、私は常に可能な限り最も気取らない方法で部屋で最も賢い人になるように努力しました。私は熱心で、みんながそれを知っていることを確認しました。私は常に可能な限り解決策を提供しようとしましたが、十分に一生懸命努力すると、解決できない問題領域が非常に少ないことを発見しました(おそらく量子理論以外)。私は、社内で社内のツール開発のスキルを、その時点で取り組んでいた分析チームに役立てることができました。そこから、私は常に可能な限り最も気取らない方法で部屋で最も賢い人になるように努力しました。私は熱心で、みんながそれを知っていることを確認しました。私は常に可能な限り解決策を提供しようとしましたが、十分に一生懸命努力すると、解決できない問題領域が非常に少ないことを発見しました(おそらく量子理論以外)。私は、社内で社内のツール開発のスキルを、その時点で作業していた分析チームに役立てることができました。そこから、私は常に可能な限り最も気取らない方法で部屋で最も賢い人になるように努力しました。私は熱心で、みんながそれを知っていることを確認しました。私は常に可能な限り解決策を提供しようとしましたが、十分に一生懸命努力すると、解決できない問題領域が非常に少ないことを発見しました(おそらく量子理論以外)。

長い話になるかもしれないことをまとめるために(そして、もしあなたが太平洋岸北西部にいるなら、ビールについて議論したい)、私は私にショットを与えてくれる小さな小さなスタートアップで私の「大きな休憩」を得た。彼らは私の経験不足を少額の給与と引き換えに、私は走り始めました。その後、数年のうちに小さなデベロッパーショップから次のデベロッパーショップへとバウンスし、その過程で友情とスキルを獲得し、ついに小さなエンジニアリング会社の主任開発者およびディレクターになりました。

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


1
これを答えとしてマークできないのは本当に悪いと思う。私が間違っているとは思わない他の多くの回答のように、あなたは私の質問の核心がプログラマーとして成功することであるとき、私のキャリアを促進する方法に完全に集中します。プログラマーの成功は良いキャリアを意味しますが、私はむしろ「成功したプログラマー」の側面に焦点を合わせ、考えた後にキャリアの部分を(重要かつ非常に意図的な)させます。私の質問に部分的に答える貴重な情報のために、私はあなたに「+1」を与えます。
ポール・ヘーゼン

ああ、ネットワーキングについて言えば、あなたの話をもっと聞きたいです!同じ道/目標をたくさん共有しているように思えます。paulhazen.net/aboutで最適な連絡方法を自由に選択してください。ビールを手に入れます。
ポール・ヘーゼン

1

最初に、あなたの壮大な仕事の終わり近くにある「簡潔だが徹底した」規定で私を笑わせてください。ビジネスまで:

どの程度の研究分野、一般知識、および現在不足しているかもしれないCS学位を通じて得た他のスキルを客観的に決定するにはどうすればよいですか?

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

この答えは、具体的にはかなりまばらなようです。私はCSの学位を持っていませんし、必要な分野で自分が不足していることも発見していません。しかし、私が興味を持った他のことにもっと時間を費やしたことを願っています。たとえば、歴史、言語学、および英語。

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

あなたが愛するものを学ぶ

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

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

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

私はギターと音楽についてのジャック・ホワイトの哲学が大好きです(真剣に、それを見に行ってください)。それはプログラミングの世界に非常に応用できると思います。物事を手の届かないところに少し置きます。無茶をする。そうすれば、誰かがあなたにしたいことはあなたの仕事だけだと簡単に思えます。

トップ大学のCS学部生のレベルに匹敵する、またはそれを超えるような方法でこれらの属性を達成するために私の教育を補うための最良の方法は何ですか(今後2年間)?

  1. 主要ではないCSクラス

    あなたのように、UWのCS部門は私を拒否しました...私は彼らに私の感覚に来る前に3度目にそれをさせたと思います。私は情報学を専攻し、応用数学を専攻しました。しかし、私はまだ主要ではないCSトラック全体を取りまし。それはCSE 373、410、413、415、および417です。ですから、最初に情熱に従うべきだと思います。私はそれらのクラスに私を導いた。そして、あなたは彼らと一緒にかなり包括的な中核教育を受けると思いますが、物事の理論的な側面については少し軽いかもしれません。

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

    召喚アップDARS照会(おそらくUWNetID専用リンク)と物事が立つ場所を確認。私はこれをさまざまな専攻や吐き気のために行っていました

  2. AMATHクラス

    同じ方針に沿って、応用数学部門には、選択的要件として機能できるクラスがいくつかあります。あなたは本当にあなたのようなAMATHで未成年者でさえできます。

    なぜこれに言及するのですか?数値計算(例:AMATH 301/352)は、ほとんどのプログラマーにとって大きな謎です。他に何も得られなければ、興味深いブログ記事を書くことができます。しかし、私は言語の数値型を取り巻く問題を知り、それらを測定し改善する方法を知ることは非常に重要だと主張します。

  3. 何かを構築します!

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

    私が受講した最も実り多いプログラミングクラスには、常に大きな実践的なプログラミングコンポーネントがありました。エンジニアにとって、理論は非常に重要です–それが現実のものに変わることができる限り。クールな響きのCSペーパーを見つけて、実装してみてください。真剣に。

  4. 就職する

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


この。これはとてもいい。実際、これは有効な答え以上のものであると考えています。マークされた答えはもう少し有効でした... *ため息*非常に多くの素晴らしい答えで判断するのは難しいです:(私はあなたの担当者をもっと助けたいと思っています「以前笑議論VE)、私は残念賞としてあなたにビールやウイスキー、いくつかを購入する必要があります。
ポール・ハーゼン

-2

大学を卒業する前に億万長者になる人の話はいくつかありますが、私が最もよく耳にするのはビル・ゲイツでしょう。ニッチな能力を持つ人々は、学位を取得せずに、CookieをスタンプしたCS卒業生よりも成績が良い傾向があります。

非常に少数の人々が興味を持っているもの、通常は退屈で退屈な、または学ぶのが難しいものを見つけ、それをよく学び、それに取りつかれます。私が聞いたことのある分野は、Unixバックエンド(Linuxではなく、Linuxの需要はそれほど遅れていません)、フラッシュ(フラッシュについては正確に覚えていませんが、移動した人は知っています)主に人々はそれが死にかけていると言い、それを学ばないだろうと言っているからです」授業を数回受講する必要があるかもしれませんが、自分のことを知っていて印象的なポートフォリオを持っているなら、あなたを必要とするビジネスがそこにあります!


1
-1質問に答えなかったため。あなたは間違っていませんが、あなたは私の「探していないもの」セクションをスキップし、探していたもののどれにもヒットしなかったようです。
ポール・ヘーゼン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.