2024年6月16日日曜日

詳細設計書きたくないと言う話

https://togetter.com/li/2384729

今いる現場でも、四年目あたりの人が同じようなことを言っていた

そもそも、BD、FD、CD、UT、ITなんて用語を知らなかったようだ

基本情報の説明にもあるのだけどなぁ、、、

基本設計から結合テストまでのウォーターフォールについてのドキュメントをIPAがまとめたのは2007年

当時の元気な大企業がよって集まってまとめたものだった

ところが、大企業は各々の文化があり、うちはこうまとめる、よそは知らんという感じで、中身の粒度やフォーマットなどはまとめられないままだった

この投稿で議論されているように、コードの直しが発生する細かすぎる仕様書はメンテされなくなる

仕様書の書き方もよくわからないまま修正したりすれば、さらに意味不明なドキュメントが出来上がり、コードと乖離してるんだよねと言うよく見る状況になる

Javaな人たちは、詳細なんてものはコードからリバースすればいいじゃ無いかと、DoxygenやGraphvizを使ったり、コードからUMLのクラス図を作り上げるようなツールを使いまくって乗り切ってきた

単なる間に合わせだ

このやり方で果たして品質が上がるのか?
もっともな疑問が湧くだろう

大企業様はウォーターフォールをすれば品質が上がると言う論文を自社の社員に大量に書かせて、あたかもこれが一般的なものであると言う根も葉もない根拠を作り上げた

でも、やはり気づくよね?
無理がありすぎる

そんな折、アジャイルが提唱されたのはほぼ10年前だろうか?

イテレーションを繰り返して少しずつ作って行ったほうが早いし、コーディングも綺麗になると言い始めた

だが、わたしは知っている
ゲーム業界は特に仕様書を重視しない
都度コーディングしてディレクターに見せて、指摘を取り込むことを繰り返しつつ、全体スケジュールもきちんと視野に入れた舵取りが行われていた

つまり、ゲーム業界はスーファミ時代からとっくにアジャイルだった

だが、アジャイルだとしても、やはりコーディングする人の技量に左右されまくり、部分部分で全くレベルが違う事態になる

ゲーム業界ではそれでもリリース日があるので、動けばオッケーなレベルで出荷していた

この点どう考えられているのかと
アジャイルについて書かれた本を読みまくったが、お前らそれで物が作れると思ってんのか!と説教したくなった

わたしはそのやり方で失敗しまくった例をたくさん見ているのだ

そうしたら最近だと、アジャイルとは結局何をやっても良いんですよ、うまくいかなかったら工夫してうまくいくようにさせるんですと言い始めた

わたしがそれを聞いた時の感想

おいおい、それができるまでお前ら何度も失敗することになるが、それ、ハウツー本にならんじゃないか、、、

わたしが品質を上げるために重視しているのは、コーディングのレベルだ

コーディング規約ではない

フレームワークと言うものは
ドメインをきちんと取り決めてあり
どこで何をすれば良いのか分かりやすくなっている

これさえも出来ないエンジニアは多い
フレームワークへの理解が足りないから
せっかく用意されている仕組みを使えないのだ

コーディングする人材が勉強不足過ぎるのだ

コーディングとはある意味すごく単純だ
出来ることは代入、条件判定、ループくらいのものだ

しかしコーディングのお題を与えると、人によってすごく短いコードになったり、膨大なコードになってさっぱり意味がわからなかったりする

イベントドリブン、ドキュメントビューアーキテクチャ、モデルビューコントローラ、オブジェクト指向、DDD、機能指向、アルゴリズムとデータ構造など、、、

今迄数多くの概念が提唱されてきたが
マイクロサービスなんてものを見ると、モジュールベースで、機能指向でより単純化されているし、こんなものをasp.netやSpringで作るとしたらバカくさくてやってられない

わたしが言いたいのは
シンプルに考える事の重要性だ

まず画面をシンプルにする

お客様は画面しか見ない
我々も画面でしか表現できない
まず、業務システムなら機能はそこそこで紙芝居画面を作りそこでオッケーをもらったら作る
作っててダメならまた見せる
これの繰り返しで品質は上がる

次にデータの持ち方をシンプルにする
データベースはそこそこ意味があったが
それでは足りなくなっている

XMLやJSONカラムを使った方がシンプルになる場面が多いのに、旧態依然としたSQLしか知らない輩が偉そうにテーブル定義を作る

もちろんそれで動くものは作れるが
よくインサートされた内容を見てみろ
しっかり階層構造になってるだろ?
ならば何故二次元で考える?

今までやったことがないから?
以前はこれでうまく行ったから?

だからお前らのテーブル定義は
出来上がった瞬間に中古物件になってるんだよ!

階層構造を理解できないと言う事は
勉強不足なのだ

新しいSQLの拡張をもっと勉強するべきだ

最後にフレームワークの使い方
どのフレームワークもMVCだろうが
言語によって実装は結構違う
一通り自分でゼロから作ってみてほしい
自分でCMSやECサイトは作れるか?
対戦格闘ゲームサイトは作れるか?

出来合いのECやCMSを使うか?
AWSが用意してるゲームサイト用の機能を使うだけで満足か?

それで中身がどう動いているのか理解できるのか?

全く勉強不足なのだ

プログラマは以前より多くの知識を要求されるようになった

特にセキュリティに関してはガンガン勉強しなくてはならない

BD、FDでその辺りを書ける人は見たことがないし、今まで通りの仕様書の書き方では、かなり粒度を細かく書かなくてはいけないだろう

さて、このように人が全部やるとしたら勉強不足に起因する課題だらけだけど、最近はcopilot様が現れた

時代としては詳細設計はぶっ飛ばして良い時代になったと思っている

だってダメなところはcopilot様が教えてくれるじゃないか?

最終的にcopilot様がオッケー出せば良いんじゃね?とさえ思い始めている

はよ、自分でコーディングしない時代になってもらいたいものだ

copilot様、あとはよろしく

0 件のコメント: