基礎的な学力を表す言葉として読み書きそろばんという言葉があるが、
私はプログラミングについても読み書きそろばんに当たるものがあると思っている。

1. 読み
まず読みというのは、プログラムを読む能力である。
たまに、人の書いたソースを見て、すぐに
「全面的に書き直さないと使い物にならない」とか、
「グチャグチャですよ」とか、
「気持ち悪い」といったことを口にする人がいるのだが、
多くの場合、なぜそのように感じるのかを聞いてみると、
単に自分が今まで書いてきたコードと違ったスタイルで書かれている、
ということだったり、ごく一般的なデザインパターンが使われているのに、
そのデザインパターンを自分が知らないだけで
「わかりにくくて読めない」などと言っていたり、
人のコードを使い物にならないと簡単に口にする人であればあるほど、
その人自身が使い物にならない、という傾向がある。

もちろん、全体の整合性を取るためにスタイルを合わせたいとか、
自分色に染めつくしたいとか、そういう感情はある程度、誰にでもある。

だが、それと、人のコードが「読めない」「使い物にならない」こととは、
まったく意味の異なるものである。

ある程度習熟したプログラマーであれば、どんな人が書いたコードでも
相手に合わせて読むことができるし、
どんな複雑なフレームワークから構成されるソースコード群でも、
すらすらと読んで理解してしまうものである。

逆に、そう簡単には人のコードを悪く言わない人が
「これは使い物にならない」という時の重みには、相当のものがある。

2. 書き
特にオブジェクト指向言語を扱っている人で、たまに出くわすのが、
「クラス図がないと書けません」とか、
「詳細設計なしでプログラミングを始めるなんて不可能」などと言う人である。

思うに、プログラムを「書く」ことには大きく二つのレベルがあり、
一つはほぼ設計が確定しており、
後は繰り返しと条件分岐と単純な四則演算と基本的なAPIコールの組み合わせで
書けるレベルまで仕様が落とし込まれていれば「書ける」という人で、
これは厳密にはプログラムを書けるというより、タイピングができる、という方が
正しいかもしれないが、「Servlet/JSPを5年書いてました」というような人で、
実際にこういうレベルで「プログラマー歴5年」などと
名乗っている人もおり、面接などでこういう人と出くわすと、
コーディング面接をしようにも入り口でいきなり躓いてしまい、
椅子からずり落ちそうになることがある。

もう一つのレベルは、というより、
普通に「書く」とは本来このような意味だと思うのだが、
作り上げたいもののイメージさえあれば、
それがフレームワーク周辺部分だけで数十万行を超えるような
ある程度の規模のソフトウェアであっても、
頭の中で全体のつくりを組み立て、
サクサクとつくり始めることができるレベルである。

もちろん、業種や開発手法によっては
このような開発スタイルが許されない場合もあるが、
やろうと思えばこのようなスタイルで開発していくことができる、というのが
「書き」の基礎能力になるのではないかと思う。

3. そろばん
プログラミングにおける「そろばん」には、二つの種類があると思う。

一つは、論理的思考能力である。
たまに、「とりあえず動いたのでこの方法で行きます」とか、
「よくわからないけどこの箇所をコメントアウトすると動きます」
というような発言をする人がいるのだが、
このような対応は、一時的に問題を回避できたように見えて、
後でその何十倍もの重要な問題を引き起こす可能性が高い。

やはりプログラマーとしては、
どの箇所を修正するとどのような理由で問題が修正される、
あるいはパフォーマンスが向上する、
ということを筋道立てて説明できることが必要で、
とりあえず動きました系のことをする人というのは、
数学のテストで証明の過程を書かずに
いきなり「何となく直感で答えは5」と回答しているようなものである。

もう一つは、「そろばん」という言葉そのものがあらわす数学的能力で、
特に3D系のプログラム、グラフィック系の座標計算、
アルゴリズム系のコードなどを書く場合には
数式が出てくることが多くなるが、
先述の論理的思考能力と比べると、
こちらの意味でのそろばんの能力が基礎能力として求められるケースは、
常に、というわけでもないかもしれない。

読み書きそろばんはすべての基礎
開発環境を最新のものにするとか、新しい言語の学習を始めるとか、
これらのことは、それ自体何も悪いことではない。

ただ、やはり、少なくとも一つの言語で、
読み書きそろばんの基礎を作ることが最優先だと思う。

例えばJavaをメインの言語としている人が、
Javaの基本的な読み書きそろばんのできぬうちに
「Lisp始めました」「個人用Tracを家に入れてます」などと言ったところで、
ふーん、そうですか、という印象しか与えないし、
毎日ネットサーフィンして様々な最新技術の概要を知っていたところで、
それ自体は知識としては価値があるかもしれないが、
それらを活用してあなたはどんなものを作り上げることができるのか、
というプログラマーに向けられる問いに答えることはできない。

というわけで、やはり読み書きそろばんが大事だと思うわけです。


■ 関連エントリ
諸君 私はプログラミングが好きだ




My Job Went To India オフショア時代のソフトウェア開発者サバイバルガイド
Chad Fowler
オーム社
売り上げランキング: 112841
おすすめ度の平均: 4.5
4 一読の価値アリ
4 プログラマであり続けたい人 必読
5 輝かしい未来を創る仕事
5 実は技術者心得帳
5 プログラマ必読