すべてのプログラマーあるいはデータサイエンティストが身につけるべきソフトスキル

著者のJun Wu氏は、アメリカ・ニューヨークで活躍するテック系コンテンツの執筆を得意とするフリーランス・ライターです(同氏の詳しいバイオグラフィーは本翻訳記事の最後を参照)。同氏がMediumに投稿した記事「すべてのプログラマーあるいはデータサイエンティストが身につけるべきソフトスキル」では、技術者が身につけるべき非技術的なスキルが詳細に解説されています。
職場の同僚と交流したり、AI技術を詳しく知らない顧客にAI技術の価値を伝えるようなコミュニケーションスキルの重要性は、多数のAINOW翻訳記事で繰り返し指摘されてきたことです(本翻訳記事とほかの翻訳記事との関連は訳註で解説)。こうした重要でありながらも時として漠然と語られがちなコミュニケーションスキルについて、同氏は以下のような8項目に分節化して詳述します。
  • 様々なバックグラウンドのヒトと効果的にコミュニケーションできること
  • チームメンバーにオープンな心持ちで接する共感と感情的知性
  • ビジネスと関連付けて技術を理解すること
  • ソースコードやデータ分析の意味を分かりやすく伝えるストーリーテリングとプレゼンテーションスキル
  • 完璧主義に陥らない時間と生産性の管理
  • 理想的ではない状況でも結果を残せる適応力とクリエイティビティ
  • 目まぐるしく進化するテクノロジーについて学び続けるための本質的な動機付けと好奇心
  • プロジェクトを一歩一歩前進させるための問題解決力と忍耐力

以上のように同氏が説くソフトスキルとは、コミュニケーション能力を含めたヒューマンスキルとでも言い換えることができる非技術的な能力の総称なのです。そして、ソフトスキルこそが「技術者自身のキャリアをさらに先に進めることを可能にする」とも述べます。
ところで、ソフトスキルは学べるものなのでしょうか。ソフトスキルを身につけたいという気持ちさえあれば、職場だけではなく日常生活において学び練習することができる、と同氏は力説します。「性格」や「人柄」という言葉で説明されることによって先天的かつ属人的な能力と見られがちなソフトスキルは、技術的スキルと同様に日々鍛錬できるものなのです。

なお、以下の記事本文はJun Wu氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。

あなたがソフトウェアエンジニア、プログラマー、データサイエンティスト、あるいはテクニカルマネージャーのどれかであるならば、これから述べるソフトスキルはあなたを優れた人物として際立たせる。

ヒトビトは(プログラマーあるいはデータサイエンティストといった)技術者に対して、次のようなステレオタイプなイメージを持ちたがるものだ。技術者とはイヤホンをつけ、1日12時間コンピュータに向かってタイピングしているヒトたちだと。こうしたイメージは彼らの日々のいくつかの部分については真実かも知れない。しかし、技術者はしばしばデスクワーク以上にミーティングに参加したり、同僚と交流したり、聴衆に対して自分の仕事をプレゼンしているのだ。さらにしばしば、こうしたソフトスキルが技術者を差別化する。商談において、マネージャーや商談を進めている顧客の目を引くのはソフトスキルである。業務においては、ソフトスキルはチーム内での技術者の地位を強固にする。技術者自身のキャリアをさらに先に進めることを可能にするのもソフトスキルなのだ。

テクノロジーが進化するにつれて、技術的スキルはしばしば稲妻のごとき速さで習得されてしまう。同時にほとんどの技術者はそれぞれの専門領域に特化してしまう。


多様な技術的スキルを保有している技術者たちから成るチームにおいては、チームの成功はしばしば彼らのソフトスキルにかかっている。

わたしは数年間にわたり様々なタイプの内製ITチームで色々な技術職と管理職の役割を経験したのだが、成功したチームと同じくらいの数の失敗したチームで働いていた。成功したチームと失敗したそれは、しばしば昼と夜ほど違っていた。成功したチームにおいては、プロジェクトは実際に完了するものだった。失敗したチームにおいては、ミーティングを通すことさえ困難だった。さらにはある種のチームの再構築なしにはプロジェクトを完了させることが不可能なことも多々あった。

チームの成功あるいは失敗のいずれに場合においても、成否を分ける決定的要因は常にチームにいるすべての技術者のソフトスキルにあった。

すべての技術者が持つべきものとしてのソフトスキル

