プログラミング未経験者が3か月で開発エンジニアに!~オプティムが本気で取り組む IT人財教育プログラムの全貌〜

R&D チーム新卒3年目の板垣です。8月になり、本年度から新卒・中途入社された方々はもう入社された会社に馴染んで、仕事が楽しくなってきた頃でしょうか。 さて、今回は 4/11(木) - 6/28(金) の約3ヶ月間にわたって弊社で行われた、19新卒向け「IT人財化教育プログラム」の研修の全貌をご紹介したいと思います。

f:id:optim-tech:20190809152533j:plain

目的・背景

まずは、HRから本プログラムの研修目的・背景に関して、以下のコメントをもらいました。

全世界規模でエンジニアの人財獲得競争が激化している中、オプティムでも、優秀なITエンジニアに来て頂く事が、経営理念である「世界の人々に大きく良い影響を与える、普遍的なテクノロジー・サービス・ビジネスモデルを創り出すこと」の実現に直結する最重要課題です。 新卒採用では、これまで情報系の学部や高専などでソフトウェア開発の素養を既に培ってこられた方々と多くお会いしてきており、今後もより多くの出会いを模索していきたいと考えています。

一方、オプティムが掲げる、あらゆる産業の第四次産業革命化を進める「〇〇×IT 戦略」を進めていく中で、情報系以外の学生さんとの出会いも多くなりました。例えば、農業×ITの取り組みに興味を持って下さる農学部の学生さんとの出会いは非常に多く、その課題意識の高さも然ることながら、地頭の良さ・素直・勤勉さもお持ちで、「まさに、こんな方々にオプティムの一員になって欲しい!」と感じる人が非常に多いです。また、そんな方々の多くが、未経験ながらITの素養を身につける事に対しても前向きである事も大きな気づきでした。

そんな“大きく前向きなモチベーション”を持つ皆様が仲間に加わってくれれば、オプティムが世界を変えるサービスを創り出していく上で間違いなく大きなパワーとなる!という思いから、IT未経験者の採用強化と、入社後の成長・活躍を支援する「IT人財教育プログラム」の実施を決めました。また、やるからには“お勉強”で終わるのではなく、本気で開発担当を目指してもらう、“ガチの”プログラムとする事もコンセプトに加えました。

私個人としては、情報系以外の学生の方々が未経験からそれを仕事にできるという機会を会社が提供できるというのは素敵なことであると思いますし、これまで培ってきたIT以外の専門知識を掛け合わせ、開発にダイレクトに活かすことができたら、本人、会社、お客様、皆にとって素晴らしいことだと思います。 本研修に関しては、単にITの知識を教えるということも勿論ですが、わからない事・気になった事があったら直ぐに調べる習慣や、ちょっと調べてもわからなかった時は遠慮なくお互い聞いて教え合う習慣・環境づくりをして、各々が研修後も成長し続けられるようできればという思いを持って臨みました。

目標

本教育プログラムを実行するにあたり、達成したい水準・状態は以下のように設定しました。

  • オプティムで定義しているエンジニアのスキルレベルに到達すること、あるいはそのポテンシャルを獲得すること
    • ポテンシャルとは、あとは経験さえ積めばそれ相当のレベルに到達しうるということが明確に分かる程度のスキルや知識を身につけること (調べ方、質問の仕方、内容などに顕著に表れる)​
  • 研修を受けた対象者が、エンジニア配属に対して前向きであり、過半数がその大きく前向きなモチベーションを持って『開発』に配属されること

対象者のバックボーン

対象者全員が非工学・情報系出身者であり、学部・学科は様々でした。例えば、上記で書いた通り農学系の学部学科出身者もいましたが、それ以外にも、海洋生命科学や、薬学部創薬科、中には、文学部史学科、法科大学院の出身者もいました。

運営体制

「本気でエンジニアになってもらう」事を目指した取り組みとして、運営体制もオプティムが考え得る最強の布陣で挑みました。オプティムに2人しかいないTop Engineerであるエグゼクティブエンジニアが担当し、塾長に中野、総合的なアドバイザーに奥村、という布陣を敷きました。また、現役エンジニアから近い距離感でアドバイスやサポートを受けられるようなサポーターチームを設置しました。私は塾長補佐としていくつかの講義と実習中の技術サポートを担当しました。

研修概要

