断り書き:俺はN5レベルで日本語を勉強中です。間違いがあるかもしれないけど、頑張っています!
👋 こんにちは #
俺はデイブ・アミットだ。ソフトウェアエンジニアで、もう16年以上システムを作っている。
俺の仕事は、壊れても大丈夫なシステムを作ることだ。分散システムとクリーンアーキテクチャが好きで、開発者が使いやすいツールを作りたいと思っている。
何をしているか #
毎日、壊れても自分で直るプラットフォームを設計して作っている。KubernetesとIstioの上で動く分散サービス、PostgreSQLとProtobufでデータを流す仕事だ。
一番大事なのは、新しいエンジニアが早く分かるシステムを作ることだと思う。
今まで作った中で好きなもの:LendFoundryのワークフローエンジン、Configuration-as-Codeのプラットフォーム、それとチームが本当に使いたいと思うマイクロサービスのフレームワーク。
🏢 仕事の話 #
俺は2006年にフリーランスで始めた。一人でプロジェクトを全部やった。クライアントの仕事は、責任の大切さを早く教えてくれた。
2010年に Alian Software でSr. Project Managerになった。技術運営を指揮して、プロジェクトのライフサイクルを最初から最後まで管理した。ここで学んだのは、ソフトウェアを出すのはコードだけじゃないということだ。人をまとめて、ステークホルダーを管理して、物事を前に進めることが大事だった。
2013年に ProT Systems でSr. Technical Specialistになった。社内のWebフレームワーク(“Fx”)を作って、チームがもっと早くコードを出せるようにした。
2016年から LendFoundry でPrincipal Technical Architectをしている。フィンテックは厳しい — ローンのシステムは複雑で、止まったらダメだ。ワークフローエンジンを作って、KubernetesとIstioを導入して、デプロイを簡単にするツールも作った。
最近は、LendFoundryのAIを使うプロジェクトのリーダーをしている。最初の調査から本番環境まで、全部やっている。QA、コードレビュー、SRE、ドキュメントなど、エンジニアリングの色々な場所でAIを使うワークフローを作っている。チームがAIツールを上手に使えるように教えることも大事な仕事だ。技術の問題だけじゃなくて、組織とシステム設計の問題でもあるから、すごく面白い。
🚀 オープンソース #
オープンソースのコミュニティからたくさん学んだ。今は俺が返す番だと思う。
bs は今の一番大きいプロジェクトだ。Go言語で作っているビルドツールで、意図(intent)と実装(implementation)を分ける。詳しくは開発ログを見てね。
ProjectC はConfiguration-as-Codeのシステムだ。Go言語とRustのSDKから始める。設定を簡単に作って、再利用できるようにしたい。
ProjectB はCI/CDみたいなアーティファクト処理のプラットフォームだ。開発ツールと自動化が好きな俺にぴったりのプロジェクトだよ。
技術スタック #
今使っている言語: Go言語、Rust、JavaScript インフラ: Kubernetes、Istio、Protobuf、PostgreSQL、Dgraph 前に使った言語: Python、.NET、Java、Node.js
🧭 エンジニアリングの考え方 #
俺は、ソフトウェアは「つまらない」のが一番いいと思う。つまらないというのは、予想できて、テストできて、壊れにくいということだ。
いつも考えていること:分散システムは必ず壊れるから、壊れる前提で設計する。次の人(それは2時の自分かもしれない)が分かるように書く。シンプルなツールを使う。つまらない仕事は自動化する。分かりにくいことはドキュメントに書く。
特別な考え方じゃない。でも、ちゃんとやるチームはよく寝られると思うよ。
⛺ コードの外 #
コードを書いていない時は、だいたい電波のない場所にいる。トレッキングと登山が俺のリセット方法だ。森の道、高い山、静かな場所が好きだ。
ゲームもたくさんする。Bloodborne、Dark Souls、Elden Ring が好きだ。分散システムと同じで、何回も失敗する。でも、我慢とパターンを見つけることが大事だ。いいものは時間がかかるね。
日本語も勉強中だ。N5を始めたばかりだけど、頑張っている。いつか日本で登山したい。
📬 連絡先 #
読んでくれてありがとう。面白いものを作っている人がいたら、ぜひ教えてね。