私は何年も前に(おそらく)同じ問題を抱えていましたが、数年続き、それを克服しました。ですから、私のやり方があなたにも当てはまるかどうかわからない場合でも、私がそれをどのように達成したかを知ることは、あなたにとって興味深いかもしれません。
また、こちらもご覧ください。ソフトウェアエンジニアリングの7つの専門分野生産性がスキルレベルの副次的な影響であることを示しています。現在使用しているテクノロジのステージ3とステージ4の間のある時点にいる可能性があります(スキルの習熟度はテクノロジによって異なります。一部のテクノロジを習得しながら、他のテクノロジを習得できます)。
今、私は伝記の証言から始めます。
少しのコンテキスト。私は47です。80年代の12時にプログラミングを始めました。高校時代、私はパートタイムのプロのゲームプログラマーとしても働いていました。基本的に、ハードウェアを購入するのに十分なだけのお金は得られませんでしたが、楽しんで多くを学びました。18歳で、コンピューターサイエンスの正式な学習を開始しました。
その結果、20歳になったとき、プログラミングタスクを開始するたびに、与えられた問題を解決するための多くの方法を知っていて、手元にある多くのパラメーターと落とし穴、あらゆる方法の欠点と制限を非常に意識していました。
ある時点(たとえば26歳くらい)で、プログラムを書くことがまったく難しくなりました。非常に多くの可能性が開かれたので、私はそれらを選択することができなくなりました。数年間(6にする)、プログラミングをやめ、テクニカルニュースライターになりました。
それにもかかわらず、プログラムしようとして完全に停止することはありませんでした。そして、ある時点でそれは戻ってきました。私にとっての鍵は、極端なプログラミング、より具体的にはシンプルさの原則、「動作する可能性のある最も単純なものを書く」でした。
基本的には、コードの効率を気にせず(それが私の主要な障害であり、非効率な設計を避けます)、ただ最も簡単な方法で行っています。また、エラーを発生させるテストを作成した後、エラーについてあまり気にせず、エラー処理を遅らせることを強制しました(実際にはTDDです)。
それは私が書いていたときに学んだことです。ときに私が書くことかわからない、または私は私がいた書いていたものを知っていた悪いです。続けてください。実際に悪いものを書いてください。最終的には後で修正します。または、本当にそれが悪い場合は、それを消去して書き換えますが、最初に完璧なものを書くものを2回書く方が速いです。
実際、最初の記述が得意であると信じているコードは、実際に悪いコードと同じくらい改善する必要がある可能性が非常に高いです。
Simplicityパスをたどると、ボーナスも追加されます。初期設計/コーディングを簡単に削除/変更できます。あなたはより柔軟な心を得ます。
また、コードに一時的なコメントを入れる習慣を身に付け、今はやっていなかったことを説明し、後でコードが通常のユースケースで機能するようになるときに行うことを意図しました。
また、XP Dojoに参加し、他のプログラマーとコードカタを練習してXPプラクティスを内部化しました。助けた。上記の正式な方法を本能的にしました。ペアプログラミングも役立ちました。若いプログラマーと仕事をすることはある程度の勢いを与えますが、経験を積むと、そうでないこともわかります。例えば、私の場合、私は彼らが過度に複雑な設計に従事しているのをよく見ますが、設計の悪夢につながるかもしれません。そのようになった。やった 問題がありました。
私にとっての最大のポイントは、フローを維持することです。高速であることは、流れを維持することに本当に成功しています。
今、私はプロのプログラマーとして戻ってきており、自分が何をしているのかをより深く理解することで、より良く、より速くなると信じています。TDDの練習はまだ若い雄牛だったときよりも少し遅いかもしれません(そして何もテストしていません) )。
要約:アジャイルメソッド(XP)を使用してコードブロックを克服し、単純化してリファクタリングし、本能的になるように練習します。それは私のために働いた。他の人に一般化できるかどうかはわかりません。
スキルの習得レベルに関しては、テクノロジーを変更するたびに(新しい言語、新しいフレームワークなどを学ぶ)、ペースが落ちる段階を経ることを受け入れることをほとんど学びました。これは正常であり、最終的にはそれを克服します。優れた方法論と汎用プログラミングスキルでそれを補うこともできますが、それほど問題にはなりません。