読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

【雑談】運が7割。選択が1割。残りは努力。

雑談
<スポンサーリンク>

悪い意味での典型的なSIエンジニアの口癖は、
「なんで○○なの?」
だ。
なんでそうなるのかを興味があるのではなく、否定するためになぜなぜ聞いてくるのだ。
説明できなければ、「×」。

こういう人とは建設的な議論にならない。
そういう人と話していても、話は広がらない。
雰囲気が悪くなるし、とりあえず否定しようと構えている人とやる仕事に良いアイデアは降ってこない。そのうち案も出なくなる。
それが続くと、無難なことしか言わない非イノベーティブなSIエンジニアの出来上がりだ。

一方で、(悪い意味での)典型的SIエンジニアには、
「これはこうだから、こうした方がいいんじゃない?」
という人は少ない。
対案を出すだけの技術的な素養はないからだ。
技術的な裏付けはなくても否定はできる。
プロ野球の観戦者や国の政策を否定するオバサンと同じで、
否定するのは実はすごく簡単なのだ。

そもそもどのような場合も完璧な案というのはなく、メリット・デメリットを考えて取捨選択しなければならない。
否定するだけなら簡単なのだ。
だから相手を否定するなら、自分も覚悟しなければならない。
それ以上と自信を持てる対案を出す覚悟。相手が絶対に間違っているという自信と、その自信の裏付けとなる確固たる知識だ。

研修で久しぶりに同期と会って少し驚いた。
話し方が部署で見た40代の社員と似てきていたことにだ。

とりあえず自信満々に詰める。
詰めるけど、対案は言わない。なぜなぜ聞いて、完璧な説明を求める。ググレと言いたくなる。
もちろん、説明することは大切だ。

でも質問の基本は、
「自分は○○と思うけれど、これはどうでしょう?」
だと思う。
自分の意見も持たずになぜなぜ詰めるのは、外野スタンドからペットボトルを投げ入れるようなものだと思うからだ。

最近、「外注管理」しかしない若手社員の記事が話題になった。
同期もCOBOLやらアセンブラ(?)で書かれたコードを、自分では一切見ることなく協力会社の人に任せきりで、一日中マネジメントという名の調整メールばかりしているようだ。

一日中メールを打って、何が積み重なるのだろう。
自分のリソースの9割を社内調整に費やし、何かを生み出す時間はほぼ全て他の人間に任せきり。会社がなくなったらその人に何が残るのだろう。タイピングしかできないじゃないか。

以前研修で、

boolean isError = false;

というようなコードを書いた。
この型を「ブーリアン」と読めない同期がいた。変数の宣言の意味がわからなかった。
Javaでも他の言語でも基本だと思うんだけど、全くソースに触れない人から見るとただの呪文だ。ちなみに新人のときは自分もわからなかった。

(コードは)意味がわからない、読む気がしないと一蹴された。

日本語でboolean。
「チェック条件がOKであるかを判定するための変数をクラス変数として宣言する」
と書けばいいのかな。

可視性とかもどうやって日本語で説明するんだろう。
public
private
protectedと書けば済むことを、いちいち「クラス内でしか見れないレベルで宣言する」などと日本語に書けというのだろうか?

ソースを見たほうがずっとわかりやすくて早いはずなのに、「内部設計書」に書かれた日本語しか見ないから、コードの話ができなくなる。

そもそも内部設計書、詳細設計書なんてものは下手くそな翻訳書に似ている。
英語が読める人は英語をそのまま読んだ方がずっとわかりやすいように、内部設計書、詳細設計書を読むならコードを見たほうがずっとわかりやすいし、早い。

気になるところはJavaDocを見れば済む話だ。それをなぜ内部設計書とか詳細設計書を作るかと言えば、「外注管理」しているSIエンジニアがコードを理解できないからである。

詳細設計書レビューや内部設計書レビューなるものができても、コードレビューはしない。

コードレビューの方が256倍くらい大事だと思うんだけど。
中がわからないと不安じゃないですか。
そもそもオブジェクト指向で書かれた中〜大規模のコードを詳細設計書みたいな「フロー図」にどうやって書けばいいんだろう。UMLじゃダメなんだろうか。

コードに触れないエンジニアは、素振りをしないプロ野球選手と一緒だ。

なぜそんなことにも気付かずに、外注管理の名の下の「マネジメント」に慢心し、

「おれ仕事回しちゃってるよ」

みたいな顔で、文句を言うのだろうか。

「あの人早くやってくれねぇんだよ」
と言うくらいなら、自分で手を動かして問題を解決してしまえばいいのに。

なんでメールしか打たないのだろう。なんで詰めるだけなんだろう。

「まだですか?」
「なんでできないんですか?」

と。

「苦戦してるんですか?じゃあ手伝いますよ!俺がここやっときますね!」
と言えないんだろうか。。

「テストケースを切ってる俺カッコイイ」→「テストは協力会社任せ」
とか言う前に、さっさとテストコードを書いてJUnitを走らせた方がみんなが助かるんじゃないかな。そっちのほうがカッコイイエンジニアだと思うんだ。

大手SIerに入社する新人は本当に皆優秀な人が多い。
勉強ができて、物覚えが良く、人も良い。
素晴らしい人達だと思った。まるで敵わないと思った。
こういう人達と切磋琢磨していける環境は最高だと思った。
自分がダメで情けなかったけど。まだまだみんなの方が優秀だけど。

