プログラミングは虹色の個性が満載だけど、ぜんぜんうれしくないワケ
記事タイトル、最初は「プログラミングはつらいよ」にしようかとも思ったんだけど、ネガティブな気がしたからこっちにしてみた。どっちでもいいか。
ぼくはフリーランスのITエンジニアをしていてる。ただ、プロフィールにも書いてある通り「フリーランス」とは名ばかりの客先常駐型(寄生型ともいう)のエセフリーランスだ。
エンジニア界隈の方でなければあまりピンとこないかもしれないけれど、やっていることといえば派遣社員と変わらない。派遣社員は派遣会社に所属した会社員だろうけど、ぼくはその所属会社がない。
個人として業務委託契約をしているので、毎月決まった金額のお金をもらってお客さんのオフィスに居座らせてもらっているというわけ。
今お世話になっている会社はもう10年以上のお付き合いをさせてもらっているんだけど、それはたぶん携わっている案件が「システム保守」だからだ。
…と言われてもよくわかんないよね。
システムって、最初はもちろん開発するんだけど、そこでも数多くのエンジニアが集ってゴリゴリプログラムを書いて作っていく。システムの規模によって参加するエンジニアの数は異なっていて、規模によっては数百人規模の人が携わることもある。
そして、その開発が終わると開発チームは一旦解散。
作ったらおしまい。かというとそうではない。その後は「保守」のフェーズに移行する。保守っていうのは、なんとなくわかると思うけどメンテナンスだよね。
時に発生する不具合の修正だったり、後は機能追加などのアップデートだったり。
ぼくの担当しているシステムは「人事システム」で、社内での人事・勤怠管理・給与・会計などの管理をしているシステムだ。だから、一番メインの保守作業は「法律改正」によるところが多い。
毎年、なんらかの法律改正が行われたりしていて、例えば給与だと税率が変わったりとか。みんなあまり気にしていないだけで、ちょいちょい変わってるんだよね。
それで、ぼくが入っている会社は結構大きな会社なので、システム自体も結構な規模のシステム。開発時には相当な人数をかけて構築していたはずだ。
一部は海外にも開発を発注していたらしく、プログラムを見てみるとコメントには中国の方の名前がたくさん登場する。
そんな、システムの保守をしているぼくだけど、当然いろんな人が開発したプログラムを見ることになる。メンテナンスをする時にはまず、すでに作られたプログラムを解析するところから始めなければならない。
一部のメンテナンスなので、1〜100まで全部解析するということはないんだけど、それでもプログラムの構造は確認しておく必要がある。
それがまた難解なのだ。
自分の作ったプログラムであれば、記憶力が全くないぼくでもなんとなくは理解が追いつく。そりゃ自分が作ってるんだから当然といえば当然かな(ぼくは大体忘れてるけど)
なぜ、他人が作ったプログラムを解析するのが難解なのかというと、
プログラミングには正解が存在しないから。
そんなことを言うと「無茶苦茶なプログラムでシステムが動くはずがないじゃないか」と思われる方もいらっしゃるかもしれない。
それがね、動いちゃうんですよこれが。不思議なことに。困ったことに。
ぼくが担当する人事システムでも当然お客さんの要件が満たされるように作られているんだけど、言い換えると「要件を満たしてさえいればいい」ということ。
開発時点では、運用を開始した後の「システム保守」のことを考えずに作られてしまうことも多い。つまり、メンテナンスのしやすさは度外視している。
ちゃんと保守までを考えて作ってくれることもある。ただ、大抵の開発時はそれどころじゃないと言うのが本音。作るので精一杯なんだよね。
なので、特に海外に発注したようないわゆるオフショアされたシステムなどは特に保守まで考えて作られることが少なくて、「なんとか正常には動く」みたいなシステムが生まれている。
そうやって、いろんな人が作ったプログラムというのは本当に個性があふれていて十人十色・・・どころか千差万別で、プログラムを組んだプログラマーの意図を理解するのが時にむちゃくちゃ難解だったりするのだ。
ところでプログラミングって、頭のいい人が作ったらスマートなプログラムになりそうじゃない?
実はそうとも限らないんだ、これが。特に中国とか海外に発注された時って、そもそも向こうのエンジニアって優秀な人が多いと思うんだけど、ムダに難しいプログラムを組んでくださることが多い気がする。
要するに知識があり過ぎて、そんな難しいことしなくてもいいようなプログラムでも使ってしまう。
…伝わりにくいかな。
料理に例えよう。そうだな、オムライス。
オムライスの完成形ってみんな知ってるじゃない?
だいたいどんな味かも想像がつくし、美味しいことも知っている。具材もなんとなく自分で「これかな」みたいのがあるよね。
ぼくのような凡人がそれを作るとすると、人参や玉ねぎを刻んで、ハムかソーセージを入れる。卵で包んだら最後に上からケチャップをかける。
うん、実においしそうだ。なんだかオムライスが食べたくなってきたな。
さて、同じオムライスを高級レストランのシェフが作るとどうなるか?
玉ねぎやにんじんはきっと使うだろう。ハムやソーセージはもしかしたらブランド肉に変わるかもしれない。もしかしたら熟成ベーコンかもね。
隠し味にトリュフなんかも加えたりして。それを覆うのは烏骨鶏の卵で、もちろんナイフを入れるとパカッと割れるあの絶妙なトロトロ加減だ。
ソースも既成のケチャップなんかじゃなく自家製のトマトソース。まさに高級オムライスの完成だ。
・・・でも、思てたんとちがう。
ぼくが食べたいのは一般的なあの定番オムライス。そういうの、求めてないんですごめんなさい。
みたいなプログラム。
もしかして余計に伝わらなかった?
でも、とにかく余分なことをしてくれちゃってるプログラムというのが存在するってこと。もしかしたらそれはとても効率が良くて、性能がいいのかもしれない(そうではないことの方が多いけど)
ただそういう高級食材がふんだんに使われたプログラムというのは、ものすごくメンテナンスがしにくいのだ。
保守性を考えたら「誰がメンテナンスしてもしやすい」ことの方が重要になってくる。
どこを触ったらいいかわからないプログラムというのは、はっきりって「自己満足の結晶」でしかないんだよね。
そんなどこかの誰かが作ったプログラムを日々ながめながら、ぼくは毎日お仕事をしています。ブツブツを独り言で文句を吐きながら・・・
でも、もしかしたらそういうのを見て解析するのも実は楽しんでたりするのかな。
確かにプログラムを組んだプログラマーの意図がわかった時はスッキリする。
スッキリすると同時に生まれる感情はいつも「なんだかなー・・・」だ。
個性あふれるプログラムの海で、ぼくは今日も遭難している。
あ、今日はお休みだからこの記事を書いてるんだけどね。
じゃあ、またね。
この記事が気に入ったらサポートをしてみませんか?