sh1’s diary

プログラミング、読んだ本、資格試験、ゲームとか私を記録するところ

なんでプログラミングは簡単だけど、ソフトウェアエンジニアリングは難しいのか?

f:id:shikaku_sh:20211213144325j:plain:w150
Yujian Tang さんの記事が元です

Twitter を見てたら流れてきた記事が気になったので、個人的な和訳をメモした内容です。

ソフトウェアの分野に入りたいと思っている初心者は、プログラミングとソフトウェアエンジニアリングをよく混同してしまいます。これらは同じものではありません。 プログラミングはソフトウェアエンジニアリングの一部分です。一方でソフトウェアエンジニアリングにはプログラミング以上の要素が含まれています。ソフトウェアエンジニアリングとは、問題から始まって、その問題を解決するためのソフトウェアソリューションを設計、提供します

なんでプログラミングが簡単か? (Why is Programming Easy?)

プログラミングとは、正確にはなんでしょうか?

プログラミングは、あるタスクを実行するためのコードを書くことです。コンピューターサイエンスがまだ始まったばかりの頃、プログラミングはまだ難しいものでした。

昔のころはプログラムを組むことは難しかったです。パンチカードのようなものを使わなければいけませんでした。それから、コンピューターサイエンスの分野が進化するについて抽象度は上がっていきました。

アセンブリ言語では、レジスタを直接割り当てることができるようになりました。それから、COBOL, Fortran, PASCAL (著者 Yujian Tang が初めて使った言語!) といった言語に変わっていきました。

しばらくして、C#, C++, JAVA などのより読みやすいオブジェクト指向言語が登場しました。ここ数年のとこで、30 年以上前に開発された Python が台頭してきました。Python の構文はほとんど英語のようなものです。そのため、理解しやすく学習しやすいです。

ほんの少しの時間で Python のプログラミングを学ぶことができます。プログラミング言語は時代とともに学びやすく、使いやすくなっているだけではなく、無料のオンラインリソースも増えています。

ここでは、「Randam Number Generator」を作る方法について無料のガイドを見ることができます。すばらしい、5分もかからずプログラムを作れました。無料のオンラインリソースの数と Python の使いやすさによってインターネットと学習する意欲さえあれば、だれでもプログラミングできるようになりました。

なんでソフトウェアエンジニアリングが難しいか? (Why is Software Engineering Hard?)

プログラミングが出来るからといって、ソフトウェアエンジニアに自動的になるわけではありません。ソフトウェアエンジニアはプログラミングに多くの時間を費やしますが、上達するほど考えることに多くの時間を費やします。

ソフトウェアエンジニアとして成功するためには、「エンジニアリングとしての考え方」を身につける必要があります。

エンジニアリングの考え方をしなければいけないことが、なんでソフトウェアエンジニアリングを難しくするのでしょうか? ええ、それは、同じ理由で多くのエンジニアリング分野で難しいのです。少なくとも、アメリカの教育では一般的に教えられていません。

エンジニアリングは好奇心を必要とする分野であり、正しい質問をする必要があります。ソフトウェアエンジニアの心情は、どのようにしてプログラムを作るのかではなくて、問題を解決することに集中しなければいけません。諸々の問題ではなくて、正しい問題に対して、ということです。

ソフトウェアエンジニアリングは、単に外見上のプログラムの束を作ることのように見えるかもしれませんが、それらのプログラムがどのように繋がっているのか理解していなければいけません。

また、プログラムをどのように追加するのか、どのように修正するのか、そして、多くのソフトウェアエンジニアがおそらく苦手とするだろう、プログラムの文書化についても理解する必要があります。

個人的な感想:
初心者の壁と言うと、どうなんだろう。プログラミングは、オンラインラーニングほどの低さ・手軽さでも学習する意欲が「ある」みたいなところがある。ソフトウェアエンジニアリングは? みたいな話だとも思った。個人で解決しづらい部分が難しい。
今は人材が溢れているこの界隈、粗製の人材は「プログラミング」ができるんですよねっていう辛い話。

参考