見出し画像

初期開発段階のエンジニアリングに関して


求められるスキル

コードレビューをしなくても、必要十分な設計ができる

■必要十分な設計力
・TDDができる
・RailsでいうFatController, FatModelにならない設計ができる
・デザインパターンやSOLID原則をもとに設計ができる
・リソース指向のAPI(RESTful)を設計できる
・プレリファクタリングができる

■コードレビューをしなくてもいい
コードレビューをすると、コミュニケーションが発生してしまう
ある程度スキルがある人同士だったら、レビューなしでも必要十分なソースコードを書くので、時間をかけてコードレビューをしなくても問題ない

共通認識を作るためのリアルタイムのモブレビューとかは効果的だと思う

逆にこのフェーズでレビューをしないと、必要十分なソースコードにならない人は、採用をしないことがすごい重要になる


開発手法


・絶対にリプレースをしない
・将来的な拡張性を意識する
・レガシーコードにならないようにテストを書く


■絶対にリプレースをしない
機能追加をすることがコストがかかりすぎると、
機能追加をするためにリプレースをしざぜえないことになってしまう
ただし、リプレースをするとその間は機能開発ができなくなるので、
その間、ユーザーに価値を提供できなくなってしまう
また、競合他社に追従できなくなり、市場へのポジションがかなり下がってしまう


■将来的な拡張性を意識する
このフェーズでは、モノリシックな設計をするほうが開発効率が良い
ただ、巨大な泥団子になってしまうと
そのために、モジュールを徹底的に意識をするといい
将来的にAPIが分割されるのが予想される場合は、最初のパスを分けるといいと思う
以下のようようになる
・users/profile/
・tweets/favorites

■レガシーコードにならないようにテストを書く
将来的な開発コストを悪化させる大きな原因の一つはテストが書いていないこと
テストを書くことに時間をかけても殆どの場合で開発効率があがるのでおこなったほうがいい  

TDDだとユニットテストを書きながら設計、リファクタリングができる
おこなわないと機能追加時にデグレが発生してしまう可能性が高くなる


まとめ

必要十分なソフトウェアエンジニアリングスキルをもっているエンジニアだけを採用して、クリーンアーキテクチャやリファクタリングなどで言及されていることをまもって開発をする

※これができないから、多くの開発組織がうまくいかない事になっていると思うけど


この記事が気に入ったらサポートをしてみませんか?