ソフトウェアエンジニアとして働き始めて 20 年以上になります。 元々ソフトウェアでいろいろ作りたくて就いた職業なので、結構な数のプロダクトを開発してきました。
私がメインで開発したもので OSS として出ているものでは、
- [yrmcds]: memcached クローンで、レプリケーション機能などを持つ
- [usocksd]: SOCKS4/5 サーバー & ライブラリ
- [transocks]: アプリのネットワーク通信を透過的に SOCKS サーバーにプロキシする透過プロキシ
- [coil v2][coil]: Kubernetes の CNI ネットワークドライバ
- [moco]: MySQL を自動運用する Kubernetes オペレーター
- [accurate][]: Kubernetes 上で namespace ベースのソフトマルチテナンシーを実現するためのソフトウェア
などがあります。これらのソフトウェアの多くは、現役で使われています。
私の主な仕事はこれらのソフトウェアの開発・メンテナンスではありません。 過去の主要な仕事内容としては cybozu.com のローンチプロジェクトの責任者であったり、開発・運用の本部長であったり、今は新規プロダクトのアーキテクトを務めていたりします。
プロフェッショナルなソフトウェアエンジニアの心がけとして、以下のようなことが良く言われます。
コードを書くことが仕事じゃない。問題を解決できるなら、むしろコードは書かなくて済むほうがいい。
なぜなら、「コードを書くとバグがあったりメンテナンスの工数がついてまわったりする」からです。 そうだよなと思うと同時に、「いや俺、コード書きたくてソフトウェアエンジニアになったんですけど」と本音のところで思ったりしています。
で、本題。コード書きまくってソフトウェアプロダクト作りまくっても、そのバグやメンテナンスに時間を取られない方法はないのか。 あります。
続きを読む