あなたが本当に遅いかどうかについて質問する人々はすべて愚かです。品質を犠牲にすることなく、より高速なプログラマーになることは、すでにどれだけ遅くても速くても常に良い目標です。これがプログラマーとしての私の一番の目標であり、決して終わらない。私は常に、品質を犠牲にすることなく、より速くなるように努めています。それに夢中です。最後にいくつかの実験的なアイデアとともに、これまでのところ私にとって有用だったものを有用性の順に紹介します。
1)決して学習を止めないでください:プログラミングと一般的なコンピューターの使用についてできることをすべて学んでください。自分が苦手な分野を見つけて学びましょう。たとえあなたの仕事やC#とはまったく関係がないように見えても、探している場合は、自分のやることにそれを適用する方法を見つけることが多いことを保証します。学習は経験にも関係しているので、本を読むだけでなく、試してスキルを伸ばしてください。Windowsの使用に慣れている場合は、Unixを試すか、その逆を試してください。通常IDEを使用する場合は、コマンドラインツールとテキストエディターを使用します。聞いたことのないツールや技術について聞いたり、あまり知らない場合は、先へ進む誘惑に屈しないでください。調べる!枠を超えて考え、他の人が非実用的であると言う実験的な新技術を学ぶことを恐れないでください。
2)プロジェクトを分割する:プロジェクトをミニプロジェクトに分割してください。毎日、またはせいぜい数日ごとに1回、新しいリリースを実行してください。「自分がリリースできる機能の最小量はどのくらいですか、それでもユーザーに役立つ何かをリリースします。」これは、あなたがそれを行うことで学ぶスキルです。マネージャーにこれを許可するよう説得する必要があるかもしれませんが、通常、マネージャーはすぐに結果に満足します。これを行うことで、機能に不可欠だと思ったものが、実際に後で開発できる追加機能であることに気づき始めます。これにより、管理者は、作業中の機能に関連するすべての機能ではなく、最も重要な機能のみに優先順位を付けることができます。これにより、頭をはっきりさせて集中することで、より速く考えることができます。これにより、合法的にプログラムが高速化されます。あなたのマネージャー、または少なくともあなたのマネージャーのマネージャーは、あなたがより多くのリリースをリリースしているので、あなたが実際よりもさらに速くプログラミングしていることに気付くでしょう。これのもう一つの大きな利点は、リリースが完了するまでにかかる時間を見積もるのがはるかに上手になることであり、あなたのマネージャーはあなたを愛しています。すでに多くの自動テストを行っているので、安定した頻繁なリリースを実行しても問題はありません。ただし、自動ビルドシステムを強化する必要がある場合があります。Martin Fowlerシリーズの連続配信の本を読むことを強くお勧めします。これは読みにくいものであり、非常に反復的ですが、それでも非常に役立ちます。また、マネージャーは、より多くのリリースをリリースしているため、実際よりもさらに高速にプログラミングしていることに気付く可能性があります。これのもう1つの大きな利点は、リリースが完了するまでにかかる時間の見積もりがはるかに上手くなり、マネージャーがこれを気に入ってくれることです。すでに多くの自動テストを行っているので、安定した頻繁なリリースを実行しても問題はありません。ただし、自動ビルドシステムを強化する必要がある場合があります。Martin Fowlerシリーズの連続配信の本を読むことを強くお勧めします。これは読みにくいものであり、非常に反復的ですが、それでも非常に役立ちます。また、マネージャーは、より多くのリリースをリリースしているため、実際よりもさらに高速にプログラミングしていることに気付く可能性があります。これのもう一つの大きな利点は、リリースが完了するまでにかかる時間を見積もるのがはるかに上手になることであり、あなたのマネージャーはあなたを愛しています。すでに多くの自動テストを行っているので、安定した頻繁なリリースを実行しても問題はありません。ただし、自動ビルドシステムを強化する必要がある場合があります。Martin Fowlerシリーズの連続配信の本を読むことを強くお勧めします。これは読みにくいものであり、非常に反復的ですが、それでも非常に役立ちます。そしてあなたのマネージャーはこのためにあなたを愛します。すでに多くの自動テストを行っているので、安定した頻繁なリリースを実行しても問題はありません。ただし、自動ビルドシステムを強化する必要がある場合があります。Martin Fowlerシリーズの連続配信の本を読むことを強くお勧めします。これは読みにくいものであり、非常に反復的ですが、それでも非常に役立ちます。そして、あなたのマネージャーはこのためにあなたを愛します。すでに多くの自動テストを行っているので、安定した頻繁なリリースを実行しても問題はありません。ただし、自動ビルドシステムを強化する必要がある場合があります。Martin Fowlerシリーズの連続配信の本を読むことを強くお勧めします。これは読みにくいものであり、非常に反復的ですが、それでも非常に役立ちます。
3)pomodoroテクニックを使用して、うまくいかないものを適応/変更します。これをこのリストの2番目の数字と組み合わせると、生産性が大幅に向上します。
4)Vimを学ぶ。ViEmuを介してVisual Studio内で、またはプラグインを介してEclipse内から、またはEmacs内からこれらのコマンドを使用しても、生産性が向上します。Vimを習得する最善の方法は、Vimを使い始めて、マスターするまでは(決して無効にしたり、古いツールに戻って)しないことです。最初は痛みを伴いますが、決して後戻りしたくはありません。これによって速度が大幅に向上することはないと言う人もいます。しかし、特にコードの読み取りと変更が私たちの仕事である場合、高速化は高速化され、私はこれで時間を大幅に節約できることに気付きました。
5)この最後のものは、良いアイデアかどうか確信がないので必ずしも推奨されません。実際にあなたの生産性を低下させるかもしれませんが、とにかくそれをやり通します。より多くの受け入れテストを行い、単体テストを少なくするか、少なくとも受け入れテストを行うことをお勧めします。SpecFlowで成功しましたが、もっと良いものがあると思います。仕様を書くことは非常に技術的なこともあるので、マネージャー/顧客に最初に大まかな変更を行う大まかなドラフト版を書いてもらうか、すべてを自分で書いて読んでOKにすることができます。これは、このリストの2番目に役立ちます。また、受け入れテストはより実用的であり、単体テストよりも少ないコードで済みます。これは、それらがそれらを置き換えることを意味するものではなく、さまざまな目的のためのさまざまなツールです。
6)これはさらに実験的で物議を醸すものです。私は実際に自分でこれを行っていないので、正確に推奨することはできません。JetBrainsのメタプログラミングシステムを学び、使用します。これを使用して、マネージャー/顧客が目的のソフトウェアを作成するために使用するツールを作成します。これを使用して、マネージャー/顧客が非常に簡単で複雑でない方法で動作を指定するために使用するツールを作成できる場合、ユニットおよび受け入れテストの実行を停止できる場合もあります。アイデアは、プログラマを取り除くことではありません。プログラマーは、(ツールではなく人が)必要な機能を簡単に作成できない場合、顧客/マネージャーが使用するこれらのツールに新しい機能を追加する必要があります。私は、MPSまたはそれに類似した他のツールのいずれかが将来の道であると信じています。