modest violet

modest violet

開発者としてのあれこれや、日々の雑記など

your future hasn't written yet. no one's has.
by Emmett Lathrop "Doc" Brown

SE・WEBエンジニアにとって一番大事な要素は「考える技術」

f:id:shin21sk:20160821235947p:plain

 SEやエンジニアにとって必要なスキルは千差万別で、それこそ膨大な種類と幅があります。新しい事に興味が無いと駄目ですし、逆に超保守的に考えないと駄目な場合もあります。プログラム言語も用途に応じて使い分けが必要ですので、一概に「これだけ覚えれば大丈夫!」という近道はありません。
 そんな中で、やはり一番大事なのは「考える力」だと感じています。大げさに言えば、「考える技術」です。英語で言えば「ロジカルシンキング」です。仕様を作成する場合にも「考える」事が中心です。コーディングに行き詰まって、解決策を講じる場合も「考える」事になります。ベテランになればなるほど、この「考える」という工程をほぼ無意識でこなしている人が多く、新人の頃は驚愕したのを今でも覚えています。

常に「何故」を心がける

 例えば、Aさんから「新しいWEBサイトを構築したい」と相談がありました。話を聞くと「今流行のスマホサイトを視野に入れた動きのある集客性の高いサイトにしたい」という事でした。さて、このAさんからの相談内容でいくつ疑問点を感じる事が出来ましたか?

・Aさんから新しいWEBサイトを構築したい
 → 何故、新しくしないと駄目なのか?古いサイトのリニューアルでは何故駄目なのか?費用感、納期感など
・今流行のスマホサイトを視野に入れた
 → タブレットは?そこまでの端末を考慮?ブラウザーは?
・動きのある
 → 動画?画像?HTML5?まさかFlash
・集客性の高いサイト
 → マーケティングの方策は?リスティング?等など

というように、ほぼほぼ疑問の嵐になります。この「考える」という技術を使うことで、話の主導権をコチラが掴んでしまうことも可能です。大抵の場合、依頼者は「自分の本当に依頼したい内容が分かっていません」これは過言でも何でも無く、何となく抱いているイメージは分かるがそれを言葉として相手に説明出来ないケースが多いんです。「考える」事によって、依頼者が望んでいる形を具現化して提示してあげる事も可能になります。言われた内容を「はいはい」では駄目ということです。

新人に対する「ググれ」は悪ではない

 質問すると「ググれ」と言われました。教えてくれたら早いのに・・・。という意見を良く聞きます。確かに答えを聞いたほうが早いでしょう。でも別に答えを教えることを渋っている訳では無いという事を先に述べておきます。言いたいのは「分からないなら分からないなりに、考えた末の質問か」という事です。
 時には何を調べて良いのか検討すらつかない場合もあります。そんな時にGoogle先生に問い合わせても見当違いで、時間をロスする一方です。検索も一種のスキルなので、目的の情報を的確に検索するには練習が必要です。目的の情報に対して、どういうキーワードならヒットできそうか、日本語が無理ならば英語で検索するかなど、ここでも「考える」要素はたくさんあります。

考える技術を身につける方法

身近な物に疑問を抱くようにする

 例えば、今ではスマホが一番身近にある物だと思うので、スマホで例を挙げます。LINEでのメールのやり取りで、メッセージを読むと既読が付きますが、機内モードにすると既読は付きませんよね。ここで「そういうもの」とせず、「何故」と考えるようにします。写真を撮った際に位置情報が残りますが、「何故」位置情報が残るのかという風に考えたりします。
 一つ一つは大した内容ではないですが、色々な事に「何故」と問いかけるように心がければ、まるで呼吸をするかのように身についてきます。

関連書籍を読む

 巷には考える技術についての書籍が数多出版されています。読んで参考にするのも有りです。

出口 汪の論理的に考える技術 (SB文庫)

出口 汪の論理的に考える技術 (SB文庫)

【図解】考える力

【図解】考える力


ちなみに私は、考える技術とは本自体の内容としては全然関係ありませんが、「ザ・ゴール」を昔に読んで「ボトルネックを発生させない為に」という視点で常に考えるという癖は身につきました。結果的に考える技術に繋がっていると感じています。

ザ・ゴール

ザ・ゴール

ザ・ゴール コミック版

ザ・ゴール コミック版

さいごに

 少し前の記事にも書いたのですが、「プログラミングの授業必修化」は個人的には効果が無いと思っています。プログラミングを教えるくらいなら簿記を必修化した方が社会に出てから役に立つでしょうし。何より、社会に出て普通に働く上でプログラミングを読む機会なんて早々ないと思うんですよね。それならば、プログラミングではなく、ロジカルシンキングを磨く術を学んだほうが良いんじゃないかな〜、と思うわけです。
 考える技術に唯一デメリットを挙げるとすれば、常に「何故?」というスタンスですので、人によっては揚げ足を取られた感じにとられて揉めたりする事がある点ですね。
 
shin21.hatenablog.com