優秀なプログラマーは“サボリ”が得意 そもそもプログラマーってなんだ?

プログラミング教育が小学校でも始まりましたが、中高生のなりたい職業ランキングでも、「プログラマー」が上位に入っています。それでは、プログラマーとはどんな人たちなのでしょうか? 自身もプログラマーだった角川アスキー総研の遠藤諭氏が、その正体に独自の視点で迫ります。

プログラマーってどんな人たち? どんな人がプログラマーに向くの?

プログラムをつくることをプログラミング、そのプログラミングをする人を「プログラマー」と呼ぶのはご存じのとおりです。

ひとくちにプログラマーといっても、「職業がプログラマーです」という人もいれば、中学生で大人なみにプログラミングができる子は「中学生プログラマー」などと呼ばれたりします。日常的にプログラミングをしているような人をプログラマーと呼んでいるのだと思います。

私自身、以前は仕事でプログラミングをするプログラマーという職業をしていました。銀行のオンラインシテスムから、ネットで使われることになるパケット交換網や電子交換機のOS、新聞の自動組版システムなど、割りと幅広い分野のソフトウェア開発の現場にいた経験があります。

その後、パソコン雑誌の編集者となってからは、数えきれないほどのプログラマーたちにインタビューしました。比較的最近のプログラマーへのインタビューとしては、以下のようなものがあります。

  • Ruby作者まつもとゆきひろ氏2万字インタビュー

Ruby作者まつもとゆきひろ氏2万字インタビュー (1/5)

  • AbemaTVはどのように立ち上げられたか?

AbemaTVはどのように立ち上げられたか? (1/2)

  • KOOV――「300年前」と「300年先」をつなげるプログラミング教育

KOOV――「300年前」と「300年先」をつなげるプログラミング教育

  • U-22で経済産業大臣賞など4冠の中学生上原直人(15歳)さんに聞いた

U-22で経済産業大臣賞など4冠の中学生上原直人(15歳)さんに聞いた

また、いまも私のまわりにはプログラマーが何人もいます。スマートフォンアプリはもちろんのこと、量子コンピューターやVR(仮想現実感)技術、AIや家電などに組み込まれるソフトウェアの専門家もいて、最新の技術トレンドもですがドロくさい業界の裏話的っぽいことも聞きます。

小学生、中学生プログラマーについては、11月3日、私が実行委員の1人をつとめる「第5回 全国小中学生プログラミング大会」の募集を締め切ったばかりです。毎回、最終審査会では参加者に屋台のようなプレゼンブースをつくってもらい質疑応答をします。どんな子たちが、どんなプログラムをつくってくれたのかを見るのは楽しい作業です。

世の中のプログラマーに対する印象が、現実と少し乖離していると思う

そんなふうに多くのプログラマーたちと接してきた私から見たプログラマーとはどんな人たちなのか?あるいは、どんな人がプログラマーに向くのかというお話をしたいと思います。

というのも、先ほどのインタビューのリンクにあった世界的なプログラミング言語Rubyの作者であるまつもとゆきひろさんが「数学が苦手だった」と発言されています。プログラミングって、いかにも数学が得意な人がやるものと思われているのではないでしょうか? また、プログラミングって論理で書いていくので、論理的思考が大切であると思われがちです。

ところが、私のプログラマー時代の同僚にはぜんぜん論理的なことなど縁がないように見えるけどバンバン仕事ができるプログラマーが何人もいました。たぶんプログラミング教室をのぞいたことがある人なら、あの《IF-THEN》や《FOR》を組み合わせていくパズルのような世界をこなせるのか? と思われるかもしれません。それが、ご心配無用。彼らは《紙のノート》を上手に使って淡々とこなしていくだけなのでした。

どうも世の中のプログラマーに対する印象が、現実と少し乖離しているのではないかと思うわけです。プログラミングを教える場で「かならずしもプログラマーになるためにプログラミングを学ぶのではありません」と言われることがあります。それはそうなんですが、このフレーズを聞くとプログラマーという人種が勝手に遠ざけられているような感じがして、もっと彼らのことを知ってほしいと思うのです。

What-is-a-programmerチャートをつくってみた

そこで、プログラマーを理解するためのレーダーチャートができないかと思い、つくってみました。あくまで私のイメージを説明するためのものなので、データ的な裏付けはありません。しかも、仕事で活躍するプログラマー、優れたプログラマーのことを書いています。「ここちょっと違いませんか?」という点があれば、ぜひお知らせください。

ダメ出しされると、がんばるエネルギー生命体みたいなところが、プログララマーでもあります(説明がオタクですみません=それもプログラマー)。

What-is-a-programmerチャート(世の中で考えられているプログラマーのイメージ)

まずは、世の中でこんなふうに捉えられているんだろうなというものをチャートにしてみました。ちょっと極端かもしれませんが、《論理性》《ねばり力(しつこさ)》《新規探索(新しい技術を使っている)》が高い値になっています。プログラマーは「人間よりも機械を好む」ということは、昔から言われていることです。

