ソフトウェア開発の業務で誰を業務に参加させるかという話の中でよく「へぇ、Python使えるんだ」とか「彼はC#で開発した事があるらしいです」という会話が聞こえてくる。
個人的には「えっ?そんな基準で選ぶの?」といつも思ってしまう。
自分の中では
「プログラム言語は単なる道具」
としか思っていないので、「○○言語が使えます」と言われても「鉛筆で文字が書けます」程度の事を言っているとしか思えないのだ。
言語の種類について何も書いていないが、そもそも、何を開発するかによって、開発する言語が決まってくる。
開発 | 言語 |
Android向け | JAVA/Kotlin |
iPhone向け | Swift |
Unity | C# |
AI関連開発 | Pythonなど |
Windows向け | C/C++/C#/JAVAなどなど ※開発によって違う |
確かに開発に必要な言語を使えるというのは多少は有利だろう。
しかし、ソフト開発業務に必要な事は以下の事だと思っている。
- ソフト全体を見通せる力
- コンポーネント(クラス、ライブラリ等)への分解能力
- コーディング規約を重要視するか
- コメントの書き方
- テストの重要性の理解
1つ目は、自分が何を作るべきなのか?また作っているのか?を理解しないまま作成されたソフト程、怖いものはないからだ。
2つ目は、設計能力の有無。
3つ目は、多人数での開発でコードの品質を一定に保つのに必要。個人個人で勝手にコードを書かれてはたまらない。
4つ目は、コードの可読性を上げたり、Doxygen等をつかったAPIリファレンスの自動生成に役立ったりする。また、コメントを見れば、その人が理解しているかしていないかもわかる。(コピペで貼り付けているだけのコメントも良く見るが…)
5つ目は、どんなにプログラミングが出来る人でも、必ずバグが混入する可能性は0でないので、テスト設計やテストコードが組める人が良い。
なので、開発業務のメンバーを選ぶ場合、その人が何の言語が使えるかというより、これまで、どんなソフト開発に携わって来たのか、また、どういう風に携わって来たのかが重要だと考える。
出来れば、ある程度の規模のソフト開発を設計からリリースまで携わった人が一番よいと思う。
(ただし、それを自慢げにしゃべるだけの人はいらない)
一つの言語に精通しているプログラマーなら、これまで触った事のない言語でも、だいたいどう使えばよいかは、開発している中で習得してしまうものだ。
それに、今は検索すれば、たいていの事は調べられる時代だしね。