講義による広い知識の獲得、実習(プログラミング研修)​によるプログラミングの体得の2軸で実施しました。 実習(プログラミング研修)​の後半ではチーム開発を行い、各受講生が現場配属後にチーム開発時の連携、コミュニケーション等で苦労することなく、開発そのものに集中できるように、サポーター間で連携しながらアドバイス、サポートしました。

  • 講義
    • IT全般の知識インプットのために実施​
    • 全28回 + α (Tips講義)​
  • 実習(プログラミング研修)​
    • プログラミング能力獲得のために実施​
    • 基本的には自己学習​
    • 教材は書籍とネット情報​
    • 約3ヶ月弱

講義内容 (シラバス)

  • Introduction
    • プログラミングの基本
    • エンジニアリングの世界
    • 企業における開発について​
    • コンピュータとプログラミング言語
    • 情報の探し方、追い方、学び方
  • Basic
    • プログラミングの手法
    • プログラムの高速化・最適化
    • ネットワーク
    • アプリケーションアーキテクチャ
    • システムアーキテクチャ基礎 (オンプレミス・クラウドコンピューティング)
    • ドキュメント・図の起こし方とその重要性
    • ソフトウェアテスト
  • Advanced
    • AI、IoT
    • WEB
    • セキュリティ
    • OS と仮想化技術
    • 開発と提供
    • 運用と監視・改善 (SRE)
    • システムアーキテクチャ実践

実習(プログラミング研修)​内容

Step 1 (4/11(木) - 5/10(金))

  • まずはそれぞれ自分の手でプログラムを作って、自分が作ったものが手元で動く「成功体験」を得ることを主眼とする​
  • プログラミングとは、試行錯誤であり、トライ&エラーであるということを知る​
  • Java/Androidを対象とする​
  • 前半​ (4/11(木) - 4/19(金))
  • 後半​ (4/22(月) - 5/10(金))
    • TODOアプリ【設計・開発】
    • 使用言語・フレームワーク
      • Android + SQLite

Step 2 (5/13(月) - 6/28(金))

  • 現場配属前の研修として、PBL形式 (Project-Based Learning) でチーム開発を体得してもらう​
  • スマホアプリだけでなく、APIサーバーやWebクライアントの実装を通して、ほぼフルスタックに開発していく​
  • 前半​ (5/13(月) - 5/24(金))
    • TODOアプリのWEB/クライアント【設計・開発】​
    • 使用言語・フレームワーク
      • Vue.js (JavaScript)
  • 後半​ (5/27(月) - 6/28(金))
    • TODOアプリのAPIサーバー実装・WebクライアントおよびAndroidアプリのAPI連携【企画・設計・開発・テスト・運用】​
    • PBL 形式
    • 使用言語・フレームワーク
      • Go・Ruby on Rails​ (Ruby)・Vue.js (JavaScript)・Android・PostgreSQL・Docker
    • 言語、フレームワークをローテートし、全員一度はすべてに触れるようにする

研修中の様子

講義中は、講義している途中でも研修メンバーからどんどん質問が出てきて、講義の中でしっかり理解しようと努めている姿勢が見られました。

f:id:optim-tech:20190723170727j:plain

また、実習中は各人、Slackを活用して質問したり、時には直接メンターの方のところまで行って質問している様子が見られました。そこでただ単に解決方法だけでなく、調べ方や聞き方、エラーの読み方などといったことを学んでいました。

チーム開発では、チーム毎にソースコードを見たりホワイトボードなども使用したりして毎日議論や進捗確認をしている様子が印象的でした。その中で認識の統一や優先順位づけをやっているようでした。更に、チーム内だけでなく、チームの垣根を越えてみんなで協力して開発していく様子も見られました。

最終日の成果発表では、2チームともスライドやデモの見せ方を工夫して、わくわくする発表となりました。

f:id:optim-tech:20190723192411j:plain

受講生の声

