「より高速な」プログラマになるにはどうすればいいですか?


142

私の最後の仕事の評価には、ただ一つの弱点が含まれていました:適時性。私はこれを改善するためにできることをすでに知っていますが、私が探しているのはさらにいくつかです。

品質を犠牲にすることなく出力の速度を上げるために何をするかについてのヒントやアドバイスはありますか?

タイムラインをどのように推定し、それに固執しますか?より短い期間でより多くのことを成し遂げるために何をしますか?

フィードバックは大歓迎です、ありがとう、


96
そうすることで、職場でのSOの時間を短縮できます。
サンジャシント

52
あなたがこれを読んでいるなら、それは既に手遅れだ

32
「太ったプログラマーになる方法」を読みました。laught私を作った
marcgg

13
フォローアップの質問をします。「より速いプログラマー」になりたいというあなた自身のパフォーマンスの低さの結果(別名、スキルを磨く必要があり、集中力と注意散漫(SOなど)を排除する必要があるなど)、または開発からの貧弱な計画ですか立場(別名、あなたは、正気な人なら誰でも1ヶ月かかると知っていた何かをするために1週間与えられた)。各アイテムには非常に異なるソリューションがあります。

3
単一の正しい答えはあり得ないので、コミュニティWikiの質問にするか、質問を閉じてください。
ドナルドフェローズ

回答:


190

コンピューターの電源を切ります。鉛筆と紙をつかみます。デザインをスケッチします。同僚と一緒にレビューしてください。次に、コードを記述します。


9
または、コンピューターの電源を入れたまま、MS Visioを開くこともできます
sshow

208
鉛筆と紙またはホワイトボードは、私が使用したほとんどのアプリケーションよりも高速です。
トーマスオーエンズ

24
紙の上でそれを行うことは心を集中させます。

100
なぜvisioのコメントにダウン投票できないのですか?visioを使用しないことは、開発をスピードアップする特定の方法です!

52
うーん... Visio。「デザインドキュメントでVisioを使用する」ように求められるたびに、まずそれを紙にスケッチし、その後2日間をかけてVisioのすべての行を修正します。
ロバートフレイザー

149

いくつかのアイデア...

  • 金メッキを避ける-あなたに求められていることだけを行います(要件に関して)
  • ビジネス要件を理解し、最初から正しく実行する
  • 環境とツールを完全に理解する
  • 素晴らしいタイピストになり、マウスの代わりにキーボードショートカットを使用する
  • 反復的なアプローチを取り、健全性チェックを組み込んで、正しい道を進んでいることを確認してください
  • 車輪を再発明しないで、過去の仕事と他の人の仕事を再利用することを検討してください
  • 気を散らすものを排除し、メールをチェックし続けたり、外を見たり、同僚と話したりしないでください。
  • 自分で過労しないでください-休憩が必要なときを認識してください

7
車輪を再発明しないための+1。再利用可能なコードを作成する方法を学びます。このコードは、別のコードにプラグインし、わずかな書き直しだけで動作します。(例:ハードコーディングの代わりにパラメーターを使用する関数)

34
「金メッキを避ける」ための+1-これは、私の完璧主義者/肛門保持傾向のために、あまりにも多くの期限を逃してしまった原因です。
ダイナ

7
入力-重要なポイント。私は...と入力し学んでいない人会うコーダーの数で常にびっくり
水田

2
気晴らしを排除する+1。私が見るように、彼らは主要な時間を食べる人です。

2
(プロジェクトの計画に関するマクロ改善の代わりに)マイクロ改善のヒントについては+1。

132

「より速い」プログラマーになりたいというあなた自身の欲求は称賛に値します。ただし、時間通りに納品しないということは、時間がかかるということではなく、プロジェクトの計画が不十分だったことを意味します。「より速い」プログラマーになっても助けにはなりません。期限を早く過ぎてしまうということです。

あなた(およびあなたのチーム)は、次のいずれかのミス(またはそれらすべて)を行っています。

  • 行う必要のある作業を過小評価する。
  • 計画中に大きな要件またはアーキテクチャの一部が欠落している。
  • 仕事の見積もりをカレンダーの見積もりと混同し、会議/電話/その他のオーバーヘッドなどを考慮しない;

