すべての屋台がITの巨人と遊んでいるため、私たちは1週間行われていることを何年も費やしています。





私はVPNデスクトップアプリを作ったチームで働きました。世界で最も簡単なことではなく、多くのニュアンス、多くの後方互換性があります。 4人の開発者、3人のテスター、製品所有者、プロジェクトマネージャー、およびサードパーティの設計チームがいました。すべてが深刻です。デスクトップクライアントに加えて、すべてのビジネスロジックを含むlibも作成され、他のプラットフォームで使用されました。そして、このlibは、VPNトンネルを発生させるsishbinarを使用しました。



そのようなアプリケーションを単独で作成するのにどれくらいの費用がかかるかと誰かが私に尋ねた場合、私は「開発に2か月、テストに1か月」と言います。でも、たくさんの人がいたので、2年以上働きました。



プロジェクトに関わった一人一人が、プロジェクトの一般的な誤解を増やしました。これに対処するための多くのプラクティスがあります-私たちはドキュメントを書き、要件を形式化し、プロジェクトの種類を理解し、それをすべての人に説明することをタスクとする特別な人々を獲得します。そして短期的にはそれも機能しますが、後で、大規模なプロジェクトのドキュメントの各ページが他のページと矛盾し始め、別の問題の原因になります。



アプリケーションのユーザー数が多いほど、アプリケーション自体が大きくなり、チームも大きくなり、何をしているのか、なぜ行っているのかがわかりにくくなります。信頼性が50%の1つのギアのメカニズムがある場合、その信頼性は50%です。ギアが2つある場合、信頼性は25%になり、ギアが10つある場合、信頼性はゼロに近くなります。






ある週末、テスターの重要な所有者が私たちのところに来て、彼にテストアプリケーションを作るように頼みました。libのすべての可能性を使用および組み合わせることができるデスクトップピース。設計の割り当てや明確な要件はありません。



私は1か月足らずでアプリケーションを作成しました-そしてそれはメインプロジェクトの多くの機能でした。同時に、勤務時間中はゆっくり休むことを忘れませんでした。



このように作業するのは簡単です。私はハンバーガーメニューの奇妙な「デザイナー」アナログを作成するのに3か月も費やしませんでした。ばかげたカスタムコントロールは1つもありません。すべて人気のある素材から。最終的にどのようなプロジェクトになるのかがすぐにわかり、1週間で書き直せるコードを作成するのに時間を無駄にしませんでした。私は何もテストしなかったユニットテストの束を書くのに時間を費やしませんでした。そして、彼は、かなり単純なことをする必要があることをすぐに理解したので、オーバーエンジニアリングしませんでした。



私はグリーンジューンではありません。すぐにプラスまたはマイナスの優れた読みやすいコードを書く習慣があります。主題分野の文脈は私の頭の中にあり、レビューで十数件のコメントを受け取り、すぐに修正し、プロジェクトの準備が整いました。



その後、もちろん、私は絶対にすべてのプロジェクトがこのように行われるべきであるという確信に達しませんでした。これは、多くの人が使用するビジネスアプリケーションでは機能しません。彼らは私に説明しました-それはそのようになりました、フィル、ビジネスの開始時に彼自身が何が起こるべきかわからないからです。業界は長い間、あなたがただ取って実行できるプロジェクトをあきらめてきました。取ってやることはナンセンスです。プロジェクトを永遠に実行し、すべてのステップでフィードバックを収集し、毎日改善する必要があります。私たちがお金を持っている限り、プロジェクトは生き物として進化するはずです。



そして、私が最初に永続的な開発のアイデアを聞いたとき、私はそれを信じました。本当に合理的に聞こえます-ビジネス要件は成長し、変化しています。私たちは繰り返し改善し、コードベースはそれが説明するすべてのプロセスの詳細な仕様になります。最新のソフトウェアは複雑すぎて、完全なものを設計および開発できません。



私は一人で仕事をし、何かをすばやくまとめるのが大好きです。しかし、私は永遠の発展の考えへの信頼を失っていません。これは、プロジェクト、WindowsまたはChromiumスケールに適しています。計算機を設計するとき、この考えはでたらめです。そして、雇用市場を見て、社会保障報告書に行くと、ロシア連邦のほとんどの業界がWindowsではなく計算機を作っていることがわかります。



計算機ですが、スクラム/アジャイル、CI、CD、製品の群れ全体、巨大なコードベース、および複雑なカスタムデザインを備えています。誰もが大人の発達をしたいので、これはうまくいくという理論があります。






