はじめに
今でこそ経験者みたいな顔して開発しているけど、新卒でIT系の会社に入社したときは未経験でした。
最初は未経験なの誰でも当たり前か笑
学生の頃、アルバイトしてパソコンを購入してプライベートでも少しはプログラムしていたけれど。
それから、いろいろな経験をしてスキルアップしてきたわけです。
中でも、エラーや問題が発生したときに身に着けた知識やノウハウがたくさんあったと思い出しました。
印象深いエラーなど振り返ってみました。
駆け出しの頃
初期の頃は、設計書どおりに到達するまでが難しくて何か作ればエラーが出る状態。
ヌルポ(nullポインタアクセス)はたくさんしたと思います。
そもそも、学生のときにプログラムしていたときはポインタの扱いもきちんと理解できてなかったというレベル。
ある案件に入ったときにはスタックオーバーフローが頻発していて、僕の担当機能にも出て、まともに動かないので、まいりました。
だいぶ昔だけど、Windowsのカーネルモードで動作するプログラムを作ったことがあり、デバッガがあるにはあったけど不自由だった。
printfデバッグもできないし、どこで落ちているかわからない場合、ある程度は勘がきかないと対応できないケースもあったな。
若いうちは面倒な開発環境の構築などをまかされた場合もあったけど、スキルがないと正しく進めているように思えても間違っていたりする。
スキルアップすると、仮に手順書に間違いがあっても気づけたりするし、自分がおかしな方向に進んでいると認識できたりする。
少しスキルアップすると
慣れてくると調査しなくても不具合対応できる場合がある。
とあるアプリでは、USBメモリに入っている動画が正常に再生できないというバグチケットがQAチームから渡された。
事象の記載を読んだ段階で「これはUSBの転送速度が影響している可能性が高い」とみなして、USBメモリのスペックを調べて状況報告するのみ、詳細な調査はせず対応完了したことがありました。
(これ今思うとQAの人が適切に記載してくれたのだろうなと。だから読んだだけで対応できたと思う。)
設計の問題にぶつかることもある。
矛盾した仕様になっていたり。
実は以前のバージョンで制限していた機能を解放してしまったことがあって。
一般の人が利用できるアプリケーションだったので、ネットでは評判がよくて…結果オーライでした。
最近、出くわしたエラーなど
一昨年に出会ったのが、一見マージコミットではないのに親が2つある変なコミット。
(実際、マージをした記憶はない箇所)
他のブランチをマージしようとしたときに、想定しないコンフリクトが発生して、変になっていたことに気づいたけど危なかった。
けっきょく発生原因や再現手順はわからなかったから、その変なコミットの前まで戻して対応しました。
(きっと、なにか手順ミスしてマージしていたのだろうな…)
昨年、取り組んでいたプロダクトでは、ローカルにDockerで動かして開発するスタイルだったけど、なかなかアカウント登録ができなくて。
いろいろ試行錯誤した結果、動作がもっさりしているので、クリックして画面遷移したらブラウザの動きが完全に止まるまで待つというのを徹底したら、なんとかアカウント登録ができた。
今年、僕が書いた環境構築の手順があるのだけど、なぜか他の人は書いたとおりにやってくれないということがあった…
その手順書を見て環境構築した5人のうち、3人は書いてあるとおりにやらず別の方法で実施してエラーが出るって声をかけてくれたけど、それ記載と違うから!
2人は手順通りに実施してくれて、すんなり環境構築できた。
原因は2つあると思っている。
一つは、僕が書いた手順書は前提の部分の記述が少なかったのかなとは思う。
前提の部分をもう少し事細かに書かないといけなかったのかも。
(言うのは簡単だけど、実際に書くとなると説明が大量になって重要な部分が目立たなくなるし、現状のものでもちゃんとやっている人はいるし、という言い訳はあったりする。)
もう一つ、どうやら人は一度「こう」と思うと軌道修正が難しい場合もあるようだ。
3人には口頭でも伝えたのだけど、手順を変えなかったな。
そして、最終的には、皆、構築できたのでよかったのかもしれない。
最後に
エラーは、最初は敵として出くわす。
けど、ちゃんと対応すると力になってくれる。
途中から味方になる漫画のキャラクターみたい笑