コンピューターサイエンスの学位がプロのプログラマーにとって重要なのはなぜですか?[閉まっている]


63

私はコンピューターサイエンスの学位を取得しています。ドアを開けて仕事を得るのに最適です。C#.NETプログラミング(この分野で最も人気のあるプラットフォームと言語であり、世界全体で最も人気のあるOSを引き継ぐ米国全体ではないにしても、私が仕事をしている分野)の専門分野で私を助ける限り、ほとんど役に立ちません。なぜあなたはそれがあなたのプロとしてのキャリアのプログラマーとして役立つと思いますか(一部のインタビュアーを感動させるためにプリムアルゴリズムへの噴出以外)。

今日の世界適応において、開発者は、素早い頭脳、強力なコミュニケーション、オブジェクト指向、および基本的な設計スキルにより、顧客が受け入れるソフトウェアを作成できます。これらのスキルは、csプログラムでのみ使用されます。私の考えでは、Wroxによる500ページのC#本を読むと、4年間のcomp sci math blasterコースよりもはるかに使いやすいスキルセットが得られます。多くは同意しません。それでは、なぜコンピューターサイエンスの学位が重要なのでしょうか?


59
「コンピューター科学はコンピューターに関するものではなく、天文学は望遠鏡に関するものです。」-エドガーダイクストラ
エリックリッパー

4
暗記では不十分です。Reg Exの使用方法を知るには教育が必要であり、いつ使用するかを知るには経験が必要です。教育の一環として本を読むことも含めます。仕事に関連した経験は、あなたが物事を正しい方法で行うことをめったに奨励しません。
ザカリースコット

10
持っていない場合は重要です
アディティアP

2
私も2.8で、かなり平均的でした。しかし、私たちはほとんどC / JavaといくつかのWebのもの、C#のものは教えられませんでした。とにかく、CSは「次善の策」だと思います。なぜなら、CS 4年プログラムは簡単ではなく、学位を取得するために一生懸命働くことができるからです。とにかく重要なのはなぜですか?それはあなたに仕事を与えます!

1
@ luis.espinalこれらの統計に疑問があります。すべてのコードの70%がCにあるとは思いません(すべてのサイレントFortran、COBOL、PL1、Rexxが喜んでカチカチ音をたてていると考えてください)。確かに複数ですが、大多数は懐疑的です。多くの組み込みデバイスがありますが、組み込みデバイスの数は元のソースについて何も言及していません。最初の特定のデバイス用に作成された後は、同じデバイスのすべての後続デバイスに一般的に有効です。そして、おそらく、後の改訂の同じラインであろうと、同じ製品ファミリーの異なるラインであろうと、ロットは近い派生物のために再利用されます。
JustinC

回答:


133

なぜコンピューターサイエンスの学位ですか?:

  • HashTableに何千ものアイテムを保存し、値のみを反復処理する開発者と協力しました。彼はハッシュを介してアクセスしたことはありません。彼は明らかに、HashTableがどのように機能するのか、なぜHashTableを使用するのかを知りませんでした-CS学位がそれを助けるかもしれません。
  • 正規表現で作業する場合、基本的なオートマトン理論と形式言語に触れている人は、何が起こっているのかを推論し、その表現のトラブルシューティングを行うのが簡単に思えます-CS学位はそれを助けるかもしれません。
  • 新しい学位のない開発者が同じことをする前に経験を必要とする一方で、学校からの新しい開発者はさまざまなパラダイムの考え方(OO、機能、論理)の問題をすぐに分解できるかもしれません。
  • 学校は計算の複雑さを教えます。学位を取得していない開発者は何がベストかを感じるかもしれませんが、特に同僚に結果を説明するときは、正式な理解が良い場合があります。
  • 学位は、ハードウェア、OS、一般的なデータ構造、ネットワーク、VMなど、マシンの多くのモデルを紹介します。これらのモデルを心の奥底に置いておけば、何かがうまくいかないときに問題が生きる予感を立てやすくなります。繰り返しますが、非学位開発者は同じモデルを作成しますが、時間がかかります。
  • 専門分野を問わず専門家の指導があれば、学習者は行き詰まりや見逃したトピックを避けることができます。読書は素晴らしいですが、素晴らしい教師に代わるものではありません。

これは、優れた開発者になるためにCS学位が必要だということではありません。ほとんどない。私が一緒に働いた最高の開発者の中には、学位を持っていない人もいます。学位はあなたにランニングスタートを与えます。卒業する頃には、さまざまな種類の問題を解決するために、さまざまな言語や環境でかなりの量のコードを(できれば)書いているはずです。これにより、専門家になるために必要な10,000時間に到達できます。

2番目の利点は、雇用主が長期的な目標にコミットして成功できることを示すことです。多くの企業では、それはあなたが学んだことよりも重要だと思います。


4
+1-これは理にかなっています。専門家の指導は、おそらく私が認識しない方法で助けてくれました。両方の開発者が等しく学習意欲があると仮定すると、4年間の一般教育が4年間の業界経験よりも優れているのではないかと思います。学位取得前にはなかったと思うある程度の規律があります。
P.Brian.Mackey

4
適切な用語を学び、他の人と同じ資料を学習するのに多くの時間を費やすことも、その高価な紙片に付随する利点です。
サル

65
一方、私はこのリストのほとんどでまだ失敗している学位を持つ人々を見てきました:)
ジョエルゴーヴル