アプリケーション全体を1か月でダウンロードできます。たとえば、私の最後の仕事で、私は1日でプロジェクトのプロトタイプを作成しました。これは、市場に出すために必要なすべての作業の60%です。しかし、私がペットプロジェクトを作り始めるとき、私はすぐにすべてを真剣に受け止めたいです。みんなと私は脂肪を作り、すべてをスプリントにカットし、チケットを開始し、CIを設定します。これらすべての儀式的なことで、ペットプロジェクトは非常に現実的なものになるからです。



私たちはペットプロジェクトを本当にやりたくないので、これは私たちが演じる幻想です。スタートアップをプレイしたい。そして、ロシアの中小ITビジネスは同じシリーズのものであるように私には思えます。そして、この不気味なシステムはそれ自体をサポートします。あなたはオンラインストアを発明しました。私たちはコンセプトを実行し、ビジネスは進み、投資家に百万ドルを懇願し、大規模なチームを雇いました。彼らは数年で300,000行のコードを印刷し、システムはうまく機能します。あなたはこれらの数千行を見て、あなたは考えます-まあ、私たちがそれらを書いたので、ここから何も捨てることができないように思われるので、そのようなシステムはそのような大きなコードベースを持つべきです。



生存者の間違い。あなたは単に既製のオンラインストアを取ることができます-おそらく、あなたのビジネスの独自性はいくつかの特定のソフトウェア機能にありませんでした。またはそうでしたが、そのような機能が2つありました。このために、システムをゼロから作成しました。同時に、このようなシステムがずっと前に構築された世界で、まったく同じシステムを何千もゼロから作成した他の千の企業と同時に作成しました。



すべてのプロジェクトには戻りがありません。「完全ながらくたをしているのか」という質問への答えが重要ではなくなった瞬間です。完了したとしても、最初から行うことはできなくなったからです。ユーザーは、バグや非自明な動作をすべて備えた、私たちが作成したようなたわごとに慣れているため、これはその独自性であり、すばやく簡単に再現することはできません。



ビジネスはクールな開発をしたいと思っていますが、開発されていて気にしません。あなたが必要なもの?信じられないほど単純なことを複雑にするには?ああ、仲間、私たちはこれがとても得意です。複雑さは私たちのミドルネームです。ホーリーコンプリケーターは私たちの偉大なアイドルです、そして今あなたは私たちと非常に複雑になるので、あなたはこの複雑さの文書を追加するサーバーだけに半分の緑のものを費やす必要があります。



DevOps部門、いくつかのテスト部門を作成し、すべてのスタックの中で最もエンタープライズを採用します。私たちのコードベースは詳細に文書化され、巨大なアプリケーションのために発明されたすべての原則を厳守します。テスト-すべての味と色について想像を絶する数のテストを作成し、これらのテストが可能な限り長く実行されるようにあらゆることを行います。ビルドを6時間実行します-私は家でやるべき重要なことがたくさんありますが、あなたは理解する必要があります-私の時間は高価です。そして、あなたは製品に対してではなく、開発中のゲームに対して支払うことに決めました。そして、私はあなたと遊ぶでしょう。



その時だけ、4年後、すべての人が支払う人が来て、こう言います。「プロジェクトは、開発チームの制御を超えた理由で死にました。皆さん、ありがとうございました。すべてのコンポーネントが再利用可能であるとおっしゃっていたので、作成したコードを他の製品に使用したり、個別のモジュールをオープンソースに配置したりできますか?」



仲間はいません。あなたは宇宙で最も役に立たないたわごとを書くのに4年間お金を払った。このコードは他の場所では使用されておらず、説明されている製品がなければ、ここでは1行も価値がありません。あなたはばかなので、よく考えられたプロセスのすべての段階に精通したトップエンジニアによって書かれた40万行のゴミがあります。



そして、私たちはここで多くのことを学びました、そして私たちはこの複雑さが本当に必要とされる大企業に行きます。経験とお金をどうもありがとう。次回、何かをしたいときは、ついに単純な事実を受け入れてみてください。あなたは屋台を発明したので、屋台を建てます。それは非常にシンプルで、お金を稼ぎます-まさにあなたが望むものです。そして、産業の巨人に産業開発で遊ばせてください-彼らはそれを撃退します。






広告



Epicサーバー、Opencartの小さなオンラインストアから大勢の視聴者がいる本格的なプロジェクトまで、サイトをホストするためのVDSです誰もが必要なオファーを見つけることができる多くの料金プランを提示します。






All Articles