現在システム開発者として、プログラミングから作っているが、
いつも思うのは、
「何でこれほど仕事が進まないのか?」
別に仕事してないわけではないけど、思っている以上に進まない。
プログラミングは、例えば
アイスコーヒーの注文を頼んだときに、「アイスコーシー」と思いがけず言ってしまったときに
わかりそうなものなのに注文が通らないようなもの。
人間と違ってファジーに判断してくれない。
それなのに、何百、何千ステップと書いていかないといけない。
人間、一度に考えられることは10もないと思う。
まったく知らない情報なら1か2か。
でも、複数を一気に考えられないと全体をつかめないし、
答えは10のうち1か2を答えればいいものでなく、10すべて答えて正解である。
それをうまく行う方法はなんだろうか?
①全体の知識を増やす
関係することを知っていれば、それに費やす脳みそのリソースは抑えられて
他の知らないとこを考えることに費やせる。
反対に知っていないと、今考えていることがそもそもつながっているのかどうか
もわからない。
経験が多い先輩のほうが仕事が出来るのは、この部分にリソースを使う量が少ない
からだろう。
結局、あるフィールドに入れば、そのフィールドの知識を早急にキャッチアップするのが
重要な能力の一つになるのだろう。
そのために必要な能力と言えば
1)先輩と仲良くなる、話せるコミュニケーション力(知る必要があるときに協力してもらえる状況でもよい)
2)早期に頭に定着させるための仮説検証的な頭(何が合っていて、何が間違えているのか頭で認識出来る)
3)もともとその知識が定着する経験、素地がある(英語の上達が早い人に、洋楽が好き、という人は結構いると思う。)
②細かく考える
全体を一気に考えようとしても、頭がリソース不足で結局一つ一つの理解が自分で話せるレベルに
ならない。
わからないなら、細かく分解して考えるしかない。全体がその間見えなくなっても。
サッカーは例えばドリブルの動作があって
さらにドリブルには相手に取られない方法、早く進める方法、フィールドでいい位置をとる方法等に
分かれるのだろうが、ドリブルをしよう、と思って3つともさらに行うことは出来ない。
相手に取られない方法さえ、まず自在にボールを扱えること、相手をかわす方法などに別れ、
自在にボールを扱えるにもさらに自分の前にあるとき、右足か、左足か、と分かれる。
サッカーは遊び程度でしかないが、プロになるなら一番最後の右足、左足の操作から
徹底的に練習しているはずである。そこを考えて動かす必要のないぐらい徹底して練習している
はずである。
システム開発も同じようなものだと思う。
一つ一つの動きが動作するようにしっかり集中して考え作りこんで、
それらを組み合わせる。
ただ、サッカーと違って足を動かしてドリブル、という定義があっているかどうかわからず、
頭や、手、胸などを使って初めてドリブルかな、と定義するところから始まるわけだが。
(そして、それを定義するには、浅くても他の幅広い知識も必要になる)
組み合わせの定義1→定義2→定義3(最小単位)→作る3→作る2→定義修正2→作る3→作る2→修正。。。みたいなイメージか。
最初から細かく考えることはないと思われる。全体の意味を理解していないことになる。
方法論はわかっても、それを早くできる人と出来ない人が出てくる。
その差はまだいまいちわからない。
ただ、迷いのない集中力を持っている場合のほうが早く出来上がることは経験則でわかる。
また、ここで書いたのはあくまで頭のリソースを集中させ早く仕上げていく方法論で、
すばらしいものを作る方法論ではない。
サッカーや野球などスポーツはすばらしい像がかなり定義されているが、仕事は
定義されていない。作り出すしかない。それが楽しいが、難しい。。