上記の3つのいずれかに対処する方法は複数あります。しかし、それらのいずれかを改善する前に、物事がそのように進んでいる理由を知る必要があります。最後の2つまたは3つのプロジェクトの推定値と実際にかかった時間について事後分析を行い、余分な時間がどこに行ったかを把握します。

繰り返しますが、コードを書くのが遅くても、その事実を説明するために適切に計画していれば、期限を逃すことはありません


47
一部の開発者は本当に遅すぎます。問題になる可能性があります。

12
はい、これは問題になる可能性がありますが、個人的な問題です。プロジェクトやチームの問題になることはありません。言い換えれば、それは自分のキャリアに影響を与える可能性がありますが、プロジェクトのスケジュールに影響を与えるべきではありません。
フランシペノフ

12
「時間通りに納品しないということは、時間がかかるということではなく、プロジェクトの計画が不十分だったことを意味します」-これは無効な引数のテキストボックスの説明です。あなたが時間通りに配達しないかもしれない他の多くの理由があります、その1つはあなたが遅いからであるかもしれません。

15
@flesh-もしあなたがあなたが遅いことを知っているなら、なぜあなたはその事実を説明するためにあなたのスケジュールを計画しませんか?つまり、Usain Boltほど速く走れないことがわかっている場合、9.7秒で100m走ることを計画していますか?
フランシペノフ

5
@Kibbee-この状況では、機能をカットします。できないとわかっていて、奇跡を期待している特定の時間に特定の仕事をすることを約束することはできません。
フランシペノフ

89

本当に、あなたの編集者を本当に学んでください。IDEを使用する場合は、IDEが提供するすべての機能を使用していることを確認してください。選択したエディターのキーボードショートカットを学ぶための虎の巻を入手してください。シェルを使用している場合、一般的に使用されるディレクトリのショートカットを設定します


3
これは確かに、時には劇的に生産性を向上させることができます
sshow

6
実際のコードの記述は、開発者の作業の一部にすぎません。IDEを完璧に学習するために時間を費やすことは、ポイントの最適化です。そして、あなたは彼らが最適化について言うことを知っていますよね?-「最初に測定してから、ボトルネックを最適化する」。
フランシペノフ

1
これはまったく見当たりません。入力時間を50%短縮すると、1日でどれくらいの時間が節約できますか?私の経験では、実際にコードを書くのに比べて、コードについて考えたり、テストしたり、評価したり、少し修正したりするなど、ほとんどの時間を費やしています。

4
IDEをナビゲートするのは、何も考えずに行うことです。他のすべての小さな灰色のボタンの隣にある何かまたは他の小さな灰色のボタンに移動するなど、意識的な努力を必要とするものはすべて、思考を中断することによってあなたを遅くします。ctrl-nを指先で動かさずに動かすことは、大きな成功です。
ポールマクミラン

5
同じ行に沿って:一般的な「ホット」キーを学びます。たとえば、多くのWindowsプログラムで...コピー:Ctrl + cカット:Ctrl + x(「x」は開いたハサミのペアのように見えます)貼り付け:Ctrl + v(上記の「c」および「x」の隣)行の先頭に移動:ホーム行の末尾に移動:終了単語(文字ではなく)でカーソルを移動:[Shift] + Ctrl +左または右ドキュメントの先頭に移動:Ctrl + Homeドキュメントの末尾に移動:Ctrl + Endなど

38

「品質を犠牲にすることなく、出力の速度を上げるために何をするかについてのヒントやアドバイスはありますか?」

多くの人は、(a)シンプル、(b)信頼性、(c)正しいものを犠牲にして「究極の」品質を目指して努力しています。

開発をスピードアップするための最も重要な方法は、できる限り絶対にシンプルになるように、作業を単純化することです。

時間通りに配達することに問題があるほとんどの人々は、あまりにも多くを配達しています。そして、与えられた理由はしばしばばかげています。多くの場合、実際の要件ではなく、単に認識された要件です。

多くの人が顧客が「期待すること」を教えてくれると聞きました。これは悪いポリシーです。

最も簡単なものを作成します。顧客がさらに必要な場合は、さらに構築します。しかし、できるだけ簡単なものを最初に構築してください。