1
グラフ理論についても聞いたことがあるかもしれません。これにより、アプリケーションをクライアントとサーバー、ネットワーク、DAG、およびツリーに分割するのが少し簡単になるかもしれません。
ティムウィリスクロフト

3
@JustinC-あなたの主張「学位保持者は、何らかの理由で彼らを擁護する傾向がある」が、私が質問した根本的な理由の一つです。私はこの盲目的な非合理的な防衛を直接目にしました。反対も当てはまります。
P.Brian.Mackey

87

40年後、.NETとC#は、時代遅れのオペレーティングシステムでのレガシーコードの厄介な山に過ぎないと予想しています。

しかし、基本的なコンピューターサイエンスの概念は、40年以上前に、シャノン、フォンノイマン、クヌース、ダイクストラ、ホアなどが公式の論理と数学の根拠からそれらを掘り出したときと同じように活気に満ちています。


28
+1-非常に真実ですが、40年後に私は気にしません。
P.Brian.Mackey

3
@ P.Brian.Mackey:10年後にはC#が登場し、20年にはもっと記憶に残り、30年後には白髪の古いコード考古学者が必要になると思います。与えられたツールのセットに自分自身を結び付ける人々は、自分自身を陳腐化します。1970年代後半から1980年代初期にかけて、システムソフトウェアに関する古い論文を読む幸運がありました。これらのソフトウェアシステムのうち、今日のレーダーにあるものはほとんどありません。たぶん1または2(UnixおよびLisp)。今日のインストールベースはより大きくなっていますが、同様のことが起こると思います。
ポールネイサン

4
@ P.Brian.Mackeyあなたが何をするかを言ってください、しかし、私がこの問題で発言権を持っているならば、私はまだ40年で、そして今から80年でまだ蹴ることを計画しています。
マシューシャーリー

2
@Paul Nathan:あなたの主張をさらに進めるために、プログラミングの基本的な土台の一部は1930年代からのものです(例:en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis)。80年後のコードを書くのか/どのように書くのだろうか:)
phooji

3
@phooji(load "legacy-c-sharp-routines" ...):P
マークC

37

私は学校で毎日勉強しているほとんどすべてのCS(*)を仕事で使用しています。プログラミング言語の設計、検索エンジンの最適化、定量分析、または同様の分野で作業したい場合、関連する学位なしでそれを行うことができると思います、仕事で学ばなければならないものは非常にたくさんあるようです。私の仕事のラインを考えると、私は特に高学歴ではありません。私の同僚の多くはコンピューターサイエンスの博士号を持っており、そのうちのいくつかはCSの教授でした。

私の学位を取得することは、私にとって非常に価値があります。それは、金銭と満足の両方で何度も何度もそれ自身のために支払いました。

そうは言っても、私はあなたの主張を完全に理解しています。コンピューターをプログラムするほとんどの人は、CS学位を必要としない仕事をしています。たとえば、実用的なプログラミングでのコミュニティカレッジレベルの強固な背景に加えて、現在の業界動向に追いつく必要があります。そしてそれは大丈夫です。水族館を成功させるために海洋生物学の学位は必要ありません。水族館は素晴らしいと思います。しかし、もしそれがウッズホールで仕事を得るためにひどく難しいすべてはあなたがする方法を知っている金魚を上げています。


(*)ウォータールーの応用数学およびコンピューターサイエンスのB.Mathを取得しています。


4
私のCS教授の1人が、コンピューターサイエンスの原則に定期的に対処できる職に就くのは実際には2%だけだということを言っているのを覚えています
赤土

15
@el fuser:確かに。今、おそらくこの議論と密接な関係がある興味深い質問は、高等教育の目的は単に特定の仕事のために訓練することですか?そうだとは思いません。大学は職業訓練校ではありません。彼らの機能は、研究を通じて知識を創造し、その知識の世界に学生をさらすことです。これが学生に仕事のスキルを与えるかもしれないということは、目標ではなく副作用のように思えます。ウォータールーでは、実践ではなく理論を教えられることを明確に伝えられました。
エリック

1
大学の設定での元の研究の作成は、一般に、プログラムに関係なく、学士プログラムと呼ばれる訓練期間を超える前にめったに起こりません。その前に研究が行われますが、一般に、真に新しい材料の研究は、修士課程または博士課程の人々のために予約されています。言い換えると、多くの場合、あなたは発見から遠ざかりますが、すでに知られていることの強化に向かっています。学部生の研究は、特定の知識体系の成長というよりも研究のプロセスに関するものです。私的研究には異なる目標があります。
JustinC

1
最高の仕事が学位を必要としない日は、大学が彼らのプログラムをサポートする学生をもはや持っていない日です。
P.Brian.Mackey

Andersはどのくらいの頻度で彼を使用します;)
マシューホワイト

22

技術は静的なままではないため、重要です。コンピューターサイエンスは、すべてのデジタルテクノロジーの基盤です。ほとんどの独学のプログラマーは、主要なパラダイムシフトを乗り切るための基礎が欠けているため、正確に1つのテクノロジーサイクルを持ちます。確かに、この規則には例外がありますが、コンピューターサイエンスの強力な基盤は、大きなパラダイムシフトを生き抜く可能性を大幅に高めます。


4
Coders At Workを読むまで、私はちょっとした工夫が何かを知りませんでした。パラダイムシフトを1〜2回生き延び、経験から話をしていると思います。:)
デイブニーリー

