2017.04.03
5つの習得レベルで考える、技術の学習をしながら制作するときのメソッド
Maromaro のコーダー hoshida です。
新しい技術を学ぶときには、具体的に何かつくってみるのが一番です。実践に勝るものはありません。
しかし、その技術のことを何もわからない状態から制作を進めるのはなかなか大変です。
そこで今回、私が技術の学習をしながら、その技術によって制作をしていく際の方法、工程、スケジューリングなどについてまとめました。
なお、当記事は私がCakePHP3で簡単なWebアプリケーションを作った際の経験をベースとしていますが、その他の技術習得の際の経験も踏まえています。そのため記事の基本的な部分は他のフレームワークやプログラミング言語、AdobeやOfficeのソフトなどにも応用できるのではと思います。
技術習得の5つのレベル
最近、どんな技術であっても習得の過程で同じような段階を経てレベルアップしていくことに気づきました。
その段階を、以下のように定義します。このレベルをベースとして、制作の方法やスケジューリングについて解説していきます。
・前提として必要な知識の不足。
CakePHPであればPHPを理解していなかったり、そもそもパソコンスキルがなかったり。基礎能力を身に着けてからトライしましょう。
・初心者の状態。ここからスタート
・断続的で長期的な学習の時間が必要。1時間だけなどでなく、まとまった時間を確保したほうが良い
CakePHPであれば、PHPは理解しているけどCakePHPのことはお菓子屋さんのデータベースか何かだと思っている状態です。
・事前に仕様が実現可能か判断できず、工数も予知できない
・断続的で長期的な学習の時間が必要。1時間だけなどでなく、まとまった時間のほうが良い
・悩みが複雑になってくるので習得済みの人からの助言が最も必要になるタイミング
・事前に仕様が実現可能かどうかをある程度判断できる
・限定的な内容で工数を予知できる
・単純なものや部分的な補助として業務に参加できる
・多数の実務をこなすことで到達できる
・仕様が実現可能かどうか判断できる
・開発の工数を予知できる
・業務のメイン担当やディレクションができる
・履歴書とかに堂々と書いてよいレベル
・所謂プロ
学習中は、自分が今どのレベルにいるのかを自覚しながら作業をしていきます。
目標の設定
まず作るものを決めます。作るものは、難しすぎず優しすぎないものにつきます。
今現在それが必要なものであればなお良いです。具体的、即物的な目標があったほうが絶対に良いのです。
CakePHPの場合であれば、ログイン機能のあるブックマークアプリとか、簡易ブログとか、管理画面付きのメールフォームとかでしょうか。
この目標の設定だけは、レベル4の指導者に意見を聞くなど、根拠があると良いです。難しすぎるものやそもそも無理なものにトライしてしまっては時間や労力が無駄になりかねません。指導者がいない場合は、Howto記事や教本を根拠にするとよいでしょう。
また、人は制作でつまづいたときに「この技術ではこのレベルのものはそもそも無理かもしれない」という思いが生じてしまうものですが、この思いが強くなると挫折します。レベルの上の人に目標を定めてもらうと、「必ずできるはずで、できるようになることが求められている」という確信を持つことができます。この確認が学習においては非常に大切です。
学習・制作の方法
学習・制作の具体的な方法は、はかどる方法で頑張ってください!としか言いようがありません。ネットでHowtoを探すのも良いですし、技術書や教本を読んでもよいでしょう。
……というのもあんまりなので、私がCakePHPの学習でレベル3になるまでの具体的な流れと、参考にしたサイトを別の記事にまとめました。
このときは「技術についての大前提を調べる」→「公式のチュートリアルにそって適当なものを作ってみる」→「必要な機能の作り方を一つづつ調べて作る」というような流れで進めました。どんな技術であれこんな風に調べまくって手を動かすしかないでしょう。
学習しながら制作する場合の工数
まず、制作物を完成させるためには作業者がレベル3まで達する必要があります。
学習を兼ねて制作を進めていればレベル3になった時点である程度ものができてるはずなので、「レベル3に至るための時間+α」で制作を終えることができます。
「レベル3に至るための時間」は技術によって幅があり、個人差も大きいので学習者が事前に予測することは難しいですが、話を進めるために仮定します。
レベル1から2になるための経験値 = 40時間
レベル2から3になるための経験値 = 40時間
表にすると以下のとおりです。
これはCakePHPの学習に基づいてやや多めに試算しましたが、他の技術でもだいたいこんなもんだったような気がします。簡単な制作物ならもっとずっと短いでしょう。ただどんな技術や制作物であれ、ある程度の時間は必要になります。新しい技術を身に着けるために最初にすることは時間の確保と言えるでしょう。
これに基づいてスケジューリングができます。
スケジューリング
制作開始時にはレベル1なので、本来は工数がわからずスケジューリングはできません。ですが目標としてでもスケジュールは絶対にあったほうが良いです。上記に設定した工数を使ってきめてしまいます。
まず、システムの完成予定日と、リスケジュールの判断日を決めます。リスケは絶対するものとして始めに定めてしまいます。
リスケジュールの判断日は「レベル3に至るための時間」(80時間後)です。そして上記の工数に基づいて、完成日はそこに「+α」した時間となります。「+α」は24時間とかにしておきましょう。
これで作業を進めていきます。リスケジュールの判断日までの間にもう少し細かい目標を設定してもいいですが、それらはすべて予定です。厳守すべきものではありません。
リスケジュールの判断日までに予定通り制作者がレベル3になっていれば、もう大まかな未来の作業量や工数を予測できるので、もう少し具体的なスケジュールを組めるはず。もし完成に間に合わないと判断したら、新しい完成日を定めます。その後スケジュールに乗らなかった場合は随時調整します。
リスケジュールの判断日までに制作者がレベル3に達していない場合、システムの完成日と、リスケジュール判断日も再び設定します。そして引き続きレベル3を目指します。このとき、もし目的が技術習得でなく制作物を作ることなのであれば、ここで開発者をバトンタッチするなど、方向転換をしてもいいかもしれません。
また、10時間くらいやってもレベル2になれる気配が全くない場合、そもそもレベル0である可能性があります。学習や制作の計画を見直しましょう。
仕様を決める
最初に定めた、目標とする制作物の具体的な仕様を決めます。
スケジュール同様、仕様もレベル1では判断できない要素が多いです。なので不確定要素があることを加味して設定をします。
まずできるだけ細かく仕様を定めてしまいます。その際に、機能や仕様の重要度や優先順位も決めます。例えば、
・絶対にその仕様でその機能が必要なもの
・多少仕様が変わっても近い機能で実装できればいいもの
・完成後に後追いで追加できればいいもの
・無くてもいいもの
のように設定をします。重要度が低いものについては仕様の流動性を許すようにします。
作業を進め、作業者がレベル3に達した段階で仕様の確認を再度行います。レベル3であればある程度仕様の難易度や可能不可能が判断できるはずです。
当然ですが、学習しながら制作をする場合は最初にかっちり仕様を定められません。そのため、何の機能が最重要で、何が余分なのか、それがはっきりしている必要があります。流動性を許す分、趣旨や目的は明確である必要があります。
まとめ
色々と解説しましたが、学習に最も必要なのは結局のところ時間と実際に手を動かすという行為です。手を動かさなければ技術は身につきません。時間を確保でき、手を動かし始めることがとにかく大切です。
そのうえで、効率的に作業したい、学習の成功率を上げたいという場合には当記事が参考になるかと思います。
ではでは。