世界を動かす技術を、日本語で。

25年間のソフトウェア開発の物語

概要

  • Susam Pal による20年以上のソフトウェア開発経験の回顧録
  • 技術的な知識よりも 人とのエピソード を中心に構成
  • ソフトウェア開発初期の体験や、仕事での印象的な出来事の紹介
  • 教訓やアドバイス ではなく、個人的なストーリーの集積
  • 各エピソードがキャリアや学びに与えた影響の描写

20年のソフトウェア開発を振り返って

  • Susam Pal がプロとして20年を迎えた節目の記録
  • 子供時代のプログラミング体験から本格的な大学時代の開発開始
  • 本記事は、 技術的な知恵や教訓 ではなく、印象的な出来事や人との交流を中心に展開
  • 各エピソードが、 個人の成長や価値観の変化 にどのように影響したかを描写

Viewing the Source

  • 2001年、大学入学直後 に大学のコンピュータラボでの出来事
  • susam.comにアクセスし、自分のウェブサイト作成に興味を持つ
  • 先輩が Internet Explorerの「ソースの表示」機能 を教えてくれる
  • HTMLの基礎 (FONTタグ、テキスト色変更など)を10分程度で学ぶ
  • 先輩の下心で席を奪われるが、 ウェブ制作への好奇心 が芽生えるきっかけ
  • susam.comは取得できなかったが、.netドメインで自身のサイト運営開始
  • この短い体験が、 個人ウェブサイト制作の生涯の道 を切り開く

The Reset Vector

  • 再び大学時代、 Intel 8086マイクロプロセッサ を使ったMS-DOSマシンでの体験
  • リセットベクタ(FFFF:0000)へのジャンプ でマシンが即座に再起動
  • クラス首席の友人がその行動に衝撃を受け、「自分も探究心を持ちたい」と決意
  • 友人は以後、 成績トップにこだわらず、実践的な学びを重視 するようになる
  • 些細な実験が、 他人の学びへの姿勢を変える影響力 を持つことを実感

Man in the Middle

  • 初の就職先 でeバンキング製品のインストーラー担当
  • Python製インストーラーの 安定化とユーザーガイド作成 で評価を得る
  • さらなる挑戦を求め、 社内異動を希望 し、アーキテクチャチームへ
  • 面接で「MITM(Man in the Middle)」攻撃を知らずに課題となる
  • PKIやデジタル署名 を猛勉強し、Bouncy Castleライブラリで機能実装
  • 数百の銀行と数百万のユーザーが利用する製品に 自分のコードが組み込まれる達成感
  • 優れたメンター との出会いが、長期的な自信とスキル向上につながる
  • 20年経った今も、その製品が現役で使われていることに 誇り

Sphagetti Code

  • 2007~2008年頃、OpenTVセットトップボックス向けウィジェット開発
  • 制限されたC言語で スパゲッティコード を量産し、バグの特定が困難に
  • チームリーダーにコードレビューを依頼し、tarballで送付
  • 自分でも理解困難なほどの 複雑なポインタ操作 とバグの山
  • 続きは次章へ(以降の内容は未入力)

次のエピソードや話題に進む場合は、新たなタイトルセクションを設けて整理します。

Hackerたちの意見

一回のジャンプでプロセッサのリセットエントリーポイントに行けたおかげで、誰かが学問の競争から一歩引いて、もっと楽しく学ぶことに目覚めたみたい。プロセッサだけじゃなくて、心もリセットされたのかな。

その時、通信会社の代表が介入して、セットトップボックスの代表に「黙れ」ってストレートに言ったんだ。これには思わず笑っちゃった。最初から最後まで、全体のシナリオが面白くてシュールだった。人って時々、何にこだわるのか不思議だよね。こだわることで自分が悪く見えることもあるのに。

STBの人が言うべきだったのは、実際のハードウェアではスムーズに動かすのは無理だってことだけ。なのに、彼は自分をバカに見せちゃった。いい記事だった。

これ、最高だった。中年になってテクノロジーパズルを解くときに、もう人を驚かせられないのは、祝福でもあり呪いでもあるね。年を取ってもまだできるなら、またすごいって思われるようになりたいな。 :)