@matthewhenry unsplash.com

様々なバックグラウンドのヒトと効果的にコミュニケーションする

コミュニケーションスキルはどんなチームにおいても不可欠なものである。しかしながら、とりわけ技術者にとってはコミュニケーションスキルこそ本質的なものである。技術者は様々なバックグラウンドのほかの技術者といっしょに働くことだろう。技術者のスキルのなかには自分の専門分野に関して高度に特化したものもあるかも知れない。そうした技術者たちは様々なビジネス領域から来た顧客、プロダクトマネージャー、そしてその他のマネージャーといっしょに働くかも知れない。関係者すべてのヒトと効果的にコミュニケーションする能力は、身に付けるのに数年はかかるスキルである。効果的なコミュニケーションとは、以下のようなことを意味する。

  • 技術的な概念を技術的なバックグラウンドを持たないヒトにも理解できるように日常的な言葉に翻訳できる能力
  • 技術が支えているビジネスの観点から技術を語れるほど十分にビジネスを理解する能力
  • 業務において話されている母国語で明確にコミュニケーションできる能力

共感と感情的知性によって仕事関係を進める

技術者として、勝利を目指して専心することは容易いことである。高度に知的な領域での仕事ではどんなものであれ、目標の達成との「強い」結びつきがあるものだ。だが時として、技術者がやりたいと思っていることで成功したいという気持ちが判断を曇らせ、重要なことを見失わせることもある。重要なのはチームのメンバーひとりひとりである。とは言うものもプロジェクトにおける困難な技術的ハードルを克服し、顧客のために製品をパッケージ化して商品にしなければならない。こうしたビジネス的側面は、実際の製品の開発よりは難しくないとしても、依然として困難なものだ。

技術者として開発サイクルにおけるすべてのビジネス的な側面に配慮し、同時に「勝利」をつかみ取るために関わったすべてのヒトに敬意を払うことは所属する企業の成功にとって本質的なことである。どんなプロジェクトにも浮き沈みがある。そうした浮き沈みのなかで地に足を着け続けることができる能力こそがどんな技術者にとっても成功のカギとなる。

共感と感情的知性の根底にあるものは他人の目線で見る能力だ。問題を高度かつ知的に追求している時には、技術者には複雑な問題を解決するために必要な知識を獲得しようとする専心と執念が求められる。こうした専心からオープンな心持ちに切り替えることは、一部の技術者には難しいことなのだ。心持ちの切り替えは、練習して身につけるスキルである。ヒトと付き合うことにおいては、ソースコードやシステムを扱うのとは異なるオープンな心持ちが必要なのである。以上に述べたオープンな心持ちの類は家族、友だち、そして同僚との人間関係のような様々な類のもので実践することができる。

@jmvillejo unsplash.com

ビジネスとその目的を理解する

ソフトウェアを開発すること自体が基幹ビジネスである企業で働いている場合を除いて、技術者は技術が提供するビジネスを理解する必要性が常にある。製品開発に影響を及ぼすビジネスの局面には様々なものがある。例えば、社内向けソフトウェアを設計しているソフトウェアチームは、プロジェクトに対する要求というビジネス的側面に注目するだろう。プロジェクトのために投入しようとする予算というビジネス的側面は、プロジェクトのタイムラインを決定するだろう。ソフトウェア・テストとロールアウトは要求仕様や予算との関係にもとづいて行われるだろう。社内向けソフトウェアを開発するような場合には、技術者はプロジェクトに対する要求を理解するのに必要な諸々のビジネス的側面を堅固に理解していなければならない。それゆえ、要求仕様の集約からソフトウェア・テストにいたるまでのプロジェクトの進捗のそれぞれの過程において、技術者はビジネスチームのメンバーと交流することになる。

データサイエンティストと技術マネージャーの場合、ビジネスを理解することはより重要となる。こうした職種においては、技術者はビジネス上の問題を解決するためにビジネスチームと連携することになる。したがって、技術的なことをビジネス上の言葉で話すことが必要不可欠となる。ミーティングにおいては、上級技術職の技術者は問題に関するソリューションを説明するためにしばしばコンサルタントとして振る舞う必要があるのだ。さらにはビジネスを理解しているだけでは足りない。時として、上級技術職はビジネスマネージャーよりビジネスについて理解していなければならない。彼らはビジネス的問題を解決するために、それぞれの業界におけるベスト・プラクティスを理解していなければならないのだ。

