はじめに
技術力がついてきた、と感じる瞬間はいつでしょうか?
わからないところがない、決まっていないことがない状態。
完了までの解像度が高い状態。
つまり 「あとはコードを書くだけ」 になっていることではないでしょうか。
(そしてコードも頭の中にイメージできている! )
では、この状態を体験するには何をすればいいのでしょうか。
今回は、「おなじアプリを3周する」というアプローチで、設計力や実装力、作業効率化のノウハウを体系的に高める方法をまとめます。
学習の5段階について
おなじアプリを3回もつくるのはさすがに退屈では?
ソフトウェアの作り方に正解がないように、おなじものを作っても完成までの道筋は無限です。
どのルートを通ると最適なのか、どの道具を持っておくとラクに成果がだせるのか、考え方をアップデートしながら周回するので退屈はしません。
以下にまとめている「学習の5段階」を念頭におくと、1周目〜3周目までのねらいが違うので初学者には特に効果的な取り組みだと考えられます。
レベル1:無意識的無能
知らないからできない
レベル2:意識的無能
知っているけどできない
レベル3:意識的有能
意識すればできる
レベル4:無意識的有能
意識しなくてもできる
レベル5:無意識的有能に意識的有能
人に教えることができる
引用元
お題「ミニブログ」
お題となるアプリの要件は以下にまとめます。
<主な機能>
- ユーザー登録ができる
- 短文のCRUDがある
- 投稿とユーザー情報が紐付くようにする
- ログインすると短文を投稿できるようになる
<基本要件>
- 投稿文字数は140字に制限
- 投稿内容は「全体タイムライン」に表示される
- 表示する内容は以下
- 投稿内容
- 投稿時間(YYYY/MM/DD hh:mm)
- ログイン情報
- ユーザー名(半角英数字のみ、スペース禁止、20文字以内)
- パスワード
- ユーザー情報
- 非公開情報
- パスワード
- 公開情報
- ユーザー名
- プロフィール(200文字以内)
- 非公開情報
- 公開情報は各ユーザーのプロフィールページから閲覧することができる
<その他>
- ビューの記述にはHaml記法をつかう
- CSSテンプレートとして bootstrap をつかう
- ユーザーの認証には devise をつかう
1回目の開発
- 知らなかったことを知る
- できることが増える
まずはアプリケーションを最初から最後まで完成させます。このステップでは、アイデアを形にする力を養うことが目的です。途中でつまずいた部分や手間取った部分をメモしておき、次回以降に改善の余地を探ります。完成までの時間を計測し、後の反復に活かします。
2回目の開発
- さらに知っていることを増やす
- よりスムーズにできることが増える
1回目で得た経験をもとに、2回目では開発時間を半分に短縮することを目指します。このステップでは、再利用可能なコードの設計や、開発フローの効率化に焦点を当てます。また、1回目で気づいた改善点を反映し、完成度をさらに高めることを目標とします。
3回目の開発
- 意識しなくてもできることが増える
- これまで知らなかったことを探しにいく
最後の反復では、さらに短時間での完成を目指すか、あるいは技術や要件に変化を加えてトライします。たとえば、フレームワークやライブラリを変える、MVP(最低限の製品)の要件を一層簡素化するなど、多角的なアプローチを試します。このプロセスにより、柔軟な開発能力や新たな視点が得られます。
おわりに
おなじアプリを3周することで、技術力と開発スピードが確実に向上します。一度で終わる開発では得られない深い学びを体感し、自信を持って新しいプロジェクトに挑むことができるでしょう。
TIPSでいうテクニックとスピードに効きますし、3周目はインテリジェンスの部分もイメージしながら取り組めると最高です。
ここで紹介したのは、学習の5段階について「知らない」→「できる」をぐるぐる回しながら技術力と思考力を伸ばしていく取り組みでした。
スキルセットとマインドセットは両輪で考えて行く必要がありますし、実務においてひとりひとりが能動的に動けるようになると、しなやかで強いチームに近づけると考えています。
+ 1 commit : セルフマネジメントにおける5段階ロードマップ
私たちソニックガーデンが考えるセルフマネジメントについても5段階ロードマップがありますので併せて紹介します。
新入生はLv1をしっかり続けていくことがたいせつです。こちらもご覧ください!