半ば成り行きで事業開発&マネジメントになって数年。業務でコードを書くことがとても少なくなっていた。業務でコードを触るのは社内システムや小さいPoCのちょっとしたメンテや質問があるときだけ。OSSに対するコントリビュートも活発だったのはもう一年以上前。
そんな中、本当に久しぶりに幸運にも0からソフトウェアを書く機会をもらえたのだけれど、ウキウキだったのも束の間。びっくりするくらいコードが書けなくなっていたのである。
フロー状態になるのが遅い、またはなれない
久しぶりにコードを書こうとすると、なんだか集中できず、集中力が落ちたように感じてしまう。何をするにも、例えばコマンド1つ叩くにしても「えーっと」と一呼吸置かないと行動に移せない。
常日頃からやっていない作業に集中するのは難しい。特にプログラミングは頭をフル回転させ続けるような作業なので、常日頃からしていないと、いざというときに集中し深く潜ることができない。
もちろん、コンセプトを考えたり資料を作成したりするときも頭をフル回転させている(つもり)だけれど、脳の使っている部分が全く違う(気がする)。
ここ二週間、1日1時間くらいはコードを書いているので少し取り戻せてきた気がするけど、それでもまだまだ。地道にやっていく。
できること、できないことがごっちゃに
JavaScriptでは標準でUUIDを生成できるだろう
あれ、できない・・・?
あ、Node.jsならできるのか
いやブラウザでもできるのか
みたいなことが多発した。記憶違いはもちろんあるんだけれど、そもそも何を勘違いしていたのかというと、そもそも最初にイメージしていたのが実はJavaの記憶を掘り起こしたものだった(`UUID.randomUUID()`)。また、昔Crypto APIを使ったときもドキュメントを参照しながら書いたはずで、手に馴染んでいたわけではなかった。
他にも、例えば flex や grid の記憶がすごい曖昧になっていた。これはおなじみ [FLEXBOX FROGGY](https://flexboxfroggy.com/#ja)と[GRID GARDEN](https://cssgridgarden.com/#ja)で勉強し直した。
AIより検索を優先しがち
仕事がBizDevなので、生成AIの利用方法はそちらに偏っていた。例えば特定の事業ドメインにおいて各国の規制などがあったりするので、その資料を翻訳させたり要約させたりしていた。あとはプレゼンや資料の壁打ちをしたりもした(秘情報を入力したくないので情報をまとめなおす必要があったが、それも含めて良い練習になった)。こういうことをやろうとするときには、検索ではなくすぐに生成AIに頼ろうとする思考になっているので手が早く動く。
ところが、開発においてはまだ思考がそうなっていない。わからないことがあると初手Google検索するというクセが抜けていないのだ。検索だとそこからいくつかの記事を読んで必要な情報があるかないか探して確からしい情報を試しして、というステップを繰り返すのでとても遅い。
ひどいコードを書きがち
いわゆるクソコード。例えば fetch のエラーハンドリングをしない、TypeScriptの警告を無視する、などなど。お一人様プロジェクトであることも原因の1つだけれど、それ以上に、↑に書いた理由により進捗が出ないので焦ってしまい、いろんなことを後回しにしてしまうのである。
今少しずつ直しているんだけど、なかなかひどい。
ただ、これはこれで学びがあった。それはつまり、
エラーハンドリングをしないこと
ツールの警告を無視すること
既存の関数の責務を無視してどんどん機能(コード)を足していくこと
ということをするとあっという間にひどいコードになるということを実感した。さらにいうと、スケジュールで人を圧迫すると人は簡単にこういうことに手を染めてしまうのである(今回のスケジュールは自分で勝手に線を引いたものであるにも関わらず)。
そのうち「私の書いたクソコード(そしていかにしてクソになっていったか)」という記事で実例を示そうと思う。
終わりに
ここまで色々書いたけれど、やっぱり開発は楽しい。成果が形作られていく過程もそうだし、コードを書いていくうちにもやもやした要求の解像度が上がっていくのも良い。開発はある意味アハ体験の連続なのかもしれない。
全盛期のフォームを取り戻すにはまだまだ時間がかかるかもしれないけれど、楽しんでやっていくぞー