Pythonで書かれたインストーラーは、ターゲット環境に対する誤った仮定のせいでしょっちゅう失敗して、成功させるにはほぼ必ず手動での介入が必要だった。何も変わらないね。さっき、SDR開発のためのものを動かすのに半日かかったよ。特定のマイナーライブラリのバージョンに依存したPythonコード、万歳…結局動いたけど、めちゃくちゃだった。

開発環境のセットアップに2日近くかかるところで働いたことが何度かある。時には、誰もインストールや設定を自動化しなかったクソみたいなプロプライエタリソフトのせいだったり、他の時は、半ば放置されたOSSプロジェクトが積もりに積もって、シェルスクリプトで無理やりつなぎ合わせていたり。ほとんどの場合、これらの環境は数ヶ月ごとにランダムに壊れて、無駄な開発のダウンタイムを引き起こしてた。一つの職場では、開発依存関係のゴミを減らす時間をかけるよりも、AMIを作って、開発者に準エフェメラルなEC2インスタンスをプロビジョニングする方が簡単だと判断した。もちろん、このプロセスは、奇妙な方法でランダムに壊れるカスタムCLIによって調整されていた。楽しい時代だったね。

Pythonは実行可能なアーティファクトのパッケージングに関しては本当にひどいよね。サーバーサイドのことでは大好きなんだけど、環境を自分でコントロールできるから(最終的にはコンテナイメージになるし)。でも、それ以外のことには絶対に使わないな。

LLMが登場する前のソフトウェア業界で働いてたら、そこにいたって感じだね。

DevOpsには、ダビデ・ビアンキの「マシンルームからの物語」を超おすすめするよ。 https://www.soft-land.org/cgi-bin/doc.pl?mode=setpreferredla...

自分のためにsusam.comを登録することはできなかったな。そのドメインはいつもトルコ料理を売ってるビジネスに使われてたし。もし気づいてなかったら、.comが売りに出てるみたいだよ。 https://sedo.com/search/?keyword=Susam.com 思い入れがあるなら、たぶん(私の意見では)提示価格より安く手に入れられるかもね。もちろん、あなたの.netも全然問題ないよ。話を共有してくれてありがとう。

「MITM攻撃が何か知らないの?早く学べ。」人々に自分の仕事をちゃんとやってくれるって信じてたあの頃が懐かしい。今はジュニアエンジニアにTwitterのシステムデザインを求めたり、LeetCodeのテストのためにアルゴリズムのトリックを暗記させたりしてる。これらは以前は無駄な対策だったけど、LLMがそれを完全に終わらせてくれることを願ってる。

実は私も似たようなスタートだったんだ。小学校3年生の時に、子供向けの「自分のウェブページを作ろう!ガイドブック」って本が売られてる学術書フェアがあったんだ。9歳の私にとってインターネットは謎めいたもので、ウェブページを「作る」ことができるなんて全く知らなかった。何だと思ってたのかはよくわからないけど、ビジネス向けのものだと思ってたのかもしれない。子供でもできるってことに気づかなかったんだ。そんなに高くなかったから、お母さんに頼んで買ってもらった。読んでみたらすぐに夢中になったよ。HTMLは「プログラミング言語」じゃないってわかってるけど、9歳の私には、コードを書いてそれが画面に表示されるのが超クールに感じたんだ。それに、1999年から2000年頃はインターネットがまだ新鮮だったから、3年生の先生も私が一人でやったのを見てすごく感心して、実際に両親に電話して褒めてくれたんだ。その後、違法コピーの「Sams Teach Yourself C in 24 Hours」を手に入れて、本格的なプログラミングに入ったり、Goodwillで見つけたActionScriptの本を使って、Flash MX 2004の海賊版と一緒に勉強したり、誕生日にもらったC++の本もあった。最終的にはソフトウェア関連でそこそこできるようになって、そこからいいキャリアを築けたよ。実はその「自分のウェブページを作ろう!」のオリジナル版をeBayで探し出して、2年前にもう一度読んでみたんだけど、そこにあるHTMLは古くてあまり役に立たないけど、読んでると笑顔が止まらなかったよ。