kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

53
2016/04/22 吉吉吉 .pm7 @yassan168 吉吉吉吉吉 () 吉吉吉吉吉吉吉吉吉吉吉吉吉吉吉吉吉吉吉吉吉吉 吉吉吉吉

Upload: yasukazu-nagatomi

Post on 09-Jan-2017

38.529 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

2016/04/22 吉祥寺 .pm7

@yassan168 (やっさん)

技術的負債だらけのチームで

技術マネージメントしてみた

Page 2: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

Who are you ?

• @yassan168 (やっさん)

• あらふぉー

• お家は京都。4月で単身赴任2年目突入。

• SIer→ プリクラなどやってる会社に勤務

 ~ 2015/03 :プリ機のソフト開発

  2015/04 ~:プリ機に関するデータ分析

2

Page 3: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

チームのメンバは、

技術に関心がありますか?

3/52

Page 4: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

技術的負債の返済は、

お済みですか?

4/52

Page 5: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

今日話すこと

新しく入ったチームが、

技術的負債でいっぱい かつ

メンバが技術に関心が無い状態で、

やった事 と そこで悩んでいる事について

5

Page 6: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

私が 1 年前に言われた事

データ分析エンジニアが辞めて、

誰もいなくなってしまうので、

そこを引き継ぎ、さらに、

今後、人を増やしてチーム化するので

良い感じにして欲しい。

6

Page 7: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

1 年前の私の状態

• Perl ?あぁ、あのラクダさんのヤツね。

• Svn なら知ってるけど、 Git の経験無し

• Windows で VC++ 使って開発

• Svn/Redmine/Jenkins などのサーバ管理

7

Page 8: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

1年前の状態

• すべてがメールベース

• ドキュメントはほぼ無い

• 最強の属人化。個人のパワーで乗り切る

• 技術に関心が無く誰も行動しない

• 暫定スクリプトが今も元気に本番稼働中

8

Page 9: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

1年前の状態

• ソースには、ほぼコメント無し

• hoge.pl.( 日付 ) 形式のソース管理

• チーム共有ライブラリを require して使

9

Page 10: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

これ、   に出てたやつ

だ!( by 進研ゼミ)

10/52

Page 11: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

こ、これはマズイ事になった

11/52

Page 12: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

まず、やった事

12/52

Page 13: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

なかまをさがす

1 人でやるよりみんなでやった方が、

辛くない。

• インフラ担当者が運良く技術に興味が

あって話に乗ってきた!

– インフラ担当が味方だとかなり動きやすいです。

13

Page 14: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

Redmine の仮導入

自分と前任者だけでもタスク管理を Redmineに移行

• 作業内容や経過を残す為に、

作業をチケット化

–同様の作業をする際に見直しが可能になるので、

引き継ぎ資料の一部に出来る。

14

Page 15: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

Redmine の仮導入

前任者に以下をチケット化してもらった

• 過去やった事

• 過去の障害

• データ分析でのコツ

• 各スクリプトの概要

(何が目的で、いつ動き、なにを出すのか)15

Page 16: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

Redmine の拡散

メールベースの文化をやめて、

部全体で、チケットによるタスク管理をす

るために、布教活動を開始。

16

Page 17: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

Redmine の拡散

ただ、ひたすらに

「便利だよー」「こう使うと良いよー」と

利点とユースケースを説いて周り、

ちょっとだけでも使ってみないか?と、

ジワジワと広げ、無いと不便な状態を作る

17

Page 18: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

イメージ図

18

Page 19: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

得られた事

• 引き継いだ情報が Redmine にすべてあ

るので後で検索が可能

• 作業をチケット化した事で、

残作業やその優先度、進捗状況が分かる

ようになった

19

Page 20: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

ソース管理

スクリプトと同階層に、

r○ ディレクトリがあって、

そこに、 hoge.pl.r○ が沢山おいてあった。

20

Page 21: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

ソース管理

共通ロジックを特定のパス

/path/to/lib/Hoge/hoge.pl に配置して、

みんなでこれを require して使う。

21

Page 22: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

あれ?今、昭和?

22/52

Page 23: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

ソース管理

まず、バージョン管理システムの導入。

• Git 使いたかったが、 Svn しか知らな

かったので、まずは、 Svn で自分管理の

ソースやライブラリをバージョン管理化

23

Page 24: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

ソース管理

ローカル svn から始めて、

ローカル Git→GitBucket と段階を踏みな

がら移行

24

Page 25: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

ソース管理

やったことは Redmine と一緒。

布教活動と Redmine に導入手順などの情

報を残しつつ、ジワジワ広げる。

25

Page 26: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

バージョン管理をまともに使ったことのあ

る人が私しかいないので、

バージョン管理の学習コストがデカイ。

サイクル(   )が回せない!マズイ!

かだいがあらわれた

26

Page 27: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

