2009-06-04 19 views
10

私は小さな会社のためにC#.NETアプリケーションを書く作業をしています。プログラミングの学位を持っていない私たちのために、私たちは自分自身を教えることを見つけるのに何年もかかることがありましたか?私はコンピューティングを勉強していないことによって逃したものは何ですか?

私は電子工学の学位を取得しているので、私は16歳の時に退学してVisual Studioに座ったような気がしません。私は研究、アルゴリズム、制御システム、数学などで基本的な埋め込みCをカバーしました。私はこれを行うには知っておく必要があるが、しないように感じるだけです。

答えて

16

私は仲間のEEですが、私はコンピューターサイエンスの分野でかなりのぼっているので、コンピュータサイエンスの学位を取得したトピックはEEの学位に含まれていません。プログラミングのため

離散数学

数学、工学のための数学とは全く異なります。唯一の明らかな重なりは離散確率である。アルゴリズムの分析やBig O表記のような他のトピックは、通常、工学数学コースではカバーされません。

データ構造及びアルゴリズム

工学プログラミングコースは、通常、再帰と分割統治(クイックソートとFFT)のような単純なアルゴリズムの概念とリンクされたリストや木のような単純なデータ構造を覆います。データ構造とアルゴリズムに関するコンピュータサイエンスコースでは、動的プログラミングやグラフのような追加データ構造などの追加のアルゴリズム概念が扱われます。

計算の

理論は、私は間違いなく私のEE度でカバーされていなかったオートマトン理論および完全性(P、NP、など)のようなトピックを知っています。

+0

あなたの答えはEEの背景から来ているものをカバーしています! – Tim

+0

ええ、私はこれにアドバンスドアルゴリズムコースも追加します。それは本当に効率を見ることができます... – Irwin

2

私は18歳の時に学校を辞めましたが、今は10年以上様々な言語で専門的にプログラミングしています。私はCompを手に入れた少数の人々のこの正確な質問をしました。 Sci。またはソフトウェア工学の学位を取得します。今まで私が逃した唯一のことは、大学に通うことから得られる一般的な人生の経験でした。

私はComp Sciやそれに類することをして、関係のない分野でのキャリアに進んだ少数の人々を発見しました。 Comp Sciコースが本当にあなたのためのものかどうかを判断するのに役立つかもしれません。

+1

アルゴリズム上の懸念が非常に重要なシナリオで作業しているとすれば、それは言うことができますか? – akappa

+0

大学はアルゴリズムを学ぶのに適しているかもしれません。私はまだそれを学んでいないことで逃したと誰も聞いたことがないが、多くのゲームや科学プログラマーを知らない。 –

2

他の場所で読むことができないプログラミングコースで教えられた秘密がないので、あなたが逃したものは分かりません。しかし私の経験では、適切な抽出をしていない人は、再帰や適切なオブジェクトの向きなどの概念を把握するのに問題があります。また、一般的なプラクティスに従う代わりに、独自の命名スキーマなどを使用することがよくあります。

+1

もちろん、逆もまた真実かもしれません。この教育を受けている人たちは、「現実世界」のプログラミングの特定の差異や制約に合わせるのに苦労することもあります。 –

+0

私はColinに同意します。「教育を受けた」人々は、命名基準に従うことができないという理論について多くのことを知っています。 –

+0

真実の教育を受けた人々は、現実世界でそれを受け入れるのは難しいことがよくあります。彼らは理論にあった。時には、彼らはプログラムの彼らの部分が残りの部分と非常に異なって見えることを意味していても、すべてを "完璧"にしようとしていることをとても確信しています。残りのどれが悪いものであっても、不一致はそれを悪化させるだけなので、明らかに魅力的です。 –

9

よく... Big O notationは、一般的に教えられているものの1つのように感じますが、自分で取り上げることはできません。

もおそらくstatisticsと一緒にそのカテゴリに属している可能性があります。それらはEEの学位にもあるかもしれませんが、この答えはおそらくあまりにも悲観的です。 :)

+0

離散方法は、私がやったコースの中で私が好きだった部分の1つでした。 –

+0

私はビッグO表記法は、あなたの脳が数学的に病理化されている場合を除いて、1日で学習し、適用することができると言いました) – akappa

3

