自分用まとめ~研修資料から学ぶ

企業が公開しているスライドは勉強になることが多いのでよく見ていますが、今回は「人は1ヶ月でエンジニアになれるのか」を紹介します。

本人の努力と熱意が素晴らしいのと、メンターとして指導した側の詳細解説がとても為になります。独学の難しさとメンターの重要性がわかる「実際にエンジニアになった方」と「教えた側」の2つのスライドです。

1ヶ月でエンジニアになる

人は1ヶ月でエンジニアになれるのか from Slide Share

新卒2年目で、WEBマーケターからエンジニアに1ヶ月で転向した時のことをスライドで解説しています。

1ヶ月の学習内容まとめ(リンク切れは差し替えてあります)

1ヶ月でエンジニアになるには、この量を勉強しないとダメなんですね。公式チュートリアルと書籍で自習するのは誰でも真似できそうです。

トレーナー視点で解説

人は一ヶ月でエンジニアになれるのか – 詳細解説from Slide Share
このスライドは 上のスライドのトレーナー側の目線で、教材・方針・進行について解説しています。以下詳しい内容を一部抜粋して紹介します。

前半
  • 独学のデメリット
  • 独学で学んだ人は多いし、当然「学べる」。 しかし、効率を比較すれば、早期にメンターを見つけたい。

    • 良い教材を見つけるのは大変
    • 教材自体はたくさん出ているが玉石混交。Amazonレビューなどによりある程度の選定は出来るものの、 どれが今の自分に最適かまではわからない。また万が一書籍選びに失敗したときも「書籍代がもったいない」とサンクコストに囚われて効率悪く続けてしまいがち。

    • 躓いている間の学習効率が低い
    • プログラミングは「環境構築で1ヶ月詰まった」「スペルミスで30分悩んだ」「コードが動かなくなってどう直せばいいかわからない」など、躓いて前に進まない状況が発生しやすい。 一定レベルまで達成できれば後は自習で伸ばしていけるものの、プログラミングを諦めて戦線離脱しまうのはだいたい躓いた時。

    • メンターがいれば、こうした「もったいない」停滞や離脱を抑制することができる。
    • Point
      周囲にそういったエンジニアがいない場合は有料サービスの検討も。コースで完結するものでなく、アドバイザー・メンターがいるのがベター。
      【TECH::CAMP (エンジニアスクール)】
      【TechAcademy (テックアカデミー)】
    • 書籍より引用
    • “高度な専門知識と技能を身につけるうえで「場所」がいっそう重要になる可能性が高い。中世の職人と同じように、私たちも学ぶべき点のある人たちのそばに身を置く必要性が高まるだろう。 – Lynda Gratton (2012) ワーク・シフト ― 孤独と貧困から自由になる働き方の未来図〈2025〉 pp. 268

      “ビジョンと今の現実の乖離はエネルギー源である。 乖離がなければ、ビジョンに向かって 進むための行動を起こす必要もないのだ。 乖離こそが真の創造的エネルギーの源である。 – Peter M. Senge (2011)学習する組織――システム思考で未来を創造する pp. 207

  • 普段の育成(6ヶ月)
  • 基礎から順番に積み上げていく。一気に色んなものを学ぶ方法に比べ「混乱が起きずにひとつひとつの概念を丁寧に学べる」「 その人のペースに合わせて着実に積み上がる」「基礎をしっかり理解することで応用が効きやすい」といったメリットがある。弊社でも通常の新人はこういった育成を行う。

  • 期間による学習法の違い
  • 今回1ヶ月という期間を設けたのはあくまで業務内での緊急的な転身だからであって、理想はもっと時間を掛けたしっ かりとした基礎の積み上げ。 適切な学習法は期間・人によって様々。

    全体の流れ

  1. 事前準備
  2. 環境整備 & 予習
  3. 1週目 習作Ⅰ ‒ すごろく
  4. 2週目 習作Ⅱ ‒ Twitter的なもの
  5. 3週目 本番開発Ⅰ – バグ対応
  6. 4週目 本番開発Ⅱ – 機能追加
