みなさま、Google検索で答えが見つからないタイプの問題が発生した時、どの様に問題にアプローチされていますか?
(注:職業エンジニアの方は、毎日そういう状況だと思っております)
漠然とした質問で恐縮ですが、私自身StackOverFlow/Qiita/Teratailなどを中心としたGoogle検索の方法は徐々にスキルアップしているものの、検索で歯が立たないレベルの問題に直面した時にどうしても思考停止になり、時間だけが経って歯がゆい思いをしています。
考え方のツボ、問題解決のアプローチ法、思考方法のフレームワークなどありましたら、是非お教えください。
熟練したエンジニアに対面で教えてもらうしかないという意見や、大きな問題を解決可能なレベルまで砕いて対処するといったノウハウが見受けられます。皆さんはどの様にこの壁を乗り越えられていますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答7件
0
ベストアンサー
問題というのは、プログラムのバグについて言ってますか? 質問文を読んで、問題が起こった時の対応の順序が違うような印象を受けました。
いきなり検索するのではなくて、まずは、エラーメッセージなどを頼りに原因となっていそうな怪しい部分をいくつか挙げてみてください。そして、自分なりに原因についての仮説を立て、怪しい部分を、ひとつずつ潰していくのです。プリント文や Rails なら Pry を使ってデバッグしたり、プログラムを一部書き換えたり、コメントアウトしてから動かしてみたり。いろいろな手段を使って、切り分けをしてください。
こうして、範囲が絞られてくると、何を調べたらいいか、具体的にわかってきます。その時点で、解説書やAPIドキュメントを読みなおしたり、検索したりすればいいのです。Googleなどで漫然と検索するのではなくて、使っているフレームワークのバグ管理サイト(GitHub issues とか Bugzilla とか)や、ユーザーメーリングリストなどで検索する方が、探しているものが見つかりやすいです。
最初はもちろん何もわからず、手探り状態でしょうが、こういうプロセスをとることで、着実に問題解決のスキルが上がります。たとえ、原因が最後までわからず、解決できなかったとしてもです。(その時は解決できなくても、数ヶ月後に消化した知識を元に、自己解決することもあります)
また、自分が主に使う言語やフレームワークについては、勉強に時間を割いてください。ウェブにある情報は間違っていたり、古かったりすることが多いので、どんなことができるのかアイデアを得るにはいいのですが、そこからしっかり学ぶことはできません。書籍を買うのは必須です。
書籍で紹介されているプログラムは、そのまま打ち込んで動かしてみるのはもちろんですが、動いた後、少し変えてみて、どうなるか見てください。ちょっとした機能を追加してみるのも、かなり有効です。こうやってみると、読んでわかったつもりが、案外わかってなかったことに気づき、苦労した分、より深く理解できます。そして、書籍を一度読んで終わりにするのではなく、何週間か経ってから、もう一度読むのも重要です。また、デバッグに使える道具についても学んでください。
あと、そうだ。デバッグに行き詰まったら、誰かに説明してみるのもいいです。相手に専門知識は必要ありません。むしろ知識がない方がいいかも。周りに誰もいなかったら、ペットとか、植物とかに説明してもいいです。そうしていると、不思議なことに、解決の糸口が見つかることが多いですよ。
投稿2016/03/22 11:31
総合スコア2035
0
下記の2パターンの問題は諦めます。
ただし、上記の2つに該当するかどうかを判断するための知識が必要です。
そのうえで、
- 自分と周囲の人間が分からないだけで、答えがあると分かっている問題
という前提であれば、
そもそもそうならないように、前提知識を増やす努力をします。
(ネット検索などで、付け焼き刃的に知識を増やしていても、どうしても偏ってしまうので、書籍やリファレンス、マニュアルを中心に網羅的に知識を増やします。)
前提知識が増えると、Googleなどでのキーワード検索のバリエーションも増やせるので、検索でヒットさせれる率が高まります。
わかっていることと、わかっていないことを図を含めてホワイトボードなどに書きだしておくのは考え方の整理や問題をシンプルにするという点で役立ちますし、周囲と共有できるため、アドバイスや意見などを貰いやすいと思います。
私の場合、ホワイトボードは落書き帳と呼んでて、ほぼ独占して使ってますw
ホワイトボードを使っているうちに自己解決することが多いです。
(性格的にノートは見返すことがほとんどないので、ほぼ使いませんw 勉強の時は使いますが。)
それでも、答えが見つからない問題と遭遇した場合、
見つからないことを早めに報告して、調査と平行しつつ、別の提案も考えると思います。
投稿2016/03/22 10:34
総合スコア907
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ものによりますが,OSSを利用した際に起きた問題であれば,
githubのissueに同様の問題で困っている人がいないかを確かめます.
過去ログと同じ対処方法で解決できたり,未解決の問題なのかどうかがわかることが結構多いと思います.
teratailであった質問だと,
https://teratail.com/questions/30364 や
https://teratail.com/questions/25487 などが
githubのissueとほぼ同様の質問内容で,結構前から上がっていた質問です.
あとは,バグでコケた時はひたすらにググるのではなく,スタックトレースを見てどこの処理の何が問題なのかを自分でできる範囲で分析します.
利用しているライブラリの依存関係が問題なのか,
自分の実装したコードが問題なのか,
またこれらとは別の問題なのか,
問題がなになのかがわかれば,解決策がわからなくても質問しやすいですし,
検索する方向性も定まると思います.
これはだいぶ主観に偏った考え方ですが,
いきなりググるのが効果的なのは,環境構築など.
原因を突き詰めてからググるほうが早いのは,開発時に起きる問題
だと私は思っています.
とにかく愚直にググり続けるのは,誰かが同じ問題に直面していて,
それをweb上に記事にしないと解決することが永遠にないので,あんまり良くないと思ってます.
投稿2016/03/22 10:12
編集2016/03/22 10:16退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
日本語の検索を止めてみる。話はそこからだ、日本語使っている時点て、成長が止まる
あと、本を書く人の言葉で、「ソースを読め」というのもある。
本の作者の意見や考えを知ることも、ヒントになる。
投稿2016/03/22 11:06
編集2016/03/22 11:08退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
・他の検索キーワードでヒットしないか色々と変更して再検索してみます
・類似すると思われる別のケースを考えて検索し見つかった結果をアレンジして適用してみます
・周りに相談してみます
・日本語の情報を諦めて英語も範囲に入れて検索してみます
投稿2016/03/22 10:07
総合スコア2160
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
- マニュアルを読む。読んでわからなかったら、3回読む。
- エラーメッセージを読む。読んでわからなかったら、3回読む。
- バグとの戦いで心が折れない為のコツ を肝に銘じる。
- アヒルに話しかける。
投稿2016/03/22 09:08
編集2016/03/22 10:19総合スコア2493
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
・妥協してレベルを一段階下げた物にする
・諦める
・Teratailで質問する
投稿2016/03/22 09:39
総合スコア123
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/22 12:15