酔っ払ってこの文章を書いている。
経理から PdM を経てプログラマーの仕事に転職して 3 ~ 4 年が経った。一見すると何がしたいのか分からない職歴だが、自分の中では一貫性があると考えている。
元々は 8 年くらい経理の仕事をしていた。経理の仕事を始めたきっかけは後ろ向きな理由で、新卒で入った会社で営業をやりたくなかったからだ。
学生の頃から本当に働きたくなかったのだが、遠方に住む親から仕送りを続ける条件として最低週1のバイトと就活を突きつけられ、最初に参加した就活イベントで面白そうな会社を1つ見つけたのでそこを受けることにした。バイトは近所で募集していた中で最も楽そうだったので商業施設の駐車場で警備員をやっていた。身体的には楽だったが小さな子供がいると気を遣うので思ったほど楽ではなかった。子供が来ない施設で働きたかった。
面接を受けるにあたり、人と話すのが苦手で営業はやりたくなかったのと会計の知識が少しあったという理由で経理を受けた。経理もかなりコミュニケーションが必要な仕事であることは後から気づいた。仮に落ちても就活したアリバイにはなるからいいやと思ってその会社以外は受けなかったが、結果として無事に受かったので社会人になることができた。その会社は1年で辞めた。
その後はしばらく経理の仕事をやっていたのだが、仕事の一環で会社が運営しているサービスにおいて事業と会計とのインターフェイスとなるシステムに経理の立場から関わっていて、専任の PdM が必要そうだったので PdM に社内転職した。当時のことは会社の技術ブログに書いた。
PdM として働いていた時期を総括すると、自分自身にもっと実力があればより良いものが作れたのではないか?という点に尽きる。主にチームのタスク管理や利害関係者との調整、仕様の検討、SQL 職人などをやっていたが、実際にシステムの内部がどのように動いているかはあまり理解していなかった。
時間的な制約もあって駆け足で進めざるを得なかった(言い訳ばかりですみません)が、後から考えると仕様や運用体制など事前に準備しておけばよかったと思うことはたくさんある。例えば前述の技術ブログの最後あたりに書いた「今後の課題」など。
PdM としての仕事には悔しさが残る一方で、経理だった頃より近くでソフトウェア開発に携わったことで自分の手で自分が欲しいソフトウェアを作りだすことへの好奇心が生まれた。
当時は手元で動くちょっとしたスクリプトを書く程度でまともなプログラムは書けなかったので、誰かに雇ってもらって勉強しながら仕事でプログラミングをしようと考えた。流石にまっさらだと手の施しようがないので本を読んだりスクールに行ったりした。
それから 3~4 年ほど経ち Web アプリケーションのフロントエンドやバックエンドの API をいろいろと書いた。プログラミングは今後も死ぬまで続けていくつもりだ。
プログラミングをちゃんとやるようになって感じたのが、まともなプログラムを書くためには(基礎的なアルゴリズムやデータ構造の知識だけでなく)現実世界を正しく理解しなければならないということだ。言葉にしてみると当たり前すぎてちょっと恥ずかしい。
そのソフトウェアの実装以前に、現実にどのような課題があり、一定の制約の範囲内においてそれをどのような手段で解決するのかを見定める必要がある。自分でプログラムを書くかもしれないし、ライブラリを持ってくるかもしれないし、SaaS や PaaS を使うかもしれないし、そもそも何もしないかもしれない。
よく考えてみると経理も PdM もプログラマーも本質的な仕事は全て同じで、現実の課題に対して一定の制約の範囲内でそれを解決していく。異なる点としては責任を果たす相手と解決のために用いる知識や道具、コミュニケーションが挙げられる。
プログラマーに転職するときに反対の立場から言われたこととして「プログラミングの世界は子供の頃からコンピューター大好きでずっとプログラムを書いてきた天才が沢山いるから今さら始めても遅い」という意見があった。
しかし「現実世界で自分が解決したい課題」を一番よく分かっているのは自分自身であり、それが自分にとって最も重要であるからプログラミングを始める時期が遅かったことについては些細な問題であると考えている。平均寿命から逆算すると残り45年程度は生きる可能性があり、それだけあれば人間は大抵のことができる。さすがに今からプロ野球選手になるとかは無理だが。
まとまりのない文章になってしまったが何が言いたいかというと、一見して不思議に見える事実であっても現実に起きる全てのことには理由があり、おおまかな方向性が自分の納得したものであれば大体のことは収まるべきところに収まるということだ。
酔っ払って書いたので後で消すかもしれない。