seri::diary

日常

技術調査はググる前が肝心

概要

■「プログラミングは自分で調査しながら覚えた方が上達が早い」という意見は非常に同意

■でも出来ている人少ないよね。調査中に挫折しちゃう。

■それは「わからないこと」をブレークダウンして整理しないで調査し始めて欲しい情報をピンポイントで調べられてないから

■調査をする前に「何をしたいか」「何がわからないか」を徹底的に時間をかけて整理してから調査した方が結果的に早く答えに辿り着くからオススメ

 

プログラミングが上達しない or 勉強が続かない人へ:とあるIT系社長のブロマガ - ブロマガ

凄く共感できる内容だった。

特に以下の部分

実はプログラミングを"勉強する"ってこと自体ちょっとオススメできない。

どういうことかというと、僕が思うに
・何か作りたいものがある(アイデア
・それはどうやったら作れるのか(調査)
・実際に作り出す(実行)
っていうプロセスが一番上達が早いと思うんだよね。

全くその通りだと思う。

しかしこれらをきちんと実践出来ている人は現実ではかなり少ないように思う。

何か分からない事があった時に、なんでも自分で調べてホイホイ作れてしまう人もいるが、多くの人は調査の段階で立ち止まってしまうことが多い。「調べたけど分からなかったから挫折した」みたいな。

自分は元々独学でプログラミングを覚えて、過去の仕事でもエンジニアが自分1人しかいないような状況で開発をしていたこともあってか、自分で調べて解決するのには割と慣れている。

例えば何か作業しててハマった場合、自分は下記のような感じで調査している。

f:id:serihiro:20140111214543p:plain

 後半のググって見つかるまでキーワード変えてググるってのはみんなやっているのだが、前半のオレンジで書いた部分のフローを端折って

・何がしたいのか

・自分がどこまで分かっていて何が分からないのか

・どういう情報が欲しいか

を明確にしないまま、何となくエラーメッセージでググったりする人が多い。

 

これをやると、気が付くと的外れなことを調べていたり、漠然とググり続けて延々と時間をかけてしまったり、途中でそもそも何がしたいのか分からなくなってしまう。んなことを現場でやってると先輩から怒られること必須である。

ググっても分からず、最終的に誰かに質問する場合も、何が分かっていて何が分かっていないかを明確にしておかないと、聞かれた相手もどう答えていいか分からず、お互いの時間を無駄にすることになってしまう。
んなことやってると段々「あいつは自分で調べずにすぐ聞いてくるめんどくさい奴だ」とチームのメンバーに思われて、段々相手してもらえなくなる。現実は厳しい。

 

また、開発コストという観点からもなるべく短時間で調査できるようになることを常に心がけるべきだと思う。

調査を行う時間が初めから開発スケジュールに含まれているなら良いが、そうではない突発的な調査が必要になった場合の調査は長引けばスケジュールに影響を与える。

ハマりそうなポイントがハナから見えているのであれば、調査かプロトタイプを作って検証するスケジュールを最初から入れておくことを検討しといた方がいい。

 

あと調査とは関係ないけど、手元で得られる情報をきちんと集めるのは調査以前の大前提になるので、javaの長ったらしいスタックトレースもめんどくさがらずちゃんと読もうね、ってのもいつも思う。

参考:デバッグ手順(スタックトレース重要) - jfluteの日記