でも、そんな優秀な人達がいつの間にかに丸投げを覚え、技術は身に付かず、管理者という名の糸電話になってしまう。

協力会社がやったことを「管理」して、プロジェクトマネージャーに報告する。
プロジェクトマネージャーからのフィードバックを協力会社に伝える。

詰める文化を学び、「下」から上がってきた成果物にイチャモンを付ける。
イチャモンを付けることが自分の存在価値だと思い始める。自分で手を動かすのはマネージャーの仕事じゃないと言って、技術的な要素は協力会社任せになる。
それはきっと、正しい努力ではない気がしている。

どうしてあんな人柄もいい(本当に良い人ばかり)優秀な新人たちが「詰める管理者」なるかというと、そういう文化を見て育っていくからだ。
赤ん坊が身の周りの言葉を吸収して覚えていくように、新人は身の周りの文化から仕事を吸収する。それがどんな仕事であろうと。周りに見えるものから精一杯吸収する。
何もわからない、「はじめての会社生活」だから。はじめに目に見えるものがすべてに思える。
生まれたばかりのアヒルの子のように。

言ってみれば、「運次第」である。
"何も知らない"新人がSIerに入って技術が身に付くかどうかは7割が「運」
1割がチャンスが回ってきたときの「選択」。あとの2割は「努力」だ。

新人は環境にものすごく左右される。
身に付く技術は、努力ではどうしようもないくらい環境に依存する。
努力する意志の強い人でも、努力の方向性は日々の職場の環境に影響を受けてしまうからだ。
まじめに仕事ができるようになろうとする真摯な人ほど、職場の環境の影響を受けやすい。

コードを書かない、成果物がエクセル方眼紙で書かれた資料だけという環境だから、
「仕事が出来る人」の定義が曖昧になる。
「コードを書いた人」ではなく、仕事とは別に「難しい資格を取った人」が尊敬されることになる。
資格を取ったからといって、金は生み出せないのに。
エンジニアはコードで金を稼ぐべきなのに。
高度情報処理試験に受かった人がすごいと言われる。コードの話はしない。
資格試験に受かったあの人すげーという話は出てきても、あのプロダクト作ったあいつすげーという会話は全く出てこない。それってエンジニアの会社なのかなぁ。

自分のロールモデルがカッコイイプログラマーで良かった。
カッコイイと思う目上の人が「レビューで詰めている先輩」じゃなくて良かった。
周りにいる人が、自分で問題を解決し、難しいところは"自分で取り組もう"とするエンジニアでよかった。
自分はまだまだまだまだヘッポコだけど、先輩がすごすぎて自分が情けなくなることもたくさんあるけれど、カッコイイ先輩のようになりたいと思えるから、頑張れる。

人は上を見て育つのだ。
カッコイイと思った人に近づきたくて頑張るのだ。

基本的には先輩に対しては「尊敬バイアス」がかかる。
なのに、周りにいる先輩達が自分で手を動かさないで詰める人ばかりだったら、自分もそうなってしまうに違いない。

「進捗は?」
「なぜ遅れてるんですか?」
「なぜできないんですか?」
「これ、ちゃんとわかってますか?」
「これ、やっといてくださいね。以上、よろしくお願いいたします。」

「とりあえず詰める」ことは、楽をすることなんだよ。
仕事をしているように見えるし、レビューしてやったという満足感を得られる。
でも、その人は何も問題を解決していない。
何かを生み出してはいない。相手の不快感を除いて。

自分で手を動かすことが求められる今の環境に本当に本当に感謝したい。
自分でコードを書いて、コードを読んで、自分で障害に対応できる環境に感謝したい。
滅びゆく技術を守るのではなく、未来を見て前向きに技術を学んでいける環境に感謝したい。
技術に関心があることが、「こいつ何やってんの?」と言われない環境がすごく嬉しい。

こんなことを想像してみた。
高校の部活でその競技をやったことがない先生がいきなりやってきて、監督になる。
ある試合で、
「なんでそのシュート外したんだよ。ビュッと打ってシャッとよければ決めれただろうが?わかってんの?」
「なんで敵に負けてるんだよ。負けてる理由はなんだよ。説明しろよ」
と言われても、きっとそのチームは強くなれないんじゃないだろうか。

「お前たちが強くなるには、こうしたらいいんじゃないか」
「いまお前はシュートが入らなくて悩んでいるみたいだけど、そういうときはこうしたらいいと思うぞ」
「チームが強くなるために俺も頑張る。一緒に頑張ろう」
と、自分の経験を元にして言える監督の方が、やっぱり立派だと思う。

管理者はもちろん必要だし、大変な調整をしてくれる上司がいるのもよくよくわかっている。
マネジメントを否定するつもりは全然ないし、感謝もしてる。
でも20代のいま、「手を動かす仕事」を全部協力会社さんにやってもらうのは、まだ早いと思っている。コートに立って、プレイヤーとして経験を積んでいきたいと思っているから。
コートの中で、汗をかきたいと思っていたから。

だから自分は本当に運が良かった。
プレイヤーとして経験を積める素晴らしい機会をいただくことができた。
選ぶことができた。
本当にありがとうございます。
幸運に報いるために、できる限りの努力を惜しまないでいきたい。
そしてもっとチームに貢献して、恩返ししたい。