多くの場合、プログラマーとして、大規模な組織が問題の肥大化した非効率的なソリューションに莫大な金額を浪費しているのを目にします。私は、組織が最善のソリューションの恩恵を受けることを望んでいるので、これは私にとって非常に苦痛です。ただし、プログラマーとしての私の能力は、主要な意思決定者に影響を与えることに関しては限られており、多くの場合、この問題に関する私の見方は、自分の小さな技術的な世界に限定されています。
だから、私の質問はこれです。本当に山羊になったソフトウェアまたはハードウェア、あるいはその両方で莫大なお金の浪費に遭遇した後、それを修正するためにそれをどうしましたかまたは、あなたは弾丸を噛み、あなたのもとで永遠につぶやく運命にありましたか?呼吸?私はあなたの全体的な体験を聞くことに興味がありますそして特に、この種の事柄に将来取り組む方法についてあなたが学んだ教訓。名前は付けないでください。問題に取り組む方法の経験は、実際の問題のある製品よりも重要です。
次の範囲で、大きくてかさばるバギーな商用製品の支払い:
オープンソースまたは軽量の代替手段が明らかに優れている場合。
私のステップは通常:
私はお気に入りに名前を付けるにはあまりにも多くの例を見てきましたが、私の主な分野であるWeb開発のいくつかの一般的な傾向に気づきました。
バニティウェブサイト。これらは、彼らに委託する小さな組織の外部の誰にとっても有用な目的を果たさず、ロゴ、彼ら自身の写真、そして自己満足のワッフルによる強迫観念を中心に構築されているウェブサイトです。最悪の部分は、これらは通常、ウェブについての手がかりがない人々によって資金提供され、委託された公共部門です。 (たとえば、NHS病院の信頼を得て、自分のスタッフのイントラネット用にFacebookのミニバージョンを開発したいと思ったことがあります)。
お支払いは最高です。有償ソフトウェアは本質的にオープンソースより優れている必要があると主張する考え方。結局のところ、それは代償を払っていますよね?私は、ポリシーの問題としてオープンソースを自動的に割り引く文化で働いているという理由だけで、愚かな選択を主張する多くのクライアントを見てきました。
委員会による設計。これは、大規模なグループの人々が「ブレインストーミング」を行い、そこにあるすべてのクラックポットのアイデアを設計に取り入れようとする場所であり、必然的に、みんなを喜ばそうとすることを支持してすべてに妥協する(そして誰もがアプリケーションを使用しなければならない人々ではなく、委員会が決定をすることを意味する).
コンサルタント。これは、混乱を招くテクノバブルとビジネスで開発プロセスを延期することにより、途中で(ビジネス慣行もソフトウェア開発も知らない)仲介者にお金を払い、邪魔になり、お金を節約する場所です。 -話す。
まだ誰もこれについて言及していないようです。
購入できるときに独自のソリューションを構築する。
このパターンのバリエーション:
私の2つのお気に入り:
採用コンサルタント(フリーランス)生産能力を追加するためだけ、彼らは投資すべき代わりに、自分の従業員で、新しい知識をもたらすコンサルタントを雇い、既存の人々を指導する。
プロジェクトマネージャーの採用他のプロジェクトマネージャーを管理する他のプロジェクトマネージャーを管理し、最終的に(考えて)開発チームを管理する。代わりに、チームが自己管理してビジネスに集中できるようにする必要があります。開発者よりもプロジェクトマネージャが多いソフトウェアプロジェクトを見たことがあります。会議を想像してみてください。
長期の昇給とボーナスの制限
私はそれをビジネス101でnotに従業員の昇給を与えるように教えたと思います。二次的なケースは、彼らがいくつかの給与の範囲内に収まる必要があるため、スター出演者の給与を制限することです。
やがて従業員は、賃金表が業界(またはアウトプット)と一致しないことに気づくでしょう。履歴書とスキルを持っている人々は、最終的に去り、彼らのすべての知識とおそらく数人の友人を連れて行きます。残りの人々(最下位のパフォーマー)は、余裕を取り、新しい時間(市場価格で)を雇うためにより多くの時間を費やす必要があります。したがって、会社はスターの従業員をJRレベル1と交換し、給与を低く抑えることによるすべての「節約」を失いました。
これが続くと、開発チームは標準を維持するのに苦労し、思い切ったことが行われるまでおそらく悪化します。
この答えは、ほとんどの場合とは少し異なります:従業員をすぐに解雇しない、または別様に述べる従業員の許容度が高すぎる 間違い 習慣。これらは私が観察したものであり、コンサルタントとしてはあまりできませんでした。
最終的な書き直しにつながったプロジェクトの設計決定をうまく動かしなかった開発者(それは完全な混乱でした)。
円グラフを表示するのはかっこいいと思ったため、暗号化されていない機密データをGoogle Chartに送信した開発者(円グラフは必須でしたか?いいえ)。
過去に会社と相談して直接彼らとポジションを受け入れた開発者。彼はアバウトな顔をし、テクニカルリードのポジションを求めるプリマドンナに変わり、リードのマネージャーに、彼がリードを引き継ぐのが良いだろうと述べたところまで話しかけました。大胆さについて話してください!多くの開発者は男を好きではなくなり、彼は最初の2週間で従業員として多くの橋を燃やしました。さらに、彼は非常に環境に配慮した開発者であり、2年前に卒業したばかりですが、彼は素晴らしい人だと思っています。
いくつかの間違いは理解できますが、誰かの態度やスキルレベルについて多くの開発者の間でコンセンサスがある場合、企業はそれらを後でなくより早く取り除くべきです。
お金を使うという唯一の目的のために経営陣がコンサルタントを連れてくるのを何度か目撃しました。ほとんどの場合、これは彼らが予算を使いすぎて必死にお金を費やそうとした年末に起こりました。通常、これらのコンサルタントには1時間あたり数百ドルが支払われ、使用されないPowerPointプレゼンテーションに数週間費やされます。
ここには、もっと大きな問題があります。
多くの企業には、株主の富を増やすという1つの目標があります。彼らが生産するものは無関係です。彼らがそれをどのように生産するかは無関係です。彼らが生み出す廃棄物の量は関係ありません。社会と地球へのコストは無関係です。
ですから、社会や地球に何らかの利益をもたらす会社で働くか、会社を始めましょう。
大規模なソフトウェア企業に、製品だけでなく「サポート」の代金を支払う。
私はOracleと深く関わっていたチームの政府機関で働いていました。長年の間に、彼らは彼らのソフトウェアのために何十億ドルも支払われました。スタートアップの背景から来たので、これは私には意味がありませんでした-「なぜMySQLやPostgresを使わないのですか?」それは主にOracleが提供するサポートが原因であると言われました。何かがうまくいかなくても、すぐに解決策を見つけるのに役立ちます。
サポートは絶対的な冗談でした。 1つのWebアプリがシステム全体をクラッシュさせ続けるという問題がありました。これは、恐ろしく書かれたコード(コンサルタントのチームによって書かれたものであり、それがまったく別の答えとなるはずです)の組み合わせを伴うデータベースクエリが遅い結果であるように見えました。 「タスクフォース」(うなり声)が集まり、問題を特定して修正しました。タスクフォースにはOracleサポートメンバーが含まれていました。 EOBでは毎日、電話会議があり、タスクフォースのメンバーがチームの残りのメンバーに調査結果を更新します。それは十分に長い電話だったので、誰もそれが5から始まってb/cになりたくありませんでした、そしてOracleの人はそれをさらに悪化させました。どうして?さて、「人」と言っても正しくありません。たくさんの人でした。 Oracleの担当者は、2〜3回の電話会議ごとに新しいようで、前任者が現在別のプロジェクトに参加しているか、休暇を取っていたと説明していました。新しい人々はOracleの誰からもブリーフィングを受けることはなかったので、誰か新しい人が来るたびに、問題を説明する電話会議の10分を無駄に費やす必要がありました。彼らのcontributionはJ2EEログファイルを要求します。これはサルが読み取ることができるだけでなく、恐ろしく書かれたコードがプログラマーがXMLの解析でエラーを見つけたときにIndexOutOfBounds例外をスローするようなことをしていたため、役に立たなかった。
プログラマーに一次電話サポートを提供する。
プログラマーにテストを行わせる。
私はこれが古い質問であることを知っています。この答えを3人が読んだら幸いですが、楽しい話です。
私はプロジェクト(組み込みシステム、安全性が重要なファームウェア、非常に大きな賭け)に参加し、見つけたものにびっくりしました。 C(特にポインター)を誤って使用している人、静的分析、コードレビュー、「統合して実行し、それに打ち勝ち、何が壊れているかを確認する」以外のテストはありません。
私は最初の週に(コンサルタントとして)非常に長いメールを書きました。基本的に間違って管理されている、開発者が頭を抱えている、プロセスがフォローされていないなどと言っていたので、それは危険でした。それは企業のVPに行くべきでしたが、代わりに、採用した開発マネージャーに送りました私。彼はそれについて完全に防御的ではなかった、実際彼は多くの欠点を認めて、私がそれらを指摘する最初ではなかったと私に言った(冗談ではない、そう?)
元の質問の要点に答えるために、私はAT MOST 1人週でGimpelのLint(PC-Lint/Flexelint)静的分析ツールを構成してプラットフォームで実行すること、そして結果として潜んでいる「時限爆弾」がいくつか見つかることは間違いないと確信していると私は彼らに話しました。
彼らは私の時給を計算して40倍し、「それを行うには高すぎる」と判断しました。要するに、私は60日以内にそこを去りました。約3年後、製品のリコールについて知りました。コストは9桁(1億ドル)に達し、会社の評判へのダメージは言うまでもありません。
会社、製品、または業界については触れませんが、私はまだそこにいるエンジニアの1人と連絡を取り続けており、リコールの原因を説明してくれたとき、目が丸くなりました。基本的な静的分析ツール(範囲外の配列にアクセスする)でも検出されました。公平に言うと、コードがそこにあったときにコードに問題があったとは確実に言えませんが、ある種の静的分析ツールにお金を費やしていたとしたら、そのバグは回避できなかったでしょう。
そのため、PC-Lintを購入しないことで295ドルを節約できました(最大でも1週間分の支払いが節約できました)。
それは私がかなりのとてつもなく大きなお金の無駄遣いと呼んでいるものです。
多くの人がすでに聞いたことのあるジョークを思い出します:
失敗した巨大な船のエンジンの話を聞いたことがありますか?船の所有者は次々と専門家を試しましたが、誰も理解できず、エンジンを修理する方法を理解できませんでした。それから彼らは若い頃から船を修理していた老人を連れてきた。彼は工具の大きな袋を彼と一緒に運び、彼が到着したとき、彼はすぐに仕事に行きました。彼はエンジンを上から下に非常に注意深く検査しました。
船の所有者の2人がそこにいて、この男を見て、どうすればいいのか知ってほしいと思っていました。物事を見渡した後、老人はバッグに手を伸ばし、小さなハンマーを引き出しました。彼はそっと何かを軽くたたきました。即座に、エンジンは生命に飛び込んだ。彼は慎重にハンマーを片付けた。エンジンが直った! 1週間後、所有者は老人から$ 10,000の請求書を受け取りました。
"何?!"所有者は叫んだ。 「彼はほとんど何もしなかった!」
それで彼らはその老人に「箇条書きの請求書を送ってください」というメモを書きました。
男は読んだ法案を送った:
Tapping with a hammer ........ $ 2.00
Knowing where to tap ......... $ 9998.00
努力は重要ですが、あなたが何をしているかを知ることはすべての違いを生みます。
ソフトウェアを販売している会社では、販売されているすべてのカスタムMODに対して営業担当者に全額の手数料を与えるため、すでに存在し、利益を上げることができるものを販売することは、1回限りの販売ほど利益がありませんでした。これは、営業スタッフを技術スタッフから全国の半分に移動することと組み合わされました。
これは、開発中の私たちが販売期限に間に合わず、顧客を不満に満ちたものにすることを意味し、製品をすべての人にとってより良いものにするような中核的な仕事を成し遂げることは非常に困難でした。プレッシャーの増大により、コード品質が低下し、特に営業所についての話を聞いたとき(私が確認したことはありません)、士気が低下しました。
私たちの多くはセールスに憤慨しましたが、実際には彼らの責任ではありませんでした。彼らは出て行って、彼らに課せられた制限に従って彼らが報われたものをやりながら、できるだけ多くを売っていました。これらすべての問題を引き起こしたのは悪い管理でした。
私が経験した2つがあります。
約80%完了したビジネスの大きなROIを持つプロジェクトをキャンセルし、100刻印と金メッキされたiPodを上級幹部に配ります。
数百人を解雇し、次の日には上級幹部に大幅な昇給とボーナスを発表します。
これらは完全にプログラミングに関連しているわけではありませんが、多くのお金を無駄にしていることは間違いなく、関係者全員に平手打ちを与えました。
私は解雇されませんでしたが、昇給もiPodも受け取りませんでした...
ソフトウェア企業の肥大化した開発チームとひどい生産性。
これは、ビジネスの世界で共通のパターンの結果です。マネージャーの重要性は部下の数によって測定されるため、マネージャーの最大の懸念は生産性ではなく、まったく反対です。 。
コストを大幅に増加させる一方で、効率の向上または低下に失敗した恐ろしいアウトソーシングプロジェクトをいくつか見ました。
最悪の場合、新しいアウトソーシングチームが配置され、スキルが向上しましたが、アウトソーシングチームが重要な作業を実際に実行することを信頼されていなかったため、既存のオンショアチームはそのまま残りました。
この時点で行うべき論理的なことは明らかに、失敗を受け入れてアウトソーシングチームをシャットダウンすることでしたが、経営陣はそれが機能しなかったことを公に認めようとしなかったため、両方のチームが配置されたままになりました(大幅なコストの増加)すべてが埋められるまで、効率や使用可能な容量は増加しません。
別の例では、開発が外部委託され、元のチームが解雇されました。 2年後、彼らはそれがうまくいかず、全ロットを再び社内に持ち込むのにお金がかからなかったことに気づきました、それは、別の引き渡しの非常に大きなコストに加えて、知識の喪失、採用料、契約終了などの影響を見つけることさらに、アウトソーシング組織はソースコードのかなりの部分を失っていました。
(注:アウトソーシングが機能しないと言っているわけではありません。人々が節約の可能性に魅了され、新しい世界の現実、プロセスや作業慣行の変化などを考慮に入れていないことが多すぎます。主にねじ込まれたプロジェクト)
私はいくつかの州の機関と協力してきましたが、彼らはITにお金を浪費することに驚いています。肥大化したミドルウェアの購入から非常に単純な問題の解決まで、ベンダーに数千ドルを支払ってCSVを作成させることまで。十分な経験を積んだ社内スタッフがいなければ、初期費用やメンテナンスの面で限界がありそうです。
私はパフォーマンステストの専門職で働いており、4つの理由で、組織によって(文字通り)年間数百万ドルが組織によって排出されているのを目撃しています。
認定スキルではなく、パフォーマンステスターのスキルを定期的に監査せずに、価格だけに基づいてアウトソーサーを雇う。アマチュアのパフォーマンステスターを雇うことは、アマチュアの配管工やアマチュアの電気技師を雇うのとよく似ています。基本的なタスクを実行するのにかなり時間がかかり、プロセス中の多くのチェックとバランスが失われます。悪いことに、(本番環境で)修正するのが非常に高価でした。この分野の6か所以上のフォーラムのモデレーターとして、テスト、コミュニケーション、プロジェクト管理、開発、システム分析などの基本的なスキルを欠いている人々が定期的に現れており、それらは単にツールに投げ込まれているだけです。 LoadRunnerをお金の無駄だと以前に指摘した人にとって、ツールにばかげた場合、期待すべき結果は1つだけです。皮肉なことに、オープンソースツールを成功させるには、さらに成熟したスキルセットが必要です。
パフォーマンス要件を収集していません。これは組織全体に影響を及ぼします。アーキテクチャ、プラットフォームエンジニアリング、アプリケーションエンジニアリング、機能QA、およびパフォーマンスQAのパフォーマンスについては異なる見方があり、実際にはビジネスの利害関係者と一致しない場合があります(多くの場合は一致しません)。これは多くの組織にとってプロセスの問題であり、パフォーマンステストチームはパフォーマンス要件の収集とテストを要求されます。適切なチェックとバランスのためには、どちらか一方を実行する必要があります。上記1と未熟なスタッフの関係では、適切なパフォーマンス要件を認識できず、負荷プロファイルで検証する測定ポイントがなくても、「実行するスクリプト」を構築している人がいます。これは時間と労力の浪費であり、品質を向上させることはほとんどありません。パフォーマンスには組織全体で共通の視点が必要であり、それがもともと設計されていなければ、最後に取り組むことができるものではありません。
パフォーマンステスト環境管理。テスト組織が続行する準備ができているときに実行準備ができていないテスト環境がいくつ遅れているかはわかりません。たった1つのクライアントで、これは数百万ドルの問題であり、待機中に失われた時間という点で
パフォーマンステストとは何か、関連するタスクや実施中の作業のレベルを理解していないが、活動を実施する期間を指示しているプロジェクトマネージャー。これにより、プロジェクトのスケジュールに差異が生じます。これは、アイテムのスケジュール方法に完全に関連しています(その結果、コストが超過します)。これは上記の1に直接関連しており、未熟なテスターはタスクの数とタイプ、およびタスクにかかる時間を正確に予測することができません。あなたが何をするのか、なぜそれをするのかを理解していない人に、あなたがどのように働き、どれだけの時間をかけるかを指示することを許可すると、この道は失敗につながるというのは公理です。これは、パフォーマンステストで頻繁に発生します。
社内ITを持つ非ソフトウェア企業(銀行、保険)では、お金はさまざまなビジネスグループから調達されます。ビジネスグループはベンダーから直接販売提案を受け取り、ITに売り込みます。彼らはソフトウェア/ハードウェアと給料を払っているので、抗議はどこにも行きません。
独自のバージョン管理システム。 GitとMercurialの状態を考えると、人々がゲートキーパーと一緒に何かをする理由がわかりません。
VCSの料金を支払うだけでなく、ユーザーごとに支払う必要もあります。さらに、あなたの柔軟性は足で撃たれます。 「I♥Vendor Lock In !!!」というTシャツを着た方がいいかもしれません。
最近では、無料の(D)VCSを使用しないのは気の毒なことだと思います。たくさんのアドオン特典を利用したい場合は、Kilnなどを利用できます。
私は、BitKeeperや同様のものを主張した誰かのために働くつもりはないと思います。
エミュレータについてもほとんど同じことを言ったが、Simicsのような製品は、無料の代替製品よりもはるかに大きな利点を提供し続けている。
技術的負債
私が見たのは、レガシーコードの慢性的な「死んだ馬を倒す」ことです。要するに、塹壕の観点から言えば、チーム全体が交換モードにする必要があることをチーム全体が知っているときに、メンテナンスモードで数え切れないほどの時間が費やされました。
私たちがやったことは...まだ進行中です。ポジティブな変化を内から呼び込もうとする
パフォーマンステスト
単に、それをしません。繰り返しますが、まだ内から前向きな変化に取り組んでいます。
ステータスミーティングと毎週のレポート
私が働いていた組織は、ほぼ毎週のステータスレポートで、3つの異なるレベルにまとめられていました。進行中の4〜6個の各プロジェクトの開発リードとテストリードは、長い電子メールで進捗状況を報告します。その後、次のマネージャーがロールアップし、次のマネージャーが任意に要約します。
翌営業日、すべてのプロジェクトリーダーが1時間の会議に集まり、レポートを確認します。
事実上、毎週1日がその週の進捗状況の報告に費やされます。これはすべて、毎日のスタンドアップや毎週のデモ/回顧会議とは別であることを覚えておいてください。
私は公的機関で働いています。職場が非常に厳しく立法化され、組織化されており、誰かを略奪することは事実上ほとんど不可能である場合に起こり得る廃棄物のレベルを適切に説明する方法は本当にありません。
マネージャーは悪いスタッフと一緒に小包を渡し、リストラのカバーの下でそれらを一度にすべて削除することを望みます。いくつかの悪いスタッフは、改善が必要な領域の外に移動するために昇進されます。良いスタッフは、悪いスタッフの仕事を補うために絶えず苦労しています。 3か月間維持できないスタッフは、40年のキャリアを築きます。彼らがそのようなキャリアで浪費する金額は天文学的なものです。
私は以前民間部門で働いていて、多くの無駄がありましたが、公共部門の無駄は球技はもちろん、まったく異なるスポーツです。
パフォーマンスの低いスタッフのために正弦曲線を設定すると役立つとコメントで提案されました。被害を最小限に抑えることができますが、問題の根本的な原因には影響しません。最良のことは、いくつかの民間部門の雇用と管理手順の採用、および公的機関がパフォーマンスの低いスタッフを手放すことを容易にするための法改正です。組合も政府と協議して政策を変更すべきである-組合員を保護する彼らの役割は重要であるが、組合員は時々真に彼らの深みから外れていることを認識すべきであり、先に進めるべきである
見てみましょう。かつて、50万ドル以上を費やして100万ドルの契約を獲得するための作業をしました。あれの利益のためにたくさん。プロジェクト提案開発チームの何人かはこれを指摘しようとしましたが、私たちの小さな会社が私たちが競争していたフォーチュン500企業に勝つことは誇りになりました。私たちはそのことや他の理由で最初の契約を勝ち取り、負けましたが、自慢する権利がありました。
かつては政府の請負業者だったので、契約により許可され、残業代が支払われたため、無給の残業を余儀なくされました。それだけでなく、自分の仕事に追いつき、毎週日曜日にインターネットをサーフィンするために4時間を費やす必要がありました。言うまでもなく、彼らがそのナンセンスを開始した後、私は非常に迅速に進みました。
プロジェクト管理システムとしてのClarityの購入は非常に悪い商用アプリであり、Clarityを使用するユーザーの100%が、古い自作のシステムに戻ることを求めています(それを気に入って選択した人は、他の人に移動しました)会社)、人々は自分たちの時間に取り組み、私たちの古いシステムに必要なレポートを追加するように自発的に申し出ました。しかし、私たちはお金を投資したので、それで立ち往生しています。言い換えれば、それが高価だったからといって機能しないものを捨てることを拒否することです。
完全な無駄。何百万ドルも削減しなければならなかったIT支出。したがって、これを行う方法は、世界中からIT担当者を飛ばすことでした。フラッシュホテルに1週間置きます。次に、会議が行われた建物に新しいフロアを置きます。もちろん大理石。そして、一晩中、毎日の会議の合間に、建物は改装されました。それは一週間毎晩です。
えーと…優先順位誰か?
ファンタジーランド。
大規模な金融機関と一緒に取り組んだ1つのプロジェクト。毎日大量の電話会議があり、電話会議だけで1日あたり約100,000ドルが消費されたと推定しました。プロジェクトは約2年間続きました。彼らは大量のレガシーシステムを持っていて、2年前に夏時間の変更が行われたとき、彼らはMicrosoftに約50万ドルを支払って、NT 3.51のDSTパッチを作成しました。
私たちは仕事が小さかったので、私が働いていた小さな店で請求書や給与をほとんど稼いでいませんでした。解決策:上司のために効率コンサルタントと個人秘書を雇って、彼がより多くの「肉とじゃがいも」の作業を行えるようにします。
支出を増やして予算不足を解決する...失敗。
プラス面-効率の専門家がドライイレースボードを提供して、請求可能な時間と支払った時間を追跡しました。
私が働いている会社はCHART FXライセンスのために800ドルを支払いました-それは私のお金でさえありません。
http://www.softwarefx.com/sfxNetProducts/ChartFX/
ちょうどキックのために、彼らのソフトウェアはレジストリやプログラムファイルを含むあらゆる場所にファイルを配置します。