Hello Engineer World! 新人リケジョの1年
-
Upload
satoko-shiroi -
Category
Career
-
view
2.581 -
download
2
description
Transcript of Hello Engineer World! 新人リケジョの1年
Hello Engineer World!新人リケジョの 1 年
2014/05/18Acroquest Technology 株式会社
白井 智子
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
JJUG CCC 2014 Spring#ccc_r56
自己紹介名前:白井智子所属: Acroquest Technology Co., Ltd.Twitter : @white_lucFacebook :
https://www.facebook.com/satoko.shiroi
趣味:デザイン、写真、 音楽 ( 鑑賞、演奏 )
Copyright © Acroquest Technology Co., Ltd. All rights reserved.2
学生時代
1. 筑波大学大学院メディアデザイン系のリケジョ→大学 4 年から、可視化の研究を始めた。
2. 研究発表のため、フランスの学会にも参加!3. プログラミングはあまり勉強していなかった。
→ 研究のために少し Java を触った程度。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4
?!
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5
?!?!
学生時代
1. プログラミング?① 動くと面白いのだけど・・・
正直、苦手だった。② ソースコードを書いて動いたけど、
実は、何やっているのかよく分からん。
2. Java の知識はほとんどなかった。① とりあえず動けば良いと思って、
開発していた。(よくある学生のレベル !? )
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
Copyright © Acroquest Technology Co., Ltd. All rights reserved.7
そんな私がプログラミングを
好きになった、 1 年間
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8
今日は新人の一年を通して自分が感じたことをありのままに、お話します
Java と新人研修と私
コンテンツ
Java と新人研修と私①.入社前の私から見た Java②.新人研修にて
③.プロジェクトに入って
④.1 年を振り返る
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
① 入社前の私から 見た Java
10
1. Java って学ぶべきものが多過ぎ !?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11
標準の機能であっても・・・
1. Java って学ぶべきものが多過ぎ !?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 12
OSS もたくさんあって・・・
1. Java って学ぶべきものが多過ぎ !?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13
システム全体を考えれば、それ以外にも・・・
14
一体、何を学べばいいの !?
2. これから Java を学習する人が直面する問題
Copyright © Acroquest Technology Co., Ltd. All rights reserved.15
1. 「 Hello World! 」は実装できるけど、実際のシステム開発で「 System.out.println 」とか実装したら、怒られるでしょ。( 本で紹介される Java と実際に扱う Java は違う )
2. 以前から学習している人は積み上げになるが、Java は歴史が長い分、これから Java を学習する人にとっては覚えることが多い。
3. 何かの機能や処理を実現するにしても、その選択肢が多すぎて、どれが適切なのか判断つかない。
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
なんか、いろいろ勉強しないとやばそう…
16
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
と、考えているうちに入社して、新人研修スタート!
17
2013/04 2014/03
今ここ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
② 新人研修にて
18
1. 新人研修のイメージ
1. とりあえず、コード書ければいいんじゃない?(まだ、そんなに書けないけど…)
2. Java なら、やっぱりオブジェクト指向?
3. 設計って、何するの?これまでもやっていないけど、必要なの?
4. 流行りのアジャイル開発とかやるんでしょ?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 19
2013 年 4 月
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
やっぱり Java を使うなら、オブジェクト指向ぐらい分かっていないとダメですか?
以前に少し勉強したけど、結局はよく分からなかった
犬も猫も哺乳類で…「人」はクラスで、
「 A さん」はインスタンス…
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 21
虎の穴研修
2. 実際に行った新人技術研修の内容
1. 原則 2 ヶ月間の研修① 早く終わった人から修了可能② 終わらなかったら…
2. 複数の Java プログラミング課題① 設計/実装/テストを一通り行う② 課題は個人ワークとして進める
3. スケジュール・進捗管理も実施① デイリー・ミーティング② データ測定・分析・報告
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 22
2. 実際に行った新人技術研修の内容
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 23
4 月1W 2W 3W 4W
5 月1W 2W 3W 4W
課題①PSP 研修
課題②コンソールアプリ
課題③Androidアプリ
①-1
③Android アプリ
② コンソールアプリ
①-2 ①-3
成果発表
1. 新人の 1 日のスケジュール
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 24
2. 実際に行った新人技術研修の内容9:00 掃除
9:30 始業・朝ミーティング
9:45技術研修10:30
11:0011:30 ランチ・プロ研12:0012:30 レビュー13:00 技術研修13:30 ビジネス研修14:0014:30 技術研修15:00 コーヒーブレイク15:15 レビュー16:00
技術研修16:3017:0017:3018:00 夕方ミーティング18:30 研修終了・退社
3. 研修でのポイント
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 25
①プログラミングを知る
②仕事でプログラミングをするということ
③進捗管理(セルフマネジメント)
3-1. プログラミングを知る
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 26
① オブジェクト指向の前に、理解しておくべき、プログラミングの基礎
プログラムの処理はどうやって成り立つの?• クラスとか、スコープ( public/protected/private )
とか、最初は分からなくても良い。
• どのようなプログラムも、「順次処理」「繰り返し」「分岐」が基本の処理となる。
3-1. プログラミングを知る
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 27
② 処理(ロジック)と合わせて、基本的なデータ構造を理解
データをどのように扱うのか?• 変数/配列 < リスト/マップ < オブジェクト
• コレクションフレームワークは、整理して理解すると、確かに便利だと思った。
3-1. プログラミングを知る
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 28
③ いままで理解した処理やデータ構造のことを、オブジェクト指向に繋げて理解する
プログラムを整理して、分かりやすくする• 処理や機能の役割を考え、まとめたり、分けたりする
→メソッドやクラスが何かを考える。 →役割や責務で整理。名前の付け方重要。
• レイヤー化やコンポーネント分割 →クラスのまとまり(パッケージ)を考える。
• インタフェース/継承/委譲 →プログラムを整理する技術(と単純に考えた)。 →初めから理解するのは難しいが、既にあるプログラムを 整理するために使うと、理解しやすい。
3-2. 仕事でプログラミングをするということ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 29
① 設計をする
② 実装する
③ テストをする
一通りの工程を学ぶ
④ レビューをする(してもらう)
+
研修中、繰り返し実施
3-2. 仕事でプログラミングをするということ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 30
① ちゃんと設計をする• 設計をする ≠ 設計書を書く
• 実現しようとしているものを整理して考える
• 一度設計したら終わりではなく、練り直す
楽にプログラムを作れるようになる! →シンプルな構造にすることで、実装がしやすい →バグも減り、拡張やメンテナンスもしやすくなる
3-2. 仕事でプログラミングをするということ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 31
② テストを習慣付ける• JUnit を使って、こまめにテストをする
•仕様に基づいたテストケースを作成する
• 面倒くさがって、まとめてテストしない
自分が開発したプログラムの品質を高める! →自分が開発したものに対する手ごたえを得る →エンジニアとして、開発したものに責任を持つ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 32
③ほぼ毎日、レビューを実施
3-2. 仕事でプログラミングをするということ
• 1回 30 分~ 1 時間•対面でレビュー• 自分の成果物を説明し、それに対してコメントをもらう
• 設計/実装/テストの各工程で実施
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 33
③ほぼ毎日、レビューを実施
3-2. 仕事でプログラミングをするということ
• こまめにレビューをすることで、方向性のズレや誤りを、早めに是正することができた
•経験ある先輩社員の考え方を学ぶことができた
• Java の標準 API や OSS ライブラリを教えてもらい、使い所を覚えていけた
成長が加速
3-3. 進捗管理(セルフマネジメント)
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 34
デイリー・ミーティング① 朝に作業確認
② 夕方に進捗報告
③ 問題があれば、早期に改善
3-3. 進捗管理(セルフマネジメント)
新人最初の状態① 予定時間内に作業が終わらない
(予定した時間の 3~ 5倍かかる)② 「あと少しで終わります!」が続く
(で終らない)
自分の状況を正しく把握する③ 作業の実績を計測④ 規模、時間、問題の数
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 35
問題に気付き、改善する!
4. 研修で目指していたこと
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 36
①本質を理解することで、 10 年先でも活躍する
②職業プログラマではなく、プロとしてのプログラマ
③どうしたら良いか、自分から考えられる
研修で目指していたこと
「成長し続けるエンジニア」
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 37
2013/04 2014/03
今ここ
(なんとなく)できる
エンジニアへ!
2013/06
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
③プロジェクトに 入って
38
1. プロジェクトへの配属
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 39
Storm を利用したビッグデータ処理のビジュアルなモニタリングシステムの開発
• Storm• HBase• SpringMVC• JavaScript• Backborn.js• SVG• HTML5
新しいものだらけで
分からないことだらけ
なんですが!
Storm
Backborn.js
SpringMVCHBase
2. 最初は大変でしたよ
1. 環境構築するだけでも大変① 仮想環境を用いて、複数サーバを構築② 環境設定とか、良く分からないし…③ そもそも、 Storm とか HBase とか、新人には
無理ありますよ。
2. 開発言語も複数使う必要あり① Java がメインの言語だけど、画面を開発するのに、
JavaScript ( HTML5 や SVG の扱い含む)も多く利用する② クライアントサイド MVC ?
サーバ側もクライアント側も MVC って、何それ?
Copyright © Acroquest Technology Co., Ltd. All rights reserved.40
先輩含めて、 3 人での開発でしたけど、自分にとっては、難易度高過ぎ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 41
でも、やっていて
楽しくなってきた!
2. なぜ、楽しくなったのか?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 42
動いた! ではなく…
2. なぜ、楽しくなったのか?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 43
1. 研修で学んだことが繋がった。① 実現したいことを具体化するために、
設計して整理② 処理の基本は変わらない、その組合せ③ 知らない OSS とかでも、調べつつ、動かすこと
ができるようになった
2. 自分が好きな可視化の分野でかたちになるモノが開発できた!
※ 後日談
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 44
後から、上司に聞いた話では…可視化や画面系の技術が好きだ、ということを知っていたから、その興味を活かせる仕事が良い、と思ってアサインしたんだよ。
君ならやってくれると信じていたよ!
自分の興味に合った仕事を選んでくれてたなんて、上司やるじゃん!
上司※実物は、写真とは多少異なる
場合があります。
3. 最初のプロジェクトでの成果
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 45
Java での Web アプリケーションの開発ができるようになった!
Java 以外のことも、たくさん勉強する必要があったけど、画面があるのは、やはり分かりやすくていいですよね!
実際の開発業務を通してさらに技術的な興味範囲も広がった
4. はじめての夏
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 46
自社で主催の『 ATN ( Advanced Tech Night )』という社外勉強会で、スピーカをやらせてもらった。
基本的な可視化の手法と、可視化のためのJavaScript ライブラリである『 D3.js 』について紹介!
2013 年 8 月
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
… ん?Java に関係ないって !?
47
4. はじめての夏
1. プロジェクトの中で、可視化の話をしていたら、先輩から勧められて、スピーカーをやることに。
2. 「いつかは自分も…」とは思っていたけど、入社して半年も経たない内にやることになるとは !?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 48
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 49
2013/04 2014/03
今ここ
たくさんのチャレンジをしてモチベーションも
アップ !!
2013/06 2013/08
5. その後
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 50
① モニタリングシステムの開発 ~シーズン 2 ~( 2013 年 9 月~ 2013 年 11 月)
② SpringMVC を利用した Web システムのプロトタイプ開発 ( 2013 年 12 月~ 2014 年 3 月)
③ REST ベースのメッセージングシステムの開発( 2014 年 4 月~現在)
Web 系システムを中心に開発を担当
最初は OSS とかも良く分からなかったけど(それなりに)使えるようになってきた !?
得意分野を作ることが大事
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
④1 年を振り返る
51
1. 1 年間の状況
Copyright © Acroquest Technology Co., Ltd. All rights reserved.52
新人研修
2013/04 0406 08 10 12 2014/02
ビッグデータ処理のモニタリングシステム
SpringMVC を利用したプロトタイプ
•プログラミングの基本•JavaAPI•OSS のライブラリ•進捗管理
•Web アプリの開発•JavaScirpt/ HTML5
•OSS の Web フレームワークの活用
プログラミング
わからない好きじゃない プログラミン
グが好きになっ
た
開発が楽しくなってきた
何となく分かってきた気がする
PJ配属 ATN 発表
2. 自分自身を振り返ってみて
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 53
Before
2. 自分自身を振り返ってみて
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 54
After
2. 自分自身を振り返ってみて
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 55
入社前と比べると、プログラミングに対する考えもスキルも、大きく変わった。
開発が楽しくなった!
① プログラミングに対する苦手意識がなくなった• 基本の考え方が分かると、大きなシステムでも怖くない。
② Java は、覚えることが多過ぎると思っていたけど、自分の興味分野から広げていけた• 全部覚えなくて良い。• 知らないことは、分かっている人にどんどん聞こう。• 勉強会に参加することで、刺激も受けた。
3. 自分が勉強した内容
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 56
研修やプロジェクト以外に、こんな本を読んで勉強しました(新人の皆さんの参考になれば)
4. 先輩からのサポート
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 57
先輩のレビューに感謝!
ただ、先輩から教えてもらって、理解したことも多くありました
① レビューで、自分の成果物を積極的に見てもらう• 先輩ならば、どのようなクラス構成を考えるのか?• 自分が知らない API や OSS も教えてもらえる。
② レビューを通して、自分の弱点も分かってきた• なんとなくのイメージ(実は、分かっていない)で実装に詰まる。
• 設計段階で、自分が作るもののイメージを、上司と一緒に検討する。
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
まとめ
58
まとめ
1. プログラミングに対する見方が変わった① 考え方を学ぶことで、分かるように② 「苦手」→「好き」③ Java も、だいぶ、扱えるようになった!(たぶ
ん)
2. チャレンジすることで、成長する① 新人なんて、分からないことだらけチャレンジすることが重要
② 勉強会に参加するのも、楽しい!
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 59
ご清聴ありがとうございました。
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
Infrastructures Evolution