2005-05-23

XP vs ソフトウェア工学的な構図になっちゃってる話。

自分の中では「説得スキル再び」な話。

えーと。naoya さんはどこでソフトウェア工学を否定したんでしょうか? 否定したのはウォーターフォールモデルではないのですか? naoya さん自身の言葉でソフトウェア工学について書いているのはこれだけでしょ。

もうひとつ僕が引け目を感じていた原因として、ソフトウェア工学というものを学んだことがないというのもありました。僕は大学で物理を専攻していたこともあって、いわゆるソフトウェア開発の方法論やアルゴリズムといったものをまともに勉強したことがありません。

ソフトウェア工学を学んだことがないことを引け目に感じているだけ。否定的なことを書いているのはここか。

しかし、独創的なソフトウェアを"創りながら創る"という方法においては静的型付けの言語よりも動的型付けの言語の方が有利だと思うし、スーツを着て設計書を書いてからものを作るなんて作業は、今の僕には耐え難い作業です。もう後戻りはできなそうです。

言語の話が一つ、開発体制の話が一つ。ソフトウェア工学そのものはやっぱり出てこない。

ソフトウェア工学そのものは分からなくてもボトムアップ(あえてことの言葉を使いましょう)で XP にたどり着いた、ということですな。

これに対して orionae さんがいやいやソフトウェア工学は大事なんだよと言うのは別に問題ないと思うし、まぁ実際 naoya さんはソフトウェア工学そのものを大事にしているわけじゃーないでしょうな。ないがしろにしているのではないかという指摘は正しいと思います。でも反論のための例の出し方がまるで「XP では欠陥住宅ができますよ」みたいに読めちゃうんだな。この辺とか。

もしある人が「自分は薬品を混ぜていろんな物質を作るのを愛してるんです。

いろんなアイデアがわいてきて、そうやって作ったこの薬はこの症状にはすごく効くんですよ。」って言って提供する薬を、それを作った人が一切薬学や分子工学の知識が無いとわかっていて、あなたは人に薦められますか??

また、ある人が「自分は日曜大工が好きで、どんな家でも作れるんだ。いろいろアイデアが浮かんでさ。こんど10階建てのホテルを自分で作ったんだけど、泊まりに来る?建築工学?構造力学?そんなの好きじゃないからぜんぜん知らないや。」

あなたはそのホテルを責任を持って沢山の人に紹介できますか?

極端なようですが、上記ブログでnaoyaさんが述べられているのは、まさに同じことです。

そして

なぜ設計が必要か。なぜドキュメントが必要か。なぜ静的型付けが必要か。

あれ。ソフトウェア工学の必要性の話が設計、ドキュメント、静的型付け言語の必要性の話にすり替わろうとしている。

ところで。

ソフトウェア工学を押さえておかないとなぜ XP の手法が有効なのかは説明できない。そりゃそうだ。でも現場で生き残るのは理論じゃなくて手法だっていうのも自明じゃないですかね。1理論ではソフトウェアは生まれないのだから、ソフトウェア工学の必要性を解くためには論破ではなく、アジャイルの手法を選択した経緯をソフトウェア工学の豊富な知識を以て補完して説明してあげる方が有効なんじゃなかろうか。つまり、あなたが否定したつもりのソフトウェア工学で以てあなたの選択を説明することができる、という釈迦の掌論法だ。(くどいようだけど、naoya さんは明確にソフトウェア工学の否定はしてないはず。)

もう一つの方法は、あなた方の知見をみんなで共有するためにソフトウェア工学が役に立つ、というアプローチかな。つまり、「はてなメソッドの確立」のために工学的手法が使えますよ、という話。これはソフトウェア工学の人(って誰)にも Web アプリを開発している他の人たちにも嬉しい話になると思う。はてな内部の人がどれだけ嬉しいかはちょっと分からないけど。

ところで今回あちこち見て気に入ったのはこれ。

ソフトウェア工学について思うこと

まぁ要するにソフトウェア工学について、古くて、今ではそんなに重視されていない話の方が有名になっちゃってるんじゃないかなーと勝手に解釈したんだけど、考えてみたらいわゆる「学」のつくものって多かれ少なかれこの手の問題を抱えているんだよな。みんな学校で習った段階でその分野の情報が固定されて、自分の中で常識化してしまうから。

えーと。

オチがねーな。まいっか。

  1. だからこそ <a href="http://japanese.joelonsoftware.com/Articles/TheJoelTest.html">ジョエルテスト</a> なんかも大事になってくるんだと思う。 

ポスドク話。

ドクター取得後の就職にはどんな支援が必要? (/.-j)

結局、どの組織、どの分野でもダメな人がいて、出来る人がいて、ダメな上司、ダメな部下に悩む人が居て、隣の芝生が青くしか見えない人も居る一方で、どうしても自分より下の人間を見つけてこき下ろしたい人が居ると。

まぁいつものスラドのパターンだなと思った次第。ポスト不足なんてどこにでもある話さ。1

勝手な妄想を並べておくと、年齢、学歴、実績を「順番に積み上げて行く」っていう以外のルートがもっと認知されるべきじゃないかなと思う。キャリアを活かして新天地ってことじゃなくて、いつでも学び直せるしやり直せる世界。まぁ寝言と思われるかもしれないけど、そんなにとんでもない話じゃあないと思うんだよな。

学問の世界は企業に就職したら遠のくのか? 逆に学問を究めようとしている人間は企業社会で通用しないのか? どちらも極端な話だと思う。(それっぽい傾向があることまで否定はしないけどさ。)キャリアパスって言葉があるけど、学問の世界にも企業社会にも、つーかもっと広い意味においても、パスは本来何本も描けるはず。それを狭めているのはスキルや制度だけじゃなくて、自分と周囲の世間体や常識でもある。2

と、具体的な支援策を書かずに逃げるのであった。だってさぁ、今日やって明日効果が出るような対症療法で解決するとは思えないし。だったら価値観とか、そんなすぐにはどうにもならない話を持ち出してもいいかなーなんて。

  1. 同じように人手不足もどこにでもあるんだよな。 

  2. まぁ学問の世界では起業に相当するパスもないし、いくぶん狭いのはしょうがないけどさ。 

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm