My Winding Road

思ったことをもにょもにょと書きます。

自分の頭で考えるクセをつけよう

f:id:hiroshi_revolution:20140315222323j:plain
土曜の夜にひっそり更新します。



このエントリーを読んで深く感動しました。

最初の3年で仕事人生の大半が決まる説 - sudoken Blog




まさにその通り。

新入社員、若手社員、若手に限らずみんな読んでほしい。



というわけで、自分も言いたいことを書いてみます。

どうも30を過ぎると説教臭いことを言いたくてしょうがない。

なので、土曜の夜にひっそりと更新するわけです笑




さて、僕が言いたいのは「自分の頭で考えろ」です。



例えてみましょう。



打ち合わせ終了時、「ここの部分に関して各自考えてこよう」などと宿題を出すとします。



それに対して、どこかで聞いたような、

どこかで誰かがブログで書いていたような、

絶対に何処かから拾っただろ!というアイデアしかもってこない人がよくいます。



これは特に、自分を良く見せようと無意識に思っている人に多い傾向にあると思います。



これがマニアックな物を見つけてきたならいいのですが、

本当によく聞く、王道的な、ハズレがないものを持ってくるのです。

こちらとしては大ハズレなわけですが。



正解を置きに行く、という表現が正しいかもしれません。



コレって要は「自分の頭で考える」ができていないんだと思います。





前にも書きましたが、アイデアとは組み合わせです。



組み合わせる元はどこかから拾っていいです。



しかし、組み合わせ方は自分で考えます。



ここにオリジナリティが出るわけです。





ここでAという前提があるだろ。

それでBという商品がある。

ここまでは拾ってきて良い。



ではAという前提に対して、〜〜という推測ができるから、

そこにBという商品をはめればいいんだ!

この〜〜は拾ってきてはいけません。

自分の頭で考えましょう。



ハズレてもいいんです。

大体、辻褄が合ってさえいれば、ハズレなんかになりません。

「言っている意味がわからない」とさえ、言われなければそれでOKです。







僕は元々システムエンジニアなのですが、

大学1年生のときの懐かしい思い出があります。

今でもこのときのことはハッキリと覚えています。



Cを使ったプログラム実習授業でした。



Q.

変数を5つ用意します。

5つの変数に、順に3,1,5,2,4と代入します。

これを小さい順に並び替えて出力しましょう。



こんな課題でした。



Cの文法が怪しいのですが、こんな感じです。

int a = 3;
int b = 1;
int c = 5;
int d = 2,
int e = 4;

〜〜なにか処理〜〜

printf("%d,%d,%d,%d,%d",a,b,c,d,e);


この「何か処理」を考えよう!という課題ですね。
まぁ、普通のバブルソートの問題ですね。

調べるとバブルソートというものがあると言うのはすぐにわかりました。

大学生の僕は「なるほど、最初と次を比較して、次のほうが小さければ入れ替えればいいんだな」と。

ちなみにこのときに知っている文法は、
変数、for文、if文、printfのみです笑

ということは、、、

if(a>b){
  aとbを入れ替える
}

か。。。

入れ替える!?!?

おい、入れ替えるってなんだよ!
入れ替えるなんて習ってないぞ。


なんとなく言いたいことが伝わりますかね。。。

つまり、習っている文法があって、
それらを組み合わせた処理は自分で考えないといけないっていうことが言いたいんです。


それから3日間悩みました。
今思い返すと、クズですね。


そして、閃きました。

もう1つ変数を用意しよう!

もう、僕的には画期的です。
本当に今思い返すと、どうしようもないです。

// これが入れ替え用に用意した変数だ!
int tmp = 0;

if(a>b){
  //aとbを入れ替える

  // aをいったんtmpに
  tmp = a;

  // bの数をaに入れる
  a = b;

  // tmpの数をbに入れる
  b = tmp;
}


やった!

入れ替えられました。

おめでとう!オレ!!!




まぁ、そんな感じです。
この答えは最適でないし、もっと上手なやり方はあるけど、
これは僕が自分で、自分の頭を使って考えました。

1度できればあとは回数を重ねればうまくなると思います。


社会人になっても、意外とこの頭の使い方ができていない人は多いです。

もったいないので、ぜひとも。