見出し画像

ソフトウェア開発は難しいのか?

結論『ソフトウェア開発は難しい』

結論としては『ソフトウェア開発』は難しいです。世の中の経験が浅い多くのチームや企業がソフトウェア開発のプロジェクトで失敗しています。

◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆

ソフトウェア開発はなぜ難しいのか?

ソフトウェア開発というのは製造業の一種で、製造業の中でも比較的専門性が高い業種と言えます。ソフトウェア開発が難しい理由として考えられるものをいくつか紹介します。

---解決したい問題がプロダクトによって全く異なる

ソフトウェアにはいくつかの分類は存在しますが、実際に解決したい問題や実現したい内容によって開発する内容が全く異なります。そのため、過去の開発経験が100%使い回せることが少なく、毎回新たな問題が発生する可能性があります。また、課題によって数学や統計など専門的な知識を要するものもあり、問題解決の方法がそれほど汎用的ではないことが難易度を上げる要因となっています。

---開発スキルが個人(人間)の能力に依存する

この問題は、時代とともに専門技術の自動化や汎用化が進むことで解決する可能性はありますが、現時点ではシステムを構築するプログラマーやエンジニアのスキルによって「開発速度」「プロダクトの品質」が大きく変わってくるのが現状です。そのため画一的な計画を行なうことが難しく、難易度を上げる要因となっています。

---人間のマネジメントが難しい

最近のソフトウェア開発では、『ソフトウェア開発=事業開発』であることも少ないため、開発プロジェクトには多くの人間が関わってきます。マーケティング、営業、カスタマーサポート、外部のステークホルダーなどと一緒に開発チームが開発を行なうことは、ピープルマネジメントの観点でも難易度が高く専門的なスキルが必要になります。

◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆

ソフトウェア開発が簡単だという人もいる?

「ソフトウェア開発は初心者でもできる」といった内容を時々耳にすることがあります。これは『プログラミング=ソフトウェア開発』という認知の誤りが原因ではないかと個人的には思っています。
※ 特にIT業界にいない人は、この違いを理解できないのは当然です。

実際のところ、世の中に多くのプログラミングスクールや一般書籍があるようにプログラミング自体はそれほど難しくはありません。しかし、ソフトウェア開発は多くの工程で行われるもので、プログラミング(製造)工程はその中の一部でしかありません。プログラミング以外の工程も高度な専門業務であり難易度が高いものとなっています。

■ ソフトウェア開発の工程例
① アイディアを練る
② 要件を定義する
③ 設計する
④ プログラミングする  
★プログラミングは工程の一部でしかない
⑤ テストする
⑥ リリースする
⑦ システムを運用・改善する

また、プログラミングの習得自体は簡単ともいえますが『プログラミングで世の中の問題を解決することは非常に難しい』です。

世の中で広く使われるソフトウェアは、重要な問題を解決して世の中を便利にしています。この「重要な問題を解決する」という工程がソフトウェア開発において最も難しく、これを実現するためには、数学的知識、深い業務知識、膨大なユーザーデータの集計など様々な技術や知識が必要であり、これらを使ったプログラミングというのは非常に難しいのです。

◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆

ソフトウェア開発は非常に一般化した製造業である

前述の通りソフトウェア開発というのは製造業の一種です。それも製造業の中でも比較的難易度は高い業種です。

しかし、ITというものが世の中に爆発的に浸透し、企業や人々が当たり前のように「ソフトウェア」というものを認知している現代では、ソフトウェア開発は製造業としてかなり特殊であるように感じます。

ソフトウェアを作るための「プログラミング」は、趣味の範囲でもコンテンツやサービスが多く存在しており、驚くほど簡単に色々なことが体験できるようになりました。

ブログや日記、HPと言われているものは昔から比較的簡単に作ることができましたが、最近ではECサイトやモバイルアプリ、IoTデバイスなど様々なソフトウェアを個人が手軽に開発できる環境が存在します。最近はプログラミング自体を必要としない「ノーコード」といったジャンルも徐々に浸透しつつあります。

専門性が高い製造業でありながら、これほど情報が多く世の中にあり、実際に作るための手段が提供されていることは、他の製造業と比べると少し不思議なことのようにも思います。

◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆

まとめ

現時点では、ソフトウェア開発は簡単なものではありません。しかし、技術の進歩とともに徐々に一般化が進んでおり、高度なソフトウェアが誰でも開発できる時代が近い将来に来るかもしれません。

もしソフトウェア開発に興味を持っていて、これから勉強をしようと思っている人は、プログラミングだけでなくソフトウェア開発の工程やマネジメントについても勉強をしておくことをおすすめします。

◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆

アンケートのお願い

このチャンネルでは、これから提供していくコンテンツやサポートの内容を改善していくために、アンケートをお願いしています。
ぜひアンケートにご協力ください。

アンケートはこちらから



この記事が気に入ったらサポートをしてみませんか?