プログラミングの工程は簡単に分けるとThink、Write、Run、Testのステップがあって、そのサイクルをぐるぐる回している。個人としての開発効率を上げるには単純にそのサイクルの試行回数をへらすか1サイクル自体の速度を上げるかを考える。ここで言う開発効率は決まった機能を実装するまでのことをいう
— UG (@arakaji) 2018年8月9日
施行回数をへらすには、1回の施行で多くのことをやらないといけない。設計を最初で詳細まで考える。その設計を一気にコード化する。コード化した全体を動かしてテストする。ただそれを実行するには技術の詳細を正しく理解していることと、詳細まで設計し実装できる思考力と集中力が必要。
— UG (@arakaji) 2018年8月9日
それをうまくやるコツもいくつかある。
— UG (@arakaji) 2018年8月9日
1. 高機能IDEを使うことで単純なミスを減らしたり、補完をする
2. 機能を詳細設計まで設計・実装可能なレベルまで分割する
3. Testで失敗することも考慮して、はじめから多くのログを吐くようにしておく
施行のサイクルを速くするのは、開発環境を整えることや設計の工夫により可能になる。
— UG (@arakaji) 2018年8月10日
1. ハイスペック端末を使う
2. ユニットテストをできるようにする
3. REPLのある言語の場合は実装したプログラムだけをRunして検証する
4. UIの場合パラメータを渡すことで画面を再現できるように設計する
「UIの場合パラメータを渡すことで画面を再現できるように設計する」は重要で、アプリのテストをするときテストしたい画面に移動し値を入力してやっとテストできるがその手間が大きい。UIも関数型な思想で必要なパラメータを引数で渡すと画面が再現可能にすると、テスト効率が大幅にあがる。
— UG (@arakaji) 2018年8月10日
実装速度を上げる工夫をまとめたけどこれは「実現したい機能が決まっている状態で速くそれを実装する」という話。僕は誰かが3日かかるものを5時間で実装できるというスキルを上がるのも大事だが、解決不能な問題を解決できたり、問題と気づけてないものに問題だと気づける方が価値が高いと思ってる
— UG (@arakaji) 2018年8月10日