冒頭の絵は、30人30万行以上のプロジェクトでは、プロのプロジェクトマネージャがぐいぐいと引っ張らないと凧(プロジェクト)空に上がらず、地に落ちるというイメージだ。30人30万行という数字は目安でありソフトウェアの複雑度によっても変わると思うが、30人30万行の規模でプロジェクトマネージメントの技術を使わずに、品質の高いソフトウェアをスケジュール通りにアウトプットすることはほとんど不可能だろう。
もしも、この規模のソフトウェアプロジェクトで、なんとかスケジュールが間に合っているのであれば、それは、プロジェクトメンバーの誰か(全員か一部か、それともサプライヤか)が死ぬほど働かされているはずだ。要するに人海戦術的なアプローチで乗り切ろうとしているのだ。そして、苦労してリリースしたソフトウェアの品質はかなり危うい状態にある。
大きな組込みソフトウェアプロジェクトで必要なプロジェクトマネジメント技術とは次のようなものだ。
- 技術戦略、技術マネジメント
- プロダクトリスクマネジメント
- 予算統制
- 再利用資産開発
- 専門家集団との連携
さて、プロジェクトマネージメントの技術はプロジェクトマネージャがその道の専門家から学び実戦経験で培ってもらうとして、組込みソフトエンジニアを目指す若者は30人30万行のソフトウェアプロジェクトの中でどういう心構えで毎日の仕事に臨めばよいのだろうか?
組込みシステムでプロの組込みソフトエンジニアとして成功するにはどうすればいいのかという観点で考えてみた。
【-大規模組込みシステムで-プロの組込みソフトエンジニアとして成功するには?】
<自分が選んだ業務ドメイン(業界)の知識、技術を徹底的に身につけ、その道のプロと呼ばれるようになる>
- 自分がこれからずっと関わる領域がストレートに好きであり、自分の技術を磨いてよりスキルが高まることに喜びを感じられることが一番大事
- 業務ドメインのプロと、ソフトウェアエンジニアとしての両方のプロになることが必要
- その道のプロとして終わりなき技術鍛錬に挑み続ける覚悟もないとダメ
<自分が作ったソフトウェア資産が、顧客満足を高めていることを実感できること>
- 一回切りではない、長く使われる品質の高いソフトウェア資産をアウトプットし、その資産が顧客満足を高めることに貢献することが、エンジニアとしてのモチベーションの源泉となる
- そのためには、ソフトウェアシステムのアーキテクチャ(構造)を可視化する技術が必要
- 自分が構築したソフトウェア資産はコレで、この資産が、商品のこんな機能や性能を実現しており、その機能・性能が商品のウリにつながっていると説明できるようにならねばならない
- それができないと、大きな組織の歯車の一つとして扱われ、一生日の目を見ない技術者になってしまう危険性がある
- 組込みソフトの世界には、ハードウェア出身、工場出身の上長、組織上位層がたくさん存在する
- ソフトウェアの特徴(複雑性や不具合の見つけにくさ)などを知らない者を相手に主張を通せるようにならなければいけない
- ソフトウェアは見えにくいため、自分や自分たちが構築したソフトウェア資産が、商品を通じてどのように顧客満足を満たしているのかを説明し、これを維持発展させるために必要なリソース、時間、資金を勝ち取らなければいけない
- 交渉し、主張し、提案や意見を通すことができなければ、よく働く都合のよい作業者となってしまう
じゃあ、そこまでして組込みソフトエンジニアを目指すのはなぜだろうか?
【なぜ組込みソフトエンジニアになろうとするのか】
<好きなこと(市場・ドメイン)にずっと携わっていられる>
- 車好きでエンジン制御のソフトを作っている
- カメラが好きでカメラのソフトを作っている
- 音楽が好きで電子ピアノのソフトを作っている
- 何もないところから少しずつ組み上がって完成する様を体感できる
- 自分のくふうが商品の機能や性能に反映される
- いろいろな商品から自分が作ったものをお客さんが選んで、満足してくれている喜び
- ヒット商品を世に出すことができたときの満足感
- 民生品ならば見ず知らずの人が自分が作った商品を手にしているところに遭遇することもあるかも
- 社会インフラを支えている裏方としての誇り
- 自分の仕事の成果が多くの人々の役に立っているという喜び
そうなると大事なのは、顧客満足の向上と技術者のスキルのスパイラルアップ(左図)を実現させることだ。
- ニーズを分析
- 技術的困難を克服
- ユーザーニーズを実現し満足を得る
- 新たな技術獲得への欲求が生まれる
そして、顧客満足を高めることを示すには、ソフトウェアシステムのアーキテクチャを可視化しニーズを実現しているソフトウェア資産を指し示すことができないといけない。
日本の組込みソフトエンジニアは同じ市場に同じような商品を投入し続け、他社製品のよいところや市場クレームを吸い上げて、性能を落とすことなくソフトウェアを最適化する能力を持っている。しかも、作り上げたソフトウェアの品質が高い(規模が小さい場合)。
でも、今のままのすり合わせ的組込みソフト開発アプローチにはデメリットもある。デメリットを克服しながら日本の強みを生かす方法はこちらの記事を参照していただきたい。
これまで築き上げた職人技をアーキテクチャとして可視化し、再使用資産を抽出した上で他社がまねできないコアアセットを軸に商品コンセプトや強みを前面に押し出す。もともと品質は高いので、開発効率も上がり他社に負けない商品となる。
今後、大規模・複雑化した組込みソフトウェアのアーキテクチャは組込みソフト開発にとって重要な要素となり、場合によってはソフトウェアエンジニアの組織構造の方を、商品群のソフトウェアアーキテクチャに合わせていく必要も出てくる。(コアアセットを開発するチームをアプリケーション開発部隊から切り離すなど)顧客満足を十分に実現しているアーキテクチャは組織の重要な資産であり、優れたアーキテクチャは美しくもある。
ただ、組込みアーキテクトは商品開発の中で、泥臭い部分も飲み込んでいかなければいけない。組込みソフトがどんなに大規模化しても、昔も今も関係なく組込みアーキテクト・組込みプロジェクトのリーダーには、大工の棟梁としての素養が求められる。
- しがらみや制約条件の中で舵取りができる決断力
- ハードウェア出身、工場出身の上司・関係者との交渉力
- アーキテクチャ(ソフトウェアの構造)の善し悪しを判断し悪い所を指摘し、良い例を提示できる実績と経験
0 件のコメント:
コメントを投稿