はじめに
エンジニアとして働いている方々には共感いただけると思いますが、技術力が高いことと開発ができることは、必ずしもイコールではないと考えています。
ただ、「技術力」が高ければエンジニアの仕事ができるのではなく、別の「開発力」が必要になるのかなという持論を紹介します。
この「開発力」さえ身に着ければ、未経験の方でもエンジニアとしてやっていけると考えています。
技術力と開発力
技術力:ITの特定分野の深い知識や技術を保持しており、実際に扱える力
開発力:プロダクト開発する力
私は、技術力と開発力は別軸だと考えています。例えば、AtCorderのようなプログラミングコンテストで高いランクを保有してても、開発ができるかと言うとそれは違うと思います。
プログラミングコンテストではアルゴリズムの素養は身につきますが、それだけでアプリ開発やWeb開発ができるかというと、また別のスキルが必要になります。
技術力が高ければ、開発力が身につくわけではなく、両方の力をそれぞれ高める必要があります。
技術力が高いとは
技術力が高いかどうかの基準は人それぞれ異なるかもしれませんが、私が考える「技術力の高いエンジニア」とは、特定の高度な分野に精通している人を指します。
技術力が高いエンジニアは、単に基本的なスキルを持つだけでなく、より複雑な課題に対応できる専門性を持っていることが多いです。例えば、AI(人工知能)、セキュリティ、ブロックチェーンといった高度な分野は、深い専門知識と正しい技術が求められます。これらの分野では、基礎的な知識だけでは不十分で、実践に応じた高度な技術を身に付けていなければ、効果的に取り組むことができません。これに対し、Web開発やアプリ開発は、技術力がなくてもある程度の実装が可能な場合もありますが、AIやセキュリティといった特定の専門領域では、しっかりとした知識が必要です。
開発力とは
現在、受託開発の業務をしているので、受託開発目線で話していきます。開発力の中で最も大事な力を2つ挙げます。
1. コードを読む力
最初に求められる力は、コードを読む力だと考えます。これは新規開発は違ってくるのかなと思われますが、それは除いて説明します。チームで開発を進める際、他人のコードを読む機会は避けられません。既存のシステムに携わるようなプロジェクトの時も、既に作成されている誰かが作ったコードを読まないといけないです。そのコード自体は、必ずしもリーダブルコードのような理想のコードで書かれているわけではないので、どれだけ汚いコードでも、そのコードを読まないといけないです。どういう意図で書いてあるのかを読み取り、そのコードに加えて自身の書いたコードを反映させることが大事です。このコードを読む力を鍛えれば、レビューにも生かすことができると思います。
2. 新しいものに抵抗がない
2つ目は、新しいものに抵抗がなく、キャッチアップが早い力だと考えます。IT業界は常に新しい技術やスキルが求められるため、この業界で生き残るには、新しい技術に素早く順応する能力が不可欠です。10年前に流行っていた言語やフレームワークは一部廃れて、ここ数年で生まれた言語やフレームワークが活躍しています。生成AI自体も昔にはなかった概念で、昔はコードを書く際、詰まった個所があればwebで調べて解決する時代でしたが、今はChatGPTやCloudeなどの生成AIに尋ねて解決する時代になっています。ここから先の時代は、生成AIを上手く使いこなす人が活躍できる時代になっているように、エンジニアの在り方も変わってきています。古い技術にとらわれず、新しい概念や技術を自身に取り入れることができる人が今後の開発も活躍できると考えられます。
技術力は必要ないのか
結論、技術力がなくても開発力さえあれば、開発自体はできます。Web業界などの高い技術力が求めれない特定の分野であれば、高い技術力は必要ないです。それでも、技術力は必要だと思います。開発力だけでシステムは作れますが、技術力がないと良いものは作れないです。開発力が基盤にあって、品質の高いものにしようとした時に技術力が求められます。この両方を満たすことで、納得ができるいいものが作れるのかなと思います。あとは、技術力がないと下の子たちもついてこないです。(技術重視の人だと)いつまで経っても、両方の力は大事だと思います。
最後に
エンジニアに求められる力は細分化すると様々な力に分解することができます。今回は大まかに2つに分解してみました。まだまだ新人なので、今後は技術力と開発力の両方をバランス良く高め、IT業界でさらなる成長を目指していきます。