優秀なプログラマとは人を幸せにすることができる人
「プログラマーって、数学ができないとダメなイメージがありますよね。文系だった僕は、絶対プログラマーにはなれないな、と思っていました」
ITmedia Biz.ID:“文系出身プログラマー”が独立するまで――コトノハ・大日田貴司さん
私も最初はそう思ってました。プログラムを作るには数学が必要だと。
でも実際はプログラミングには数学より論理を組み立てる作業の方が圧倒的に多いんですよね。いえ、もちろん数学の知識が必要な場合もあるし、知っていると効率のよいプログラムが作れたりするのですが、必ずしも数学が得意でなければならないということはないです、はい。もちろん四則演算とか最低限の知識は必要ですけど。
プログラミングで大切なことは機能を実現するための論理を考える力とプログラムが動作する利用形態や環境にあわせたデザインをする力の2つだと思います。
前者は発想やひらめきといった力が大切でして、経験によって鍛えることが難しいです。もちろんプログラミングにも多くの定石があって、そういうものは経験から学ぶ必要があるわけですけれど、それをどのように使うかはパズルを解く感覚に近いものがありますね。
それに対して後者は多くの経験によって養われていく力だと思います。デザインというと斬新な発想のプログラムなんかを想像されるかもしれませんが、基本は利用者が求める機能を使いやすく実現することです。そのためには多くのソフトウェアのデザインを研究したり、プログラミング環境を学んだり、といったことが必要になります。
さて、プログラマというと、前述のどちらをイメージしますか?どちらかといえば、ひらめきや発想といった前者のイメージがありませんか?でも実際にソフトウェアを作成する時は後者の方が大切だったりします。
もちろん前者も必要ではあります。プログラミングの魅力の一つがこのパズルを解く楽しみでして、これがプログラマであることの熱意を支えていることも事実です。奇抜な発想のソフトウェアやサービスを生み出すための力の一つがこれにあることは間違いありません。
しかしながら魅力的なソフトウェアを生み出すには、やはり過去の経験や知識が土台となっているような気がします。何が魅力なのか、どんなことを利用者は求めているのか。そういったものを探し出すのは既にある製品や技術を理解した上でなければ発想することはできないのではないでしょうか。
プログラムを作る。それはとても機械的な作業であるかのように思われるかもしれません。しかしプログラムを作るのは人間、それを使うのも人間。人を驚かせるものではなく、人に喜んでもらえる、幸せな気分になれる。そんなソフトウェアを作ることができる人が、優秀なプログラマなのではないかと思うのです。