0

私は 2 人のフロントエンド開発者のチームで、Web ベースの後期段階のスタートアップ プロジェクトに取り組んでいます。

このサイトは非常にうまく機能しますが、コードが非常に乱雑で整理されていないため、コードに関しては改善の余地がたくさんあります。

テストを作成し、何かを壊さないように慎重にリファクタリングすることで、徐々に物事を整理したいと思います。(書籍「レガシー コードを効果的に使用する」の原則を使用)

しかし、私が一緒に仕事をしている開発者は、優先度の高い多くの機能作業を任されているため、保守作業で彼に負担をかけたくありません。多くの場合、彼は単に時間の制約のために、面倒なコードを書かなければなりません。

チームが成長するにつれて、さまざまな懸念事項をどのように管理するかが気になります。

チームを2つのグループに分けることを考えています:

  1. コードの品質をあまり気にせずに、新機能の開発を迅速に行います。
  2. 単体テストを作成し、コードをリファクタリングし、一般的に物事を最適化します。

私が目指している結果は、新機能開発のペースを維持しながら、できるだけ多くのコードをテスト対象にすることです。

これは以前に試されましたか?何かご意見は?

4

3 に答える 3

8

チームの分割に問題があります。

新機能の迅速な開発を行っているグループは、販売員や経営陣に非常に人気があります。彼らはより生産的で、より解決志向であると認識され、より多くの重要な議論に参加するようになります。

品質を心配するグループは、費用がかかり、否定的で、非生産的で、問題志向の泣き言を言う人として認識されます。

現実は、迅速なグループの「簡単な勝利」が質の低い隠れたコストを蓄積することです。これがあまりにも長く続くと、新しい高速コードが古い高速コードの上に構築されるため、コードはますます乱雑になり、より多くの機能を追加するのはますます時間がかかり、リスクが高くなります。これらの隠れたコストは、誰も新しい機能を追加できなくなったときに明らかになります。

2年後を考えてみてください。あなたの迅速なコーダーはおそらく、彼らの多くの「成功」を利用して、先に進んでいるでしょう。販売員は彼らについて話し、彼らが店を経営していたときのことはどれほど簡単でしたか.

庭の雑草のようなものです。問題を早期に解決するのは簡単ですが、すべて雑草の場合ははるかに困難です。

エンジニアリングの現実として、ラピッド コーディングは面倒であってはなりません。面倒なことをして時間を節約することはできません。そのように見える場合は、スキルの問題か、フレームワークの問題があります。

したがって、グループを分割する場合は、反復ごとに回転してください!

そして、どうすればこれをよく知ることができますか? 「成功した」コーダーが去った後、私は入ってきました...

于 2009-11-24T07:33:37.107 に答える
1

こんにちは、チームを 2 つのグループに分けることはできないと思います。

@Guge は、これらのグループのメンバーに対する経済的および政治的影響をカバーしています。

そして、もっとあります:

1) スピード グループはコードの品質を気にしません。

2) 品質グループは、いくつかのコードをより良いものに書き直します。Speed Group はこのコードにいくつかの新しい機能を追加しますが、これもコードが見苦しくなります。

3) スピードグループは新しい機能を追加しようとしています。リファクタリングされていないコードに。彼らはリファクタリングをしません (彼らは報酬を支払われていないので、リファクタリングを行ったり、作業が遅くなったりすると経営陣は怒ります)

4) 新しい機能はありません。$$$ がないということは、賃金が低いということは、割り当てられた開発者が劣っていることを意味し、速度と品質が低いことを意味します。

5) より優れた開発者は、グループをスピードに変更する方法、または作業を変更する方法を見つけるでしょう :)

5) 品質グループがサブシステムの速度を改善する場合、スピードを落とさないように既存のコードにパッチを適用することを拒否する可能性があります。

では、このような状況を防ぐにはどうすればよいでしょうか。

あなたの管理者と話してください。新しい機能間のバランスを維持する必要があります。そしてコードの質。優れたコードのみが、迅速な変更の導入や新しい機能の実装を可能にします。高速で。

良い議論は、醜いものに進化した下手に書かれたコードやアーキテクチャは負債であるということです. あなたがそれを支払わないとき、毎月の利息は急速に増加します。おそらく 1 か月間支払わない余裕がありますが、それ以上は支払わないでください。

強調するために、クレジットカードを手に入れることができます。

チームの仕事が多すぎて締め切りに間に合わない場合は、大声で話す価値があります。しかし慎重に;)

また、すべてのプログラマーはリファクタリングして睾丸を作成する必要があります (関連する場合)。例外なし。今日は少しリファクタリングし、明日は少しリファクタリングするだけです。

Trick with credit card は Fowler "Refactoring" <- 素晴らしい本から借りてきました。

PS 「死の行進」のようなハード開発のみを推進するプロジェクトがあります。経済的に理にかなっています(プロジェクトは、限られた費用で期限内に成功した場合にのみお金を稼ぐためです。症状は、必要以上に少ない開発で長時間にわたって一定の作業を行うことです)、私の提案はそれに当てはまりません

于 2009-11-30T10:45:08.167 に答える
0

短期的には、新しい開発に専念する人もいれば、新しいコードのクリーンアップに専念する人もいます。ただし、これを継続的なパターンとして維持することには欠陥があります。あなたの目的は、コードを時間通りに高水準で提供することであり、チーム全体がこの目標に向かって取り組む必要があります。チームを分割すると、チームの半分がコードの品質を気にせずにエキサイティングな新機能を作成することになります。残りの半分はそれらの後片付けをします。時間が経つにつれて、クリーンアップ チームが新機能チームよりも大幅に大きくなる必要があることに気付くかもしれません。

あなたの最初のステップ(ある程度の進歩を遂げたようです)は、コードの品質とその測定方法(テストカバレッジ、循環的複雑度など)を決定することです。次に、これらの指標を現在のコードに適用し、標準に達していない部分がどれだけあるかを理解できます。このコードは、返済が必要な「技術的負債」が発生したコードです。

次にやるべきことは、この技術的負債を返済することです。これには、このコードを、導入した標準に合わせることも含まれます。頻繁に行う必要がある場合、これは退屈な作業ですが、実行する必要があり、自由に実行できる人が実行する必要があります。

最後に、品質基準に沿ったコードを作成することを主な目標にします。締め切りが来たら、しばらく無視しなければならないかもしれませんが、締め切りが来たら、コードを必要な品質に戻すことを優先します。

于 2009-11-30T11:24:06.770 に答える