本家に書いたとおり、大西先生の英語学習の講演会行って、
なぜ、大学のソフトウェア工学が、実践で役立たず、
再教育しないといけないか、わかった!
簡単な実験してみるとわかる。
まず、
「掲示板」といったとき、イメージが出てくる。
そして、
・クライアント側はHTMLで作成し、
ボタンでイベント送るよなあ・・・
・サーバーは、PHPかJavaかで違い、フレームワークによって、
構成は違うけど、とにかく、
・データチェック(これはクライアントでもOK)
・DBないしはファイルに保存
・表示
の部分があって・・・
・もし、削除を認めるなら、普通自分か管理者しか
削除できないので、ユーザー管理と認証が必要
・文が長かったりするなら、詳細と一覧が必要
・掲示板は普通入力画面は、一覧側に出してOK
→一般のWebアプリの入力は、詳細画面と同じフォームの別画面
・スレッド(板のほうのスレッドの意味)が必要かも
・検索画面は、いるかも?
ということが、たぶん1分かからず、数秒で出てくると思う。
ここまで出てきて、イメージできていれば、画面遷移もすぐにかけて、
コーディングに取り掛かれるはず・・・
で、ここまでで、
「多態性」とか、
「デザインパターン(例えば、ストラテジパターンとか)」とか、
「継承」とかの、ソフトウェア工学の概念、出てきた?
一切出てきてないですよね・・・
・・・そこなんですよ!
大学で教えるソフトウェア工学は、概念、大西先生の講演の言い方で言えば、文法なんですよ。概念は教えているけど、概念でシステム作っているわけじゃない。
「今日は、デザインパターンのストラテジパターンを使ってやろう」
「あ、Webって、メソッド切り替えは、まさにストラテジーではないか!」
「おお、じゃあ、Web切り替えに、ストラテジーパターンを使おう」
じゃないんですよね。
普通作るときには、さまざまな場面があって、その場面に対応した
ソースコード、アーキテクチャ、その他もろもろが既に頭の中に
あって、それを状況によって、適宜選択していくカタチ。
つまり、実務的には、「掲示板」のイメージが頭の中にあって、
それを作るには、Webのシステムだなと類推して、
Webシステムの流れをつらつらと出してくる感じ・・・
だから、実務に持っていくには、概念を状況に応じて再編成しないといけない。
大学は、概念のレベルはやるんだけど、状況に応じた応用はやらない
というか、概念から、応用させようとしている。
これをやっていたら、間に合わない。
お客さんとの会話の中で行うので、1分じゃ遅い。数秒でやらないといけないのだが、
それには、抽象度が高すぎる。
たとえば、Webシステムのフレームワークは、
ストラテジーパターンをリフレクションを使って実現すると
できるんだけど、それに、何秒でおもいつく?
今言ったことがわからない人、
ストラテジーパターンとリフレクションをWebで調べて、
フレームワークの創り方を考えてみて。
私が教育した中で、
最短で気づいた人、2時間(=こいつ、若手だけど、相当優秀。私より優秀)
多くは、1日考えて気づかなかった
でも、2時間かかったら、会議終わっちゃうのよ(^^;)
結局、状況にあったシステムの作り方の例をある程度学習しないと、
概念だけだと、ちょっと難しいものがあるかもしれない。
なぜ、大学のソフトウェア工学が、実践で役立たず、
再教育しないといけないか、わかった!
簡単な実験してみるとわかる。
実験: 「掲示板のソフトウェアを作ってください」 といわれたら、なにを考えます? |
まず、
「掲示板」といったとき、イメージが出てくる。
そして、
・クライアント側はHTMLで作成し、
ボタンでイベント送るよなあ・・・
・サーバーは、PHPかJavaかで違い、フレームワークによって、
構成は違うけど、とにかく、
・データチェック(これはクライアントでもOK)
・DBないしはファイルに保存
・表示
の部分があって・・・
・もし、削除を認めるなら、普通自分か管理者しか
削除できないので、ユーザー管理と認証が必要
・文が長かったりするなら、詳細と一覧が必要
・掲示板は普通入力画面は、一覧側に出してOK
→一般のWebアプリの入力は、詳細画面と同じフォームの別画面
・スレッド(板のほうのスレッドの意味)が必要かも
・検索画面は、いるかも?
ということが、たぶん1分かからず、数秒で出てくると思う。
ここまで出てきて、イメージできていれば、画面遷移もすぐにかけて、
コーディングに取り掛かれるはず・・・
で、ここまでで、
「多態性」とか、
「デザインパターン(例えば、ストラテジパターンとか)」とか、
「継承」とかの、ソフトウェア工学の概念、出てきた?
一切出てきてないですよね・・・
・・・そこなんですよ!
大学で教えるソフトウェア工学は、概念、大西先生の講演の言い方で言えば、文法なんですよ。概念は教えているけど、概念でシステム作っているわけじゃない。
「今日は、デザインパターンのストラテジパターンを使ってやろう」
「あ、Webって、メソッド切り替えは、まさにストラテジーではないか!」
「おお、じゃあ、Web切り替えに、ストラテジーパターンを使おう」
じゃないんですよね。
普通作るときには、さまざまな場面があって、その場面に対応した
ソースコード、アーキテクチャ、その他もろもろが既に頭の中に
あって、それを状況によって、適宜選択していくカタチ。
つまり、実務的には、「掲示板」のイメージが頭の中にあって、
それを作るには、Webのシステムだなと類推して、
Webシステムの流れをつらつらと出してくる感じ・・・
だから、実務に持っていくには、概念を状況に応じて再編成しないといけない。
大学は、概念のレベルはやるんだけど、状況に応じた応用はやらない
というか、概念から、応用させようとしている。
これをやっていたら、間に合わない。
お客さんとの会話の中で行うので、1分じゃ遅い。数秒でやらないといけないのだが、
それには、抽象度が高すぎる。
たとえば、Webシステムのフレームワークは、
ストラテジーパターンをリフレクションを使って実現すると
できるんだけど、それに、何秒でおもいつく?
今言ったことがわからない人、
ストラテジーパターンとリフレクションをWebで調べて、
フレームワークの創り方を考えてみて。
私が教育した中で、
最短で気づいた人、2時間(=こいつ、若手だけど、相当優秀。私より優秀)
多くは、1日考えて気づかなかった
でも、2時間かかったら、会議終わっちゃうのよ(^^;)
結局、状況にあったシステムの作り方の例をある程度学習しないと、
概念だけだと、ちょっと難しいものがあるかもしれない。