(※註1)AINOW翻訳記事「12の機械学習スタートアップと働いてわたしが学んだこと」では、「素晴らしいAI製品を作るために必要なカギのひとつは、AI製品についてビジネス的指標に照らして話し続け、そうしたビジネス的指標をAIのモデリングにおける指標にいかにして翻訳するか、ということにある」と論じている。

また「データサイエンティストという職業における第三の波」では、データサイエンティストは「モデルを構築するため」ではなく「ビジネス的価値を創出するために雇われている」と述べたうえで、ビジネス的問題をデータサイエンスによって解決しようとする「ビジネス・マインドセット」が重要だと論じている。

ストーリーテリングとプレゼンテーション

コーディングとストーリーテリングは密接に関係している。ソースコードが何であるかを解説するコメントなしに存在するソースコードなど1行たりとも存在しない。もしプロジェクトが本来あるべき姿で管理されているならば、プロジェクトのどの局面においても設計資料が用意されるべきなのだ。シニアプログラマーはソースコードのすべてを見通し、メンバー全員が参加しているソフトウェアシステムに関するストーリーを話せるべきである。データサイエンティストの仕事は、ビジネス的問題を解決するためにデータを分析することである。同様に、テクニカルマネージャーは技術チームがビジネスに関してどれだけ助けとなっているかを説明するためにビジネスマネージャーの面前に立つこともしばしば必要となる。そして、あらゆる技術職にとってストーリーテリングは、技術的な詳細をすべてのヒトに理解してもらうように翻訳することを可能とするスキルなのだ。

@lukechesser unsplash.com

(※註2)AINOW翻訳記事「意識の高いデータサイエンティストにオススメの6つのこと」では、分析やモデルの説明において聴衆の注意をひくためには美しいビジュアライゼーションが有効と説き、データサイエンティストは様々なビジュアライゼーション・ツールを学ぶべき、と論じている。また、ストーリーテリングのスキルを磨くためにホワイトペーパー(技術提案書)を書いてみることをすすめている。

時間管理と生産性

どんなクリエイティブな追求においても、時間管理は難しいものである。クリエイティビティを損なうことなく時間を管理するには、ある種のバランスをとることとなる。プロジェクトの納期に間に合うようにスケジュールを進めながら技術者の集中、業務フロー、そしてクリエイティビティへの執着のバランスを保つのは決して簡単な仕事ではない。生産性とは結果を求められるものである。しかし、しばしばプログラマーやデータサイエンティストのようなクリエイティブなヒトビトは、完璧を追求しようとする。こうしたある種の業務において完璧を追求しようとする欲求は、生産性を阻害することとなる。

日々のルーティンを持っている技術者は、しばしばルーティンを持っていない技術者より時間と生産性をうまく管理する。システムの一部をコーディングするのに1日に2時間しか時間を使えない場合、技術者はその短い作業時間においてもっとも効率的にコーディングするだろう。複数の技術者がコードレビューを通して互いのコードを監視することは、コーディングに費やす時間を短縮することを助けるだろう。短縮されたタイムスケジュールは、しばしば完璧主義に陥ることを妨げる。同様にデータサイエンティストやマネージャーがプロジェクトに健全な範囲で時間的なプレッシャーをかけることは、業務が効率的な方法で管理されることにつながるのだ。

(※註3)AINOW翻訳記事「わたしの機械学習エンジニアキャリア1年目で学んだ12のこと【前編】」では、「動作するものを出荷することは、完璧に近づけようとして出荷前で留まっていることより多くの価値をもたらす」と述べ、最先端技術に拘泥する弊害を指摘している。

適応力とクリエイティビティ

昨今、もっとも過小評価されている技術者のためのスキルセットには適応力とクリエイティビティがある。わたし自身プログラマーとしてのキャリアを数年過ごすまでは、これらのスキルが非常に有益であることに気付かなかった。今日の職場ではテクノロジーに関するイノベーションが早いペースで起こっており、最新のテクノロジーに適応できることが不可欠となっている。こうしたテクノロジーの変化を超える勢いで、ビジネスも日々変化している。ひとつのプロジェクトで数年間働く代わりに、現在の技術者はひとつのプロジェクトでたった数ヶ月しか働かないかも知れない。プロジェクト予算も次の局面に移行することを保証していないかも知れない。技術者が不確実な状況で働くことは、「当面の状況下で出来る範囲で最善を尽くす」というモットーを採用することを強いる。常に「正しい」ことを行える状況にはない。与えられた状況において「最善」を尽くすことがより求められるのだ。

不確実な状況ではある程度のクリエイティビティが求められる。プログラマー、データサイエンティスト、あるいはテクニカルマネージャーはみんな物事の「正しい」やり方を理解している。しかし、理想的ではない状況下では幾ばくかはクリエイティブであることによって最善を尽くせるのではないだろうか。理想的ではない状況でもビジネス的目標の追求と技術的厳密性のあいだのバランスを保とうとすると、非凡かつクリエイティブな解決策が見つかることがしばしばある。技術者とは、こうした困難な状況でこそクリエイティブな筋肉を伸ばすのだ。そして、クリエイティブにならざるを得ない状況こそが、優秀な技術者を偉大な技術者にするのだ。

本質的な動機付けと好奇心

わたしは、本質的に動機付けられていない優秀な技術者に会ったことがない。成功する技術者となるために必要なのは何年にもわたって勉強に専心することであるが、もしカネのために技術者になったわけではないのであれば、成功するのはより簡単になるだろう。わたしは、単純に動機付けが欠如していたためにキャリアの途中で技術者を辞めてしまったヒトをたくさん見てきた。もしあなたが技術者として数年過ごしたならば、新しい技術者市場のニーズを満たすのにあなたのスキルが十分ではないことを痛感するのは容易いことだろう。本質的な動機付けと新しいスキルを学ぼうとする継続的な好奇心がなければ、どんな技術職であっても長く続けることはできないだろう。

職場において技術者というものは、しばしばビジネス的な制約のために解決が不可能のように思われる問題に遭遇する。そうしたビジネス的制約にはプロジェクトに関する時間、予算、データ、そしてリソースにまつわるものがある。自分たちのプロジェクトに技術的なイノベーションを応用して、知的な限界を押し広げることもある。健全な量の本質的動機付けと好奇心がなければ、自分たちに忍び寄ってくる疑念を克服することは困難となる。好奇心は、複雑な問題の解決に至る道のりを歩み出させてくれる。そして、解決を見つけるに至るまでに過ごす時間を耐え忍ばせてくれるのは、しばしばひたむきで本質な動機付けなのだ。

@thelankankid unsplash.com

問題解決力と忍耐力

日がな一日、どんな技術者であっても主な仕事と言えばビジネス的問題を解決するために技術を使うことである。子供向けゲームをプログラミングしているゲームプログラマーであっても、ゲームの購入者に関する「娯楽」の問題を解決しようとしている。さらにはプログラミング、データサイエンス、あるいはマネージメントのそれぞれに関する問題はプロジェクトを次のステップに進めるために解決されなければならない。プログラムやプロジェクトにおける順を追って事を進めるという本質的に論理的な進め方は、忍耐力を要求する。後のステップは、現在取り組んでいるステップを完了することなしには完了させることはできない。技術者が現時点で問題に対処したいと思っていなくても、しばしばその問題の解決策を探し続ける必要がある。技術者にとって、状況に左右されず挑戦し続けることこそが成功へのカギなのだ。

・・・

あなたが新米技術者であろうが熟練技術者であろうが、以上に述べたソフトスキルがいかにキャリアを築くうえであなたを助けるものであるのかを知ってもらえることをわたしは望んでいる。正しいマインドセットを持っていれば、論じてきたソフトスキルは日々学び練習することができる。今日のテクノロジーは、様々なバックグラウンドをもつ同僚で満たされた流動的な職場環境を必要としている。こうした職場環境においては、自らの技術的スキルに加えてソフトスキルを効果的に活用した時により良い技術者となれるのだ。

・・・

著者について

Jun Wuはテクノロジー、AI、データサイエンス、心理学、そして子育てに関するコンテンツのライターです。彼女はプログラミングと統計学というバックグラウンドを持っています。手が空いている時は、自身のウェブサイトに詩やブログ記事を書いています。

彼女とつながり続けるには、週間ニュースレターを購読しましょう。

Zack Shapiroに謝意を表します。


原文
『Soft Skills Every Programmer or Data Scientist Should Master』

著者
Jun Wu

翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)

編集
おざけん

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する