今後の人財教育のため、受講生にアンケートを取って赤裸々に答えて頂きました。

  • 良かった点
    • IT企業に入ったのにITの基礎を何一つ知らなかった自分にとって、プログラミングの基礎を学べる時間を得られたことは非常に大きかった
    • HTTP、APIなにそれ?の状態から、その仕組みや流れを大枠でつかんで、コードに落とし込む経験をさせていただいたので、配属後に類似する業務があっても困惑することなく作業に入れた
    • 内容構成とペースが非常によかったと思います。緊張感持って楽しく、効率よく学ぶ事ができた
    • ググり力を付けてもらうことが大事と強調されていた事がよかった。例えば、エラー文をまるごと検索してもダメで、エラー内容を読み取ってから検索することの重要性は配属後も再認識している
    • 配属先で使用することになる言語だけでなく、他の言語にも触れさせてもらったことで、他のサービスについても興味が湧いている
    • Javaから学び始めたことで、Ruby, Goがなぜ作られたのかがなんとなく分かった気がする
    • 仲間たちと積極的に議論し合いながら学べた点がよかった
    • 知識もそうですが、何より心持ちや気構えを学ぶことが出来た
    • 研修の期間が自分にとって大きな自信に繋がってるので、どんなことにも臆さず積極的にチャレンジできるようになった
  • 改善点
    • もう少し講義の時間を多くとっても良かった
    • もっと基礎に掘り下げても良かったと思う。プログラミングに割く時間は多いのは良かったが、基礎理論やパソコンって何?というところが全くわかっていなかったので戸惑う時も多かった
    • よいコーディングの方法みたいなテーマの講義を聞きたかった
    • 欲をいえば、各言語やフレームワークにかける時間をもう少し長くしてほしかった
    • VM上での操作を学びたかったです
    • ネットワークについてもう少し学びたかったです
    • 研修で口頭で話し合いしちゃうので、issue やチケットをもっと活用していればよかったなと思います

研修を終えて

各チーム、機能要件を完全に満たしたものは作成できませんでしたが、その中で各チーム重要と思われる機能をユーザー視点で優先順位づけして実装していました。 また、各人、ソフトウェア開発の奥深さ・幅広さ・楽しさといったものを感じ取ったみたいでした。

研修後の配属に関しては、各人の希望も尊重して、8名中、開発4名、検証1名、技術企画1名、サービス企画1名、営業1名という結果となりました。 研修最終日に提出して頂いたレポートを見ると、開発配属となった方だけでなく、検証・企画・営業配属になった方も本研修でIT技術の重要性を認識し、これからも継続的に学んでいく必要があると感じたようです。

そして、はじめの方に書いた本プログラムの研修での成功の定義に関しては、8名とも程度の差はあれど、エンジニアと技術的な話ができるようになったと感じますし、開発配属になった方は開発配属に対して前向きで、8名のうち半数がそのモチベーションを持って開発配属となったので、本プログラムでの研修は成功といっていいのではないかと思います。

また、開発配属の方だけでなく、検証・企画・営業配属となった方も、今回の研修でWebクライアント、モバイル、APIサーバー開発を一通りやりきったということで、検証の方はより内部の実装のことを考えて検証をしながら開発者と円滑なコミュニケーションを取れるでしょうし、企画・営業の方は、お客様の要望を実現可能でより効果的な形としてシステムに落とし込める、お客様にご提案できる稀有な人財として、自らの業務に大きな付加価値をつけて活躍してくれることと思います。

重要なのはこれから(研修後)であり、経営理念にもあるように、各人がオプティムのみならず、世界の人々に大きく良い影響を与えられるよう、ビジネス的な価値を提供していけるよう、各配属先のOJT担当者や上長の方のサポートのもと、日々インプットとアウトプットを欠かさずにやっていくことが重要だと思います。各人、そのことは自ら感じているようなので特に心配はしていませんし、そんなやる気に溢れる彼らと一緒に私自身、身の丈に合わないチャレンジの精神を忘れることなくやっていこうと彼らを見ていて改めて感じました。

各人が研修で感じたことは、受講生の声にもありますようにアンケートやレポートという形で書いてもらったので、それも参考にこれからの採用や人財育成に活かしていく予定です。

最後に

オプティムでは、世界の人々・各産業に大きく良い影響を与えたい方、身の丈に合わない大きな志を持って楽しみながら挑戦し、自ら己の可能性を広げられる方、そして、あらゆる属性を意識せず思いやりを持ってこれからのオプティムという組織・文化を創っていって頂ける方を通年で募集しています。新卒採用では引き続きプログラミング未経験者も採用しています!私たちと一緒に世界を変える大きなことにチャレンジしたいという方、是非以下をご覧になってください。ご応募お待ちしております。

www.optim.co.jp