3
同意しません。基本的な概念をオンラインで教えるリソースにアクセスするのは簡単です(そして、自分でそれらを見つける能力を得ることに報いています)。たとえば、academicearth.org / subjects / computer-scienceは開始するのに適した場所です。新しい建築のパターンについての詳細な情報は、参照の研究のために自由に利用可能であるchromium.org/developers/design-documents/...。多くの場合、無料で入手できるオンライン資料は、地元の大学に期待するものよりもはるかに優れており、最新のものです。
エヴァンプライス

13
私はあなたがそれを正確に逆に持っていると思います。プログラマーが学習を完了することはありません。独学のプログラマーは、正式な設定、外部から課せられた期限などを必要とせずに知識を習得する能力を実証してきました。

2
(続き)ソフトウェアのパラダイムシフトについて話している場合...どのようなパラダイムシフトですか?OOPはまったく新しいものではなく、関数型プログラミングでもありません。データベースは非常に長い間存在しています。浮動小数点数は、1985年以来標準化されています(IEEE 754)。私が見る唯一の大きな変化は、分散処理システム(スケールアウトとスケールアップを行う巨大ネットワークシステム、多くのコアハードウェアプラットフォームを活用するプログラム)への移行、および標準化された国際文字セット(UTF-8)への移行です。どちらも実際にはcompsciではカバーされていません。
エヴァンプライス

2
@マッドとエヴァン:あなたは私の投稿の「確かに、ルールには例外があります」の部分を見逃したと思います。私はあなたの両方が若くて邪魔されないと仮定しています。そのダイナミクスは年齢とともに変化します。私はこの分野に30年以上携わっています。家族を育てるストレスが写真に入ってから、多くの独学のプログラマーが燃え尽きるのを見てきました。あなたの両方が40歳に達したとき、私はこれと同じ会話を持っているのが大好きだ
ビットtwiddler

14

何をしたいかに依存します。あなたの目標が主にビジネスソフトウェアのプログラミングであり、ビジネス上の問題と実際的な複雑さの管理の問題が難しい部分である場合、CS学位はあまり役に立ちません。ただし、主な難易度が技術的なものであるようなものをプログラムすることが目標である場合は、CS学位の方が便利です。(私はCS学位を持っていないので、それを言うのは大きな偽善者のように感じるので、気軽に「またはCS科目の自己教育」を追加してください。)

複雑さの管理、大規模なプログラミング、一般的なビジネス上の問題の解決に優れたプログラマーがたくさんいるはずですが、メモリアロケーターや並列化ライブラリ、またはコレクションライブラリ、オペレーティングシステム、またはコンパイラなど。逆もかなりの範囲で存在すると確信しています。どちらにもそれぞれの立場があり、尊敬に値しますが、CSの学位は技術的な面でさらに役立ちます。


どうして?CSは、問題の性質がどうであれ、複雑な問題を解決することです。CSは、何もプログラミングしていない場合でも役立つはずです。CSは、忘れられているが依然として不可欠なサイバネティックスの子孫です。
SKロジック

12

CSの学位は、人が優れたソフトウェア開発者であることを示す絶対的な指標ではないと思います。実際、私は数学の学位を取得したプログラマーとしてのキャリアをスタートしましたが、CSバイアスが強い(数学とCSは私の学習プログラムに統合されていました)。全体的に重要な理由は2つあると思います。

1-エンジニアは募集のフロントエンドではないため

人事担当者です。そして、私は多くの人々が目を転がしているのを想像しながら、「ありがとう」と言います。さらに重要なことは、エンジニアに物事を作らせる(または物事を壊す)こと、または数千件の履歴書を整理し、1000件のインタビューを行うことです。

そのため、人事担当者と人事担当者が候補者を選別し、エンジニアが選別できる重要なグループに到達します。人事担当者は、CSの学位を取得することは、候補者がソフトウェアの開発について何かを知っていることを示す非常に強力な指標であることを長い間学びました。願わくば、20年間ソフトウェアを書くことが、候補者がソフトウェアを書くことができる良い指標であることを願っています。

2-CSについて学習するための何らかのシステムを持つことは、なしよりも優れているため

CSは知っておくべき多くの大きな分野です。そして、それは常に変化しています。最近では、学部生の授業の75%が私のキャリアとは無関係になったと言っても過言ではありません。そして、5年前からの私の修士課程は急速に減価償却されています。しかし、始めたとき、コンピューター組織、ネットワーク、優れたソフトウェアエンジニアリングプロセス、オブジェクト指向設計、コンパイラー、および現在市場に出回っている主要なプログラミング言語の構文/セマンティクスについて何かを教えてくれる大きな機関にお金を払ったことがうれしかったです。

そして、本/ウェブサイト/ラッププロジェクトが本質的に明らかではなかったときに、誰かが私に物事を説明するために支払われた環境にいて良かったです。

また、コンピューターの状態やSDEが問題ではない研究室にアクセスできたことを嬉しく思いました。問題。

そして、コースは明確に良いコミュニケーションを教えませんでしたが、あなたが本当に学ぶことができる唯一の方法はチームで働くことだと思います-これはCS学位を提供する多くの主要機関の主要な部分です。

そして、頻繁にフィードバックされるスケジュール(成績や試験など)により、教えられたことを本当に理解したかどうかを知ることができます。

