「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
私はもうすぐ入社20年目を迎える本社事業所勤務の40代前半中堅社員です。主に組み込み系のソフトウェア開発を担当しています。
ソフテックではここ数年、第二新卒の採用を積極的に行っており、その成果として20代の若手社員が少しずつ増えています。最近、社内の研修会などで、私を含めたベテラン社員からの意見としてちらほら話題に上るのは、長年担当してきたシステム開発のノウハウやスキルをどのようにして若手社員に伝えていくか、ということです。今回の「ソフテックだより」では、「ソフトウェア開発技術の伝承」と題して(少し大げさですが)、若い世代にいかにして技術を伝えていくかについて考えてみたいと思います。
ソフテックでは、社内の研修会で、ベテラン社員が過去に経験した案件の体験談を若手社員含めた全社員に話をする機会があります。体験談の多くは、失敗談や、困難をいかにして乗り越えたかという内容が多いのですが、それを聞く度に「今の社員はもう同じような体験はできないだろうな」ということを感じます。昔だったら、徹夜で作業して何とかソフトを仕上げたり、まったく未経験の分野の開発をほぼ一から調べて手探りで作ったり、といったことがありました。そのような経験を積んだからこそ、技術が身に付いたという声をベテラン社員からはよく聞きます。しかし、今の若手が置かれた環境はどうでしょうか。勤務時間はしっかりと管理され、担当する開発の多くが既存システムの仕様変更対応であったり、類似システムを横展開する対応であったりと、一から開発する機会も少なくなりました。プロジェクトが大規模化したことによって、システム全体を把握することが難しくなり、一部分しか経験できないということも増えました。このような環境の変化を考えると、20年前と同じようなアプローチで技術を身に付けることは、難しいと言わざるを得ません。
ただ、同じアプローチでなければ、技術を身に付けられないというわけでもないと思います。むしろ、若手が経験しなくてもよいことはたくさんあるはずです。技術習得のアプローチを今の環境に合わせて、変えていく必要があります。
技術習得について考える前に、「知識」と「技術」の違いについて整理したいと思います。ソフトウェア開発を行う上で、C言語の「技術」が必要なケースを例にあげます。テキストでC言語を「知識」として理解しただけでは、「技術」にはなりません。「知識」としてのC言語を使って、プログラミングを行い、動くソフトを作って初めて「技術」となります。自動車の運転に例えると、学科試験のための「知識」だけあっても、運転の「技術」があるとは言えません。実技試験で合格して初めて運転技術が認められることと同じです。
このように「知識」として習得したことを実践することで「技術」を習得することができますが、この「知識」が文章・図表・数式などによって説明・表現できているもの(形式知)と、そうでないものがあります。後者は、一般的にノウハウや暗黙知と呼ばれるものです。
これらの知識の違いに基づく技術習得の分類を以下の表にまとめてみました。それぞれの技術習得について、ソフテック内でどのような取り組みを行っているかも合わせて記載しています。
表1. 技術習得の分類とソフテックでの取り組み例
分類 | 内容(具体例) | ソフテックでの取り組みの例 |
---|---|---|
形式知からの技術習得 | ・開発言語などテキストを通じて学んだ知識を実践する | ・新入社員に対するプログラミング研修の実施 ・OJT |
ノウハウ・暗黙知からの技術習得 | ・仕様書、設計書などで暗黙知を形式知化し、そこから得た知識をもとにシステム開発を行う ・業務を標準化、システム化することでノウハウを伝承する |
・品質マニュアルに基づく設計書の作成 ・データベースの活用 |
実務経験が難しい技術の習得 | ・失敗事例や成功体験として知識を蓄積、共有し、ケーススタディとして学ぶ(疑似体験する)ことで技術を習得する | ・研修会での体験事例発表 ・日報報告での情報共有 |
この3つの技術習得について、ソフテック社内での取り組みや課題を交えて以下にご紹介したいと思います。
まず、最も簡単な技術習得の方法として、開発言語などの専門技術の習得が挙げられます。一般的な技術であれば、書籍やインターネット上の情報として体系的にまとまった情報があるため、知識は独学でも得ることができます。教わる側は、得た知識を実際のジョブの中で実践していくことで、技術を習得していきます。
図1. 形式知からの技術習得
ソフテックでは、新入社員に対してプログラミング研修を実施しています。電卓アプリのような簡単なソフトを作ってもらうことで、開発言語の技術習得を実践しています。ベテラン社員でも、担当する案件によって、新しい言語や分野に挑戦する機会があります。
この技術習得のアプローチに関して言うと、20年前も今もあまり変わっていません。むしろ、今の方が、多少ハードルが下がっているようにも感じます。以前は高い書籍を購入しなければ得られなかったような情報も、インターネット上で収集できたり、無料で使用できる開発環境があったりと、昔より技術習得しやすい環境になっています。
次に、形式化されていないノウハウや暗黙知と言った知識からの技術習得が挙げられます。この場合、教える側が、知識を形式化する作業が重要になってきます。形式化された後の流れは、前項と同じです。
図2. ノウハウ・暗黙知からの技術習得
ベテラン社員の時代であれば、「誰も教えてくれなかった」「経験を積む中で身に付いた」という類のことかもしれません。形式化されていない暗黙知は、職人技と呼ばれる場合もあります。昔はトライ&エラーで、試行錯誤を繰り返して身に付けた技術も、今の若手社員には実践する時間も機会も少なくなっています。ベテラン社員は、積極的に業務を標準化、マニュアル化することにより、情報を共有可能な形に変換し、形式知として伝えていく必要があります。
ソフテックでも、品質マニュアルに基づく、設計書の作成などで、これらのノウハウや暗黙知を言語化する取り組みを行っています。また、Lotus Notes(現在はHCL Notes)のデータベースを使用して、システム固有の専門用語(設備、機器の名称、機能など)について用語集をまとめるなどの取り組みも行っています。しかし、まだまだ取り組みとしては十分ではなく、担当者しかわからない知識、「属人化」している知識も多くあります。そもそもベテラン社員には何がノウハウ、暗黙知なのかを認識できていないケースもあるため、実際に若手社員にシステム開発に参入してもらうことで、形式化する知識を指摘してもらうことも有効と考えています。
最後に、若手社員には実務として経験してもらうことが難しい技術の習得が挙げられます。具体的には、プロジェクトを失敗することでしか得られない経験であったり、特殊な条件下でしか発生しない問題の対処法であったり、といった内容です。前者については失敗するとリカバリーが難しい大規模のプロジェクトが増えたことなど、後者については会社として経験が積みあがったことで対処法が標準化されたことなど、が経験を難しくしています。
このような状況で、ベテラン社員にできることは、過去の失敗事例や成功体験を記録として残しておくことです。残された記録を若手社員がケーススタディとして疑似体験することによって、知識を技術として習得することができます。
図3. 実務経験が難しい技術の習得
ソフテックでは、研修会での体験事例の発表や、社員がメール形式で発信する日報報告で、知識の共有を促しています。成功体験であれば話しやすいですが、失敗談を他の社員に包み隠さずオープンに話をすることは、本人にとっては楽しいことではありません。失敗を責めるのではなく、失敗を報告できる透明性を評価する風土づくりが大切です。失敗を分析し、同じ過ちを繰り返さないよう改善することが、組織の成長に繋がります。
今回のソフテックだよりでは、「ソフトウェア開発技術の伝承」と題して、ベテラン社員から若手社員にどのように技術を伝えていくかについて考えてみました。
今回ソフテックだよりを執筆してみて、知識や技術の伝承のためには、まだまだ実践できていないことが多くあることに気づきました。
お客様の視点でも、例えば一担当者しかシステムのことがわからないという状況は、好ましい状況ではないと思います。ソフテック社内での情報共有をしっかりと行い、お客様にも安心していただけるよう知識や技術の伝承に取り組んでいきたいと思います。
(T.S.)
関連ページへのリンク
関連するソフテックだより