低レイヤ以外の技術ってそんなに軽いのか

えーっと、誰かのおもりをするためだけに飼われている社畜はいません(少なくともうちの会社には)。ソフト屋が誰かに助けてもらうことを前提としてソフトウェア関連スキルのポートフォリオを組むのはやめた方がいい。最初はいい。分からないこともあるだろう。誰かと協力しなきゃ解決できない問題もあると思う。でもアーキテクチャ固有の脂っこい問題だけ誰かに丸投げして押しつけておいて、"私はプロのソフト屋でござい"ってのはちょっと虫がよすぎるように思う。

だから、そういう仕事ばかりじゃないわけですよ。極端な話、Linux + Apache + MySQL + PHP*1 な仕事もあって、そういう場合、gdbapache のプロセスを attach して mod_phpアセンブリレベルデバッグを始めたりははしないんですよ、普通は。何か問題があってもたいていはソースレベルデバッグで済むでしょ。なにか、epoll や kqueue までアセンブリレベルで追いかけるか?Java の仕事なら機械語レベルで云々なんてしようと思ってもできないし。
もちろん、仕事ならそれじゃすまない場合だってあるだろうけど*2、その場合にアセンブリで追いかけるのととりあえずワークアラウンドを入れてしまうというのはちょっと考慮の余地があるんでないかな。もしくはバージョンを変えるだけで動くならそれでもいいかもしれない。典型的には各ブラウザのレンダリングの挙動の違いに対応するために CSS ハックといわれるテクニックがあるよね。

それにね、普通の人、というのは現状何かの言語でプログラムを組んでいる人のことだけど、そういう人であればまぁ1週間もあれば、大概の別言後でプログラムを書きはじめることができると思う。3ヶ月もやってれば、新たに習得した言語で前にやってた言語でできたレベルのこと+αのことはできるようになるんじゃないかな。つまり"LL でプログラムを書いていて特定のアークテクチャで問題がよくわからない挙動を示したら、普通にバグレポートを投げ"るだけの人はいつでも交換可能な部品にすぎない。それはプロなんかじゃないよね。お金もらってりゃある意味プロとは呼んでもらえるかもしれないけど

各人得意なドメインとかレイヤとかがあるわけで、なんでアセンブリレベルデバッグができない人間は交換可能な部品になるのか理解できない。CSS ハックや JavaScript を日常的に使う人たちはマシンアーキテクチャについては詳しくないかも知れないけど、各種ブラウザの挙動については詳しいと思うし、同じように、Web アプリケーションの開発エンジニアは RDBMS や HTTP もしくはそれらのボトルネックになりやすい問題について詳しいだろうし、月間数億PVを捌くサイトを手がけるエンジニアはスケーラブルで管理しやすいサーバ構成を組むノウハウを持っているだろう。どれも現場によってはアセンブリレベルでデバッグできるスキルよりよっぽど重宝されること請け合いだし、それらの技術がアセンブリレベルデバッグができる技術と比べて見劣りするとは思えない。

まぁ、なんというか shiro さんが言うとおり前提としているレイヤが違うんだろな。そりゃ、そういうレイヤの知識が必須な現場もあるんだろうけど、そういう現場ばっかりでもないよ。他に優先するべき技術ってのもたくさんある。

*1:いわゆる LAMP

*2:そもそもソースが入手できるとは限らないわけだし