「仕事しやすいエンジニア」とは何か

TL;DR

「すろっくさんと仕事、とても仕事しやすかった」って言ってもらえることがある。

これの言語化をしたいなと思って書いている。

会社員時代と違って、フリーランスも長いので、理由は色々あれど現場を離脱することはあるんだけど、一緒に仕事していた人たちからはこういう言葉をかけてもらえることがある。大体は「会社さんと僕の契約について判断をする立ち位置にない一緒に働いているみんな」にそう言ってもらえることが多かった。

僕の仕事しやすさってなんだろう?僕が目指す仕事しやすいエンジニアってなんだろう?って思ったので改めて言語化したい。

最近のTLを眺めていて

某社でレイオフがあったそうな。

某社をやめた皆さんが僕とみんな技術スタックが同じなので、自分と同じ方向性で自分より優秀な人が増えた。RailsとAWSが主戦場のエンジニアが溢れたという感じか。個人的にはこの辺りはちゃんとできる人が世には少ないので、引くて数多だと思っているけれど、技術スタック的に僕が入る余地彼らが持っていってしまう可能性があるなと感じた。

一言で言えば、危機感を感じているのだ。あの会社があること、あの会社が正社員でやっていきたいタイプのRubyistのある高みになっていたことに安心感を感じていたって言えば、はい……ってなる。でも実際こういうことになっているので、考えを改めないとな、と思った。

そこで彼らより僕を選んでもらえるポイントってなんだろう……同じスキルセットの人がいた時に「すろっくさんと働きたい」と思ってもらえるポイントってなんだろう……と考えて、↑の元一緒に働いていたみんなの言葉が思い浮かんだ次第。

すろっくさんのキャリアプラン

僕のキャリアとしては将来的にCTOやEMといったマネジメント業に就くことはないのではないかと思ってる。経営には知識としてはあれば仕事は順調になると思いつつ、仕事にするには興味がないし、EMになって部下を守れるかというとストレス耐性がなさそうな気はする(十年後は心変わりしてるかもしれないけれど)。どちらかというテックリードなど、所為「スタッフエンジニア」といったキャリアがいいなと今の所は考えてる。

その上で僕がなるべきなのは「究極の仕事しやすいエンジニア」なんじゃないかな。

仕事のしやすさとプロ意識

「仕事しやすさ」を考える上で「プロ意識」って大事な要素だなって思う。新人のころ上司に口すっぱく言われた。エンジニアリングでお金をもらっているのだからと。今の僕はとても大切にしている。

そして社会人経験を積んできて、プロ意識が欠けた行動を少しでも見せると、大体の場合レッドカードだった(厳しめのイエローで済ませてくれる場合もあるけど)。歳を取ればとるほど、周囲から求められる基準は高まっていくなあと感じている。

ただプロ意識って基準が人によってまちまちで、自分が「ここまでなら大丈夫だろう」と思うところでレッドカードを出してくる人もいる。

なんだかんだ程度が違うだけでプロ意識がないエンジニアはいないように感じる。ただ一緒に仕事するなら一定水準のプロ意識持っている人がいいということで面談でお断りしたりしているから、現場の意識は一定水準に保たれているんだろうな。

基本同じ水準のプロ意識を持った人間同士なら、お互いが相手に期待した振る舞いをしてくれるから仕事しやすくなる。プロ意識の水準に差がある人同士が組んだ場合、一方が寄り添うことをしないと、片方に強く当たったりして、片方にとってトラウマになったりする。あとはチームの成果物の質が下がる。これは会社にとって良くない。

プロ意識とはなんぞやというのはクリーンコーダーを読んでいたけど、これはボブおじさんの基準で書かれているので、「全てのエンジニアにそこまで要求するのしんどくねえか」というのは本を読んでいて感じた。

ただ仕事って色々あって、プロ意識、スキルセット、社会人経験、正社員かフリーランスかとさまざまな要素があって、いつも自分と会う人と組ませてもらえるわけではない。それどころか「自分と相性よいな」と思ってた人がなぜかある日を境に豹変したりもする。もちろん合わない人はこちらを叩いたり詰めたり……あとは言われもない悪口や理不尽な説教や詰め詰めを大勢の前やSlackで言われたり……そういうことをする人もいる。僕はそれを社会人の闇と呼んでいる。「俺はお前にこのくらいもとめるが、お前は俺を赤ちゃんだと思って接しろ」と言われた時は「いやあ……きついっしょ」ってなった。

高いプロ意識があっても闇に触れて病まないわけではないのだ。