「多くの人は、(a)シンプル、(b)信頼性、(c)正しいものを犠牲にして「究極の」品質を目指して努力しています。」あなたはそれでそれを残すことができたかもしれません、そして私はそれに投票したでしょう。
corymathews

「単純化、単純化。」〜ヘンリー・デイヴィッド・ソロー

2
うん...これは時期尚早な抽象化も意味します。実装が1つしかない場合は、インターフェイスにしないでください。
ロバートフレイザー

3
私のお気に入りの引用符のうちの1つは、「できるだけ簡単なものを作るが、ないより単純な」この状況で適切ではありません〜言い換え、アルバート・アインシュタイン
ネーミ

多くのプログラマでさえも適切に取得できないものを単純に保つことです。彼らは「早すぎる最適化がすべての悪の根源」トラップに簡単に陥ります。通常、最も単純なプログラムは最速または最高品質のプログラムです。

32

コードを完璧に磨くのを避け、機能させるだけです。それがビジネスの期待です。

しかし、多くの場合、速度を上げることは品質を犠牲にすることを意味します。


10
私は「それを機能させる」ことを提案します、そして、時間がそれを完成させるために歩き回るのを許すなら!
プリーツ

28
-1:品質を犠牲にする理由はありません。機能はいつでも犠牲にすることができます。
S.Lott

6
私はそれが繰り返し起こるのを見てきました。開発者は、特定の機能の最後の1%にハングアップし、残りの機能を完了しようとすると追いつき、遅れを取ります。最初にあなたに期待されていることを完了してから、戻ってそれを磨いてください。

3
多くの場合、品質の向上は速度の向上を意味します。そもそも正しく動作するように少し時間をかけると、テストとデバッグの時間を節約できます。
デビッドソーンリー

2
ある機能にこだわっている場合は、別の機能に取り組んでください。

29

再利用-私は以前のプロジェクトから巧妙なビットを除外しようとするので、将来のベンチャーでそれらを再び使用することができます。「いつかまたこれを使うことができますか?」と自問する価値は常にあります。


最初はもっと時間がかかるかもしれませんが、長期的にはより高速なプログラミングのための完璧な心の状態。

8
+1:ただし、何かを一般化して抽象化して、別の日に再び使用できるように気をつけて...その日の締め切りに間に合わなかったか、バグの修正に要する時間を2倍にしたので... 「多分」後で時間を節約できます。
スティーブンエバーズ

2
「トリックの袋」を持つことが重要です。これが仕事の問題になっている場合、再利用可能な部分の開発に自分の時間を費やす価値があります(作業しているドメインがコードの再利用に適していると仮定します)。

24

複雑にしないでおく。

TDDを使用する場合、「赤、緑、リファクタリング」に従う必要があります。

  1. 失敗したテスト()を記述します。(多くの場合、コードにはまだ機能がありません。)
  2. 恐ろしいコーディング犯罪を犯して、テストに合格するようにします()。必要に応じてハードコードします。
  3. リファクタリング、おそらく短時間テストを中断しますが、全体的にデザインを改善します。

3
TDDを実行する場合、テストごとに赤/緑のレポートを生成して合格したかどうかを示すテストランナーがいます。

2
@Konstantin:TDDを使用したコードの作成には20%時間がかかる場合がありますが、より良いコードが得られ、長期的にはシステムが成長しても、変更の速度はほぼ同じです。TDDは、技術的な負債を回避するのに役立ちます。

3
入力はプログラミングの遅い部分ではありませんでした。TDDを使用してさらに入力する必要がある場合でも、速度が低下することはありません。テストを最初に書くと、それを実装する方法を考える前に必要なものに集中するのに役立つので、スピードアップさえするかもしれません。

1
管理者がいくつかの重要な概念を理解していない場合は、それらを説明する必要があります。たとえば、martinfowler.com / bliki / TechnicalDebt.html

3
@Konstantin、あなたが「開発」をコード文を書く行為と考えるなら、私はあなたに同意するでしょう。ただし、「開発」にパッケージング、ビルドノートの準備、展開、テスト、欠陥レポートの作成、欠陥のレビューと優先順位付け、タスクの割り当て、調査、デバッグと修正を含め、プロセスを再度開始することを検討する場合は、15分ユニットテストを作成すると、1000倍以上の日数と顧客の信頼の損失を上回ります。

