ソフトウェア業界で蔓延している最悪の偽りの経済(つまり、最終的に彼らが節約するよりも多くの費用を節約する方法)は何であり、どのようにそれらと戦うのですか?
つまり、「すぐに実行するだけです。後でリファクタリングします」。第一に、私がこの行動に従事している誰かが実際に後でリファクタリングするのを見たことがないためです。 2つ目は、良い方法ではなく迅速に物事を行うと、将来の機能を追加したり、将来のバグを解決したりすることが難しくなるため、長期的には時間を失うことになります。
悲しいことに、多くの人はまだそれを考えていますsaves開発者がサイクルを実行して何かを高速に実行させます。それは可能だと思いますが、実際にはまだ見ていません。
採用2代わりに安価な開発者1本当に素晴らしい。 (同じ価格)
私の例は NimChimpskyの例 の完全な反対です、すなわち:
既製で購入できるものを社内で開発しようとしています。
通常、これは実際に市場をチェックして、問題を解決する何かがすでに存在しているかどうかを確認できないために発生します。これは、研究を行う前にコーディングに「飛び込む」ことを好む開発者と、その時間を考慮に入れられないプロジェクトマネージャー、つまりお金によって悪化する可能性があります。
私の分野で見た最も一般的な例の1つであるWeb開発は、自社でCMSシステムを開発しようとする企業です。これらは必ず小さなものから始まりますが、機能が追加されるとすぐに肥大化し、制御不能になりますが、無料の製品やフレームワークはたくさんありますが、それらの方がはるかに適しています。
プロジェクト管理専用リソースなし
数人のプログラマーが契約しているときに何度か経験したことがありますが、すでに厳しい日課の仕事をしている人がプロジェクトを管理しているはずですが、実際には他のタスクが多すぎてプロジェクトが勢いを増すことはありませんでした。プログラマーは「プロトタイプ」などを作成しましたが、リードがなければ、その多くは忙しく見えるように輪になって動いていました。
新しいプログラマのための悪い機器
私はかつて、ポリシーが「新しいプログラマーは、価値があると証明するまで、小さな画面の非常に古いPCで作業しなければならない」という方針の会社を経験しました。そのような政策がネガティブな選択を引き起こし、常により健全な環境で働く選択を常に持っている善良な人々を追い払ったことは驚くに当たらない。
プログラマーにテスター/テクニカルライターを兼任させることで、コストを節約できます
テスター/テクニカルライターの仕事にプログラマーの給料を払っている場合、お金を無駄にしており、その仕事に専念している人よりも質の低い仕事をしている可能性があります。また、プログラマーが厳しい締め切りに直面している場合、テストやドキュメントは破棄されたり、それを実行するために一生懸命行われたりする可能性が非常に高くなります。
ところで、開発者は常に厳しい期限に直面しています。
製品開発に関係のないコードの調査/読み取り/作成は、リソースの浪費です。
一部のプログラマーやマネージャーさえもそれを信じています。通常、彼らは頭の中の知識に基づいてプログラミングを行い、問題に直面したときに調査を行い、答えを探します。彼らは継続的に知識を積極的に向上させません。私の意見では、常に最新の状態に保つ必要があり、収集した知識は、既存および将来の問題を解決するのに役立ちます。もちろん、そうするためにあなたは時間を賢く割り当てなければなりません。
これも ダンの答え に似ています。一部のマネージャは、開発者が市場に存在する既存の製品を調査することなく、要件に応じて製品にすばやく飛び込み、開発することを望んでいます。
多くの場合、オフショアリングにはより多くの費用がかかります。私の会社では、新しい従業員枠を獲得するのは非常に難しく、外部委託を強く求められています。また、現場での請負業者の確保も困難です。彼らが維持することになっている陸上と陸上の3:1の比率があります。その結果、多くのチームはオフショアで12名を雇い、ほとんど使用せず、オンサイトで4つの請負業者を雇うことができます。
長いフィードバックループ!
それは誰にでも起こります。あなたはあなたが素晴らしいと思う何かを構築します、そしてそれはあなたが間違っていたことが判明します。それは問題ではありません。問題は、停止する必要があることを知る前に、構築に費やす時間です。
高レベルでは、長いリリースサイクルでこの問題が発生します。フィードバックなしで1年間構築した場合、1年間賭けることになります。解放する頻度が高いほど、ギャンブルは小さくなり、ギャンブルは上手になります。
しかし、それは最低レベルでも起こります。開発者としては、頻繁なコードレビュー(または、ペアプログラミング)が本当に好きです。誰かが「ねえ、もっと簡単な方法がある!」同じ理由で、ユニットテストを迅速かつ頻繁に実行したいので、バグが大きくなる前にバグをキャッチして削除できます。
短いフィードバックループの重要性に気づき始めると、どこにでもそれが表示されます。たとえば、 OODAループ の軍事概念。
2台目のモニターは高すぎるため、単一画面のワークステーションを提供します。毎年1時間の作業しか節約できない場合でも、セカンドスクリーンは投資に役立ちます。確かに、私のおかげで多くの時間を節約できました。
マルチモニターのセットアップにより、開発タスクだけでなく、ほとんどすべてのタスクをより効率的にすることができます。 2つのモニターよりも3つのモニターの方が優れていますが、画面が増えるたびにその影響は目立ちません。
マルチモニターのセットアップ:
私自身の逸話ではありませんが、デベロッパーに無料のコーヒーを提供するのをやめ、代わりに彼らがコーヒーを入手したいときはいつでも最寄りのコーヒーショップに自由に歩いて行けると言った店を聞いたことがあります(10分程度)片道ずつ)、いくつか購入します。
ほとんど偽りの経済の定義。
最も安いハードウェアコンサルタントに与えられた場合、コンサルタントの費用は150 $ /時間より高くなります。
より良いハードウェアを視野に入れると、少なくとも1日に30分の仕事の効率が上がる可能性があります。つまり、30分* 1か月あたり20日間の作業= 600分/月= 10時間/月> 1日を超えるジョブ= 10時間* 150ドル/時間= 1500ドル
彼/彼女が1500 $のコンピュータを持っていれば、コンサルタントは今より効率的に仕事をしませんか?それはコンサルタントをイライラさせないでしょうか?
今問題は2つの予算があるようです。1つはコンサルタント用で、もう1つはPCハードウェア用です。
作業の月数は計画の日数を節約します
(計画に十分な時間を費やしていない)
私が最も一般的に疑うのは、マネージャーが開発者に仕事を効率的に行うために必要なツールを単に提供していないことです。
基本的に、 Joel Test の9をポイントします。
"問題に(十分な)ボディを投げます" 残念ながら、一部の場所ではまだ使用できます。 ブルックの法則 は The Mythical Man-Month からこれに対抗しますが、学習するには経験が必要な場合もありますこのレッスン。経営陣が人を追加し、それに代金を支払う必要がないという誤った発言を信じる可能性があるため、通常、これは私の力で止めることはできません。
毎日のミーティング:
(meeting duration in hours) x (Y team members) x (average salary per hour) = ...
内部で開発するのではなく、既製のソフトウェアを購入する。
人事と生物学研究所の両方に焦点を当てた起業規模管理システムの経験があります。
既製のソリューションのコストは5万〜10万ポンドで、ビジネス要件を満たすためにさらに開発とカスタマイズが必要でした。
内部で開発されたソリューションの開発には(<6)か月かかり、他のプロジェクトも並行して行われ、すでに採用されている開発者を利用していました。
私は、社内で開発されたLIMS(ラボ情報管理システム)が稼働している公的部門から、すぐに使えるソリューションの実装に1年以上かかり、どこも完全ではない大規模な国際的製薬会社に行きました。
(すでに雇用されている開発者が他のプロジェクトに並行して取り組んでいる6か月。つまり、1万人。これには、既製のソリューションに関連するサポートコストは含まれていません)。主なポイントは、内部で開発されたシステムが実際に使用されていたことです!したがって、それに関連する追加のコストメリットがあります。これは計算できません。
私は基本的なウェブサイトなどについて同意します。ただし、大規模で複雑なシステムの場合、および社内でのスキルをすでに持っている場合は、私は自分で構築するを使用します。
オープンソースの代替品がより優れていて無料である場合に、高価な既製の製品を購入する。
いくつの企業がgitを使用していますか?いくつ企業が気難しい企業バージョン管理を使用していますか?
ええ、それはプログラマーを見つけてコードを維持することを容易にしますが、彼らを雇う最新の流行語を学ぶだけではないgoodプログラマーを見つけることを難しくします。ええ、それは個々のビットコードを理解しやすくしますが、2x4と同じくらい厳格にし、理解する必要があるコードの量を増やします。ええ、それは巨大な企業によって支えられていますが、巨大な企業はゆっくりと官僚的に革新していると言いました。
悪いプロジェクトマネージャー/チームリーダー。
一人の無能な人は人々のグループの仕事を台無しにする力を持っているので。結局のところ、プロジェクトは上層部の管理者(プロジェクト/チームリーダー)の決定なしに、はるかに優れたものになります。
線量は「ただすぐにやる、後でリファクタリングする」と決める。
ユーザー要件がありません
ソフトウェア製品を設計する上で重要かつ困難なステップは、顧客が実際にそれを実行したいことを決定することです。
信じられないかもしれませんが、この部分が欠落しているか、古くなっていることがあります。コストがかかるのは、エンドユーザーが要求したことのない機能を作成することです。
生産性は創造性よりも価値がある
ソフトウェア開発に関しては、一般に創造性を測定することは困難であり、ほとんどの場合、観察することも、測定を気にすることも不可能です。一方、生産性は測定でき(多くの場合不十分)、観察できます。
その結果、(より多くのコード行を書く|コードへの書き込みを速く|質問への応答でテクノバブルをより速く読み込める|目に見える生産性が向上する)開発者は、(同じ問題を解決するために使用するコード行を少なくする)開発者よりも高く評価される傾向があります。コードの記述には時間がかかりますが、|より信頼性の高い製品を作成します|問題をわかりやすく、わかりやすく、英語で|創造的に問題を解決するために十分に理解できます)。
以下のすべては、不適切に使用したり、使用しなかったりすると悪い場合があります
外部ソフトウェアと社内ソフトウェア
ISO 9001コンプライアンス(経済-製品の品質が低下した場合のMSS損失リスクの軽減)
開発/ QAアウトソーシング
開発/ビルド/リリース/サポート手順
請求できない配信マネージャーが多すぎます。
数年前、私たちの会社ではいくつかの大きな予算プロジェクトが進行中で、採用はピークに達していました。当時、私たちの会社では、あまりにも多くのデリバリーマネージャー(多くはIT部門以外でした!)を雇い、コーダー/テスターはほとんどいませんでした。マネージャーとプログラマの比率は文字通り1:2でした。その後、これらのプロジェクトが完了した後、ベンチに座って何もせずに、これらのマネージャーの多く(実際には怠け者でした)がいる状況になりました。評価サイクルが1回あり、全員がほとんど/まったく昇給できなかったため(勤勉なプログラマーでもため息)、会社が誰かを解雇する必要はありません!幸いなことに、会社はこの状況を認識し、今年の第1四半期にRIGHTSIZINGを行いました!
インターネットアクセスが制限されている、またはアクセスできない
従業員が明らかにインターネットを使用してFacebookゲームをプレイするからです。Stackoverflowに関する技術的な質問への回答を調べすぎないからです。
実際のところ、インターネットは生産性を大幅に向上させます。本当の危険なサイトには何らかのサイトフィルターを使用するのが適切ですが、ビジュアルスタジオのreadmeファイルをブロックしたり、テルフォードの地方自治体のページをブロックしたりすると、問題が発生します。 「セックスツーリズム」
プロファイリング前の最適化(別名早期最適化)
誰かが、より速いという理由で、メンテナンスと可読性を不必要に複雑にする巧妙なソリューションに手を伸ばすのを何度も目にしました。当然のことながら、コードにはベンチマークが付けられていないため(マイクロベンチマークを使用していない場合も)、コード全体で「説得力のある議論に基づいてより速く」なり、全体のパフォーマンス全体に影響を与えなかった可能性が高いです。多くのアプリケーション。
このように、それは非常に偽の経済であり、時々熟練したプロでさえもつれる一種の偽の経済です。
開発者に15インチモニターとロースペックPCを使用することをお勧めします。これは企業標準です。
リーズナブルなサイズのモニターは、安価でインストールが簡単で、プログラマーの生産性を向上させるだけでなく、プログラマーにモニターのことを気にかけてもらうことができます。
現代的な管理の考え方を適用しようとする、階層的に編成された経営管理学士(など)が多すぎる:「KPI」、「SLA」、およびそうでないもので人々を悩ませ、「レポート」を必要としない(なし、もちろん、それらを生成するためにインフラストラクチャに注意を払います)、プログラマーが豪華なExcelシート、Q4レポートなどに記入して日々を無駄にし、1つの優れた新しい管理ツールからコピーして別の管理ツールに貼り付けます(それは、これらのツールは互いに統合も統合もできません)、レポートと図が提示される会議に参加します(そして、このまたはそのKPIの実行に失敗したことについて誰もが罪悪感を覚えます)。