要件定義の進め方

システム開発の大炎上を防ぐために、上流工程(前工程)に位置する「要件定義」について、考えていくブログです。

要件定義書の作り方
PDCAサイクルではなく、PDCサイクルを回そう
あるべきV字モデルについて整理した
スコープを決めてから、QCDの議論をしよう

プログラマに求められる能力

tents]

仕事柄、色々なプログラマを見てきたが、本当に色々な人がいると感じている。ぜひ次も働いてほしいと思える人や、次はないかなと思わざるを得ない人。プログラムはできるのに日本語が無茶苦茶な人、技術には明るいわりに無茶苦茶なプログラムを書く人。プログラマはロジカルなイメージを持たれているが、そうでない人が一定数存在する。今日は、プログラマについて考えを整理していきたい。

プログラマに求められる能力

そもそも、プログラマに求められる能力とは何であろうか。当たり前であるが、まずは、プログラミング言語に関する技術的知識が必要だ。それ以外に何が必要であろうか。日本で開発する場合において、筆者は下記3点が必要と考える。

  1. 論理的思考力
  2. 日本語力(基礎レベル)
  3. 英語力(基礎レベル)

論理的思考力について

これについては、言わずもがなである。正しいロジックを構築できなければ、ソフトウェアは動かない。

日本語力について

プログラムをする際に参考とする設計書は、日本語で書かれている。日本語が読めなければならない。また、プログラム内にコメントを書く場合は、正しい日本語でコメントを書かないと、他人が理解できない。ソースコードをgitにアップロードするときも、何のために、どこを変更したのかを書く必要がある。「ソース読め」では通用しない。

英語力について

残念ながら、ほとんどのプログラミング言語は、英語圏の人たちのために仕様策定されている。C言語しかり、Java言語しかり、日本語でプログラムは書けない。半角文字でしかコンパイルできないのだ。しかもアルファベットを使ってプログラムを書かねばならない。そうなると、必然的にモジュール名や変数名は英語名になる。もちろん半角アルファベットの日本語を使ってもいいのだが、、「if NanikanoJoutaiWoSyutokusuru() = KanryouJoutai then (省略) end」のような表現となり、英語と半角アルファベットの日本語が入り交ざることとなる。まあ、動けばよいではないか、という意見もあるが、、筆者としては、どうせなら英語で書いた方が、ソースコードの保守性は高いと考えている。

 

もちろん、上記3点以外に必要な能力はたくさんあると思う。この3点を取り上げた理由は、この3点を使うと、筆者がこれまで出会ったプログラマをうまいこと分類できるためである。

プログラマとして欲しい人材

f:id:req-definer:20220118201039j:plain

プログラマに求められる能力

プログラマに求められる能力として、3点の能力をベン図で表現した。ベン図上には、①から⑧までの番号を振った。3点の能力のあるなしにより、①~⑧に分類される。

  • ①:論理的思考力あり、日本語力あり、英語力あり
  • ②:論理的思考力あり、日本語力あり、英語力なし
  • ③:論理的思考力あり、日本語力なし、英語力あり
  • ④:論理的思考力あり、日本語力なし、英語力なし
  • ⑤:論理的思考力なし、日本語力あり、英語力あり
  • ⑥:論理的思考力なし、日本語力あり、英語力なし
  • ⑦:論理的思考力なし、日本語力なし、英語力あり
  • ⑧:論理的思考力なし、日本語力なし、英語力なし

①について

この中で欲しい人材といえば、もちろん①だ。論理的思考力もあり、日本語も英語もできるので、彼らが作るプログラムは、保守性も高い。次も仕事をお願いしたい。

②について

次に欲しい人材は、②だ。彼らが作るプログラムは、ロジカルであり、コメントも適切だ。プログラム自体の英語におや?と感じる点はあるものの、そもそもの論理構成はしっかりしており、かつ、コメントも適切であるので、保守可能である。

③について

その次に欲しい人材は、③だ。彼らは、日本語が不得意であるものの英語ができる。要は外国人だ。設計書を読むのが苦手という点に目をつむれば、プログラムは流ちょうな英語で記載され、保守可能である。

④について

その次に欲しい人材は、、妥協して④だ。ただし、日本語力/英語力に乏しいため、コメントを読んでもよくわからないことがある。格助詞の使い方を致命的に間違っていたりする。が、プログラムは正しく動く。

 

⑤⑥⑦⑧について

その次に欲しい人材は、、、いない。論理的思考力がないという時点で、プログラマとして生計を立てていくのは難しいのではないかと思われる。ただし、実際の現場では結構いたりする。俗に言うスキルシート詐欺により、現場に放り込まれてくるのだ。

 

タイプ別に説明する。

⑤について

このタイプは、いわば翻訳者だ。海外にあこがれて英語を学んだ日本人か、日本にあこがれて日本語を学んだ外国人だ。ただし、論理的思考力に難があり、作ったプログラムは動かない。とりあえず翻訳能力はあるので、ブリッジSEだったりする。

⑥について

日本人だ。書いている日本語は正しい。が、プログラムは動かない。

⑦について

外国人だ。書いている英語は正しい。が、プログラムは動かない。

⑧について

たまに存在する。特定の分野(特に、流行りの技術)のツールの使い方に詳しいだけという場合がある。

まじめに努力していれば、まっとうなプログラムを書けるようになるはず

本記事の最初のほうで、プログラマには、(1)論理的思考力、(2)日本語力(基礎レベル)、(3)英語力(基礎レベル)が必要と述べた。これらの能力を獲得するために特別な才能は必要ない。後天的な努力で身に着けられるものだ。日々の仕事で論理を丁寧に追いかけたり、正しい日本語や英語を書くように心掛けることで、身に着いていく能力と考える。

そういうわけで、あくまでも個人的な見解として、時間をかけて、職業プログラマとして誠実に仕事をこなしてきた人は、どんな顧客からもリピートされる、①のような人材に近づいていけると思っている。そのような人に仕事を発注したいものだ。

一方で、雨後の筍のように出てきた、流行りのツールを使いこなすだけのような人には要注意だ。彼らは、飽きたら別の技術に興味が移ってしまう人種である。興味があることしかせず、仕事の基礎をおろそかにした人たちであることが多い。

スキルシート詐欺が横行する昨今、プログラマを採用する際は、その人を注意深く面接し、本性を見抜くよう努めたいものである。

結論:流行りの技術だけにしか興味がないプログラマには要注意