2008-08-20 17 views
8

私はソフトウェア開発を学ぶ学生ですが、一般的にはプログラミングを思うと広範囲に渡ってすべてを知ることができません。熟練するためには、学習と理解に焦点を当てる領域を決めなければなりません。特定のスキルセットは、データ駆動のWeb開発やSQLのように、相乗効果があります。しかし、世界のすべてのwin32 APIの経験は、Linux開発に直接適用されないかもしれません。これは初心者のプログラマーとして、ソフトウェア開発の基本原則を一般的に理解した上で、どこで私が専門にしたいのかを決め始めるべきだと考えています。初心者にプログラミングの専門分野のどれをお勧めしますか

これは本当にマルチパートの質問です:

  1. コンピュータプログラミングやソフトウェア開発内の共通の専門分野は何ですか?
  2. 他のスペシャライゼーションの基礎としても、市場性の高いスキルとしても、長期的な価値があるスペシャライズはどれですか?
  3. どのスキルセットが互いに補完し合うのですか?
  4. 他の専門分野の開発を妨げる専門分野はありますか?
+0

も参照してください。http://stackoverflow.com/questions/122493/is-it-better-working-on-a-single-technology-or-working-on-different-ones –

答えて

20

ベン、ほぼすべての熟練プログラマーはまだプログラミングの学生です。あなたが開発者であれば何も学ぶことを止めることは決してありません。しかし、あなたが本当にあなたのキャリアをスタートしているなら、あなたは専門化のことについて少なくとも心配する必要があります。すべてのAPI、フレームワーク、スキルは、あなたが現場で長期的に存在することを期待するものではありません。技術は大きく変化しているように見えます。何かを学ぶには多用途でフレキシブルでなければなりません。あなたが1つのプラットフォーム/ api/frameworkで取得する知識は、消滅しません。次の最大のプラットフォーム/ api/frameworkにスキルを適用することができます。

これは、未来について心配するのをやめて、基本に集中するだけだと言われています。データ構造、アルゴリズム解析と設計、コンパイラ設計、オペレーティングシステム設計は、必要最小限のものです。さらに、あなたはいつでもあなたのキャリアの中でいつでもその分野の本を読んで読むことができます。それはすべて必要です。がんばろう。

申し訳ありませんが、私は大きなお尻のアドバイザーのように聞こえた場合、しかし、それは私が思うものです。 :-)

+2

コンパクトデザインではありません、オペレーティングシステムのデザインを少し上に?アルゴリズム分析でさえ、あまりにも理論的すぎることがあります。私はリストの残りの部分に同意します... –

5

あなたの前提を直接拒否することはできませんが、私は実際にはジェネラリストであると思うのは、プログラミングにおける良い立場です。あなたは確かに特定の分野の専門知識を開発しますが、それは個人的な興味や仕事の必要性のいずれかの製品である可能性が高いです。時間がたつにつれて、言語や問題のドメイン間でやりとりできることは、良いプログラマを作る中心です。

3

もっと重要なのは、専門分野の中で最も関心のある分野はどれですか?

わかったら、その領域で学習を始めてください!

3

私は、あなたの雇用主がこの潜在力を見ることができれば、しっかりと握ることが賢明であるため、すべての時間の中で最高のスキルが適応されると思います。

しかし、私はあなたが楽しむことができる領域に飛び込むことをお勧めします。 学習は熱意によって駆動されます

私の現在の雇用はインターネットプロバイダーであるため、ネットワーキングに関する知識が特に役に立ちました。しかし、いつか私は3Dグラフィックス(必ずしもゲームではない)でプレーしたいと思います。

1

1つの環境、win32、.net、Java、Objective C ...から始めることができるほど深く移動してください。

Xの仕組みを深く理解することが重要です。同じコンセプトを他の言語やプラットフォーム/環境に翻訳することができます。

「他の専門分野の開発に支障をきたす特殊化の分野はありますか?」並べ替え、しかし、永遠に何も私は思う。

私は自分自身が比較的緑色なので(4年未満)、私は本当にOOPの考え方から来ています。私はほとんど.NETから飛び出さなかったので、埋め込まれたコードに接触するときには1つの仕事に苦労しました。埋め込みプログラマがオブジェクトの作成や継承のパフォーマンスの低下を恐れている。私は環境、真剣に低い記憶力、ゆっくりとした時間を学ばなければならなかった。それらは成長する時間です、私はかなりよく私の領域を理解したので、私はより良い時間を持っていました。

市場性とお金のために特別なものを選んだら、早く燃え尽きるでしょう。あなたが楽しむものを選ぶことを専門にすることを始めたら。私はGUIプログラミングが大好きで、サーバーサイドのものが嫌いです、私のバディは反対ですが、私たちは両方とも仕事が大好きです。彼が私の仕事をしなければならなくて、私が彼のことをしなければ、私たちは退屈から狂ってしまうだろう。

1

学生としては、プログラミングの内容を忘れてソフトウェアプロセス自体に焦点を当てることをおすすめします。問題を分析して正しい質問をする方法を理解する。可能なすべてのデザインパターンを学び、実際にはこれらをすべて適用して、オブジェクト指向設計の理解と理解を深めてください。テストを作成し、テストを合格させるために必要なだけのコードを作成します。私は本当に学ぶための最良の方法はできるだけ多くのコードを書くことだと思います。言語とドメインは重要ではありません。sourceforgefreshmeatをブラウズして関心のあるプロジェクトを探してください。重要なことは、ソフトウェアエンジニアリングの基礎を理解することです。

はい、これにはCまたはアセンブラが含まれます。これは、コンピュータがどのように動作するか、そしてあなたのハイレベルなコードが実際に行っていることをよく理解する最も簡単な方法です。

最後に、サービス指向アーキテクチャー、制御の逆転、ドメイン固有の言語、ビジネスプロセス管理は、すべて大きな利点を示しているので、認識しておくことが重要です。次の大きなものが何であるかを知っている労働力に参加してください。

関連する問題