質問: プログラマーの仕事は7割がエラーと戦うことだと聞いたことがあります。 僕はまだプログラミングの勉強を始めたばかりで先日から環境構築などでエラーを連発し、teratailで聞いてみたり、ググっても全くわからず、コード通りにコマンドを実行しても全くエラーが解決しなくて憂鬱な気持ちになったことが何回もあります。 Teratailにいる方の中には凄腕プログラマーのような方がたくさんいると思いますが、エラーが全然解決しないときはどう対処していますか? タイトルにもある通り最長どのくらいエラーと戦っていたのか、またそういった状況での対処法をぜひお伺いしたいです。 (例、コードを見直す、初歩的なミスが多いなど。
回答: 私もエラーには幾度となく泣かされてきました。 しかし、プログラマができる手段は「どうしてエラーになるのか確かめる」事だけです。 * エラー文を翻訳機を使ってでも読む * エラー文でぐぐってみる * 何行目でエラーになったのかを確認する * 関数・メソッドに同じ値を投げ込んで動作を確認する * デバッグプリントを仕込んでみる それを続けていると嫌になってくるのが人間というもので、 私もエラーを出さない・最小限の労力で見つけられるよう工夫するようになりました。 1つ目の工夫が良いコードを書くことです。 * リーダブルコードを読んだ * コード量の少ないコードを書くようになった * カッコのネストを嫌うようになった 読みやすく記述量の少ないコードの書き方を学び、創意工夫することで、 大幅に不具合を起こす事が少なくなりました。 分かりづらい文章は書いている本人ですらわかりませんが、 わかりやすい簡潔な文章は、間違いが記述してあると浮かび上がってくるようになります。 2つ目の工夫は高速な確認作業です。 * タイピング速度を上げ、知らない関数・メソッドをREPLで検証するようになった * 知らない関数・メソッドは公式のリファレンスを読んで確かめるようになった これは癖の問題です。 自分のタイピング速度が遅いと確認を避けるようになります。 自分はたまたま入った職場のプロジェクトがCoffeeScriptという言語を採用しており、 コードを眺めているだけでは中々解決出来ないから確認を強いられました。 その結果、自力でコードとエラー文から問題を抽出する事が得意になりました。 また、JavaScriptもPHPもそうなんですか、 リファレンスのサイトを都度眺める事で、 自分の知識がアップデートされていき、短時間でより多くの情報を抜き出せるようになります。 3つ目の工夫は道具の手入れです。 * インデントの不揃い対策にEditorConfigを導入した * typo対策にlinterを導入するようになった * 処理を小さな単位で関数・メソッドに閉じ込めるようになった * ファイルを変更してすぐ挙動を確認できるよう、ビルドツールやテストツールを整備した 自分が困る事なんて全世界のプログラマが困っているわけで、 ちょっと調べれば腐るほど答えが転がっています。 多数の記事を読み、前人の知恵を引き出すようになって、 飛躍的に生産性が上がりました。 タイピングが遅い人なんかはIDEやプラグインを組み合わせ 少ないタイプ数で多くのコードを生み出したり、 少ない操作で瞬時にエラー箇所を分析して見つけ出すスキルに優れています。 現在TeratailでJavaScript等の質問が来る事がありますが、 コードはたいていこの解答欄のTextareaタグ内で作っています。 デベロッパーツールのconsoleで動作を軽く検証して載せています。 何をやるのかは明白で、たいてい1-2度動かせば想定通りに動作します。 なので、長くプログラマーとして生きていけば そのうち慣れてきて一撃で動作するコードは書けるようになります。 まずはじっくり何が発生しているのか自分の目で確かめる、 エラーの文章を深読みや早合点せずに正しく理解する。 そして昨日より今日、今日より明日が少しだけ便利になるようにツールを探してみましょう。 それをコツコツ積み重ねて行く事が重要です。