最近、私はそれほど難しくないと思われるプロジェクトを開始しました。コンセプトは、時々(おそらく1日に10倍)入力を受け入れ、それらに対していくつかの操作を実行してすべての結果を収集する必要があるかなり単純なアプリケーションでした最後に。このアプリケーションは、顧客が結果を表示するために使用できるフロントエンドWebポータルを取得します。
このために、私は最初にPythonの組み込み並行処理ライブラリ(ThreadPoolExecutor
)をスマートに使用し、フロントエンドに使いやすいライブラリを使用しました(Flask as as初心者にとっては簡単で、メンテナンスとテストは比較的簡単です)。
プロジェクトの途中でPMは、スレッドの代わりにサードパーティのメッセージキュー機能を使用する必要があり、ロードバランシングを実装する必要があると述べました。最終的には、最終的にはCelery、Redis、RabbitMQ、Nginx、uWSGI、および他の大規模なサードパーティのサービスで、実際に誰も経験したことがないもの。
結局、これは一連のスパゲッティコード、テスト不可能なタスク(サードパーティのライブラリの複雑さのため、コードにパッチを当てることも機能しなかった)につながり、これらのサービスの付加価値を誰も知らなかったため、頭痛の種になりました。 。
「はい、これらのサービスを使用する必要があります」と言う前に、覚えておいてくださいnobodyこれらの使用方法を知っているか、競合状態に悩まされているコードを紹介する以外に、何をするかさえ知っています。
これについて私は何をすべきですか?この時点で、私たちが持っていたものに戻すにはコストがかかりすぎて、PMはこれらのサービスを使用する際に設定が完了していません初めに。これについて彼と話し合うことにも意味がありますか?私はもっと時間を求めますか?または厳しい答え、私は私の仕事にはあまりにも愚かですか?
プロジェクトの途中で、PMは、スレッドの代わりにサードパーティのメッセージキュー機能を使用する必要があり、負荷分散を実装する必要があると述べました
これは、PMが一方的に「状態」を示すためには適切ではありません。2つの理由:
設計上の決定は、技術的リソースによって、そして NFRs にのみ応答して行われるべきです。 PM新しいNFRがあるかどうか、詳細を教えてください。
NFRがプロジェクトの途中で導入されている場合は、おそらく change control を介して行う必要があります。変更管理は、ガバナンスの観点から非常に重要です。これは、要件への入力であるだけでなく、QAのテストケース、運用の展開およびサポートハンドブックへの重要な入力でもあります(本当に重要な部分です) PMのschedule新しい要件により多くの作業が導入される場合、開発チームは新しい開発の見積もりを伝達する機会を持つ必要があり、PMは新しい日付に耐えられるかどうかを判断し、リソースを追加する必要があります、またはNFRを導入した利害関係者を押し戻します。
正真正銘のNFRが実際にあり、それを回避できない場合は、導入されているテクノロジーに精通している新しいリソースまたは別のリソースを要求するか、既存のいくつかのトレーニング予算を要求することも適切な場合があります。リソース。したがって、costの側面もあります。
PMの言語(スケジュールとコスト)を話すと、開発者が結果のデザインについてどう感じるかを話すよりも、より多くの関心が集まると思います。それらのことは実際に影響を与えます。
A PMガバナンス、コントロール、およびコンセンサスなしで、このようなものをその場で導入するよりもよく知っているべきです。彼らがそれを取得しない場合、エスカレーションする必要があるかもしれません。品質とスケジュールを不必要にリスクにさらしているため、製品管理またはプログラム管理。
ばかげているのは、自分に 死の行進 をさせることです。
あなたが説明しているのは、批判的な感覚を失っていることです。制御の感覚はなく、それに戻る明確な方法はありません。
あなたがしなければならない最後のことは、懸命に働き、頭を下げ、そして彼らが最終的にプロジェクトが破滅したと認めるまで静かに苦しむことです。
あなたがすべきことは、あなたが期待するあらゆる権利を持っているかについて非常に熱心に考えることです。
彼らがあなたがあなたが理解していない技術を使いたいと思うなら、あなたはそれらを学ぶ時間を期待するべきです。知らないことを恥じないでください。あなたの無知を反逆者として使ってください。彼らがあなたが何かを使うことを要求するとき、なぜか尋ねます。 「理由」を受け入れないでください。 「最新のベストプラクティス」を受け入れないでください。実際の、テスト可能な期待を獲得することなく、「拡張性」を受け入れないでください。
テスト可能というのは、1日、1時間、1分あたり何件のリクエストを実行できるようにしたいかを伝えなければならないということです。これらの仕様に従ってこのシステムを実行する何かを構築するつもりであることを明確にしてください。
この方法では、30日間の無料トライアルを使用して、彼らが欲しい最新のウィズバンのことはそれだけの価値があることを証明できます。
今心に留めてください。競合状態に陥ったコードを導入したのはツールではありません。君たちはそれをやった。元に戻す方法を学ぶ必要があります。
そして、いいえ。元の状態に戻すのにコストはかかりません。 PMは、それを要求するだけでは彼らが望むものを持つことができません。PMが望むものを効果的に使用するか、そうでないことを証明するまで、プッシュバックする必要があります。プロジェクトに必要なもの。
真剣に、これに屈することは専門家ではなく、プロジェクトにとって致命的です。
私はここの男です。もう一度。それはあなたを愚かに感じさせます。それは本当にそれではありません。あなたはただ失われています。
首相と話してください。正直なところ。それをすべて置きます。あなたは学びたいと思っているが、乗るために連れて行かれたいと思わないことを示しなさい。決して信仰に基づいた設計やコードを作成しないでください。 PMに、彼らが望むことをどのように行うかを示します。理解しないふりをしないでください。理解できないときに実行されるとは言わないでください。もしそうなら自分を信じるものを信じようとします。
それでも問題が解決しない場合は、すぐに必要になるため、履歴書を洗練してください。あれやこれやで。
問題は実際にはソフトウェア開発の問題ではなく、職場の関係に関するものであるため、これは実際にはworkplace.stackexchange.comにあるはずです。
あなたのシンプルなアプローチが機能し、かなり迅速に機能する結果が得られたと確信している場合、あなたのPMは会社の破壊的な力であり、削除する必要があります。ニュースの入手方法を理解してください。彼の上のレベルに:あなたのチームには、うまく進んだシンプルで実用的なソリューションがあり、誰もあなたのPMを説明できないため、誰も知らない、誰も理解していない、それらがまったく役立つかどうか誰も知らない多数のツール、そしてあなたのPMの計り知れない決定はあなたにすべてのトラブルを引き起こし、プロジェクトを遅らせ、ワーキング。
経営陣が追求するコンテキストや製品戦略を知らないため、客観的に質問に答えることは困難です。
ここにいくつかの客観的な議論があります。ただし、それが期待したものと異なる可能性もあります。
最終的に、経済的な選択は、製品マネージャーの責任です。彼が長所と短所を話し合って、彼が十分な情報に基づいた決定を行い、追加された複雑さを過小評価しないようにします。そして、もし彼が彼のトラックに留まっているなら、あなたのベストを達成するようにしてください:あなたが失うものは何もない、そして最悪の場合、あなたはあなたのCVに新しい技術を持っているでしょう。
サードパーティのライブラリ(およびその他のコンポーネント)には2つの方法があります。
私のアプローチは(2)です。あなたのアプローチも(2)のようですが、プロジェクトマネージャーは(1)のアプローチを気に入っています。
この状況に対処するには3つの方法があります。 PM PMが望むことは何でもすることを許可するか、PMを説得して3番目のアプローチに変更するパーティーライブラリ、またはあなたの足で投票し、別の仕事を選択します。
PMを説得してアプローチを変更したい場合は、次の引数を検討してください。
ライブラリがそれ自体をaと呼ぶ場合は特に注意してください フレームワーク。つまり、ライブラリでは、アプリケーション全体を自分で構築する必要があります。通常、同じアプリケーションに2つのフレームワークを含めることはできません。彼らは平和的に共存することなく互いに戦います。 Web開発ユーティリティライブラリ?はい、これらの数が少なすぎます。現在使用しているライブラリよりも優れたライブラリを見つけた場合、古いコードで古いライブラリを引き続き使用しながら、新しく見つかったライブラリを新しいコードで使用できます。 Web開発フレームワーク?大きな警笛 番号!
あなたのPMは、稼働中に多くのメンテナンス作業を行うシステムの管理が困難であることを目的としているため、収入を確保できます。
個人的には、あなたはPythonに行き詰まっているようです、pythonしばらくの間忘れてください、pythonで1年コーディングしないでください、新しいことを学んでください、あなた同じことができる、おそらくもっと良い他の言語があることがわかります。
他の人が述べたように、ツールを使ってコーディングを始める前に、ツールを学んでください。タスクに適していると思われるさまざまなツールの調査に基づいて、必要なスタックを一緒に評価することをお勧めします。あるいは、彼がどのようにしてそのリストを思いついたのかと尋ねると、彼は最新の誰かからの助けがあったかもしれません。