『自社開発メガベンチャーをわずか半年で鬱退職した雑魚エンジニアの話』から何を学ぶか
注: 書き足りないところもあるので後日加筆すると思います。ご容赦ください。
2023-05-21にTwitterを賑わせたとある記事
2023年5月21日、次の記事が国内でエンジニアを中心にTwitterを賑わせました。
この記事にボクも関心を持ち、とても興味深くこの記事を拝見しました。
その上でTwitterでのこの記事への反応を追っていました。反応している多くはソフトウェアエンジニアと思われる方で、一部にはいわゆる非エンジニアと括られるプロダクトマネージャーやCEOをなさっている方も。
ボクにとってはTwitterでの一件を通じて、新たな学びが得られた気がしたので、こうして記事としてまとめてみようと思った次第です。
この記事で何が語られていたのか
ChatGTPに「https://note.com/joan_of_arc/n/ned510ca913c7 を要約して」と依頼してみました。
この要約を読んでいただくとわかるように、自称『雑魚エンジニア』の著者が『自社開発メガベンチャー』なる企業に就職してうつ状態になって休職の末に退職するまでのおよそ8ヶ月間を当事者目線で語っていて、著者自身が得た教訓を挙げています。
ボクが読んで感想として残ったのは、要約と同じで、この著者がなぜうつを患うまでになってしまったのかでした。
この記事の著者はどんな人物なのか
ちなみに、この記事の著者であるJoanOfArcさんはこちら。Twitterでは@Black_Jack_2021でつぶやいている様子。
このように2022年7月31日時点で転職を報告しているので、大学院はすでにご卒業され、他の企業をご経験されたのち、『自社開発メガベンチャー』にご入社されたようです。なので、インターンや新卒ではなく、ご入社される以前に少なからず社会経験を積み、データサイエンティスト(機械学習エンジニア?)として中途採用された様子です。
なぜバズったのか?
Twitterトレンドにはこの記事に関連するキーワードとして次が踊りました。
雑魚エンジニア
自社開発メガベンチャー
リファクタリング
この中で興味深いのが『リファクタリング』です。この著者が提案したリファクタリングが物議を醸し出しました。
リファクタリングとは
非エンジニアの方にとっては聞いたことのないもしくはよく理解していない言葉だと思います。
このように『リファクタリング』はただのソースコードの書き換えとは全くの別物です。重要なのは、ソフトウェアの既存の挙動は変えずにソースコードの品質を向上させるとことです。つまりソースコードを書き換えた結果、これまでと挙動が変わるようでは、それはもうリファクタリングではなくただのコード改変です。
書籍としてはMartin Fowlerの著作があまりにも有名です。
かく言うボクも、過去にこれの第1版を手に取り、これを読みたいがためにJavaを習得し、穴の開くほど何度も繰り返し読みました🤩プログラミングをこの本に教わったといっても過言ではありません。とてつもない影響を受けました。
だがしかし、このボクが書籍で学び実践を繰り返してきたこの「リファクタリング」ですが、件の記事への反応では少し様子がおかしい🤔と気づき始めました。
「初手リファクタリングは悪手」?
なぜ悪手だと考えているんでしょう🤔
具体的には、以下のようなツイートです。
「悪手」の反対意見
政治力と信頼残高
政治力や信頼残高が必要だと考えもあるようです。
こちらも具体的には、以下のようなツイートです。
日本でのリファクタリングへの誤解を憂う声も
気になったつぶやき
「リファクタリングすることで得られる価値」と「リファクタリングしないことで被る損失」があるという観点はとても重要ですね。
ここから何を学ぶか
うつは誰の身にも降りかかる身近な病気
うつはとても身近な精神疾患です。自分がうつに患うこともあれば、同僚がうつを患うことも現実的に起こり得ます。
今回この方の場合、転職されているのでそもそも大きなストレスを抱えている状況で、通常よりも精神疾患に罹りやすかったのではと推測されます。
ライフイベントにおけるストレスの大きさで「転職」は第11位に挙げられるほどです。
転職だけでなく、それに伴って並行して引越しされる方も少なくないですが、「引越し」も第36位に挙げられています。
このようにご自身の心境の変化や仕事・生活の変化でもメンタルの許容量は大きく影響を受けます。「オレは大丈夫」と思っている人ほど油断してうつに患う恐れがあるかもしれません。
入社半年で休職その後退職に至らしめた組織の失敗
この方を入社いただくためにどれほどの人が関わりコストが発生したことか。
もちろんその方を採用するための手数料や半年間の給与という直接的な金銭での損失は当然ながら、最低でもこれくらいの人の活動が徒労に終わっています。
一連の採用活動
採用担当、面接官、意思決定者
入社手続き
労務担当、MacBookを調達した情報システム担当
オンボーディング
チームメンバー
給与の支払い
経理担当
休職・退職の手続き
労務担当、MacBookを回収する情報システム担当
エンジニアでさえも『リファクタリング』に対する認識に違いがある
リファクタリングの定義に対する齟齬が同じソフトウェアエンジニアであってもいくつかの要因によって大きいことが浮き彫りになりました。
例えば、こんなことが起きることが予想されます。
おいそれとリファクタリングできないソフトウェア開発現場が多い
ご自身の従事する(ないしは従事していた)開発現場では利害関係者と交渉して勝ち取らないとおいそれとリファクタリングができないことといった状況が透けて見える発言が多く見られました。
呼吸するようにリファクタリングできるのは希少でとても幸せなことなんですね。
これは組織的な要因とその組織との関わりの深さに大きく依存していると思われます。
チーム内にヒエラルキーが存在し、立場によって裁量がない
新参者や下位のエンジニアの首根っこを上位者が掴んでいる
どんなに正論であっても提案者の信頼残高と根回しの有無で実現が左右される
SESやフリーランスとして順委任契約で主にワーカーとして開発に携わっているため、意思決定への関与と距離が遠い
そそそもリファクタリングする習慣が組織にない
安全にリファクタリングできる環境が整っていない
回帰テストなどQAが整っていない(=保証すべき品質が定まっていない)
こういった組織ではリファクタリングが正しい理解で認識されておらず、「新参者によるリファクタリングは、既存コードが破壊されるリスクが多分にある」という認識が強くあると伺えます。
改めて本来のリファクタリングの定義を確認しましょう。
ご覧いただけるように本来のリファクタリングは、外部から見た振る舞いの変更しないことを前提条件としているので、「既存コードが破壊されるリスク」を警戒している時点で、それは「リファクタリング」ではありません。
また書籍には「リファクタリングの第一歩」にこう記されています。
つまり、テストによって品質保証できないのであれば、それも「リファクタリング」ではありませんし、改善したいコードに対するテストを設けることもリファクタリングの一部です。
ここまでを踏まえてもなお、リファクタリングするのに政治力や信頼残高って必要ですか??