どうも、うらかわです。今テレビでFIFA CLUB WORLD CUP 2016のMatch5(アトレティコ・ナシオナル対鹿島アントラーズ)を見ながらこれを書いてます。VAR(Video Assistant Referee)の判定で鹿島アントラーズのPKになるという場面がありました。歴史が変わる瞬間を見た思いです。ちなみにこの大会のメインスポンサーは Alibaba YunOS Auto です。覚えておきましょう。
それはそれとして、アドベントカレンダーに予定を入れたはいいが何書こうかなってな感じでしたが、今年はQiitaに怒られない程度にエモいことを書くことにしました。会社員プログラマを25年以上続けてきた自分の振り返り的なやつ。
状況は人それぞれだと思うので抽象的な感じにしておきます。
お前誰よ?
1991年に高校を卒業してから、会社員プログラマとしていろいろやってきて、ドワンゴには2010年11月に入社しました。
「今動いている」ことが大事。動き続けるためには?
健康第一
続けるためには続けられる状態でいるのが前提です。最大の敵は、肉体そして精神の病です。死んでもやり遂げなければいけない仕事なんてものはそうそうありません。体の声に耳を傾けて、壊れる前に休みましょう。
若くて優秀なプログラマが病んで去っていくのを何人か見てきました。あなたは病まないでください。
でも若いうちにギリギリまでやって自分の限界を知るというのも後々役に立つことがあるかもしれません(ハイリスクローリターンなのでお勧めはしません)
完璧なクオリティの動かないコードよりクオリティの低い動くコード
プログラマがフィードバックを得てプログラムを改善していくサイクルを小さく早く回転させていくためには、クオリティはともかく「動くプログラム」が必要です。新しい、独自の、真に取り組むに値する問題に取り組んでいるならば完璧な設計で完璧なコードを一発で生成するというのは人間業ではないです。試行錯誤しましょう。
今何してる?進んでる?
仕事の話として、「今何してる?」という質問に答えられないようではいけません。コードを書くだけが仕事ではないのですが、どんな問題をどのように解決しているところなのかを把握し、伝えられるようにしましょう。
また、コードのコミット単位を小さくしたり、こまめにドキュメントを更新したりして、「少しずつでも進んでいる」ことを共有すると安心感マシマシ。
「プログラムを書くことは手段である」ことを忘れない
「ハンマーを持つ人には全て釘に見える」
自分が持っている技術にむりやり問題をあてはめて解決しようとしてしまうこと、ありませんか?必要な手段を適切に選ぶことも大事な技能です。
あとプログラマの仕事で言えば、昔の道具が役に立たなくなることが多いです。使える道具の手入れをしたり、道具を増やしたりするのは大事です。あんまりいろいろやり過ぎても収拾つかないですし、「みんなが使える」が重要なことも多いので選球眼大事。僕なんか最初の仕事で使った言語は68000のアセンブラですからね。忘れましたよそんなもんw 万が一必要になれば思い出しますけどね。
要件・仕様を作る人と喧嘩しない
プログラマの仕事はプログラムによって問題を解決することです。解決したい問題と向き合うために、問題を持ってきた人ときちんとコミュニケーションをとり、「本当の問題」を見つけ出す必要があります。そのために円滑なコミュニケーションを妨げる要素は可能な限り排除する必要があります。喧嘩している場合ではないです。
でもまあ、いろいろありますよね。
可能なら書かずに済ませる
既存のプログラムやツール、アナログな道具で解決することを、「自分が解決した」と言いたいためにプログラムを書こうとしてはいけません。「車輪の再発明」は学習目的以外では避けましょう。
向上心に折り合いをつける
頑張るけど無理しない
前述の「健康第一」につながりますが、病むまでは頑張らないの大事です。
直接的に効率を求めるより努力を楽しめる構造を作れると結果効率が高まったりします。
他人と比べない
自分の強みは他の人とは違ったりすることが多いです。いろんな人がいるからチームに幅ができます。プログラマ以外を含めて「みんなちがってみんないい」のです。自分の強みを磨きましょう。
他人の強みを自分のものにしようとするのは良いですが、前述通り無理はいけません。
ルーティンを持つ
仕事に関するルーティンを取り入れることで、結果として作業効率が上がったり、集中力が増したり、やり忘れが減ったりします。出勤時と退勤時にメールチェックは必ずするとか。
僕の場合は提出をするでもない日報を書いています。割と細かめにどんな事をしたか、どんなことを考えたか、どんな資料を参照したかをメモしたり。時々見返したり、共有できkるものはまとめて共有したり、たまーにQiitaに投稿したりなんかもできるので便利ですね。
ダメな時もある
ダメな時はどうする
ダメになった原因を取り除く必要があります。取り除けない場合は原因を遠ざけるという手もあります。比較的短絡的な手法で言うと上の立場なら組織変更をしたり、下なら会社辞めちゃったりという手があります。組織hackのために出世することを選ぶ人もいます。すごいよね。
クビになるときだってある
会社が潰れたりリストラになったり開発チーム解散で全員解雇になったりとか、よくある話です。僕は全部経験しました(笑)
自分ではどうにもできないこともあります。それでも若ければどうにかなりますし、若くなくても今までやってきたことが身になっていればそれを役立てる機会はあります。それもまた経験として今後の糧としましょう。
こんな僕でもドワンゴは雇ってくれました(笑)
反省したらクヨクヨしない
自分が悪くてダメなこともあります。反省はしましょう。改善しましょう。技術が足りなければ積み上げていきましょう。しかし、過ぎたことにずっととらわれていたら精神が病みます。そうなるとパフォーマンスは落ちますし、最悪キャリアが終わってしまいます。
まとめ
続けろ。死ぬな。人とは仲良くしろ。