22

すべての言語/ライブラリのドキュメントをコンピューターにローカルにダウンロードしてから、ネットワークケーブルを抜き、Wi-Fiをオフにします。

ここで面白くしようとしない。これは本当に助けになります!


私も同じです。

とにかく、オンラインドキュメントとトラブルシューティング検索は非常に過大評価されています。

ファイアウォールをインストールし、ほぼすべてのWebアクセスをブロックするように構成します(MSDNなどのいくつかのドメインには例外があります)
finnw

これを行うことを本当に検討しています(このコメントの証拠を十分残しているという事実)
イケ09年

そして負けた?地獄いいえ

20

Stack Overflowを長時間読みすぎていることに注意してください。「コンパイル」の言い訳は非常に長い間機能します。:)


15
コンパイラの速度に依存します。だから「解決策」は、より遅いコンパイラを見つけて、Pentium 2 w / 128MBメモリで実行することでしょうか?:
フランシペノフ

@Franci、おそらくフロッピーディスクにスワップスペースを置くことさえ。またはRAIDで2つ。

20

タスクを頻繁に切り替えることは避けてください。気晴らしやタスクの切り替えは、Mylynなどのツールを使用してタスクを管理している場合でも、1日を殺す可能性があります。

粒度(たとえば、30分)を把握し、手元のタスクに関連することだけを行います。それ以外のもの(新しいバグレポート、他の問題に関する電子メール、関係のない手続き上の問題)は、少なくとも「次のチェックポイント」まで延期されます。電子メール通知のポップアップを無効にして、あなたが吸い込まれないようにしてください。

チームに仲間がいて、物事が本当に溶けてすぐに注意を払う必要があるかどうかを知らせてくれると特に効果的です。


10分以内に電子メールへの応答を期待する上司がいる場合、これは機能しません。
finnw

これは実際に非常に重要です。合理的に可能な限り、利己的な注意をひく人の犠牲になり、元のタスクに固執しないようにしてください。さまざまな方向に引っ張られるようにすると、最終的な結果は、何かの代わりに何も達成できなくなります。
-AndyUK

14

はじめて、正しい方法でそれをしてください。そのため、開始する前にしばらく停止し、それについて考える必要がある場合は、実行してください。時間の90%で動作します。


2
+1これは本当です。「完璧」でなければならないという意味ではありません。私たち全員が間違いを犯します。しかし、最初に可能な限り最善の方法を実行すれば、それらの間違いの結果ははるかに小さくなります。

+1-良いプログラマーと悪いプログラマーの違いは速度が遅いことをどこかで読んだことを思い出すようです。違いは、優れたプログラマーがより多くのコードを保持することです。
ジェイソンベイカー

それが私のモットーです。正しい方法でそれを始めてください。仕様に従って正しく実行しなかったため、常に戻ってコードを修正しなければならないという習慣に陥らないでください。

「それを正しく行う時間がない場合、どのようにそれをやり遂げる時間があるのですか?」
アレックスファインマン

最適な方法を判断するに、実際のソフトウェアの経験が必要な場合があります。その場合、最初は正しく取得できません。

14

2
これは素晴らしいボーナスです...しかし、全体的に大きな影響を与えるとは思いません。コードの入力は、おそらく最も時間のかからない部分です。(はい、私はリンクをたどって読みました。私は彼に同意しません。)

コーディングの制限要因が入力の速さである場合、おそらく間違った抽象化レベルで作業していることになります。
ピートカーカム

