エンジニアとして必要な能力(3) 「問題解決力」
こんばんは。
てりーです。
エンジニアとして、必要な能力(3)は「問題解決力」です。
問題解決力
プログラミングは、問題解決を繰り返す作業がほとんどです。
調べたりエラーにぶち当たったりしながらまともに動くコードに修正していきます。エンジニアとしてかなり重要な能力の一つです。
エンジニアとしてどれだけキャリアを積もうが、この作業からは逃れられません。ひたすら時間を使って取り組むしかないです。
ただ、コツはあるので、要領良く解決していくことはできると思います。詳しく書いていきます。
ひとまず、検索する
(1)の検索力でも書きましたが、エラーがでたらまずはエラーメッセージで検索します。これで8割くらいは解決するのではないかと思います。
とは言っても、こればっかりは場数なので、すぐには答えにたどり着けないかもしれません。ひたすら検索しましょう!
デバッガを使う
デバッガとは、プログラミングの際に用いる開発ツールの一つで、プログラムの欠陥(バグ)を発見・修正するデバッグ(debug)作業を支援するソフトウェアです。控えめにいって、かなり使えます。
もしあなたが使ったことがなかったら、大大大至急使い方を覚えてください。
例えば、フロント(HTML/CSSやJavaScript)ならChromeの開発者ツールが該当します。PHPのデバッガなら、VSCode上で動作するものがあると思います。
デバッガを使い慣れてくると、解決までの時間を大幅に減らすことができます。未経験者の方も、早めに使い方を覚えてもらえたら、他の方と圧倒的な差をつけられると思います。
(ぶっちゃけ、エンジニアになってからも使わない方が結構いたりするのです。しかし、デバッガを使わないのは本当にもったいないです。。。)
JavaScript
PHP
開発者ツールの場合では、ブレークポイントを設定して、ステップ実行しながら変数の上にマウスカーソルを当てるだけで、今変数に入っている値を確認することができます。
変数に想定される値が入ってなかったりして、あれ?という感じですぐ気付きます。ソースコードが想定どおり動いているのかを確認することができます。
デバッガを使わない方法として、古くからのconsole.log(JavaScriptの場合)でのデバッグ方法があります。最初はお世話になるので良いと思いますが、プログラミングに慣れてきたら早めにデバッガに切り替えてください。
効率が全然違います。
切り分ける
これも、かなり重要です。
コードの流れを追いかけて、どこまでが正常に動いていて、どこからが怪しいのかを特定していきます。問題解決をしていく際の鉄則です。
問題なさそうなことが確認できたら、そこは除外して、怪しいところだけをみていきます。すると、いつか原因にたどり着きます。
これができないということであれば、コードを追いかけられていないです。基本的な理解が不足しているということだと思います。
比較する
他のサイトではあまり書いてないですが、使える方法なので書いておきます。
実装をある程度していると、これまで動いていたコードが突然動かなくなったりすることがあります。このような時に、うまく動いていた時と動かなくなった時のコードの差分を見ていくと、かなり早く原因に気づくことができます。
最近は、Gitなどのバージョン管理もあるので、まめにコミットしておけば、動作している状態のソースに戻すだけで、トラブった時にすぐに比較できます。
Gitを導入していなければ、まめにファイル名を変えて保存しておくしかないのですが、現在はGitを使用しない職場はないというくらい普及しているので、勉強がてら導入しておくと良いと思います。
個人利用なら、Githubを使わずにローカルだけで使うので良いと思います。また、Gitの仕組みがわからなければ、ひとまずコミットだけして履歴を管理しておけば良いです。コマンドを打つのはなかなか辛いですが、SourcetreeなどのGUIのツールを入れれば、最小限使うことはできます。他の機能は追々覚えていけばオッケーです。
人に聞く
ここまでやってわからなければ、人に聞きましょう。原因となる箇所の特定が難しく、袋小路に入ってしまうとかなり脱出が難しいです。アドバイスをもらうと、5分程度で気づきがえられることも多いです。
私も、今でも人に聞くことがあります。決して全て一人で解決できるわけではありません。わからない時はわからないと正直にいうのも、エンジニアとして必要なのではないかと考えます。
特に急ぎで実装しないといけない時はそうですが、人に頼ってはやく前進できるなら、そのほうが望ましいです。ヤバイと思ったら、ヘルプを出すのも重要です。
もし聞くひとがいないのであれば、Teratail(テラテイル)で聞くといいと思います。早ければ1日、2日で回答がもらえることがあります。
それでは、また。
この記事が気に入ったらサポートをしてみませんか?