フリーランスのプログラマとして、三十数年仕事を続けてきました。 単にコードを書くのではなく、お客様の要望を整理し、実現可能な形に落とし込むところまで含めて担ってきたつもりです。
いまは、ITを業務に組み込むことが当たり前になり、多くの分野で優れたパッケージ製品も使えるようになりました。 その結果、既製品を前提に安く早く組み立てる仕事が増え、高度な設計力や実装力が必要とされる場面は、以前より少なくなっています。
それでも私は、プログラマという仕事にこだわり続けたいと考えています。
ITは、その黎明期から一貫してダウンサイジングを続けてきました。 メインフレームからワークステーションへ、さらにパーソナルコンピュータへと主役は移ってきました。
いまは、すでにポストPCの時代です。 その前提に立ち、ウェブとモバイル、そして両者を連携させたシステム開発に軸足を置いています。
私にとってモバイルは、Palm などのPDAの時代から続く関心事です。 その流れで見ると、常時ネットワークにつながるスマートフォンは、長く追い続けてきたモバイルのひとつの到達点に見えます。 かつて一部の好事家のものだったモバイル・コンピューティングが、いまでは日常の中心にある。 その変化は、いまでも十分に面白いテーマです。
デバッグとは、本来、プログラムの不具合を見つけて終わりではなく、原因を突き止めて解消するところまでを指します。 問題の発見と問題の解決は、似ているようで別の仕事です。
まず状況を把握し、再現条件を探り、原因を切り分け、修正し、最後に正しく動くことを確認する。 流れとしては単純ですが、バグはそもそも例外事象なので、手順通りに進めれば必ず解決するわけではありません。 方法論はあっても万能ではなく、状況に応じて適切な手を選ぶ判断力が必要です。
三日で作ったモジュールの不具合調査に、同じく三日かかることもあります。 ひとつのバグに一週間悩み続けることも珍しくありません。 仮説の引き出しが尽きた時点で、別の意味でデバッグは行き詰まります。 だからこそ、経験の蓄積がものをいいます。
長年の実務経験を活かして、お客様と一緒に原因を究明し、改善策を考え、必要であればデバッグ作業そのものも担います。
「リストラ」という言葉は人員削減の意味で使われがちですが、本来は「再構築」です。
多くのシステムは、最初から完成形が見えているわけではありません。 本当に必要なものは、開発し、運用し、改善を重ねるなかで少しずつ明らかになります。
しかし実際には、動いているコードを触ることを避け、過去の経緯を引きずったまま機能追加や改修が重ねられることが少なくありません。 その結果、仕様も構造も不自然になり、事情を知らない人には理解しづらいシステムになっていきます。 これは、そのまま技術的負債の蓄積です。 私は、システムにも「式年遷宮」が必要だと考えています。
不自然な構造は本来あるべき形に戻し、暗黙知になっている仕様は明文化する。 できるだけ現代的な技術で再構築し、技術的負債を減らして、誰でも追える状態にしておくことが重要です。 そうしておけば、増員が必要になった場合でも、引き継ぎの負担を最小限に抑えられます。
ソフトウェアは何のためにあるのか。 端的に言えば、面倒なことを簡単にし、手間がかかりすぎてできなかったことを可能にするためだと思います。
不便を我慢し続ける必要はありません。 そのために、コンピュータとソフトウェア、そしてインターネットがあります。 人は道具を作り、使いこなすことで生産性を高め、よりよい暮らしを目指してきました。 IT技術も、その延長線上にあるものだと考えています。
2020年から2025年ごろ、現場から少し距離を置いているあいだに、AIの支援を受けながら開発を進めることが急速に当たり前になっていました。 コード生成を含めた開発スタイルの変化には、正直かなり驚かされました。
ここ半年ほどで、その変化をあらためて学び直し、実務感覚を更新しているところです。 いまはAIも道具のひとつとして捉え、使いこなせる形にしていきたいと考えています。