この記事について
この記事は、プログラミング初心者の私が他のユーザーさんからいただいたコメントで、
是非紹介したいコメントがあったので、同じくプログラミング初心者で悩んでいる人達に
共有するために書いております。
当時の状況
商社に勤めていましたが、転職に向けて日々の仕事とは別に興味があったプログラミング
を独学で学習している真っ最中でした。
自分の書いたコードがどうしても正常に動作せず、原因と対処方法を検索しては試すので
すが、解決の糸口が掴めず、なかなか進まない苛立ちと焦りが募っていました。
結局、自己解決を諦めて、何が原因かの見通しも立っていない漠然とした状況で、失礼か
とも思いましたがQiitaに助けを求めて質問をいたしました。
質問した結果...
質問したその日にデバッグ方法について回答が来ました。
①var_dumpメソッド(プログラムがどのように処理されているか確認するため
に処理結果や経路を確認)
②executeメソッド(SQLが正しく処理されているかも確認するために、戻り値を入手)
③errorInfoメソッド(直近のエラー情報を取得)
①、②、③と実行するのですが、そもそも初心者である私は、正しくデバッグできている
か自信もありませんでした。回答が欲しい私は、①、②、③の処理を適切な位置にでき
ているか再度確認の質問をしました。
即ち、ずるい質問で、例えるなら、勉強を教えて下さる先生に対して、答案用紙を下さいと
言っているようなイメージでしょうか。(遠回しに勉強する気がありませんと伝えている)
回答を誘発しようとしている質問もずるいですが、自分の言葉に責任がない、やる気がありま
せんと自分で言っているような愚かな質問で、もし会社で同じ質問をしていたら呆れられてい
たなと思いました。
いただいた金言
ずるい質問をした後に、このコメントをいただいたおかげで、私は自分の愚かさに気づき
ました。
「①②③は基本的には"あなた"がコードの動作を理解・確認するためのもので、「適切な位置」
とはそれが実現できる位置です。行った操作に対して、プログラムの1行1句がどのように動い
ているか確信を持っていますか?変数の中身に何が入っていて、それがどのように変化し、条件
分岐のどこを通るのか説明できますか?確信がないところで①②③で確認しましょう。」
反省
表現が難しいですが、胸に刺さりました。バグは生じても良い、デバッグ処理をしてバグを見つ
ければ良いと無責任な態度でコードを書いていたので、あのような質問をしてしまったのだと思います。
恐らく私の質問に回答して下さったユーザーさんは、自分の書いてるコードに責任を持たれてい
て、バグを起こさないために毎日何回もデバッグ処理で動作を確認しながら進めているからこそ、あのような金言を言うことができるんだと思います。
それに比べて私は、とほほほ....
得た教訓
①シンプルにデバッグ処理の理解が深まった
②ネットでバグ対処が見つからない場合、それは自分固有の問題と考えるべき
→ネットに対処方法が無いと言うことは共通化できないミスと言うこと。
→つまりスペルミスや入力ミスなど。
③出力されるものだけでなく、書いたコードがどのような動作を行っているのか
責任を持って確認すること