これらのことは、このテーマに関するどの本よりも価値があるように私の心の中で組み合わされますが、それは確かにすべてではなく、すべてではありません。確かに、高等教育機関の改善を見ても気にしないことはあります。卒業してから約10年後、最初に受けた学位はその後の仕事よりも重要性が低いと思います。


12

私にとって、その理由は、彼らがいくつかのラフなコースを経験し、あきらめなかったことを知っているからです。Compilers、Data Struct、Discrete Math(およびその他)などのコースの多くは、CSプログラムから多くの人々を洗い流しがちでした。CSの学位を取得するということは、楽しみのために出かけるのではなく、一生懸命働いて代償を払うことを意味します(長い夜、プログラムを機能させるために)。


+1-笑、これについてはあまり議論できません。しかし、私は離散数学が大好きでした。ヨーダの印象をたくさん与えた素晴らしい教授がいました。
P.Brian.Mackey

10

私にとってそれは考え方の問題です。

あなたの考え方は、あなたが与えられた問題にどのようにアプローチするかを定義し、概念で学んでいない人よりも幅広い機会を考慮することを可能にします。

典型的な例は、「トラベリングセールスマン」問題です。1)一般バージョンではNP完全であるため、すべての可能性を試す必要があります。2)問題について詳しく知っている場合は、 ACが常にAB + BCよりも長いことを知っていると言う一定の制限(距離に対しては当てはまりますが、価格に対しては当てはまりません)により短時間で解くことができます。

別の例は数値分析です。数値の不正確さを最小限に抑えるには、数学的に単純な方法とは異なる方法で計算にアプローチする必要があることを知っておく必要があります。これには理論的な知識が必要であり、明示的に噛まれていない限り、途中で取り上げられることはほとんどありません。


9

本当に?ワオ。

だから、C#とOOPのスキルは十分であり、ランダムなソートのための独自のアルゴリズムを考案し、実際のNP完全な問題に対処する方法の微妙なニュアンスを解読できると教えていますか?

C#とOOPは問題ありませんが、自明ではない論理設計を行うには、コンピューターサイエンスの基礎が必要です。

データ構造やアルゴリズムのスキルが限界に達している場合、どのC#コンテナを使用すればよいかさえわかりません。

今、成長しましょう。


23
簡単です、トラ。
-whatsisname

23
「ランダムな並べ替えのための独自のアルゴリズムを考案し、実生活でNP完全問題に対処する方法の微妙なニュアンスを解読します」 /皮肉
クエンティン・スターアン

4
私が言っていることは、私が仕事をしたり、過去に仕事をしたことがある人の95%が、アルゴリズムの考案に0時間近く費やしているということです。私は、コードをより簡潔で読みやすいものにするために、ほとんどの時間を費やしています。「微妙なニュアンス」に費やす時間はほとんどありません。実際、少なくともホワイトボードでワークフローを整理するのに少し時間を費やすのは面白いと思います...自分でやったことです。NPを同僚と定期的に話し合っていますか?関数型プログラミング言語を実装する代わりに、カスタムソートを記述する必要がある場合、どのような作業をしますか?
P.Brian.Mackey

3
@ P.Brian.Mackey:ソフトウェア開発はアップまたはアウトの職業です。50歳以上の組織で働いているソフトウェア開発者は何人いますか?ソフトウェア開発者が年をとるにつれて、CSの学位は、仕事を持つことと失業することの違いを意味します。現在、コンピューターサイエンスの学士号と修士号を取得していますが、70年代後半に海軍とDoDの専門学校でこの分野の最初のトレーニングを受けました。軍を辞めた後、CS学位を取得することを気にしなかった私と一緒にいたすべての人は、もはや現場にいません。
ビットツイダー

7
なぜ、CSの概念についての知識を得るには正式な大学のCSカリキュラムが必要であるという仮定を誰もが盲目的に受け入れているように見えるのはなぜですか?たぶんそれは彼らの演ductive的推論の失敗でしょう。彼らはより多くのCSコースを必要としていると思います。
クエンティン・スターリン

6

私はあなたが本当に学位にあまり深く関わっていなかったのか、あなたが必要なものを取り出して出て行った、あるいはCS専攻を「プログラマー」ではなく「コーダー」として見ている学校に行ったと思います。また、私の最高の/お気に入りの「CS」クラスのいくつかは、少なくとも私の大学では、電気工学科のクラスです。さまざまなアーキテクチャとスタイルへの私の露出はこれまでになく重要であり、私の学位はそれを「制御された」環境で促進しました。

単なるアルゴリズムやキュートな綿毛ではないクラス:

  • コンパイラー
  • オペレーティングシステム
  • VHDL /組み込みシステム
  • アセンブリおよびマイクロコントローラー
  • ソフトウェア工学

そして最後に、単なるアルゴリズムとデータ構造-人工知能でしたが、私からのくだらないものを打ち負かすクラス。大学のシステムを通過することで学習プロセスが大幅に促進されることがあります。学習したことは、就職活動の際に非常に貴重であると考えます。


「コーダー」と「プログラマー」の定義は何ですか?私にとって、これらは同じでありえ、「コンピューター科学者」とは対照的です。
マークC

Coderはコードを書くだけで、必ずしもより良いコードを作成するために適用できるさまざまな設計パラダイムや思考プロセスについて考えているわけではありません。プログラマーは実際に自分が書いたコードについて考え、ボトムアップのコードからではなくトップダウンの視点からアプローチします。
ジェフランゲマイヤー

