簡潔な答え
(この回答は、時代遅れになる可能性が低く、私よりも知識のある人を指すため、私の長い回答よりもお勧めします)
読む: http://www.codinghorror.com/blog/2004/02/recommended-reading-for-developers.html
行う: https://stackoverflow.com/questions/1503239/good-c-sharp-open-source-projects-to-participate-in
質問: https://stackoverflow.com/
長い答え
(修正された質問に基づく)
どこに行きたいかによって、さまざまな答えが適用されます。たとえば、コンピュータ ゲームのプログラミングには、ウェブサイトのプログラミングとは非常に異なるスキルセットが必要です。また、他の人との共同作業、約束の履行、顧客の信頼の構築などに関して考慮すべき非技術的スキルがあります。
それを念頭に置いて、自分の目標が何であるかを自分で定義し、それに向かって努力することを確認してください。ただし、定期的に物事を見直して、目標に向かって順調に進んでいること、および最初に設定した目標が達成したいものであることを確認してください。 .
テスト駆動開発 (TDD) - ソリューションを作成する前にテストを作成することにより、コードはよりモジュール化された方法で構造化されます。これにより、テストと保守が容易になります。これらのテストを利用できるようにすると、コードを修正するとほとんどの回帰テストが自動化されるため、将来の変更に伴うリスクも軽減されます。
分離設計 - つまり、相互依存関係のないコードを記述します。Inversion of Control (IoC) と Dependency Injection は、アプリケーション内でこれを実現する方法の良い例です。サービス指向アーキテクチャ (SOA) は、マルチシステム スケールでこれを実現します。ただし、まず最初に、モノリシックなメソッドを回避するためにコードをクラスとプロシージャに分割するだけで、うまくいきます。
パターン - これらは、一般的な問題に対する巧妙な解決策です。それらの両方について学ぶことは、ソリューション自体について学ぶのに役立つだけでなく、コードの一部を識別するための語彙を提供するのに役立ち、また、それらの元の問題を解決するための他の人の思考プロセス/アプローチを見ることができます.
http://www.martinfowler.com/eaaCatalog/
フレームワークを避ける - ベテランの開発者にとって、有益と思われるフレームワークを選んで選んでも問題ありませんが、何かを追加しようとする前に、技術の核心を理解する必要があると私は主張します. 言語だけで何ができるかを理解すると、各フレームワークの利点と問題を評価し、特定のプロジェクトにどのフレームワークを使用するのが最適かを判断できるようになります。始めたばかりのときにフレームワークを学習すると、コア言語の重要なことを見逃したり、数年後に期限切れになるテクノロジーに時間を投資したりする可能性があります。コアを知っていると、後で新しいフレームワークをより簡単に理解するのに役立ちますが、特定のフレームワークに縛られることはありません。注意: 一部のフレームワークは避けられません - i. e. C# を使用する場合は、.Net Framework を使用することになります。そのため、すべてのルールと同様に、例外があります。
ブラック ボックスを理解する - コードを書くときに何が起こっているかを理解します。何が他のものと相互作用するのか、データはどこから来るのか、データはプロセッサからどのくらい離れているのか、情報を作成するためにどれだけの作業が必要なのか、どのデータをキャッシュ (記憶) してもよいか、どのデータが必要なのかソースから読み取るか、毎回再計算して、変更されないようにします。
Jeff Atwood の Coding Horror ブログで推奨されている本に加えて、 ASP.NET MVC 4 と Web API という本も追加します。特に、何らかの形式の Web 開発を行っている場合はそうです。この本はわずか 130 ページですが、主題だけに焦点を当て、理論的な例を示すほとんどのプログラミング本とは異なり、この本は、設定された REST サービスに加えて、ロギング、セキュリティ、ドメイン モデルなどを含むプロジェクトをガイドします。アドレスに出ます。