コードを書きたいエンジニアが嫌々 “マネジメント” をする、というバッド・シナリオではなく、エンジニアが数学・量子物理学や行動心理学といった領域に自然に足を踏み出してゆくのと同じように、エンジニアの強みを活かしつつ組織を hack してゆくという方向性もあるという実感を少しでも共有できれば幸いです。
コードを書かないエンジニアリングfeat.のステマFactorio
View Slide
最近取り組んでいる課題webサービスのテクノロジーよりの側面全体のケア「プロダクトの技術的品質に責任を持つ」「開発プロセスの継続的改善に責任を持つ」「ナレッジの展開及びメンバ育成、その他」
だが、コード書いていない感GitHubEnterpriseの緑色(Contribution)が薄くなってきている図
コード書かずに何やっているのかMTGして人とだべって概ね一日が終わるリリースや障害で燃えると追加稼働
主に MTGしたりだべってる事柄設計レビュー実装レビュー設計の指針策定レビュー基準策定リリース基準策定リリース可否判定設計破綻・障害対応の状況把握・対応方針ぎめ
ところで、(WEBサービスにおける)エンジニアリングとは(私見)何らかの課題を、仕組みを構築することで解決すること例えばNot:面倒な作業を...ひたすら手作業で頑張るBetter:面倒な作業を...自動で片付くようにするNot:保守運用を...悪い意味でファジーに適当にこなすBetter:保守運用を...インシデントのpush通知,バグ・抜け漏れの自動チェック etc.で確実に回るようにする
Factorioとある惑星から脱出する宇宙船を組み立てるゲーム鉱石の採掘から宇宙船までの膨大な工程手動でも理論上可だが、自動化された工作ラインが必要ラインが詰まる、電力が足りない、天然資源が枯渇する、輸送力が限界に達する、異星人が攻撃してくる...等
プログラミングのもたらすものプログラムのやっていることは(理論上)手動でも可能(人間はチューリング完全)だが自動化しないとやってられん (時間,労力,ストレス)ものによっては計算量的に非現実的そして、自動化プロセスの構築・運用における諸問題を解決することがエンジニアリング冥利でもある (私見)Factorioとよく似ている
Factorioにおける自動化の例鉄鉱石を電気採掘機で採掘しベルトコンベアに載せる下流の組立機に投入得られた歯車をベルトコンベアに載せて下流の組立機に投入し (以下略発生する問題の例鉱石枯渇時に随時採掘ラインを増やす必要がある環境汚染するため異星人に攻撃される原因になるラインの配置を工夫しておかないと搬送ラインの拡張が困難になる自動化プロセスの問題を片付けるプロセス自体どうにかできないか
Factorioにおける自動化の問題解決アプローチ1.自力対応する :可能だがプレイヤーがボトルネックになる2.問題解決のためのロボットを製造する :ロボで出来ることの限界が3.マルチプレイで捌く :互いに足引っ張らずに協力できる人がいれば...
プログラミング における自動化の問題の解決アプローチこれって、プログラミングにおける...1.自力対応する :ひたすら手を動かしてコード書く・バグ対応する2.問題解決のためのロボットを製造する :コンパイラ, Build Bot/CI,機械学習, AI研究 などなど...3.マルチプレイで捌く :エンジニアの育成、組織づくり、快適に仕事が回ってくれるようその他雑用このマルチプレイ部分を頑張るのが今やっていること
再帰的エンジニアリングエンジニアリング:何らかの課題を、仕組みを構築することで解決すること (私見)エンジニアリングする上で発生する課題の解決の仕組み作りもまたエンジニアリングでは?話をする相手が CPUでなく媒体がテキストエディタでもないが、エンジニアを調停する仕立てをすることもまたエンジニアリングなのではなかろうか
(再掲) MTGしたりだべってる事柄設計レビュー実装レビュー設計の指針策定レビュー基準策定リリース基準策定リリース可否判定設計破綻・障害対応の状況把握・対応方針ぎめエンジニアリング上の課題の解決をしようとしている
FAQ:自分で設計したほうが/コード書いたほうが早いのでは?個別の事案についてはそう感じうる局面もある。だがしかし...
スケーラビリティサーバー1台前提のシステムを作らないのと同様に...ステークホルダーや案件需要に対しスケールするかある日事故にあって死んだ時にプロジェクトが止まらないか (c.f.バス係数)有給を取りたい時に取れるかまた、色々な種類のサーバー/NW機器があるように...不得意 orやりたくない分野を(好き好んで)やってくれる存在がいるか,やりたいことが変わった時に代わってくれる存在がいるかやらかした時に検知・リカバってくれる存在がいるかといったことを考えると、組織の意味がある
いろいろなエンジニア実装力で需要に片っ端から対応するスターエンジニアBot/AIに課題を解かせるサイエンティスト エンジニアサービス仕様を改善するグロースハッカーエンジニアエンジニアリングを調停するアーキテクト エンジニア(他にもあると思う )どの種類も世の中には必要なエンジニアではなかろうかそれぞれ異なるスペシャリティ世の中に何らかの価値貢献する点さえ押さえていれば、おのおのの好きなスタイルで良いのでは
未完この果てしないエンジニアリング坂をのぼりはじめたばかりなので、引き続き精進したい