ソフトエンジニアとして必要なスキルとは何でしょうか?
実装ができること?設計ができること?
本記事では、組み込み機器のソフトウェアエンジニアである筆者の新入社員教育を通して得た知見から必要なスキルを紹介します。
はじめに
本記事は、ソフトウェアを開発する企業に就職した新入社員の方々や、ソフトウェア以外の部署から転籍された方々を対象に記載しています。
では、必要なスキルを見ていきます。
文章力
いきなりソフトウェア開発と関係ないスキルではないか、と思った方もいるかもしれません。
ソフトウェアエンジニアと言え、文章力は必須です。
むしろ物理的に形のないソフトウェアを作り上げる必要があるため
「なに」を「どのように」作り上げていくか、正しく表現する文章力は必須です。
プログラムを書くイメージの多いソフトウェアエンジニアですが、文章作成業務も実装作業以上に存在します。
要件定義書、仕様書、設計書、ひいては、プログラム中のコメントに至るまで
文章を書く機会は膨大に存在します。
正しく分かりやすい文章を記載することによって、不要な認識違いや不具合を回避できます。
また、文章力は、セルフブランディングにも大きな影響を及ぼします。
口語的な表現が多い、論理的でない文章は幼稚な印象を与えます。
さらには、文章を分かりやすく書けない場合、分かりやすく話すことも難しいでしょう。
是非とも新入社員の間に高めておきたいスキルです。
文章力を基礎となる一冊の本を紹介します。
分かりやすく、伝わる文章を書くための基本が詰まった良書です。
分かりやすい文章を伝える本であるため、もちろん読みやすい本となっています。
プレゼン能力
またしてもソフトウェア開発能力とは別ではないかと思うかもしれません。
しかし、文章力同様にプレゼン能力もまたエンジニアに必要なスキルです。
開発予算の確保、研究開発の承認、開発進捗報告、成果報告などなどプレゼン機会の場は意外に多いものです。
そして報告対象者が非エンジニアの方であるケースも良くあります。
その際に、SOA, RSA, NATのような三文字略語を並べたり、延々と文字だけの資料を読み上げたり、伝わらないプレゼンを見かける場面も少なくありません。
エンジニアにプレゼン能力は不要だと思われる方がいらっしゃるかもしれませんが、
エンジニアだからこそ必要な能力であるとも言えます。
あなたが開発したシステムの素晴らしさはあなたが説明するしかないのです。
また、最も注力したい開発に、より多くの時間を割くためにも承認はスムーズに通しておきたいものです。
プレゼン能力向上のため、おすすめの本を二冊紹介します。
一冊目は、プレゼン資料作成のための書籍です。
図を用いて具体例が示され、読みやすく実践的なノウハウが記載されています。
二冊目は、話し方・伝え方のための書籍です。
論理的に、シンプルに伝わる話し方を分かりやすく解説してくれています。
実装力
エンジニアの基礎ともいえるスキルです。
このスキルばかりは実装することで身についていきます。
大企業の場合、実装ができなくともエンジニアとして働くことは可能です。
技術的戦略、要件定義、アーキテクチャ設計、詳細設計等々実装以外の業務は多数存在します。
しかし、一つはっきりと言えることは、実装はできるに越したことはないということです。
実装を知り設計する場合と、実装を知らず設計する場合とでは、その質が異なります。
また、実装者とのコミュニケーションの円滑さにも違いが出てきます。
実装ができる設計者は、実装者と同じ目線に立って話ができます。
では、どうやって実装力を挙げていけばよいのでしょうか?
個人的なおすすめはやはり何かを作ってみることだと思います。
独習JAVAのように、プログラム言語を網羅的に書籍で学習することももちろん重要ですがなかなかあのボリュームを全て理解することは至難の業です。
であれば、自分の作ってみたいものをまず作ってみて、その目的を達成するために必要なプログラムを学習していくと吸収が良いと思われます。
そしてその中で、修正のしにくさを体感し、設計の重要性を知ることこそ、エンジニアのセンスを養う糧になります。
作っていく上で獲得していく知識ですが、下記は最低限理解しておきたい概念です。
設計力
実装について先に説明しましたが、
本来の開発順序としては設計し、その設計に従って実装します
設計力は、基本となる概念を知ること、そして、基本となる設計のパターンを知ることが重要です。
基本となる概念や設計は先人たちの知恵によって作り上げられたものです。
既に積み上げられた知識は遠慮なく吸収してしまいましょう。
基本となる概念や設計パターンは以下のようなものがあります。
上記2点は基礎の基礎となる概念です。
ぜひとも理解しておきたいものです。これらを基礎にDependency Injectionなどのデザインパターンやクリーンアーキテクチャなどのアーキテクチャに理解を発展させていけると幅が広がります。
まとめ
ソフトウェアエンジニアとして必要なスキルを紹介しました。
ここで記載させて頂いた内容は基礎的な内容がほとんどです。
しかし、少しずつ積み上げていくことで自然に身についていき、いずれは優れた開発者になることかと思います。
学び続ける姿勢が重要です。
0 件のコメント :
コメントを投稿