私の最後の仕事の評価には、ただ一つの弱点が含まれていました:適時性。私はこれを改善するためにできることをすでに知っていますが、私が探しているのはさらにいくつかです。
品質を犠牲にすることなく出力の速度を上げるために何をするかについてのヒントやアドバイスはありますか?
タイムラインをどのように推定し、それに固執しますか?より短い期間でより多くのことを成し遂げるために何をしますか?
フィードバックは大歓迎です、ありがとう、
私の最後の仕事の評価には、ただ一つの弱点が含まれていました:適時性。私はこれを改善するためにできることをすでに知っていますが、私が探しているのはさらにいくつかです。
品質を犠牲にすることなく出力の速度を上げるために何をするかについてのヒントやアドバイスはありますか?
タイムラインをどのように推定し、それに固執しますか?より短い期間でより多くのことを成し遂げるために何をしますか?
フィードバックは大歓迎です、ありがとう、
回答:
いくつかのアイデア...
「より速い」プログラマーになりたいというあなた自身の欲求は称賛に値します。ただし、時間通りに納品しないということは、時間がかかるということではなく、プロジェクトの計画が不十分だったことを意味します。「より速い」プログラマーになっても助けにはなりません。期限を早く過ぎてしまうということです。
あなた(およびあなたのチーム)は、次のいずれかのミス(またはそれらすべて)を行っています。
上記の3つのいずれかに対処する方法は複数あります。しかし、それらのいずれかを改善する前に、物事がそのように進んでいる理由を知る必要があります。最後の2つまたは3つのプロジェクトの推定値と実際にかかった時間について事後分析を行い、余分な時間がどこに行ったかを把握します。
繰り返しますが、コードを書くのが遅くても、その事実を説明するために適切に計画していれば、期限を逃すことはありません。
本当に、あなたの編集者を本当に学んでください。IDEを使用する場合は、IDEが提供するすべての機能を使用していることを確認してください。選択したエディターのキーボードショートカットを学ぶための虎の巻を入手してください。シェルを使用している場合、一般的に使用されるディレクトリのショートカットを設定します
「品質を犠牲にすることなく、出力の速度を上げるために何をするかについてのヒントやアドバイスはありますか?」
多くの人は、(a)シンプル、(b)信頼性、(c)正しいものを犠牲にして「究極の」品質を目指して努力しています。
開発をスピードアップするための最も重要な方法は、できる限り絶対にシンプルになるように、作業を単純化することです。
時間通りに配達することに問題があるほとんどの人々は、あまりにも多くを配達しています。そして、与えられた理由はしばしばばかげています。多くの場合、実際の要件ではなく、単に認識された要件です。
多くの人が顧客が「期待すること」を教えてくれると聞きました。これは悪いポリシーです。
最も簡単なものを作成します。顧客がさらに必要な場合は、さらに構築します。しかし、できるだけ簡単なものを最初に構築してください。
コードを完璧に磨くのを避け、機能させるだけです。それがビジネスの期待です。
しかし、多くの場合、速度を上げることは品質を犠牲にすることを意味します。
再利用-私は以前のプロジェクトから巧妙なビットを除外しようとするので、将来のベンチャーでそれらを再び使用することができます。「いつかまたこれを使うことができますか?」と自問する価値は常にあります。
複雑にしないでおく。
TDDを使用する場合、「赤、緑、リファクタリング」に従う必要があります。
Stack Overflowを長時間読みすぎていることに注意してください。「コンパイル」の言い訳は非常に長い間機能します。:)
タスクを頻繁に切り替えることは避けてください。気晴らしやタスクの切り替えは、Mylynなどのツールを使用してタスクを管理している場合でも、1日を殺す可能性があります。
粒度(たとえば、30分)を把握し、手元のタスクに関連することだけを行います。それ以外のもの(新しいバグレポート、他の問題に関する電子メール、関係のない手続き上の問題)は、少なくとも「次のチェックポイント」まで延期されます。電子メール通知のポップアップを無効にして、あなたが吸い込まれないようにしてください。
チームに仲間がいて、物事が本当に溶けてすぐに注意を払う必要があるかどうかを知らせてくれると特に効果的です。
はじめて、正しい方法でそれをしてください。そのため、開始する前にしばらく停止し、それについて考える必要がある場合は、実行してください。時間の90%で動作します。
できるだけ早くタッチ入力することを学びます。
練習と勤勉。
時間と労力を投入する必要があります。使用するツールに慣れ、自信を深めると、スピードと創造性がそれに続くはずです。
特定のスキルを向上させたい場合は、その上で具体的に取り組むことができる演習を設計することも役立ちます。設計段階で速度が遅い場合は、オンラインで作業するために設計上の問題を見つけてください。同じエクササイズをやり直すと、より速く完了し、スピードを練習できます。個人的には、TopCoderのアルゴリズムエクササイズが好きで、まったくのプログラミング速度を実践しています。設計上の課題もありますが、私は試していません。
ゾーンについて学び、ゾーンに入る方法を学び、ゾーンにいないときを認識する方法を学びます。
「ゾーン内」にいると、非常に生産性が高くなり、コードが流出します。多くの場合、1日で2〜3日間のコーディングを完了できます。しかし、私はしばしばその場所に到達するのが難しいと感じます。私は先延ばしになり、他のもの(例えば、スタックオーバーフロー)に気を取られます。
ソフトウェアをより迅速に作成するために、実行するAPIを可能な限り学習することが最善であることがわかりました。LINQ拡張機能が実行するときにリストロジックを入力しないでください。バインディングが機能する場合などに、イベントリスナーを大量に作成しないでください。
推定に関する限り、それは経験に基づいています。推定ソフトウェアを使用して、より適切な推定値を見つけることができます。
個人的に、私は中級レベルの開発者と一緒に、彼らの最初の見積もりが何であれ、それを2倍し、2倍にします。これは、学習、会議、無駄な時間などのすべてを考慮します。より上級レベルの開発者は、見積もりよりも2倍の割合で作業する傾向があります。
多くの場合、問題はあなたの見積もりが間違っていたかどうかではありません。すべての正しいことについてあなたの見積りは説明しましたか?コーディング作業の面で、またはカレンダーの時間の面で、見積もりとタイムラインを提供していますか?1日のすべての時間と、そのどれだけが実際の生産的なコーディング対ミーティング、学習、デバッグなどかを考えてください。
いくつかのアイデアが思い浮かびます:
見積もりについて他の意見を得る-「この時間枠でこの種の機能を実現できると思いますか?」などの質問ができる開発者はいますか?誰かがあなたが見積もりをする際に見逃したものの束に気付くかもしれないので、他の人の入力がいくつかのケースで正確さを助けるかもしれないという考えです。
見積りスキルを磨く-見積りの進捗状況とその理由を追跡し始めます。他の作業項目が期限に間に合わないのですか?何かがどれほど複雑かを常に過小評価していますか?実用的ではないときにタイムライン全体を提供していますか?たとえば、プロトタイプを作成するだけで数週間かかり、他に何をすべきかを再評価する必要があるほど質問が曖昧です?これを行うと、そのスキルを構築するのに最も役立ちます。何かを言うのにx時間かかると、何度も何度も繰り返して行っているので、自信を持てます。これを述べる別の方法は、単に練習、練習、練習です。
おそらくすでにこれらを検討していることを認めましたが、これらのアイデアを検討していないかもしれない他の人々のためにこれを述べる価値があると思いました。
ここのキーワードは「適時性」だと思います。彼らはあなたが遅すぎると言ったのではなく、あなたはタイムリーではなかったと言っていました。
プロジェクト管理では、マネージャが作業項目が正確に完了する時期を推定できることが重要です。あなたの努力がタイムリーであるとみなされなかった主な理由は、あなたが頻繁に予定通りに配達されず、予定よりもずっと遅く配達されたアイテムを持っているからだと思います。
適時性を向上させるために、スキル、経験、およびドメインを考慮して、特定のワークアイテムを完了するのにかかる時間を理解するためにより多くの時間を費やすことができます。これにより、より適切な見積もりをプロジェクトマネージャーに提供できます。ここで重要なのは「より良い」...すべてをファッジファクターでパディングすることで、より頻繁に時間通りに配信できますが、実際に努力したいのはより正確な見積もりです。
これが実際に問題であるかどうかを確認するために、上司と話し合います。そうしないと、プログラミングの速度が2倍になり、以前の半分の時間で期待できるものになりますが、推定値には依然として同じ誤差要因があるため、適時性が批判されます。
安定して、安定してください。
わずかな機能を実装するものを構築し、エンドツーエンドで機能することを確認します。その後、新しい機能を追加しても機能し続けます。ええ、これは部分的にTDDのプラクティスですが、TDDを行わなくても理にかなっています。
根拠は、私が安定していたことがなかったコードの2週間で誰かを見てきたすべての時間は、それは常にして、別の2週間かかることである得ることが安定しました。
あなたがいる場合に滞在安定し、あなたはその不確実性を削除し、また必要に応じて期限の近くに自分自身のスコープへの道を下に与えます。
明らかな反論は、最終的なコードを安定化するために余分な作業を行うため、これを行うには1回だけ書くよりも時間がかかるということです。私はこれを一瞬買わない。あなたは、コード持っている場合は動作しますが、あなたは5本のライン、そして何かの区切りを変更する、あなたが知っているまさにブレークが起こっていなければならないところ。
まったく機能しないコードが10,000行あり、ブレークを見つけなければならない場合、大量のコードを検索する必要があります。
一貫して安定したFTWであるシステム上の小さな増分の変更。ゆっくり行くと速くなります。
ほぼすべての答えは、ここや他の多くの場所で死んでいると言われています。または、少なくとも私はそれを死ぬまで聞いたことがあります。IDEを学び、より速く入力することを学び、フレームワークを使い、コード生成を使う、などなど。もちろん、これらのことは助けになります。しかし、これらの質問をするタイプのプログラマーであり、Stack Overflowのような頻繁なサイトは、これらのことをすでに知っていました。あなたは単にここでそれらを繰り返したいと思いましたか、それともちょっと通気したいだけですか?
しかし、その状態に到達できたらどうでしょうか?これらすべての提案をマスターするということですか?それではどうなりますか?まあ。タイムラインはさらに短縮されると思います。繰り返しますが、品質の認識に戻ります。つまり、私たちのクラフトは間違いなく進歩し、数十年にわたってますます生産的になっています。しかし、この間に品質は向上しましたか(もちろん、ごく初期の年を除く)。
私の答えは簡単です。高品質のソフトウェアには時間がかかります。交換できるのは、一方だけです(品質/速度)。しかし、はい、私たちは皆知っていますが、そのトレードオフがしばしばスケールのスピードエンドで終わる程度について正直ではありません。そして、私たちはプロジェクトの早い段階でさらに大きな嘘つきです!
私はあなたがここで過失ではないと言います。問題は、品質の高いソフトウェアにどれくらい時間がかかるかについての人々の認識です。私たちは、私たちがマネージャーのタイプのタイムラインで、あるいは推測でさえも、高品質のソフトウェアを作成することができると信じるのに惑わされます。私たちは高品質のソフトウェアを製造していません。動作するソフトウェアを作成しますが、アプリケーションの特定のコーナーで高品質のフラッシュを使用することもあります。
では、これについて何ができるでしょうか?各プロジェクトへの投資を2倍または3倍にする必要があると上司に説得することはできません。私は例によってリードを言います。サイドプロジェクトとして、本当に素晴らしいソフトウェアを作成します。それにあなた自身の時間を入れて、妥協しないでください。その間、あなたはどのように進歩するかに注意を払います。予想外の時間をかけなければならなかった明らかに無関係なタスクをメモし、それを正当化できるかどうかを確認します。これを、これまでに取り組んだ他のすべてのプロジェクトと比較してください。こと残酷正直あなた自身とこの分析のすべての面で。品質の高いソフトウェアで行った余分なことは、仕事中の「実際の」プロジェクトで無視することはできますか?しかし、おそらくあなたの試みは失敗しました。その理由は何ですか?あなたは退屈になり、コア機能を完成させるために急いで行きましたか?私はまだ自分自身でこのようなことをしていないので、この考えを疑問視して終わらせる理由はありますが、実際にやってみるつもりです。投稿し続けます:)。
最後に、ほとんどの(すべてではないにしても)パフォーマンス評価はひねられており、非常に操作的です。品質と速度を100%に抑えることはできません。あなたの上司は、組織によって設定された標準に対してあなたを採点する必要があります。品質と速度のトレードオフに関する組織の標準。OrangeSoft Inc.が33%の品質と66%の速度を期待していると想像してみましょう。したがって、ユニットテストの3分の1のコードを記述している場合でも、スピードと納期の短縮でそれを補う必要がある場合は、レビューで100%近くを獲得する必要があります。(これらはかなり大ざっぱな例えですが、要点はわかります)。しかし、代わりに、ボブは非常に高速にコードを記述しますが、これはバグがあることで有名です。そのため、パフォーマンスレビューでは、品質について3/5、速度について5/5を獲得します。一方、キャロルはコードの記述をはるかに遅くしますが、生成されるバグは大幅に少なくなります。彼女は、品質で5/5、速度で3/5を獲得しています。いずれにしても、ボブとキャロルはレイズでドッキングします。従業員が満点を獲得することは可能ですか?これは公平ですか?
私が使用する技術は進化的プロトタイピングです
Googleで詳細を調べることができますが、必要なものをすばやく作成する必要がある場合は、それが唯一の方法です。さらに、ユーザーが気に入ったと言ったときに、完了です(ドキュメントを作成できるようになります)。