#yokohamanorth

エンジニアリングポリシーを作ったらドラえもaんになった話

#yokohamanorth

Index

  1. 自己紹介
  2. エンジニアリングポリシーを作ることになった
  3. その過程と困難
  4. 余談
  5. まとめ
  6. Appendix
#yokohamanorth

自己紹介:

name: @hihats
address: 港北区在住13年(横浜在住26年)
job_description: クラウドソーシングマッチングプラットフォームの開発責任者

組織としてエンジニアリングポリシーを作ることになった

背景

プロダクトが増え、異なる事業に関わるエンジニアが増えた状況で、社内のエンジニアが共通して意識すべきポリシーみたいな何かを作るべきではないか

いざ作ろうとすると難しい

自分はXPが好きなので、XPの示している価値・原則・プラクティスのパターンを応用して手始めに作った

  • がしかし、EMたちからの反応がすごく薄い

困難の原因

  • プロダクトフェーズの違いによる要求の違い
  • エンジニア以外のメンバーの文化の違い
  • 技術的な難易度や制約の違い
  • そもそもエンジニアみんなそれぞれが求めてることが違う

全員に適用できるポリシーを作ろうとすると

「この仕事をするにあたって絶対的な価値と言えることがあるか?」

という問いに行き着く

なぜソフトウェアエンジニアをやっているか

  • プログラミングが好き
  • ものづくりが好き
  • 作ったものを人に使ってもらえるのが嬉しい
  • シンプルに知的好奇心が満たされる
  • なんとなく
  • 「プログラミングで稼げる」商材マーケティングのせい

みんな違ってそれでよい

だが、その中でも共通してコアとなる価値はあるように思える

まずこの仕事の魅力をちゃんと定義して発信することから始めるべきでは?

さらに問いが積み重なり、問いが増える一方

余談

我が家には3人子どもがおりまして、彼らが「エンジニアになりたいと言い出したら自分はどうするか?」を考えてみた
center

エンジニアの仕事を子どもにもわかるように説明しようとすると

  • ソフトウェアという縛りは一旦外した方がよい
  • 歴史的にみて、工学の発展は人類の発展そのもの

前にこんなことも呟いていた

2024年1月のツイート「エンジニアの役割はその時代の要請に基づいて人々の夢を実現すること」

エンジニアとは

技術の力で、「こんなことあんなことが実現できる」と夢を叶えてくれ〜る〜

気づいたこと

この職種がどれだけヒーローで、ワクワクすることかを忘れていた
もっとみんなに気づいてもらいたい

というわけで

「エンジニアとは」「ソフトウェアエンジニアとは」

という前提を揃えていくことからポリシーづくりを再開

まとめ

  • 当初はすごく難しいタスクに手を付けてしまったという気持ちだった
  • それからめぐりめぐる思考の結果
    ↓↓↓↓

「もっとこのエンジニアリングという仕事の価値を伝え広げていきましょう」

と大きな声で言いたくなっ〜

Appendix

今回作ったエンジニアリングポリシーも公開しているのでよかったらどうぞ
https://hihats.github.io/presentation/engineering_policy.html

エンジニアリングそのもの

  • 「人や社会に役立つために体系立てられたもの」
  • 対象生産物を生産するにあたって生産性の向上と品質の向上を目的とする

他の工学との差分

  • 対象領域が時代ごとに拡大している
  • 他の工学よりもさらに目に見えない領域が大きい

ソフトウェアエンジニアとは


ソフトウェアエンジニアとして心がけることを知る前に、ソフトウェアエンジニアたるものが社会においてどういう存在かを揃える

ソフトウェアエンジニアとは

社会全般において中心的な役割を拡大しているソフトウェアシステムの分析、仕様策定、設計、開発、認証、メンテナンス、およびテスト直接的に関与および、その指導を行うことによって貢献する専門家である。

そのようなソフトウェアシステムを開発する役割を担っているソフトウェアエンジニアには、善をなすことも害をなすこともできる多大なる機会がありまた、他者が善をなすことも害をなすことも可能にする大きな機会がある。

自分たちの努力ができる限り善のために使われるよう、ソフトウェアエンジニアを社会にとって有益で尊敬される職業にすることを約束しなければならない。(ACM and IEEE)

Software Engineering Code of Ethics and Professional Practice

ソフトウェアエンジニアとは
  • 保守性、拡張性、ビジネス価値を考慮しながらソフトウェアを通じて問題を解決する専門家である(Martin Fowler)
  • 技術的知識とエンジニアリングの原則を組み合わせて信頼性の高いソフトウェア・システムを構築する実務家である(Steve MacConnell)

品質を高めることが、生産性やスピードを高めるということを知っている人であり、それを証明する人である

これらは社会における この職種のあるべき姿(ToBe) と言える