「コードモンキー」と「プログラマー」の定義は何ですか?プログラマーは、コードマネーではできない問題を解決する方法を考えることができます
...-Coyote21

情熱は学位によって授与されません。それはあなたが誰であるかのほんの一部です。
P.ブライアンマッキー

@ P.Brianあなたの情熱が学位を授与し、学位を取得することでさらに拍車がかかることもあります。
ジェフランゲマイヤー

4

私の意見では、「コンピューターサイエンス」の職に応募する場合を除き、コンピュータースキルに焦点を当てる程度はほぼ同等です。

実際、私が知っているプログラマの多くは、まったく異なる分野の学位を取得しています。私が知っている最高のプログラマーは、土木工学、言語学、経済学、金融学の学位を持っています。

最終的に、ある程度の経験があれば、学位は採用担当者の合否テストになります。つまり、印象的な学校や卒業後の学位からそれを取得しない限り、専攻が何であったかは重要ではありません。


最高のプログラマーの1人は、Excel / VBAとRでのみ働くエコノミストです。彼は、Excelでいくつかの驚くべきことをしました。
サル

@sal ExcelとRで物事を書くには、CS学位は必要ありません。ExcelまたはRを作成する可能性が最も高いでしょう。
アルニタック

@alnitak-ExcelまたはRの作成には、CS学位も必要ありません。それが私の応答とsal'sのポイントの一種です
-JohnFx

@JohnFX:私は、米国のトップ20のCSプログラムの1つからラテン語の名誉で卒業しました。その資格だけで、私はドアを通り抜けます(他の評判の良い学校からMSCSも取得しています)。私は、高校を出てすぐに入隊したコンピューターオペレーターおよびプログラマーとしてフィールドで始めました。アメリカ海軍と国家安全保障局から最初のコンピューターシステムとソフトウェア開発のトレーニングを受けました。そのため、私は何年もBSCSのない分野で働いていました。私が言えることは、BSCSを完了したとき、それは文字通り天国のようだったということです。
ビットツイダー

@ bit-twiddler-それは私の答えを支持するか反論するつもりですか?あなたが卒業後または有名な学校の学位を持っているかどうかが重要であるという私の最終的な主張を支持しているようです。
-JohnFx

4

私と同僚の多くにとってはそうではありません(私たちは誰もCS学位を持っていません)


3

OK

次の主題を経験した場合:

a。コンピューターのアーキテクチャと組織

b。ソフトウェアエンジニアリング

c.DBMS

d。ベーシックエレクトロニクス

e。基本的なデジタル電子回路

f。マイクロプロセッサー

g。コンパイラの設計

上記はすべて形式的なものであると思いますか?

これを読んで、電気および電子工学の主題の重要性について読んでください


3

私はコンピューターサイエンスの学位を取得しています。ドアを開けて仕事を得るのに最適です。限りのC#.NETプログラミングの専門分野で私を助けとして、(エリアで最も人気のあるプラットフォームと言語私は仕事でない場合は米国全体ダウン手に、世界で最も人気のあるOSのほとんどに便利)。

コードの70%以上はCで記述されています(高レベルのアプリケーションよりも多くの組み込みデバイスがあるため)。サイコロやTIOBEインデックスなどの一般的な求人検索によると、Javaはエンタープライズで最も人気のあるプログラミング言語です(WindowsサーバーよりもUnix / Linuxバックエンドサーバーの方が多いため)。将来)C#または.NET以外でプログラムされた、WindowsよりもLinuxまたはMac OSのバリアントを実行します。

自宅でルーターを見て、携帯電話を見て、車の中のコンピューターを見て、自宅の異常な電子レンジを見て、自宅のA / Cシステム内のコントローラー、電話と職場のファックスとプリンター/スキャナー。コンピューター化されたアプライアンスの数を確認します(Windowsシステムを上回っています)。

C#でプログラムされていると思いますか?

.NETまたはC#が世界で最も人気のあるプラットフォームであると本当に信じている場合は、CSスクールに戻って払い戻しを求めることができます。

なぜあなたはそれがあなたのプロとしてのキャリアのプログラマーとして役立つと思いますか(一部のインタビュアーを感動させるためにプリムアルゴリズムへの噴出以外)。

たぶん、基本的な開発の動的なWebページやエンタープライズアプリケーションを行うことよりもプログラミングの方がはるかに多いからでしょうか?そのためには、学士号もAAも必要ありません-私はAAの学位でプログラミングのキャリアを始め、ゆっくりですが確実にCSに向かって働き、その後、開発者としてフルタイムで働きながら大学院を経たので知っています

組み込み開発、デバイスドライバー開発、オペレーティングシステム開発、アルゴリズム開発、信号、通信、ネットワークプロトコル、データベースエンジン開発、ファイルシステム開発、分散コンピューティング、コンパイラーがあります。研究ではなく、営利団体での実際の仕事。自然な才能を除けば、CS学位なしで(時にはBS学位でもない場合でも)これらの産業分野のいずれかでハッキングすることはできません。

CSの学位を取得し、それに注意を払う人はこれを知っています。どうしてそんなことしないの?

今日の世界適応において、開発者は、素早い頭脳、強力なコミュニケーション、オブジェクト指向、および基本的な設計スキルにより、顧客が受け入れるソフトウェアを作成できます。