オペレーティングリサーチ、計算複雑性、いくつかの "高度な"アルゴリズム(キャッシュの自明性、データマイニングなど)と並行処理の問題に関する公式トレーニング。たぶん、プログラミングの面でもすごく面白いですが、あなたはすでにそれを学んだと思います。

あなたの現在の仕事に基づいて、それは重要であるかもしれないし、重要ではないかもしれませんが、あなたの学位があなたにそれらのことを自習することを可能にすると思います。

2

学位を取得すれば、より高い賃金を得るチャンスを増やすことができます。理論的なこともたくさん学んでいたでしょう。これは、さまざまなフレームワーク/プログラミング言語の共有構造を識別するのに大いに役立ちます。私を最も助けてくれるものの1つは、勉強中に収集する幅広い背景情報です。あなたが以前に学んだもっと一般的なものと比較するだけで、ほとんど知られていないトピックに関する多くの質問に答えることができます。

0

小さなアプリケーションを書くときにはやや簡単です。プロジェクトが大きくなると、アーキテクチャーや良いデザインなどの適用方法がわからないと、困ってしまうでしょう。人々が勉強するとき、それはまた練習の一種です。あなたが勉強の段階にいると思われる場合や勉強の段階にあると思われる場合は、雇用主にあなたを雇うように説得するのは難しいです。また、あなた自身が考えていないかもしれない重要な情報を多く知っている大学には、熟練した教授がいますが、あなたに分かち合うことができます。

+0

私はEEの学位を取得しましたが、ハードウェアを数ヶ月間使用します。私はまだ完全にソフトウェアで作業したいと思うかどうかはわかりません! – Tim

+1

私は同意しません。プログラマーは常に学習を続けなければなりません。私が勉強したと思っている雇用主は、働くのがひどいです。 –

+0

エレクトロニクス/コンピューティング業界で、新しいことの学習に興味がなかった人はすぐに仕事から外れる – Tim

3

おそらく唯一欠けているのはいくつかの理論ですが、あなたはEEの学位を取得しているでしょう。

実用的なプログラミングでの理論の使用が熱く通常、彼らは何と彼らは主張度を有するものを欠落していないと主張片側の度のないもので、議論されます。私は、あなたが他の場所で見つけることは不可能であり、何を学ぶん(非アカデミックのように)、市販の多くのために必要とされていない秘密を学ぶことはありません学位を必要としない、あなたの中間の立場を取ることを好むプログラミングポジション。それは、なぜタスクが困難であるか不可能であるか、あるいは特定のものがどのように機能するかを知るなど、多くのことを助けます。それはまた、あなたのキャリアの残りの部分を学習する良い基盤としても機能します。

3

私たちの脳がどのように動作するのか - それがどのように分析、検索/解決策を見つけるかなどと思っています... 時間が経つにつれて、 /あなたの考えに基づいて情報/有益な/固体。

1

私は1984年に学校を出た後、フルタイムで専門的にプログラミングを始め、90年代初頭までは、第3レベルのコンピュータ関連のコースをしませんでした。私が焦点を当てた主な主題は、ITの管理と離散数学でしたが、どちらも非常に便利です。実際のプログラミングの部分は非常に弱かったです。しかし、データベースクラスの中には、システム分析や構造化された設計と同様に、正常化、リレーショナルアルジェブラなどがありました。

私の感想は、厳格な教科書がなければ、退屈だと思うかもしれないものの、実際には非常に有用であると思うかもしれません。

4

あなたが見逃していないものに考えて:;:UML、パターン、女の子、パーティー...冗談を私はEEを勉強したあなたは強化する必要がある領域のみがソフトウェアアーキテクチャに関連するものがあると思います)

をデザイン...

はい、あなたは(コンパイラ、ネットワークなど)を逃してしまうが、あなたは彼らから使用するかもしれない知識はあなたが大したことではなく、作業学ぶ他の領域があります。

+1

EEEコースはCSコースよりも多くのネットワークをカバーしていると思います。私はEEEとCSの両方をカバーするコースを行いました.EEEクラスはCSよりもはるかに深いものでした。あなたの答えの残りの部分にスポットがあります。 –

+0

Opsは、私の悪い、彼らは広範囲に網をカバーしているのか分からなかった。 –

1

