覚えておいて損はない!開発者に必要な「考え方」その1!

どうもSuです。

毎日チーム開発をしている中で、開発者として必須だなと思う「考え方」について、自分なりの考え方をまとめたいと思います。様々なチームや人と開発をしてきた中で、開発者としてコレは抑えておいた方が良いなと思うことが結構あるかなと思います。

今回は第1回目ということで、基本的な考え方というところを書いてみますので、ぜひご一読頂ければ幸いです。

私はどんな人?

ソフトウェアアプリケーションエンジニアとして、スクラム開発をやっています。普段はTypescriptをベースにフロントエンド、バックエンド、DBなどの設計・開発・テストをやっています。

新規機能の開発だけではなく、リリース後の運用保守もやっています。とにかく日々様々な事を経験しながら、「終わりがない学び」を楽しみながら、日々を過ごしています。

なぜこの記事を書くの?

開発を20年近くやっていて、様々な言語、システム、チームで開発してきた経験があり、継続してお仕事を頂けているので、「自分の考え方」を共有することで、他の方にも何か役に立てないかなと考えたからです。

開発者に必要な考え方

問題が発生した時、まずは、自分で考えて、トライ&エラーする

「XXXというエラーが出たのですが、分からないので教えてください」

このような質問は開発ではよくある質問でしょう。では、この人は、どのような経緯をたどってこの質問にたどり着いたのでしょうか?

  1. とりあえず、エラーが出たけど、英語で書いてあって分からないし、先輩なら解決したことがあると思うので、聞いた方が早いから聞いてみよう。
  2. エラーメッセージをググったけど、なんか英語の検索結果しか出ないから、良くわからないので、先輩に聞いてみよう。
  3. 15分エラーメッセージの意味を考えてみたけど、分からないので、先輩に聞いてみよう。
  4. エラーメッセージの意味は分かったが、どの部分を指しているのか分からないな、もしかしてAの部分の修正が影響しているかもしれないから、Aの部分を少し修正してデバッグしてみるか。そこまで確認して分からなければ、調べたところまで先輩に説明して、次はどのように調べたらよいか聞いてみよう。

さて、どれが良さそうな考え方なのでしょうか?

答えは、「まずは、自分で問題を解決できるように行動してみる」です。もちろん、「本番サービスに影響が出ていて、すぐに解決しなければならない状況」であれば、解決策を知っている可能性が高い先輩に聞くのが最も合理的と言えます。ただし、普段の開発であれば、「まずは自分で調べ方を学ぶ」というのが良い選択肢でしょう。

問題に対し、自分で考えて、トライ&エラーすると何が良いのか?

トライ&エラーする場合、まず仮説を立て、1つ1つ検証していきます。

  • コードを修正する前はエラーが発生していなかったから、修正したコードを戻して、エラーが発生するか確認してみよう
  • コード修正がエラーを引き起こしているのが分かったので、次はXX行のコードが問題な気がするので、XX行の修正だけを戻してみよう
  • XX行の修正が悪いことが分かった。エラーメッセージの内容をそのままググってみよう
  • 英語のサイトが最初に出てきたな。英語は苦手だけどGoogle翻訳もあるし、まずは読んでみよう

こういった作業は時間がかかるし、一見無駄なようにも見えます。しかし、1つ1つの作業が「問題を解決するためのノウハウの蓄積」につながるのです。

世の中のすべてのことを知っている人はいません。誰しもが何かしらの問題に直面し、解決することを経験します。インターネットで検索すれば一発で答えが見つかることもあるでしょう。それはそれでよいと思います。先人の知恵を活用して、大事な部分に時間をかけることも大事です。

ただし!いつも「Googleの検索結果に答えを求める」というスタンスは、いずれ「Googleに答えがないので行き詰る」につながります。答えのない課題はたくさんあり、日々そういった問題を解決してきたのが人類なのです。

と、まあ大げさに書きましたが、まずは自分で仮説を立てて考えた方が、抽象化スキルとして良い開発者になれると思います。また、「何か問題があっても解決できる」という自信につながると思います。

ぜひ、「まず、先輩に聞いてみよう」ではなく、「まず自分で15分調べてみて、分からなければ、自分の考えた結果、経緯を説明しながら、先輩の知識・経験を共有してもらって、解決策を模索しよう」と主体的に行動するように心がけましょう。

自分で深く考えずに質問すると、使えないやつ扱いされる可能性が高い

自分で深く考えずに質問すると、逆質問されたときに答えに窮します。そうすると、「あ、こいつはあまり考えずに、とりあえず質問して問題を解決しようとしてるな」と判断されます。

例えば、

(後輩A君)「XXXというエラーが出たので、解決策分かりますか?」

と先輩に質問したとしましょう。

そして、先輩から

(先輩)「エラーメッセージの通りだと思うけど、エラーメッセージの読んだ?意味は分かる?」

と質問され、

(後輩A君)「英語なんで良く分かりませんでした。一応ググったんですけど、答えが出てこなかったので、解決できませんでした」

というやりとりをしてしまっては、先輩に呆れられてもしかたありません。

新人1年目、入社して1か月の新人であれば、しかたがないかもしれませんが、それでも、以下のように自分なりに考えた結果が見えるようでないと、今後の開発を任せられるとは思えないと思います。

(後輩A君)「エラーメッセージの意味は日本語では、XXXという意味なので、この部分に問題がありそうだなと思って、コードを消したりしてみたのですが、エラーメッセージがなくなりませんでした。一度修正をすべて戻したら、エラーメッセージが消えたので、自分の修正が何か悪さをしているところまでは分かりました。ここまで来て30分ほど経ってしまったので、前回先輩が修正していたところだったので、一度相談した方が良いかなと思ってきました。この部分で何か特別な書き方をしないといけないなどありますでしょうか?」

過去に何度も見てきたのですが、同じような浅い質問を何度もしていると、「うーんと、とりあえずエラーメッセージをググってみて、自分なりにコードを修正して問題が解消されるか試してみて、エラーメッセージの言っていることはXXXだから、この部分を見てみたり、公式ドキュメントを参考に書いてみると解消するかもしれないね。」と言った感じで答えではなく、「答えにたどり着くためのアドバイス」を返されます。その時の先輩の気持ちは。。。?

(先輩の心の中)「この人は、問題を自ら解決しようとしているのかな?他力本願のようだし、自分でどんどん学習していく人ではなさそうだな。質問ばかりしていて、自分の時間も取られすぎているから、簡単な作業だけやってもらうようにしようかな」

と思われているかもしれません。

質問するのは良いことです。ただ、先輩や他の開発メンバーも暇ではありません。「質問に至るまでの自分の行動」はしっかりと考えた方が良いと思います。開発者の一員として、様々な問題解決が自分でできるように問題解決力を鍛えていくのが良いですね。

最後に

いかがでしたでしょうか?「なんだ、そんなことか。誰でも当たり前にやっているよ!」と思われる方もいらっしゃったかもしれません。ただ、「意外とできていない人、継続できない人」が世の中には結構いるのだろうなということを強く感じます。

基本的な考え方ではあるのですが、20年近く開発している自分でも「自ら考え、トライ&エラーする」は続けていますし、強力な武器だと思っています。

ぜひ、みなさんもこのような考え方を身に着け、素晴らしい開発者になってください!

では!

最新情報をチェックしよう!