OOは、CSのために生まれました。そして、オブジェクト指向を行うと考えるほとんどの人は、良い仕事さえすることができません。外を見て、ソフトウェアの安っぽい状態を見てください(特にJavaと.NET、PHPはもちろんです)。CSの強固なバックグラウンド(または何らかの工学の学位)は、オブジェクト指向の100%の十分な理解を保証しません。分析スキルが必要ですが、通常は役立ちます。OTHは、基本的なCSのバックグラウンドを持っていないため、通常、オブジェクト指向および分析スキルに関しては危険です。この主張を裏付ける十分な経験的証拠が業界にあります。

これらのスキルは、csプログラムでのみ使用されます。

CSプログラムと学生によって異なります。少なくとも私にとっては、デザイン、オブジェクト指向分析、商用ツールおよび実践に関する多くの優れたコースを見ました。地元企業やインターンシップ、企業資金によるプロジェクトや研究、テクニカルライティングなどのコースを共学しました。申し訳ありませんが、私はこの声明を関連付けたり理解したりすることはできません。

私の考えでは、Wroxによる500ページのC#本を読むと、4年間のcomp sci math blasterコースよりもはるかに使いやすいスキルセットが得られます。

繰り返しますが、行う作業に応じて。企業でも、CSを使用して実際に問題を修正したり改善したりしています。モデリング、アーキテクチャ、分散コンピューティング、セキュリティ、高性能、高可用性、フォールトトレランスに関するすべてのこと。私はCSでそれらすべてを学びました。

Wroxブックを使用して、コンテキスト固有の技術固有のスキルセットを取得することに問題はありません。私は自分でそうします。しかし、私のCSのバックグラウンドは、私が取り組むべきコンテキストを与えてくれます。私のCSのバックグラウンドがなければ、私ができることは、プログラミングすること、コーディングすることだけでした(これは、私のキャリアの開始時にAAの学位を持っていた場合にできることでした)。

多くは同意しません。

驚くべきことではありません。

それでは、なぜコンピューターサイエンスの学位が重要なのでしょうか?

google、hadoop、cassandra、または高性能データベースエンジンは誰が思い付くと思いますか?Windows OSカーネルは誰が書くと思いますか?C#開発に使用する最愛のツールを誰がプログラムすると思いますか。

私が確信していることの1つは、C#開発を行うために使用するツールには、その背後にCSの人がいるということです。

あなたがCS学位を必要とするかどうかは、あなたがする仕事のタイプ、あなたがやりたい仕事のタイプ、あなたができる仕事のタイプに依存します。

エンタープライズおよびWeb開発には、CS学位を必要としない多くの作業があります。私はそれを認めます。また、プログラミングの世界はこれら2つのフィールドよりもはるかに広く、多くのフィールド(実際にはほとんど)がCS以上の学位を必要としていることも知っています。

あなたはCSの学位を持っていますが、それがどのようにわからないのかは謎です。


TIOBEは、プログラミング言語がどの程度使用されているかを判断するためにくだらないものです。これは、記述されたコードの行数ではなく、特定の言語がインターネット上でどれだけ人気があるかの尺度です(参照数の観点から)。
ビリーONeal

言語固有の多様性により、LOCはプログラミング言語間で無関係であり、したがって、業界全体でプログラミング言語の使用を測定するために使用することはできません。そして、インターネット上での言語検索の人気は、使用の深さと関心(またはその欠如)の部分的なプロキシとして機能します ... 避けられないバイアスに気付いている場合。それ自体では、** TIOBEインデックスは何の意味もありません。そうでなければ愚か者だけが考えるでしょう。愚か者だけが私が言っいることだと思うだろう。
luis.espinal

他の指標(仕事の検索や製品タイプの開発など)に加えて使用すると、テクノロジーの使用状況の傾向を推定するのに役立ちます。言い換えれば、何に使用するか、どのように使用するか、どの他のインジケーターと組み合わせるかに応じて、有用または役に立たないということです。
-luis.espinal