あなたの状況をちょうど推測しますが、私はプログラマー(私を含むクラス、私が追加するかもしれない)コンパイラコースから提供されるツール(リソースについては、Learning to write a compilerを参照してください)。これについての認識は私の上でゆっくりとうかがったが、それを振り返るとこれは巨大である。

私の2番目の心配は、コンピュータを低レベルで動作させる方法を理解していることですが、埋め込み作業をしている場合は、その領域では良いスタートがあると思います。


私はこれを「コンパイラ作成のコース」と記述すると、役に立たないと思います。後で、あなたはおそらく、コンパイラを書くつもりはないと分かります。そうすればOKです。しかし、そのコースは実際に多くの状況で活用できる強力で一般的なツールのセットを提供しています。 How much of the compiler should we know?を参照してください。

+0

「コンパイラコース」とはどういう意味ですか? – Tim

+0

コンパイラの書き方に関するコース。レクサー、パーサー、そしてそれらと何をするか。だからこそこのようなことについては、多くのリソースがあります:http://stackoverflow.com/questions/1669/learning-to-write-a-compilerやその他... – dmckee

8

私は大学に通ったが、心理学と哲学を専攻した。学校を去って10年後、私は趣味としてコンピュータを取り上げ、私が手を伸ばして自分で試してみることができるすべてのものを読んだだけで、膨大な時間を費やしました。

数年後、私は私の以前のキャリアパスから切り替えて専門的なプログラミングに入りました。仕事の4年後、私は彼らのR & D施設の大手ソフトウェア会社で働くことになりました。私の同僚は私にM.S.コンピュータサイエンスでは、私は自分自身を提示したことはないとは言っていましたが。

私の結論は、知識は知識であるということです。あなた自身で、または学校に通うことでそれを得ることができます。重要なことは、あなたが学校に通っているかどうかにかかわらず、学校にいるかどうかに関わらず学習を続けることです。

+0

「知識は知識です」...私は好きですそれ! – Kensai

2

私はEEとComp Sciで長年前から学位を取得しています:)あなたはコンピューター・ディグリー・プログラムで学ばなければならないことは間違いありませんが、それはすべてではありません。あなたが学んでいない具体的なことがあります(さまざまなJavaパッケージ、Studioを使ってデバッグ、ソース管理システム、特定のフレームワークで使用されるパターン)。しかし、あなたがそれを当時認識していないかもしれないにもかかわらず、良い基礎知識であることを学ぶことがあります(人々が投稿したアルゴリズムなど)。

私はまた、(U.シンシナティのエンジニアリングカレッジで必要とされた)素晴らしい経験をしました。それは、あなたが授業で学んだように見える抽象的なものに実用的な使用があることを私に認識させました。そうでなかったかもしれないよりも私は学校でもっと動機づけられました。

私は通常、あるレベルの基礎的なバックグラウンドスキルと、勤勉な努力を示すものと考えていますが、私はインタビューの際にもっと探します。そして、私は度を持っていないいくつかの偉大な開発者を知っているので、いつも必要というわけではありません。また、大学は通常、エンジニアリングの社会的側面や非常に大きなシステムでの作業など、多くの職場で非常に重要なものをカバーしていません。

私は長い間離れていましたが、私は学校や職場で学んだことを忘れるのは簡単だと思いました。私たちの業界は変わり続けているので、この分野での読書は重要だと思います。そして、私は、技術的詳細なものよりも広く読むことが重要だと思います。だから私はjoelonsoftwareが好きです。私は最近彼のサイトと彼が編集/書いた本を見て、ソフトウェア開発についてもっと学ぶ方法を探していました。

だから、ソフトウェア開発に関する書籍や記事を読んでみてください。ソフトウェアエンジニアリングの私の卒業生クラスの1人は、私たちにThe Mythical Man Monthのようなものを読ませてもらいました。これは素晴らしいことです。私はMcConnellのCode Completeのようなソフトウェア構築に関する本も好きです。ジョエルは自分のサイト上での勧告の良いリストを持っている:私の経験で

http://www.joelonsoftware.com/navLinks/fog0000000262.html

4

、コードやアルゴリズムの擬似コードの断片を見ての4年間は、技術的な優雅さを評価するための本能を開発するのに役立ちます - あなたは良いアイデアを伝えることができます悪いアイデアからより速く5ヶ月後ではなく、5分後に悪い考えを破棄できることは価値があります。

関連する問題