狠狠撸

狠狠撸Share a Scribd company logo
「自分でやる」という快感を追い続ける
- あるプログラマーの成長戦略 -
Vol.01 Jan/28/2017
Isao Takahashi
Travel Service Development Department, Rakuten Inc.
http://travel.rakuten.co.jp/
自己紹介
3
Name
高橋 勲
(もうすぐ三十路)
Account
@IsaoTakahashi
Role
Application Engineer
ときどき
レビューおじさん
Favorite
コード書くこと全般
(機能実装、リファクタリング、
自動化 etc.)
自己紹介
4
Name Account
@IsaoTakahashi
Role
Application Engineer
ときどき
レビューおじさん
Favorite
コード書くこと全般
(機能実装、リファクタリング、
自動化 etc.)
高橋 勲
(もうすぐ三十路)
つくってます
5
どんなお話?
? 新卒で入った人間がコーディングによる改善
活動をしていたところ、だんだんコーディング
する機会を失っていく中「人に指示する立場
であれば、その立場なりの立ち回りがある」と
改善活動を続けていたが、「やっぱ俺、自分
自身でコード書いて(手を動かして)改善する
のが好きだ!」と気づいて『コードを書き続け
る』ために奮戦するようになったお話
6
まずは、
7
“自分自身の
コーディング史”
を振り返ってみる
Commit数/PR数の変遷
8
0
50
100
150
200
250
300
Commit数
PR数
傾向見ようと思ったけど、
9
“プロジェクト忙しいときに
メッチャCommitしてる”
というのが見えただけだった
でも、
10
“最近 > 新卒時 > 2,3年前”
という雰囲気は見えた
Commit数/PR数の変遷
11
0
50
100
150
200
250
300
Commit数
PR数
?無邪気にコーディング
楽しんでいた期
?マネージメントロールを
模索して苦しんでた期
?自分を再発見した期
12
無邪気にコーディング
楽しんでいた期
どんなお話?
? 新卒で入った人間がコーディングによる改善
活動をしていたところ、だんだんコーディング
する機会を失っていく中「人に指示する立場
であれば、その立場なりの立ち回りがある」と
改善活動を続けていたが、「やっぱ俺、自分
自身でコード書いて(手を動かして)改善する
のが好きだ!」と気づいて『コードを書き続け
る』ために奮戦するようになったお話
13
どんなお話?
? 新卒で入った人間がコーディングによる改善
活動をしていたところ、だんだんコーディング
する機会を失っていく中「人に指示する立場
であれば、その立場なりの立ち回りがある」と
改善活動を続けていたが、「やっぱ俺、自分
自身でコード書いて(手を動かして)改善する
のが好きだ!」と気づいて『コードを書き続け
る』ために奮戦するようになったお話
14
無邪気にコーディング楽しんでいた期
15
0
50
100
150
200
250
300
Commit数
PR数
入社時~2年目
? 無邪気にコーディングを楽しんでいた頃
– 「自分が一番へたくそ」
? 実装タスクがメイン
? 常に「打てば響く」状況
– 上司は「どんどん改善してけ」とアグレッシブ
? アイデアを出す
-> 実現のためのコーディングも自分でできる!
16
このころにやっていたこと
? キレイズキ委員会への参画
– コーディング規約の統一
– 運用改善の提案(フロー、ツールの導入)
? 10%ルールへの参画
– 好きなものを作って発表しあう場
? ペアプログラミングの提案、実施
? Jenkinsを使った自動ブラウザテスト環境構築
17
10%ルールで作っていたプロダクトたち
18
この頃の自分
19
「コード書いて
お金もらえるとかマジ天国」
20
マネージメントロールを
模索して苦しんでいた期
どんなお話?
? 新卒で入った人間がコーディングによる改善
活動をしていたところ、だんだんコーディング
する機会を失っていく中「人に指示する立場
であれば、その立場なりの立ち回りがある」と
改善活動を続けていたが、「やっぱ俺、自分
自身でコード書いて(手を動かして)改善する
のが好きだ!」と気づいて『コードを書き続け
る』ために奮戦するようになったお話
21
どんなお話?
? 新卒で入った人間がコーディングによる改善
活動をしていたところ、だんだんコーディング
する機会を失っていく中「人に指示する立場
であれば、その立場なりの立ち回りがある」と
改善活動を続けていたが、「やっぱ俺、自分
自身でコード書いて(手を動かして)改善する
のが好きだ!」と気づいて『コードを書き続け
る』ために奮戦するようになったお話
22
マネージメントロールを模索して苦しんでいた期
23
0
50
100
150
200
250
300
Commit数
PR数
3年目~4年目前半
? 「コーディングする時間が減ってきたぞ」な頃
– 「詳細設計」と「後輩の指導」をするように
? 両方初めてだったので、長い時間を費やす
? あんまりコード書けない???
– デキる先輩たちはどんどんマネージメントを
メインタスクとするように
? 自分もそうなっていくべきなのか????
24
このころにやっていた(いる)こと
? トラベル開発部署〆会の開催
– 部署全体の月次共有会
? 5-60人を1つの会議室に集めて開催
? 現在は、100人over & 複数拠点(3カ国6箇所)
26
このころにやっていた(いる)こと
? トラベル開発部署〆会の開催
– 最初期の光景
27
このころにやっていた(いる)こと
? トラベル開発部署〆会の開催
– 今
? この会場と同じくらいの広さで、満員?
28
キャリアパスを真面目に考え始めた
? Coder → Manager?
– 「チームをマネージメントすることで、
自分1人ではできないことを実現できる」
? 確かにそれはそのとおり
– 皆がその道に進むのがいいのか?
? 規定路線になるのは何か違うのでは?
29
自分のキャリアについて悩んでいたら、
30
“チーム異動”
イベントが発生
31
自分を再発見した期
どんなお話?
? 新卒で入った人間がコーディングによる改善
活動をしていたところ、だんだんコーディング
する機会を失っていく中「人に指示する立場
であれば、その立場なりの立ち回りがある」と
改善活動を続けていたが、「やっぱ俺、自分
自身でコード書いて(手を動かして)改善する
のが好きだ!」と気づいて『コードを書き続け
る』ために奮戦するようになったお話
32
どんなお話?
? 新卒で入った人間がコーディングによる改善
活動をしていたところ、だんだんコーディング
する機会を失っていく中「人に指示する立場
であれば、その立場なりの立ち回りがある」と
改善活動を続けていたが、「やっぱ俺、自分
自身でコード書いて(手を動かして)改善する
のが好きだ!」と気づいて『コードを書き続け
る』ために奮戦するようになったお話
33
自分を再発見した期
34
0
50
100
150
200
250
300
Commit数
PR数
4年目後半~
? 設計もコーディングもやらないといけなかった
– 人手不足なチームへ
? 設計もコーディングも自分でやらないと回らない
? マネージメントの主担当の人が既にいた
35
キャリアパス?
36
“考える余裕”
ほとんどない
時は経ち、
37
“人材不足解消”
イベントが発生
今
? 設計もコーディングもやっていい
– チームが回るように
? 「マネージメント担当」「テクニカル担当(自分)」
の2本柱で回り始めてきた
– コーディング楽しい (???)
38
となると、
39
“キャリアパスに悩む”
イベントが再発生
自分はどうしたいのか?
? 「コーディング楽しい (???)」
– うそ偽りのない、本音
? 設計や運用改善の提案もしたい
– そんでもって、それを自分で作りたい
40
つまり、
41
“アプリケーションエンジニア
のスペシャリスト”
になりたい
スペシャリストやれる土壌はあるか?
? チームの現状的にいけそう
– 自分が一番コーディングスキル高い
? チームの中で。
– 設計スキルもそこそこ
– マネージメント特化な人が、他にいる
– 後押しをしてくれる人”たち”がいる
42
スペシャリストやれる土壌はあるか?
? チームの現状的にいけそう
– 自分が一番コーディングスキル高い
? チームの中で。
– 設計スキルもそこそこ
– マネージメント特化な人が、他にいる
– 後押しをしてくれる人”たち”がいる
43
スペシャリストやれる土壌はあるか?
? 会社としての評価指標もある
– ManagerとIC(Individual Contributor)
? Manager : 「人を上手く動かすことで成果を出す」
? IC : 「自分自身が直接動くことで成果を出す」
– 昔から「スペシャリスト」を評価する流れはあったが、
今年から正式に評価制度として確立された
44
よし、
45
“やれそう”
よし、
46
“やるぞ”
47
まだ見ぬ”アツイ”期
まだ見ぬ”アツイ”期
48
0
50
100
150
200
250
300
?
まだ見ぬ”アツイ”期
? “個”のエンジニアとして貢献
– 「何か困ったらコイツに任せれば何とかしてくれる」
存在になる
– “チームを支える”のではなく、”先頭を突っ走る”
? どっちがいいとかではなく、
「自分がどういうポリシーで動くか」
– “指導する”のではなく、”背中を見せる”
? 「憧れられる存在」になる
49
50
まとめ
割と有名なベン図
51
できること
やりたいこと 期待されること
これが、
52
?プログラミング
できること
やりたいこと 期待されること
こうなって、
53
?プログラミング
できること
やりたいこと 期待されること
?マネージメント
こうなろうとしたけど、
54
?プログラミング
できること
やりたいこと 期待されること
?マネージメント
やっぱこうなりたい
55
?プログラミング
できること
やりたいこと 期待されること
We are Hiring!
69
http://corp.rakuten.co.jp/careers/engineering/
70
おまけ
自分を再発見した期
71
0
50
100
150
200
250
300
Commit数
PR数
Commit数がピークに達したとき、
72
“何が起こっていたのか”
サービスのリニューアルプロジェクト
? 10年以上運用されてきたサービス
– 設計思想も10年前
– 機能は継ぎ足し継ぎ足しで、if-elseの嵐
73
サービスのリニューアルプロジェクト
? 3年前にちょっとだけリニューアルした
– リソース不足(人員?スキル?納期)のなか決行
– 結果、「新しいのに複雑怪奇な処理満載のコード」が大量
に生まれた
74
サービスのリニューアルプロジェクト
? 本格的なリニューアルが開始
– P「前に作った機能、そのまま使えますよね?」
– い「多分いけますけど、可能な範囲でリファクタリングした
いですねー」
75
サービスのリニューアルプロジェクト
? 蓋を開けるとそこには…
– 謎の動作フラグ
– セグフォ上等なforループ
– if-elseif-elseif-elseif-el(ry
– “getHoge”メソッドの中でHogeをupdateしている
76
サービスのリニューアルプロジェクト
? リファクタリングを試みたが…
– デッドコードいっぱいありそうなのに、そこもケアするの?
– そもそもまともなUTもない
– 「作り直した方が速いのでは…」
– 幸い以前のQAテストケースは残っている
77
よし、
78
“やろう”
どうやって?
79
“根性 & 根性”
サービスのリニューアルプロジェクト
? 結果
80
結果、
81
めっちゃ頑張った!
サービスのリニューアルプロジェクト
? 結果
82
結果、
83
コードの行数:Down↓
静的解析の指摘: Down↓
サービスのリニューアルプロジェクト
? 結果
84
結果、
85
コードの複雑度:Down↓
テストカバレッジ:Up↑
結果、
86
前より良くなった!

More Related Content

「自分でやる」という快感を追い続ける - あるプログラマーの成長戦略 -