僕が気をつけている仕事のしやすさ

ただ僕は一緒に仕事する人を選べる立場の人間ではない。場所は条件や環境とかで選んだりできるけど、実際に人は選ぶ機会はそんなにない。joinして初めて、一緒に仕事する人が決まることがほとんどだ。

だから僕は「誰と組んでも成果を出せる」を目指したかった。その上で、一緒に仕事する人が「すろっくさんと仕事できてよかった」「社会人になって、一番すろっくさんと仕事しやすかった」って言ってくれて、「すろっくさんがいるから結果がでている・現場がうまく回ってる」となってもらえるといいなというのが理想だ。

会社さんが期待しているのは、一緒に仕事する相手と僕が組むことで、パフォーマンスを最大化することだと思う。相手と僕が組むことで、お互いが一人でやると200のところが300になったり、1時間で200のところが1時間で600になることだろう。

どちらかが我慢したり苦しい思いをして600を叩き出すの難しくないか?と思う。我慢したり、なにかを怖がってしまうとパフォーマンスはあがらないし、トラウマになって、最終的には病んでしまう。そういうところをいっぱい見てきたし、僕自身も経験した。

だから僕は「あいつと働けてよかったなあ」「こいつとならうまくやっていける!」「あいつと仕事していると現場がうまく回っている」って相手に確信してもらえる、そんな存在になりたい。業務で通用する技術スタック、高いプロ意識を持ちつつ、一緒に仕事する周囲の人立場とプロダクトに寄り添って考えることができるエンジニアだ。

僕に「仕事しやすかった」と言ってくれたみんなはこういうことを感じていてくれたのかな……っておもいながら書いている。そうだよね?(事前にインタビューとかするべきだったかな)

具体的にはどうしてるのか

僕が気をつけてることは至ってシンプルで、「一緒に仕事する周囲の人たちの立場になってものを考える」というのを徹底しているだけだ。

「一緒に仕事する周囲の人たちの立場」というのが重要で、僕と一緒に仕事するときに一緒に同じレイヤーをやるにしろ違うレイヤーを担当するにしろ、業務で「知りたい知識」「わかると嬉しい知識」というのがあると思っていて、もれなく全て分かりやすく伝えるのが大事だとおもってやっている。

業務の一例なら、「お客さん一覧を表示する」という機能を一緒に作るフロントの人がいたら、APIの情報や僕把握している仕様と要件を一式まとめてissueに追加するであったり、DesignDocやドキュメントを丁寧に書く、僕が調査に手間取った箇所にYardoc書いておいて、今後実装で手をつける人が楽になるように心がけたり……PMの人とはちゃんと要件定義から話して、テックリードの人には設計からコンセンサスを取り、実装はみんながレビューしやすいように小さめにPRを書き詳細は丁寧に、エビデンスはしっかりと……そういうことだ。

人間的な面なら、相談しやすい、話しかけやすいスタイルでいること。相手に寄り添う人間であること。相手に強くあたらない、悪口言わない、相手のミスを責めない人間でいること。こういうの基本ではあるけれど、基本だから大事にしたい。相手の立場に寄り添って一緒に考えれる人でいようと思ってる。

これは全部僕がしてもらって嬉しかったり、助かったりしたことだった。そして僕が感謝されたのも、こういうことだった。僕が嬉しかったものは相手も喜んでくれるというのが実感としてある。

(僕が相手に相談してもらったり頼ってもらったりすると嬉しいというのもあるが、それはまた別の話)

まとめ

基本は「僕がやられたり言われたりしてしんどかったこと、辛かったことを他人にしない」「僕がしてもらったり言ってもらってうれしかったことを他人にする」の二つだ。本当にこれにつきる。くわえて根幹として大事なの、求められた水準を満たすため、足りない部分があったら補うため精一杯努力すること。年齢を重ねてきて「衰えている」と感じたことは今のところはない。ただ年齢を重ねるたびに周囲が僕を見る目は厳しくなっていくので、結果を出すという水準に持っていくのは必然と難易度はあがる……が、だからこそ努力し続ける大切さをいつも感じている。

その三つをずっと徹底していけば、自分と似たスタックを持つ大勢のエンジニアの中から、僕を選んでもらうことができる……のかもしれない。

ついでに

そんなこんなで僕がTwitterやfacebookで「仕事なくなった!たすけて!」って叫び出したら声かけてもらえるとうれしいな。(週五日八時間の業務委託は無理だけど、正社員のオファーも歓迎中です)