+1。素晴らしいリンク、最後まで読んだ人のための素晴らしい記事;)私はうまくタイプしていましたが、プログラマーDvorakキーボードレイアウトen.wikipedia.org/wiki/Dvorak_Simplified_Keyboardに切り替えることに触発されました(しかし、 '"と-_ Microsoft Keyboard Layout Creatorを使用してキーを入力してください)、すぐに入力できるようになると確信しています:)参照:typematrix.com/dvorak
Roman Boiko


12

練習と勤勉。

時間と労力を投入する必要があります。使用するツールに慣れ、自信を深めると、スピードと創造性がそれに続くはずです。

特定のスキルを向上させたい場合は、その上で具体的に取り組むことができる演習を設計することも役立ちます。設計段階で速度が遅い場合は、オンラインで作業するために設計上の問題を見つけてください。同じエクササイズをやり直すと、より速く完了し、スピードを練習できます。個人的には、TopCoderのアルゴリズムエクササイズが好きで、まったくのプログラミング速度を実践しています。設計上の課題もありますが、私は試していません。


プログラミングでは、練習が過小評価されることがよくあります。これは、上位5つの回答の1つでした。

ワオ。なぜ高くないのか分かりません。私はこれを実際に試したことがありません。試してみます!
デビッド

11

ゾーンについて学び、ゾーンに入る方法を学び、ゾーンにいないときを認識する方法を学びます。

「ゾーン内」にいると、非常に生産性が高くなり、コードが流出します。多くの場合、1日で2〜3日間のコーディングを完了できます。しかし、私はしばしばその場所に到達するのが難しいと感じます。私は先延ばしになり、他のもの(例えば、スタックオーバーフロー)に気を取られます。

ゾーンで自分を取得するために使用するトリックからの引用


ゾーン内にいる場合は昼食をスキップします...または遅く滞在します... MMMmmゾーン。よだれ

10

IDEとフレームワークを熟知している。小さなことごとにGoogleに頼らなければならないのは時間がかかります。


ただし、いつGoogleを使用する必要があるかを認識し、それを迅速に実行できることも重要です。


8

開発を始める前に:

  • メールボックスからログアウトする
  • IMクライアントをオフにします
  • 同僚に集中する時間を与えるよう丁寧に頼む
  • もちろん、インターネットサーフィンをやめる

中断されるたびに、思考を元に戻すのに時間がかかるため、速度が低下します。中断するたびに、中断する前の思考プロセスにリセットするには人間の心が5〜10分かかるという数字を聞きました。1回の中断あたりの時間が長いため、1日を無駄にすることはあまりありません。

当社の人々は、実際には、カレンダーの時間を遮断してから、毎日数時間空の会議室に移動しています。


7

開発IDEの詳細を学びます。ショートカットキーをご覧ください。マウスの使用を減らす方法を学びます。これにより時間を大幅に節約できることがわかりました。


7

あなたは同僚よりも遅いのですか、それともあなたの見積もりはより楽観的ですか?


7

ソフトウェアをより迅速に作成するために、実行するAPIを可能な限り学習することが最善であることがわかりました。LINQ拡張機能が実行するときにリストロジックを入力しないでください。バインディングが機能する場合などに、イベントリスナーを大量に作成しないでください。

推定に関する限り、それは経験に基づいています。推定ソフトウェアを使用して、より適切な推定値を見つけることができます。

個人的に、私は中級レベルの開発者と一緒に、彼らの最初の見積もりが何であれ、それを2倍し、2倍にします。これは、学習、会議、無駄な時間などのすべてを考慮します。より上級レベルの開発者は、見積もりよりも2倍の割合で作業する傾向があります。

多くの場合、問題はあなたの見積もりが間違っていたかどうかではありません。すべての正しいことについてあなたの見積りは説明しましたか?コーディング作業の面で、またはカレンダーの時間の面で、見積もりとタイムラインを提供していますか?1日のすべての時間と、そのどれだけが実際の生産的なコーディング対ミーティング、学習、デバッグなどかを考えてください。


3
「... 2倍してから2倍にします。」あなたが時間を節約に興味があるので、私はあなたが...使用することができるかもしれないことをあなたのための数学の先端を持っている

笑-あなたの言っていることは知っています。しかし、「4で乗算」と言うのとは対照的に、気付かれずにこのスリップにしばしば驚かされるでしょう。

7

暗示される可能性のある2つのことですが、ここでの答えの中にはまだ生産性を向上させるものがありません。

  • ある種のビルドおよび展開スクリプトを使用します。app-serverのコンパイル、デプロイ、再起動などは時間やフォーカスを無駄にせず、ワンクリックで行う必要があります。

  • 何らかのバージョン管理を行います。変更をロールバックできずにコーディングしなければならないことは、卵の上を歩こうとするようなものです


7

いくつかのアイデアが思い浮かびます:

  1. 見積もりについて他の意見を得る-「この時間枠でこの種の機能を実現できると思いますか?」などの質問ができる開発者はいますか?誰かがあなたが見積もりをする際に見逃したものの束に気付くかもしれないので、他の人の入力がいくつかのケースで正確さを助けるかもしれないという考えです。

  2. 見積りスキルを磨く-見積りの進捗状況とその理由を追跡し始めます。他の作業項目が期限に間に合わないのですか?何かがどれほど複雑かを常に過小評価していますか?実用的ではないときにタイムライン全体を提供していますか?たとえば、プロトタイプを作成するだけで数週間かかり、他に何をすべきかを再評価する必要があるほど質問が曖昧です?これを行うと、そのスキルを構築するのに最も役立ちます。何かを言うのにx時間かかると、何度も何度も繰り返して行っているので、自信を持てます。これを述べる別の方法は、単に練習、練習、練習です。

おそらくすでにこれらを検討していることを認めましたが、これらのアイデアを検討していないかもしれない他の人々のためにこれを述べる価値があると思いました。


7
  1. テクノロジーの内と外を知る。
  2. やめる!考えて!行け!
  3. 発生する可能性のあるものは何でも設計しますが、実際に要求されるもののみを実装します。
  4. KISS-シンプルにバカにする
  5. 複雑になりすぎている場合は、おそらく十分に考えられていません。(2と4に戻ります)
  6. 5で立ち往生しないでください。多くの場合、最初からやり直すとお金がかかります(2と4に戻ります)。
  7. 1に戻ります。

7

ここのキーワードは「適時性」だと思います。彼らはあなたが遅すぎると言ったのではなく、あなたはタイムリーではなかったと言っていました。

プロジェクト管理では、マネージャが作業項目が正確に完了する時期を推定できることが重要です。あなたの努力がタイムリーであるとみなされなかった主な理由は、あなたが頻繁に予定通りに配達されず、予定よりもずっと遅く配達されたアイテムを持っているからだと思います。

適時性を向上させるために、スキル、経験、およびドメインを考慮して、特定のワークアイテムを完了するのにかかる時間を理解するためにより多くの時間を費やすことができます。これにより、より適切な見積もりをプロジェクトマネージャーに提供できます。ここで重要なのは「より良い」...すべてをファッジファクターでパディングすることで、より頻繁に時間通りに配信できますが、実際に努力したいのはより正確な見積もりです。

これが実際に問題であるかどうかを確認するために、上司と話し合います。そうしないと、プログラミングの速度が2倍になり、以前の半分の時間で期待できるものになりますが、推定値には依然として同じ誤差要因があるため、適時性が批判されます。


「...スキル、経験、およびドメインを考慮して、特定のワークアイテムを完了するのにかかる時間を理解するためにより多くの時間を費やしてください。」->正しい、そしてこれはスコープを整え、さらに時間を節約するのにも役立ちます。
ジムG.

また、マネージャーが周囲の人々によく見えるようにします-また、マーケティングなどのサポート資料をプロジェクトと同期して完了することができます。
トムレイズ

7

安定して、安定してください。

わずかな機能を実装するものを構築し、エンドツーエンドで機能することを確認します。その後、新しい機能を追加しても機能し続けます。ええ、これは部分的にTDDのプラクティスですが、TDDを行わなくても理にかなっています。

根拠は、私が安定していたことがなかったコードの2週間で誰かを見てきたすべての時間は、それは常にして、別の2週間かかることである得ることが安定しました。

あなたがいる場合に滞在安定し、あなたはその不確実性を削除し、また必要に応じて期限の近くに自分自身のスコープへの道を下に与えます。

明らかな反論は、最終的なコードを安定化するために余分な作業を行うため、これを行うには1回だけ書くよりも時間がかかるということです。私はこれを一瞬買わない。あなたは、コード持っている場合は動作しますが、あなたは5本のライン、そして何かの区切りを変更する、あなたが知っているまさにブレークが起こっていなければならないところ。

まったく機能ないコードが10,000行あり、ブレークを見つけなければならない場合、大量のコードを検索する必要があります。

一貫して安定したFTWであるシステム上の小さな増分の変更。ゆっくり行くと速くなります。


7

私にとって、優れた生産性を得るということは、あなたが何を達成しようとしていて、どのようにそこに到達するかについて明確なアイデアを持つことです。


1
ノルウェーの田舎を走る30分間の自転車に乗ることも、心をきれいにし、創造的なプロセスを進めるのに非常に優れています。

6

ほぼすべての答えは、ここや他の多くの場所で死んでいると言われています。または、少なくとも私はそれを死ぬまで聞いたことがあります。IDEを学び、より速く入力することを学び、フレームワークを使い、コード生成を使う、などなど。もちろん、これらのことは助けになります。しかし、これらの質問をするタイプのプログラマーであり、Stack Overflowのような頻繁なサイトは、これらのことをすでに知っていました。あなたは単にここでそれらを繰り返したいと思いましたか、それともちょっと通気したいだけですか?

しかし、その状態に到達できたらどうでしょうか?これらすべての提案をマスターするということですか?それではどうなりますか?まあ。タイムラインはさらに短縮されると思います。繰り返しますが、品質の認識に戻ります。つまり、私たちのクラフトは間違いなく進歩し、数十年にわたってますます生産的になっています。しかし、この間に品質は向上しましたか(もちろん、ごく初期の年を除く)。

私の答えは簡単です。高品質のソフトウェアには時間がかかります。交換できるのは、一方だけです(品質/速度)。しかし、はい、私たちは皆知っていますが、そのトレードオフがしばしばスケールのスピードエンドで終わる程度について正直ではありません。そして、私たちはプロジェクトの早い段階でさらに大きな嘘つきです!

私はあなたがここで過失ではないと言います。問題は、品質の高いソフトウェアにどれくらい時間がかかるかについての人々の認識です。私たちは、私たちがマネージャーのタイプのタイムラインで、あるいは推測でさえも、高品質のソフトウェアを作成することができると信じるのに惑わされます。私たちは高品質のソフトウェアを製造していません。動作するソフトウェアを作成しますが、アプリケーションの特定のコーナーで高品質のフラッシュを使用することもあります。

では、これについて何ができるでしょうか?各プロジェクトへの投資を2倍または3倍にする必要があると上司に説得することはできません。私は例によってリードを言います。サイドプロジェクトとして、本当に素晴らしいソフトウェアを作成します。それにあなた自身の時間を入れて、妥協しないでください。その間、あなたはどのように進歩するかに注意を払います。予想外の時間をかけなければならなかった明らかに無関係なタスクをメモし、それを正当化できるかどうかを確認します。これを、これまでに取り組んだ他のすべてのプロジェクトと比較してください。こと残酷正直あなた自身とこの分析のすべての面で。品質の高いソフトウェアで行った余分なことは、仕事中の「実際の」プロジェクトで無視することはできますか?しかし、おそらくあなたの試みは失敗しました。その理由は何ですか?あなたは退屈になり、コア機能を完成させるために急いで行きましたか?私はまだ自分自身でこのようなことをしていないので、この考えを疑問視して終わらせる理由はありますが、実際にやってみるつもりです。投稿し続けます:)。