私のポイントは、そのインデックスを使用して、プログラミング言語の使用に関するステートメントを作成しているように見えることです。これは、そのインデックスが測定するものではありません。LoCを書いたと言ったとき、私は話を間違えました-しかし、「書かれたコードの量」を言う良い方法はありません。TIOBEは人気のあるコンテストであり、そのレースではJavaは入門プログラミングコースのlinqua francaである限り、他のすべての人を吹き飛ばします。(それが意味しないので、これらの学生は何も知りません。しかし、学生は通常であるため、大きな音の専門家よりも(つまり、あなた本当に)。
ビリーONeal

1

CSコースで見たときに覚えている基本的なことがいくつかあります。ウォーターフォールプロセスとその手順は、アジャイルのバリエーションを使用して私のキャリアで繰り返し使用しているものです。

問題解決スキルとさまざまなアルゴリズムヒューリスティックも役立つ場合があります。CS学位の間接的なメリットについては、何か言わなければならないことがあります。たとえば、何かが正しい理由を示すために答えを正当化する方法を学ぶことは、大学で洗練されたいくつかのスキルの1つにすぎませんが、これがプログラムの最後にメリットであることがどれほど明白かはわかりません。


1

ThorbjørnRavn Andersenの考え方に関する点に同意します。これが、優れたCSカリキュラムで開発する主なものです。

基本的には、データ構造やアルゴリズムなどを理解することです。自分でこれを学ぶことはできないというわけではありませんが、優れたCSカリキュラムはより良い露出を提供します。


CSとコンピューターエンジニアリング専攻のみが学習する傾向のある他の科目(コンピューターの編成やコンピューターのアーキテクチャなど)もあります。シーケンシャルロジックと組み合わせロジックからコンピューターを構築する方法を学ぶことは、コンピューターの内部で実際に何が起こっているのかについての洞察を与えるため、ソフトウェア開発者をより優れたものにします。さらに、新しいプロセッサを使用する最初のプログラマーは、階層メモリとI / O、パイプライン、ブロックセットアソシアティブキャッシュ、制御ユニット(マイクロコード化およびハードワイヤード)、スカラー処理とベクトル処理の違いなどの概念を理解する必要があります。
ビットツイダー

CSの大学での研究は、どのように機能するのか、実際にどのように機能するのかを知っている資格のあるメンターと実際に重要なラボよりも、どのように優れた露出を提供しますか?
ジャスティン

@ビット合意。はい、私の答えはむしろglibです。それは理由のためにそのように意図されていました。
ジョージマリアン

@justinあなたが何を言おうとしているのかよくわかりません。ラボで働くプログラマーは何人ですか?
ジョージマリアン

@JustinC:ラボ(技術者レベル)で物事がどのように機能するかを学びます。上位レベルのコンピューター組織およびアーキテクチャコース(エンジニアレベル)で物事が機能する理由を学びます。コンピューターのアーキテクチャとコンピューターの構成に関する大学の教科書をいくつか購入すると、私が言っていることがわかります。
ビットツイダー

1

書き込み

企業向けソフトウェアの開発では、コードを書くこととすることができるように重要です書きます。つまり、電子メール、バグレポート、技術文書などを作成することです。作成とコーディングの両方に、思考の明確さと表現の適切な経済性が必要です。

2人のソフトウェア開発者の間では、堅実な大学のCS学位(強力なCSプログラム、人文科学の選択科目)が両方のスキルを持っていると思います。(確かに、これは保証ではありません。人文科学の人々は優れたコーダーや一流の作家になることができます。多くのCS卒業生は、書くことができないコーディングマシンなどです。)

読書

私のメンターは、開発者が読んだ内容によって開発者を判断できると主張しました。元の投稿ではWROXの本に言及しています。私の意見では、CS学位を持っている人は、そのような専門的なITブックを探し出し、それらを効果的に使用できる可能性が高くなります。CLRを処理できる場合、「Professional C#」を処理できます。

数学

数学は論理、証明、厳密さなどを開発しますが、副作用は書き込みを支援することです。ほとんどのビジネスITは、強力な数学スキルを必要としませんが、CS学位を持っている人は必要に応じてそれを習得します。これは、それなしで生活し、学校で見逃したものを疑問に思うよりも、人生を経験するためのはるかに良い方法です。


1

それはあなたが経験したCSプログラムの品質に本当に依存していると思います。私が毎日言っているコードのほとんどは標準のVB.Netであり、SQL Serverからデータを取得し、フォームに配置してデータベースに保存し、レポートを作成します。洗い、すすぎ、繰り返します。(非常に退屈な場合があります)私が経験したCSプログラムは、理論と基本的な知識をカバーする以外に、多くの実用的なことを教えました。ソフトウェア設計、データベース設計、プロジェクト管理などの分野をカバーしました。プログラミング言語の学習は簡単な部分でした。ソフトウェアシステムを作成するための設計と方法論は、大学での経験から取り除いたものです。実世界の問題に基づいたプロジェクトが与えられ、時にはキャンパス内の他の部門のソフトウェアシステムを設計することさえありました。

プログラマーとして、私たちは明らかに自分で学ぶ能力を持っています。それは私たちの分野で必要なことです。CSプログラムを通過できたことを非常に嬉しく思います。私の教授はすばらしく、かなり教えてくれました。私のクラスメートはとても楽しい人たちで、コンピューター室で楽しい夜を過ごしました。実を言うと、あの頃はちょっと恋しい...


1

それはすべて代位的に生きる能力にあります。

学位をスキップする場合、おそらく非常に個人的な方法(別名ハードな方法)でレッスンを学ぶ必要があります。学位の不足は、試行錯誤によって学習の困難な道を歩むことを意味しません。ただし、学位は、他の人が深夜までに獲得しなければならなかった以前に得た知識の宝箱、不満なプログラミングセッション、および一般的に「苦労して」にさらされることを保証します。

本当に優秀な人は、他の人が真実だとわかったものを捨てず、代わりに知識の限界を知るまで挑戦し、それから新しく得たアイデアの「システム」を自分で作るまで遊びます。それは前に来た人々の肩の上にあり、それらを再発見することなく過ぎ去った年月の解決策を生き延びています。

もちろん、コンピューターサイエンスの学位を持っている人が常に良い候補とは限りません。ストリームに導かれたが、(何らかの奇妙な理由で)ストリームからの飲酒を拒否したユニークな個人がいます。


0

私は21歳で、CS学部を卒業したばかりです。どんなに素晴らしいプログラミングをしていて、CSの卒業生であれば、さまざまな分野に既にさらされていると思います。ですから、新しいものを学びたいのであれば、それが無関係であっても探検することを恐れないでください。あなたが技術やプログラミング言語の専門家であれば、良いでしょう。しかし、私はあなたが冒険好きで、他の技術を喜んで調べるとは思わない。それはあなたが自分自身を汚す方法です(そして素早く)。あなたはお金を稼ぐのに役立たないので、あなたが探求するものが無関係であることを気にしません。(あなたはすでにあなたのCS UGで多くの無関係なことを研究しました;))。 卒業後のCSへの情熱が、ソフトウェアプロフェッショナルになります。 誰もが同意しますか?


