「プログラマ」という仕事は文系・理系で分けられるのか?

プログラマーは文系の仕事か、理系の仕事か – 愛と勇気と缶ビール

というわけでちょうどいい話題を見つけましたのでこれに関して私も考えてみたいと思います。まがいなりにも「プログラマ」を名乗っているのでこれに関しては自分の体感として何となく思っていた項目ですが、この頃「文系・理系」について考えさせられる出来事もあるのでそれも交えて書いてみたいと思います。私も確固たる結論があるわけではなく考えるのレベルです。なお、「文系・理系」についてどのように分かれているか?についてがこの問題で重要になるのですが、この部分を勘違いしていたら済みません、とだけ。

 

「コードを書く」のは文系の、「コードを読む」のは理系の能力が強く出るような気がする

なんかこう思わないでもないような気がする、というのが私の意見です。もちろん、どちらも逆の能力を使って処理することはできるのですが、私の場合は特にこの傾向が強いのと、理数系ができる人が「コードを書く」という作業に向いていないのでは?と思うところがありこれを考えてみます。

まずは「コードを書く」のが文系である、というところから

ちょっと思っているのは「コードを書く」という作業が数学における「ある物事を証明する作業」にかなり似ているのでは?と思ったところからきています。実際、数学をやっている人でも証明が苦手、という人は一定数いるように見受けられますし、そうでなくても数学における「証明」というのは理数分野においても重要でありながら私には異質なものに感じられています。それは「証明で使用される言葉や数式は確かに数学なのだが、証明の手順そのものは論理学の要素を持ち、この手順の組み立てにおいて国語的な要素をかなり多く持つ」ことにあります。事実上小規模な物語の組み立てに等しいですよね。これって。物語の構築を間違えるとさっぱりと意味が分からない証明ができあがってしまうという部分がこの要素に当たると思います。証明を読む時には式の正しさを読んでいくのが主になるのに対して、です。

で、この「数学の証明を書く」という作業と「プログラムコードを書く」という作業を比べてみると分かると思いますが、

  1. はじめにやりたいことが何かを国語的要素で与えられる(数学の証明であれば「偶数と偶数の和は偶数であることの説明」を考えるのようなもの)
  2. これを必要な動作に「国語的に」分解する
  3. 分解された要素を数学的あるいはプログラムコードととして意味が通るように再構築する

と言う感じで妙に似ている流れをくんでいるのが分かると思います。まあ、これは極端な例かもしれませんが、特に初めの問題解決のための手順を考える部分は文学の力をかなり必要とするのではないか、というところが私の意見です。まあ、こう書いてみると確かに理学要素が強いように見えなくもないですが。

で、「コードを読む」のが理系である、というのは上記の例から

きています。いったんコードとして構築されたものを見る分にはすでに機械的な手順として書かれているものがほとんどなので物語としてとらえて解読していくこともできると思いますが、どちらかというと数学の定理を追いかけていって数式のイコールを出す作業に似ているのでは、というところです。特に処理がいろいろな場所に飛んでいくと混乱をきたす人はそれなりの数がいると思いますが、それをちゃんと追いかける、もしくは途中でブラックボックスとしてあきらめるという必要性がある、というところです。

 

文系だろうが理系だろうがプログラムを書ける人は書けると思う

ただ、考え方の差というのはプログラムの手順構築とそのコメントに現れやすいのでは?と思います。物語を作るのが強い人であれば依頼された新規処理を作成する時に先に流れを作ってから必要な部分を埋めていく(コーディングしていく)のではないか、と思っています。大規模になればある程度設計として書かないと処理が破綻してしまうのでちゃんと必要な処理の流れを設計しますが、小規模になっていくと必要と思われる処理をとりあえず(使う、使わないを無視して)書いておいて目的の処理となるようにパーツを組み合わせる、ようなプログラム方法をとることが多々あります。自分が思うに、これは理学側からプログラムをやっていった時に出やすいのではないか、と思います。

なお、今までの意見は一応自分およびその周りにいる理系プログラマに関して言ったものなので文系卒のプログラマの人の数を見たわけではないので考察に近いと思います。

でも思いますが、よほどな職業でも無い限り「文系」や「理系」を分けて見る、なんてことは意味が無いと思います。各学問間でいろいろな要素が行ったり来たりしている(経済学で現象をモデル化する時に数学が必要、とか)ということから考えても系統立てする意味はありますが、なんかこういう分け方をすると「理系」には文系の要素がない、ように見えてしまう(あるいは思い込んでしまう)のは問題だと思うのですが・・・。

 

ちなみに、私は修正案件の方が得意

だったりします。すでに組み上がったところから何が悪いのか、何を直せばいいのかを見つける能力に関してはそれなりに高いと思います。でないとWindowModePatchなんていう「他のプログラムの動作を変更する」というものはかなり作りづらいですからね。プログラマと言うよりはデバッガ的な役目の方が強いですか。もちろん、新規にプログラムを構築することは普通にやりますが、そちらの方が得意である、という意味です。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この記事のトラックバック用URL