最後に、ほとんどの(すべてではないにしても)パフォーマンス評価はひねられており、非常に操作的です。品質と速度を100%に抑えることはできません。あなたの上司は、組織によって設定された標準に対してあなたを採点する必要があります。品質と速度のトレードオフに関する組織の標準。OrangeSoft Inc.が33%の品質と66%の速度を期待していると想像してみましょう。したがって、ユニットテストの3分の1のコードを記述している場合でも、スピードと納期の短縮でそれを補う必要がある場合は、レビューで100%近くを獲得する必要があります。(これらはかなり大ざっぱな例えですが、要点はわかります)。しかし、代わりに、ボブは非常に高速にコードを記述しますが、これはバグがあることで有名です。そのため、パフォーマンスレビューでは、品質について3/5、速度について5/5を獲得します。一方、キャロルはコードの記述をはるかに遅くしますが、生成されるバグは大幅に少なくなります。彼女は、品質で5/5、速度で3/5を獲得しています。いずれにしても、ボブとキャロルはレイズでドッキングします。従業員が満点を獲得することは可能ですか?これは公平ですか?


5

私が使用する技術は進化的プロトタイピングです

Googleで詳細を調べることができますが、必要なものをすばやく作成する必要がある場合は、それが唯一の方法です。さらに、ユーザーが気に入ったと言ったときに、完了です(ドキュメントを作成できるようになります)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.