- 数か月間、恐怖のために執筆とオンライン活動を止めていた開発者が、自己検閲をやめ、これまで認められなかった技術的・個人的な不足を告白する文章
- ポリモーフィズム(polymorphism)の概念を10年以上理解できておらず、SQLの腕も失い、大半のコードを自動テストなしでデプロイしてきた事実を認める
- 会社の技術スタック変更に合わせようとしてC#とBlazorの学習を中断したこと、今もRubyを愛しているのに仕事では使えない現実、そしてマネージャーや同僚がブログを読む状況で感じる心理的負担
- AIで書いたPRを提出した後にサイバーいじめを受けた経験と、リモートワークに対する率直な感情、および組織内の独自開発プロセスの不要さについての率直な意見
- 恐怖を手放し、これ以上自己検閲せずに継続的な学習と公開の文章執筆を続けていくという決意で締めくくられる
始まり: 恐怖と自己検閲をやめることにしたきっかけ
- 4月以降、恐怖が大きすぎて文章を投稿できなかった時期があり、ソーシャルメディア、ニュースアグリゲータ、フォーラムまですべて断っていた
- この状態をこれ以上引き延ばせないと感じ、恐怖を越えて再び書くことを決めた
- 足りない基礎を見せたくなくて固く隠してきたが、実際には多くの開発者が似たような知識の空白を抱えたまま働いていることに目を向けるようになった
- これまでの学び方は、使う領域だけが肥大化するスライムモールドに似ており、使わなかった知識はそのまま干からびていた
- 最近また基礎を埋め直し始め、学んだ内容を文章や言葉で再構成しながら、「知らない」と軽く認める感覚が身についてきた
- 基礎はまた学び直せるという確信を自分で実感し、遅すぎることはないという感覚が生まれた
ポリモーフィズムを10年以上理解できなかった時間
- 2012年からオブジェクト指向のコードを書いているつもりだったが、つい1年ほど前までポリモーフィズムをきちんと理解していなかった事実を自分で認めるようになった
- これまで書いてきたコードは、オブジェクト指向というより構造化プログラミングに近かった現実に向き合った
- 条件文をクラスに置き換えて設計を変える発想は、一度もしたことがなかった
- Sandi Metz の文章や Martin Fowler の資料を見て、遅ればせながら概念を理解し、その間に見落としてきたものがあまりにも多かったことが明確になった
-
この事実を明かしにくかった理由
- 採用面接でオブジェクト指向の概念を見る役割を担ってきた人間が、当のポリモーフィズムを知らなかった事実を明かすのはつらかった
- キャリア初期に原則よりもツール中心の学習に偏っていたことがそのまま露呈し、CSを専攻していない背景のせいで見落としてきた基礎があまりにも多いという事実に向き合うのは容易ではなかった
SQLを忘れてしまった経験
- かつてはSQLの本に沿って練習問題を解き、JOINやサブクエリを手際よく書いていた時期が確かにあった
- フロントエンド中心の実務が続き、SQLを書く機会が完全になくなると、ある瞬間にひとつの技術全体が頭の中から消えていた事実に気づいた
- 基本的なクエリは思い出せるが、left join と outer join の違いを説明するには文書を開き直さなければならない状態になっていた
-
この事実を認めにくかった理由
- 若い頃は、何年たっても事実や技術は小さなヒントさえあれば蘇る記憶力を自分が持っていると信じていた
- 今ではその能力がそのまま維持されていない現実を実感しており、記憶から丸ごと抜け落ちた最初の技術がSQLだったことが大きく響いた
- 年齢を重ねることと記憶の変化を公に書くのは簡単ではなかった
自動テストなしで開発してきた現実
- これまでデプロイされたコードの95%以上が自動テストなしで本番運用されている事実を自分で認める
- キャリア初期にはテストという概念に触れることがなく、Ember の時代にはテストツールをきちんと活用するのも難しかった
- 最近はレガシーコードを扱うことが多く、コードをテスト可能にするための準備作業に十分な時間を割けていない
-
この事実を明かしにくかった理由
- この告白はキャリアにおいて最も致命的な事実だと感じるほど重かった
- Uncle Bob の基準では、テストなしで本番運用されるコードは非倫理的とみなされ得る態度であり、その基準と自分の現実のあいだの隔たりに向き合うのが怖かった
- この事実が公開されれば、採用プロセスで不利な判断につながる可能性が高く見え、学習過程の記録そのものを先延ばしにしていた
Blazorを学べなかった理由
- 会社が Angular から Blazor へ移行すると決めたとき、チームで C# の経験がない唯一の人だったため、急いで追いつくために勉強を始めていた
- 数か月後に移行の決定が撤回されると、学習の動機がまるごと消え、本も最後まで読み切れずに止まった
- もともと C# や .NET はサイドプロジェクトで使いたい言語ではなく、純粋に仕事のためだけに学んでいた流れがそのまま表れた
-
この事実を書きにくかった理由
- 前の文章で続編を書くと自分で約束していた状態で、その約束を守れないまま別の文章を書くことが次第に居心地悪く感じられた
- Blazor 関連の記事が高い閲覧数を記録していたため、方向転換した事実を認めることが敗北のように見えるのではないかと恐れていた
Rubyをもっと使いたい気持ち
- Ruby は今でも最も気楽で楽しい言語であり、サンプル、オープンソース、カタ、ハッカソンなどで自然に手が伸びる言語だ
- しかし2013年以降、Rubyで給与を受け取ったことは一度もなく、業務では TypeScript のような言語を使っている
- 複数の会社で一緒に働いてきた同僚たちがあまりにも好きで、人を選ぶ代わりに言語では妥協する選択を続けてきた
- 退勤後や週末の時間を Ruby に使いたいが、ほかの義務や学習目標に押され、Ruby を十分に使う時間がほとんど取れない現実が続いている
-
この事実を明かしにくかった理由
- マネージャーと CTO がこのブログを見ているため、Ruby をもっと使いたいという言葉が退職のサインとして読まれるのではないかと恐れていた
- 会社で不慣れな言語を無理に押し通そうとする人にも見られたくなかった
大人になってもつらいサイバーいじめの経験
- あるオープンソースプロジェクトに LLM で作った小さなパッチを提出し、その経験をオンラインフォーラムで共有したとき、
無能、気持ち悪い、脅威だといった人格攻撃が一気に浴びせられる状況に直面した
- この攻撃はサイト内にとどまらず、ほかのウェブサイト、メール、SMS、電話にまで広がり、安全ではないという感覚を直接抱くようになった
- フォーラム管理者に実名を消してほしいと頼んだが、むしろさらに多くの個人情報がプロフィールに付け加えられ、
外部連絡の話をでっち上げたという虚偽の文言まで恒久的に刻まれる状況に向き合うことになった
- 結局、アカウントを無効化してサイトを去るしかなかった
-
この事実を書きにくかった理由
- 数日間続いたいじめは最も毒性の強いオンライン体験であり、今もその余波が残っている
- この話を公開すれば、加害者たちが再びやって来るかもしれないという恐怖が続いている
- プロフィールに残った虚偽情報が雇用に悪影響を及ぼす可能性まで思い浮かび、ますます語りにくかった
SaaSチームに「特別なプロセス」は不要だという考え
- ソフトウェア業界には数十年かけて磨かれてきたプロセスがすでにあり、
Agile、Lean、Kanban、XP のような方式はすでに検証済みの構造として存在している
- 限られた会社の能力を新しいプロセスの創案ではなく製品開発に集中すべきだという判断が自然に根づいた
-
この考えを言いにくかった理由
- 文章を書くときは常に自分がよく知っているテーマに基づいて書く習慣があり、この場合は同じ会社の同僚が提案したカスタムのソフトウェア開発プロセスがきっかけだった
- 特定の同僚やそのアイデアを公に批判する文章のように見える危険があると感じた
- Kent Beck や Martin Fowler のように、より良い協業のあり方を説明しながらも、同時に失敗した同僚を正面から狙い撃ちしない文章力がうらやましい
- 自分にはまだそうしたバランス感覚が十分にないと感じ、書くことをためらった
リモートワークが実際の協業を妨げる仕方
- リモートワークは多くの問題を解決してくれるが、ソフトウェア開発そのものは同じ空間にいるほうがうまく回るという感覚を拭えない
- ビデオ通話は低帯域・低感覚のコミュニケーションであり、周辺的な認識を失うことで同僚の困りごとを察知しにくくなる
- 助けを求めること自体もより負担が大きく、ホワイトボードや付箋のような空間的思考がオンラインツールでは簡単に崩れてしまう
- 対立は、モニター越しの相手に敵のイメージを投影しやすい特性のため、より早く深刻化する
-
この話を書きにくかった理由
- コロナ以降は完全リモートの会社になり、そのおかげで27エーカーの土地と家族用の乳牛までいる暮らしを築けた
- 都市へ移るのが難しい生活構造になってしまったため、リモートワークを好まないと言うことが、
現在の職場や今後応募するすべてのリモート職に不利な印象を与えることのように感じられた
今後の計画
- 今回の文章で恐怖を越える最初の一歩を再び踏み出せたと感じており、
これからも基礎学習を続け、学んだことをすべて隠さず書いていくつもりだ
- 似た経験のある人、助けたい人、次の文章が気になる人に向けて、
Mastodon、RSS、メーリングリストを通じて知らせを受け取れるよう案内している
1件のコメント
Hacker Newsのコメント
私もオフィス勤務のほうが好きだが、それはRTO(オフィス復帰)を擁護しているわけではない。単に自分の性向というだけだ。
業界の不安感とインポスター症候群が人を攻撃的にしているように見える。みんながもっと正直になれば、少しは楽になる気がする。
それと告白すると、LispやHaskellでFibonacciより複雑なものを書いたことがない。頭があのやり方では動かない
ただ、元の記事は自分の経験を客観的真実のように一般化して書いている。特に二人称の語り方が傲慢に感じられた。
どう言うかは内容そのものと同じくらい重要だ。リモートワークのような敏感な話題ほど、表現には慎重であるべきだ。
私も家族の健康問題のためにリモートワークをしなければならなかったので、記事の口調が軽く感じられて腹が立った。
結局のところ、人々が過敏に反応していると言う前に、自分の表現がどんな影響を与えるかをまず振り返るべきだ
廊下での会話の代わりにチームチャットで問題を解決し、みんなが積極的に助け合っていた。
今はむしろツールをうまく使えていない気がする
匿名で話せる場所が減るにつれて、自由に話しにくい文化が生まれている
あの頃は失敗してもただ隣の席に行って解決できたが、今は失敗したらそこで終わりだ
だから人々は孤独をリモートワークのせいにした
今はより社会的に調整された人が増えて、非同期コミュニケーションに弱くなっている
非言語的シグナルを読み取る密度が低いので、社会的な手がかりが減ってしまう
多くの開発者が興味よりキャリアパスに従っている。
SQLは三度も学び直した。技術は変わり続けるから、すべてを覚えておくことはできない。
重要なのは文法ではなく、問題を解決する能力と協働する力だ。
AIがこれを代替するのは難しいと思う
集中の伝染効果がある。いっしょに働く空間は生産性を高める
ドアは協業と集中を調整する最高の道具だ。
オンラインの「away」状態よりも、物理的なドアのほうがずっと明確なシグナルになる
誰かの集中のために、他の人を無理やりオフィスに呼び戻すのは非人間的だ
リモートワークが悪いのではなく、支援体制の悪い会社で働いた経験なのかもしれない
私も「わからない」とよく言う。それはEQの高い人の特徴だ
Kotlinでライブコーディングしていたとき、switch構文が思い出せずに焦った。
毎日使っている言語でも、あっという間に忘れてしまうことがあると気づいた
概念は長く残るが、細かな構文はすぐ消える
だが実際には、その不安を口にすること自体が難しい空気がある。
私もClaudeでコードを書いて楽しんでいるが、同時に恐れもある。
私たちがこれから来る変化の本質を最もよく知る世代なら、それについて議論すべきだ
問題は、それが実力のない人たちの生産性だけを高めることになるかもしれない点だ
だが企業がAIを管理者役として使い始めれば、人間の開発者の居場所は狭くなる。
今からAI効率コンサルタントのような役割への転換を準備すべきだ