後半
  • 入り口(文法など)
  • ドットインストールを何周かしてもらって、簡単な文法や関数についてはカバーしてもらう。一周して終わりではなく、 きちんと手に馴染むまでやってもらう。 「わかる」と「書ける」は別。

  • 自習できるものは自習
  • 基本的に自習の方が早いし、本人のスピードで進められるので良い。不明点はメモっておいて、後から質問してもらう。良い教材が増えればこれでどんどん進められるんですが…今回はドットインストールとGitくらいでした。 AtlassianのGitチュートリアル

  • Gitを先に学ぶメリット
  • Gitはソースコードのバージョンを管理し「壊す前に戻れる」「いくらでも壊せる」機能を提供する。 開発現場でも必須のツールだが、躓きがちな初学者にこそ必須のツールと言える。

  • 自習 + レビュー(1時間)
  • 読書はページをめくっていれば簡単に終わってしまうので、出来ればまとめを作ってもらい頭にしっかり入れる。

  • 課題図書は「まとめ」を作る
  • レビューで何を伝えるか
  • コードレビューから始まるが、それはあくまできっかけ。次 に学ぶべき概念をコードに絡めて話していく。

ウェブ教材
ドットインストール
言わずと知れた初学者向けプログラミング学習動画サイト。 今回はPHPの文法や関数に慣れ親しんでもらうために最初に利用。 開発環境やエディタ、gitなどの講座もあり、最初の一段目として 使いやすい。今回は事前学習で利用。
今回の教科書3冊
かなり絞ってこの3冊。この中でも読んでもらうのは一部の章に絞って指定。 だらだらいつまでも読めてしまうので、しっかり読むために指定部分の「まとめ」を作ってもらう。

タイトルにはアジャイルとあるが、どちらかというとオブジェク ト指向分析・設計に強い本。初学者向けの本とは言い難いが、こ れ一冊マスターすれば、基礎的なOOPの考え方は抑えておけるの で今回の教科書に。パターン周りの細かい所は飛ばす。主に2週 目で利用。 ちなみになぜか絶版中・・・

最近大人気のコーディングテクニック本。「コードコンプリート」 「クリーンコード」に比べコンパクトにまとまっているため、初学 者には渡しやすかった。 読んで終わりではなく、繰り返し読んでコードを見返してもらう ため、全期間に渡って利用。

ちなみにこの本、日本の第三版はなぜかAmazonレビュー低いですが、米国では高評価。 技術書はレビューも参考にならないことが多いので、あまりアテにせずに、 出来ればまわりの信頼できるエンジニアの判断を仰ぎましょう。 (版を重ねた本はレビュー劣化しやすいので、前の版のレビューを確認するという手もアリ)

最後に、プログラミングをこれから学ぶみなさんへ

  • 「サービスを継続的に改善できるようにしていくことは、 動くものを作ることとは全く別物」
  • 人は誰しもが熱意で何かを動かすことが出来るでしょう。 実際今回、関係者以外でも多くの人が自発的に彼の学習を手助けしました。 だから、まずは声をあげましょう。荒らげましょう。 そして、熱意が伝わるだけの行動を起こしましょう。
  • プログラミングは独学で学ぶのが難しい分野のひとつだと思います。最初はピントが外れた行動になってしまうかもしれません。効率の悪い学習の仕方になってしまうかもし れません。
  • 初めからメンターが見つかればそれに越したことはありません。 しかし、その状況にないならば、それを呼び起こすだけの行動を続けてみましょう。それを続けることで周囲の誰かを動かすことはできるかもしれません。

オンライン(progate、ドットインストール)で独学でプログラミングを勉強していますが、書籍で体系的に学ぶ必要性を痛感しています。そしてメンターの重要性。環境構築で躓いたり、エラーで躓いたり、思い当たるところが多すぎて・・・まずは書籍から始めたいと思います。