おととい
ソフト業界での上司と部下の関係
http://blog.goo.ne.jp/xmldtp/e/7f2ca1d5c3a52d04a3067ecc98cd6a4c
きのう
どうして大炎上するのか?→下請け構造だと、定期的に大炎上するはず
http://blog.goo.ne.jp/xmldtp/e/7665be6873a7fa9b8ca17ec758c4e005
と好評なので、図にのって、第3弾。
いったいCOBOLな上司と、Javascript(JQuery)な現場では、
なにが違うのか・・・について具体的に書いてみよう
■COBOLな上司や、大学教育は・・・
COBOL時代、
プログラムは、上から順番に処理する
と考えていた。だから、自分で考えればなんとかできるし、
努力すればプログラム可能だと、いまだに思っている。
今の大学教育もそうだ。
プログラミングでは論理的な思考が育ち・・・
等といっているせんせ~は、「プログラムは、上から順番に処理する」と思っている。
具体的に書こう。
今、
func1
func2
func3
とあったら、1、2、3と順番に行うと思っている。
いま、そんな保証はない(例;func2が$.ajaxだったら?)
だから、
func1:値設定
func2:初期化処理
func3:やりたい処理
とかいて、平気でいる。これは、初期化処理が同期処理の場合のみ上手くいく方法で、非同期処理なら、(初期化処理はこの時点では呼び出されるだけで処理はしていないから)、func3で、「初期化処理していない」と、エラーで落ちる。
さすがに、ここまでバカな上司は、いないとしても
(学校の先生だとヤバイけど)
この世代の上司は、「ライブラリ」を使っている。ライブラリは、自分で低レベルな関数を使えば同じようなものは作れる。だから、プログラムっていうのは、がんばれば作れると思っている。
■Javaな上司
さすがに、Java世代の上司はプログラムは上から処理するとか、
がんばれば自分で何でも作れるということは、思わない。
Javaな世代は、フレームワークが中心なので、「ハリウッドの法則」は知っている。つまり、自分から呼び出すことができないので、
フレームワークが提供していないタイミング(イベント)の処理はできないことは知っている。
また、スレッドなどから、処理は順番に行われないことも知っている。
しかし、そこで終わっているのも、また、この世代の特徴。
■Javascriptな現場
そこで諦めてしまうと、JQueryなどの操作はできない。
画面の位置計算などは、こちらが値をセットしても、ブラウザ側で再計算してしまうことがある。こうなると、再計算後に値をセットしないといけないが、このとき(再計算後)、イベントは起こらない・・・・
・・・なので、Javaな上司は諦める・・・
でも、今の現場は違う。
setTimeout(値設定処理,30);
というように、ブラウザの再計算が終わり、再表示するまでの間に、値を設定するようにsetTimeoutしたりする。
これは一例で、こんな技をどんどん繰り出して、JQueryの画面を作っていく。
だから、Javascriptなやつらが作るJQueryをみて、COBOLな上司が「こんな画面作れ」と、Javaな社員に言っても、無理なのだ。setTimeoutで制御していくプログラムなんて、書いたことないから・・
でも、プログラムは上から流れると思っているCOBOLな上司は、気づかない・・・
ソフト業界での上司と部下の関係
http://blog.goo.ne.jp/xmldtp/e/7f2ca1d5c3a52d04a3067ecc98cd6a4c
きのう
どうして大炎上するのか?→下請け構造だと、定期的に大炎上するはず
http://blog.goo.ne.jp/xmldtp/e/7665be6873a7fa9b8ca17ec758c4e005
と好評なので、図にのって、第3弾。
いったいCOBOLな上司と、Javascript(JQuery)な現場では、
なにが違うのか・・・について具体的に書いてみよう
■COBOLな上司や、大学教育は・・・
COBOL時代、
プログラムは、上から順番に処理する
と考えていた。だから、自分で考えればなんとかできるし、
努力すればプログラム可能だと、いまだに思っている。
今の大学教育もそうだ。
プログラミングでは論理的な思考が育ち・・・
等といっているせんせ~は、「プログラムは、上から順番に処理する」と思っている。
具体的に書こう。
今、
func1
func2
func3
とあったら、1、2、3と順番に行うと思っている。
いま、そんな保証はない(例;func2が$.ajaxだったら?)
だから、
func1:値設定
func2:初期化処理
func3:やりたい処理
とかいて、平気でいる。これは、初期化処理が同期処理の場合のみ上手くいく方法で、非同期処理なら、(初期化処理はこの時点では呼び出されるだけで処理はしていないから)、func3で、「初期化処理していない」と、エラーで落ちる。
さすがに、ここまでバカな上司は、いないとしても
(学校の先生だとヤバイけど)
この世代の上司は、「ライブラリ」を使っている。ライブラリは、自分で低レベルな関数を使えば同じようなものは作れる。だから、プログラムっていうのは、がんばれば作れると思っている。
■Javaな上司
さすがに、Java世代の上司はプログラムは上から処理するとか、
がんばれば自分で何でも作れるということは、思わない。
Javaな世代は、フレームワークが中心なので、「ハリウッドの法則」は知っている。つまり、自分から呼び出すことができないので、
フレームワークが提供していないタイミング(イベント)の処理はできないことは知っている。
また、スレッドなどから、処理は順番に行われないことも知っている。
しかし、そこで終わっているのも、また、この世代の特徴。
■Javascriptな現場
そこで諦めてしまうと、JQueryなどの操作はできない。
画面の位置計算などは、こちらが値をセットしても、ブラウザ側で再計算してしまうことがある。こうなると、再計算後に値をセットしないといけないが、このとき(再計算後)、イベントは起こらない・・・・
・・・なので、Javaな上司は諦める・・・
でも、今の現場は違う。
setTimeout(値設定処理,30);
というように、ブラウザの再計算が終わり、再表示するまでの間に、値を設定するようにsetTimeoutしたりする。
これは一例で、こんな技をどんどん繰り出して、JQueryの画面を作っていく。
だから、Javascriptなやつらが作るJQueryをみて、COBOLな上司が「こんな画面作れ」と、Javaな社員に言っても、無理なのだ。setTimeoutで制御していくプログラムなんて、書いたことないから・・
でも、プログラムは上から流れると思っているCOBOLな上司は、気づかない・・・