1
誰かがCSの学位を持っていないという理由だけで、誰かが「他のテクノロジーを調べる」ことに興味を持たないと仮定することはできません。これは誤りです。
スティーブンストライガ

0

私がCSに入ったとき、すごいと思いました。私はここで何も学べないので本当に良いです... 5年後、私はチームとして働くことを学びました。コードだけを書くことができる人や、コードを書く前に自分が何をするかを考えることができる人から私を隔てるエンジニアリングから、要するに、テキストエディタやIDEに1文字入力する前に考えることを教えてくれました。


0

オープンソース言語を使用して仕事を得るために、それはスクワットを意味しません。PHPなどの言語や言語ではなく、能力に基づいて採用する企業のほとんどは、CSを勉強しなくても人材を獲得できるという趣味の評判を持っています。ほとんどの愛好家が週末に混乱するためだけにライセンスのために数千を払いたくないので、あなたが。 2-3年の経験。

もちろん、商業的な経験は、品質の高いコードを納期までに納品する能力を示すため、非常に貴重なものです。

結論として、非オープンソース言語で作業するためのインタビューを取得します。


0

大学または大学の学位は、あなたが自分で他のことを学ばなければならない場合でも、実際の仕事に必要ないくつかの基本的なものを学び、CSの知識を持っていることを意味します。

また、ITリクルーターがソフトを見つけなければならない場合。開発者、および500人の応募者が履歴書を送信し、履歴書の学位を持って、少なくとも50人の履歴書を面接する必要があり、採用担当者と採用の両方を支援します。

(HHRRをいくらか勉強したソフトウェア開発者から)


0

おそらくこれはあまり役に立たないかもしれませんが、アセンブリと関連するすべての知識を学んだ今、私​​はより完全なプログラマーであると感じ、ユニに行くときにこれが再び起こると確信しています。つまり、私は主にCまたはVBを使用します。プログラムを実行するために待機状態が何であるかを知る必要はありませんが、単にコードの背後で何が起こっているかを知ることは素晴らしいことです。そして知識は、より良く、より速く、より保守可能なコードを書くのに役立ちます。私の意見では、コンピューターサイエンスの学位は、優れたコードを書くために必要な知識を正確に提供します。


0

今日のソフトウェアエンジニアリングは、数学を適用しない実験科学です。

コンピューターサイエンスの学位はアルゴリズムを重視しています。日々の仕事の中で、新しいアルゴリズムやデータ構造の実装、さらには使用も含まれていますか?

フレームワークの層と漏れやすい抽象化の処理にはどれくらいの時間がかかりますか?文書が意味するものではなく、APIが実際に何をするのかをどれだけ決定しようとしていますか?テストとテスト方法の決定はいくらですか?

物理学または化学の学位は、Knuthを記憶するよりもはるかに優れたトレーニングです


0

リクルーターはあなたが何をすべきかについて完全に無知ではないという指標を持っているため重要ですが、それは必ずしもあなたが何をしているのかを本当に知っている、または技術的に便利な方法でそれをしていることを必ずしも意味しません。

自分がやっていることを愛し、本当に良いプログラマーである学位を持つ優秀な人々がいます。また、本当に悪いプログラマーであり、基本的なことすら知らない学位を持つ馬鹿もいます。何でも開発できる学位のない優秀な人々(ビジネスソフトウェア/コンパイラ/オペレーティングシステム)があり、ハッシュテーブルを適切に使用する方法を知らない学者のない愚か者がいます。


0

絶対に正しい、コンピューターサイエンスの学位はそれほど重要ではありません。そのため、代わりに工学の学位を取得するのが唯一の選択である理由です。

さまざまなバックグラウンドを持つ候補者にインタビューする際に、学位を持っていない候補者を際立たせる特徴は、技術的なコミュニケーションスキルの欠如と規律の欠如です。これらは、科学の学位を取得するときに学んだ基本的な特性です(工学の学位を取得した場合はさらにそうです)。

ほとんどのことが平等である(そして、1回のインタビューで「ほぼ等しい」候補者が見つかることが多い)ので、最初に工学の学位、2番目にコンピューターサイエンスの学位、3番目に学位のない人を雇います。しかし、比較において物事を非常に不平等にする方法があります。そのため、誰でも血統の学位を持った人でさえ打ち負かすことができます-しかし、それは別の質問ではありませんか?


-1

プログラマーにとっては、あまり重要ではありません(多分、あなたが言ったように、インタビューへの扉を開くこと以外は)。

CSジョブ(研究、アルゴリズム分析、形式言語理論および設計)。他の非数学ベースのプログラムでこれらのことを学ぶことはまずありません。

//免責事項:私の学位はITであるため、他のすべてのコースに戻って仕事のラインで行う必要がありました。


-1

コンピューター関連の学位を持っています。最初のコンピューターの役割を取得するのに役立ったのは、3年目がIT管理者としての仕事の配置であったという事実でした。教育内での就職placement旋をお勧めします。

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