かだいがあらわれた

これをなんとかしないとマズイ・・・

• バージョン管理システムの概念

• Git の使い方

27

Page 28: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

かだいがあらわれた

その他にも、、、

• 固定パスの hoge.pl を require して

使い回す程度にしか Perl を使えていない

• 温かみのある CGI.pm

• crontab に > /dev/null がチラホラ

もっとちゃんと開発が使いたい! 28

Page 29: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

よし。チーム勉強会だ。

29/52

Page 30: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

べんきょうかい

メンバにヒアリングし、

下記を満たせば参加しても OK と言うこと

• 業後じゃなければ OK

• テキストを買うのはイヤ

30

Page 31: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

べんきょうかい

上司を以下のポイントで説得

• 技術共有の場の一環としてエンジニアだけ

の MTG を開催

• そこでたまたま輪読会をしていた

31

Page 32: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

べんきょうかい

上司の立場上、他の部署などの事考えると、

業務時間内に業務以外の事をする事を

大っぴらに許可し難い。

なので、

あくまで MTG を実施していて、

その中の一部としてたまたま輪読会をしてい

たと言う体を用意。 32

Page 33: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

べんきょうかい

実施サイクル

月2回: Perl月1回:バージョン管理

33

Page 34: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

得られた事

• 現状がいかにマズイかという共通認識を

得られた

• ソースのバージョン管理への理解

• メンバ間で技術の話を共有できるように

なった

34

Page 35: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

得られた事

コーディングの話をするようになった

「ここはこう書いたほうが良いよね」

「変数名とかコーディングスタイルは合わ

せるようにしたいよね」

とか。

35

Page 36: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

まとめ

36

Page 37: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

進める上で意識した事

一気に理想を求めない

• ちょっとずつで良い。

• 初めの一歩は小さくて良い。

やっていくと当たり前になるので、

そのうち回り出す。

37

Page 38: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

進める上で意識した事

上司との交渉でツール先行で話をしない

どんな課題があって、何でやるのか、

やることによるメリットを伝えたうえで、

それを解決するために○○を使いたいって

話を持っていく。

ツールはあくまでオマケ。38

Page 39: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

振り返ってみて、、、

39

Page 40: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

振り返る

個人的には、

自分だけモダンに Perl 使って、

Redmine と Git を使ってまともな仕事を

するだけでも良かった。

40

Page 41: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

振り返る

ただ、1年前の状態を続けた場合、

一緒に働くメンバは、残念な経験しか残らな

いし、その後の仕事にも影響しないか?

そもそも、

「開発って、技術って、楽しい!」

って状態で、みんなで楽しく仕事をしたい!

41

Page 42: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

得られた事

技術 MTG (輪読会)

技術共有する場を設けてメンバ間で技術を

考えるきっかけを作った(はず)

Redmine 、 Git現状を正しく把握&正しく記録。

まともな開発経験が出来るようになる(はず)。42

Page 43: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

課題

• まだまだ Git を使えていない

• Redmine の使い方にメンバにより

バラ付きがある

→ 細かくケアする。

時間がなんとかしてくれるはず?

43

Page 44: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

今後に向けて

44

Page 45: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

今後に向けて

• テストが一切なく、デグレが怖いので、

テストを入れたい

• もっと気軽な共有の場として、

Chat ツール導入したい(但し、政治的な理由でオンプレで)

• スキルの底上げ&ノウハウ共有の為に、

ペアプロをやりたい45

Page 46: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

今後に向けて

1年でガラッと変えたけど、

(本当は半年でやりたかった)

本当に、メンバは幸せなのか?

46

Page 47: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

今後に向けて

このまま進めていって良いのか?

押し付けになっていないか?

47

Page 48: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

今後に向けて

「やる事は出来てるし、仕事増やしてくれ

るなよ (´・ω・ `)」

「勉強会とかいらんし仕事させて」

ってなっていないか?

• そんな人がいた( or 出てきた)場合、

どう対応していけば良いのか?48

Page 49: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

今後に向けて

ただ、

「みんなで技術の話が出来る場が出来て良

かった」と言ってくれる人もいるので、

たぶん、大丈夫なはず(と思いたい)

49

Page 50: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

今後の事

みなさんならどうしました?

今後どうしたらよいでしょうか?

是非、教えてください!

50

Page 51: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

まとめ

技術的負債だらけのチームでやった事

今を残す事

– Redmine を使ってタスク管理

–ソースのバージョン管理

技術の共有

–技術ミーティング(輪読会)51

Page 52: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

まとめ

一気に理想を求めない

• 最初の一歩は小さくていい

上司との交渉でツール先行で話をしない

• 課題と目的、効果を中心に説明して

ツールはオマケ程度。

52

Page 53: Kichijoji pm7[talk2]技術的負債だらけのチームで技術マネージメントしてみた

以上です。

53