What-is-a-programmerチャート(仕事で活躍するタイプ)

次に、「仕事で活躍するタイプ」のプログラマーのチャート。今どきのプログラマーはコミュニケーション力を問われることが増えています。ネットやアプリなどによって、どんなソフトウェアでも一般ユーザーとの距離が縮まった部分があると思います。サービス担当者や広報やサポートとのやりとりが重要になっています。

また、いまでは自分で書いたコードだけでソフトウェアを動かすことはまずありません。オープンソースソフトウェアを使い、アマゾンやグーグルが提供するクラウドを使うのが当たり前になっています。そのため、最新の技術ニュースを見落とさないように、勉強会やコミュニティーにも参加したりしています。

What-is-a-programmerチャート(優れたプログラマー)

なにかまったく新しいものを生み出すような優れたプログラマーは、こんな感じなのではないかと思います。さすがに論理性もありますが、注目したいのは《サボリ》と《美意識》が高い値であることです。

実際、よく「プログラマーはサボルためには努力を惜しまない」といわれます。プログラミングによって、日常的なちょっとした作業を《自動化》するのに情熱を燃やしたりします。それができるから、コンピューターを使う仕事をしているのかもしれません。

『ITエンジニアがときめく自動化の魔法〜仕事を効率化したくなる自動化テクニック〜』や『めんどうな作業が秒速で終わる! Excel×Python自動化の超基本』なんて本が出ています。

もう1つ注目なのが《美意識》です。先日、「AtCoder」という競技プログラミングに参加している東大生と筑駒の1年生とお話をする機会がありました。

競技プログラミングというのは、出題する問題を解くプログラムを時間内に書いていく文字どおりの競技です。頭がよい子たちなのですが、問題を見たとき自分の頭に入っているアルゴリズムを応用できるかどうか《宝さがし》のような感じだそうです。直観的でスピード感のあるデザインに近い作業なのかなという印象を受けました。

そもそも、プログラミングの問題を解く過程というのは、そうした作業のあとに具体的にプログラムの形に書き下していくこととの2段階からなっている。プログラムに落とす部分は、ある意味正しく書いていくだけということでした。

このあたり、優れたプログラマーとして有名な登大遊さんがブログで書かれていたことと近いかもしれません(なんと「論理的思考の放棄」というタイトルでした)。

  • 登 大遊 (Daiyuu Nobori) の個人日記

論理的思考の放棄 - 登 大遊 (Daiyuu Nobori) の個人日記

なお、美意識といえば、それは《ガンコ》という言葉に置き換えてもよいかもしれません。自分のこだわりのあるアルゴリズムやコードのスタイルを大切にするということです。

What-is-a-programmerチャート(科目別)

ここまでの説明をもとに、プログラマーがどんな人たちかを科目で表現してみました。必ずしもそれそれの軸がここまでのチャートに対応しないことにご注意ください。

意外に高い値となったのが《社会》です。いま世界で動いているプログラムは、ちょうど我々が生活している現実社会のようにさまざまな外的要因との関係性の上で成り立っています。コンピーターのOSの中などは、ほとんど社会システムそのものといってもよいと思います(「都市OS」なんて言葉が登場してきたことでもわかります)。

What-is-a-programmerチャート(小説ジャンル)

最後に、プログラマーを小説ジャンルで示してみました。《SF・ファンタジー》は新規探索と共通するでしょう。《歴史・ビジネス》は、さきほどの《社会》や《ねばり》と関係するかもしれません。

《推理》を高くしたのはなぜなのか? それって論理性ということではないの? といわれそうですが、これは《仕掛け》という点で思い切って高い値にしてみました。プログラマーは、気の利いたアルゴリズム的な仕掛けが大好きなのです。それは、やや言い過ぎですが《イタズラ》とか《遊び》に近いもののようにも思います。

それがうまくいったときの気持ちよさは、プログラミングの魅力のとても大きな部分であるようにも思います。よく言われる《達成感》よりも、こちらのほうが大きいような気がします。そして、うまくいかなくても《意外な結末》が得られたときも楽しい。そして、その仕掛けが誰かを驚かせたり楽しませたりためになったらもう一段大きなワクワク感になる。

それで思い出したのは、元マイクロソフト会長で米国Microsoft本社副社長でもあった古川享さんにお話しをお聞きしたときです。あるとき、世界のマイクロソフトを創業して2019年も世界一の大富豪のビル・ゲイツ氏に「なぜプログラミングを始めたの?」と聞くと、ゲイツ氏は「自分の母親の仕事を助けられるようなコンピューターを家庭に置きたかった」と答えたそうです。

「身近にいる人がもうちょっと楽に、もうちょっと幸せに、という気持ち。それは僕らのこの仕事の原点だよね」と古川享さんはいうのでした。これが、あるべきプログラマーの最大のあまり語られない特質かもしれません。

第5回 全国小中学生プログラミング大会

これまでの【遠藤諭の子どもプログラミング道】は

© Valed.press