私がプログラミングを始めたのは中学校3年生のときでした。父が買ってきたシャープのポケットコンピュータ(PC-1210)でBASICを使うようになったのです。わずか400ステップしか入力できない小さなコンピュータでしたが、それでも自分の命令したとおりに動作するポケコンを見ていると、自分にはなんでもできるようなそんな「万能感」を感じさせてくれました。
それから四半世紀以上たちましたが、私がプログラミングから感じる「わくわく」は少しも減ることはありません。むしろ、どんどん増えているように感じます。長いプログラム経験を踏まえて、いま、感じるのは、
プログラミングは人生だ
ということです。プログラムには人生のあらゆる側面が詰め込まれています。文字どおり、人生そのものといってもいい過ぎではないでしょう。……うーん、やっぱり、いい過ぎかな。
プログラミングはスポーツだ
皆さんの多くは若いときにスポーツに熱中されていたかもしれません。あるいはいまでもスポーツ好きかもしれませんね。スポーツは人生を豊かにしてくれます。少なくともそう聞いています。
あいにく私は子供のときからさほどスポーツが得意ではなかったのですが、それでもスポーツを楽しむ人の気持ちは分かります。そして、プログラミングもスポーツと共通する要素をたくさん持っています。
プログラミングがスポーツだなどというと、懸け離れた印象を持ち、あきれる人もいらっしゃるかもしれません。しかし、例えば西洋ではチェスをスポーツに分類する人もいるくらいで、頭脳を中心とした活動をスポーツと見なすことは決して的外れとはいえません。
プログラミングとスポーツの共通点としてまず考えられるものは、練習と反復による技術の向上です。優れたプログラマになるためには、知識と経験値が重要です。それはまさにスポーツ選手が練習によって自己研鑽(けんさん)するのと同じ構図です。しかも、ときには苦しい練習を彼らは喜んで行うのです。
また、美しさやスピードの追求もスポーツに似ています。優れたプログラマは、自己の「作品」であるプログラムの「美しさ」にこだわります。それはある種のスポーツの「芸術点」の追求に似ています。また、パフォーマンスチューニングするときの、測定とボトルネックの探求、改善は、水泳や陸上の選手と類似の精神構造でしょう。
プログラミングは趣味だ
例えば日本の野球人口に対して、プロ野球の選手になる人はほんのわずかです。多くの人は趣味として野球に接するわけです。同様に趣味としてプログラミングにかかわる人も大勢います。世の中の多くのオープンソースソフトウェアはもともとそのようにして誕生したものがほとんどです。また、プログラムのバグを取る活動は、パズルを解くのと同質の喜びがあります。
一方、プロスポーツ選手とはっきり異なるのは、そんなに好きでもないのに仕事としてプログラミングを選択する人が相当多いことでしょう。スポーツ選手よりもプログラマの方が世の中にたくさんいるからかもしれませんが、個人的にはそれは不幸なことだと思います。
プログラミングはコミュニケーションだ
コンピュータの前に向かうことの多いプログラミングという作業ですが、その多くの部分は意外に人間的です。というのも、いまだにプログラミングそのものを行うコンピュータが登場していないことからも、プログラミングは人間的な活動です。人間にしかできないといってもよいでしょう。
それだけでなく、コンピュータを思いどおりに動かすためにプログラムを作るわけですが、プログラムはあくまでも人間が使うものなので、ヒトが何を求めているか、どのように感じるか、ということが非常に重要な要素になるからです。プログラミングには何が求められているのかを引き出すコミュニケーション力が必要です。また、複数人でプログラムを行うときには、開発メンバ間の意思疎通にもコミュニケーション能力は不可欠です。
プログラミングは創造だ
私がプログラミングを好きで、何年たっても飽きない理由を考えてみると、その最大の理由はプログラミングがクリエイティブな作業であることではないかと思います。
ただ道具としてのコンピュータさえあれば、あとは全く何もないところから、一つの世界をつくり出すことができます。プログラミングの世界には重力や因果など、現実世界に付き物の制約がほとんどありません。このような自由な創造活動は、他に類を見ないでしょう。自分の思うままに世界をつくり出すことができる。それこそがプログラミングの最大の魅力です。
一生プログラミング
プログラミングは、ほかの多くの活動に比較して、体力に依存する部分はそれほど多くありません。もちろん、IT業界の一部で常態化しているという、“徹夜当然”のデスマーチを乗り切るためには、若さと体力が必要かもしれません。
しかし、ほとんどの場合、必要なのは、知識、経験、判断力などで、これらは年齢とともに大幅に低下するようなものではありません。ということは、事情さえ許せば、生涯現役プログラマというのは夢ではないということです。この辺りがプロスポーツ選手とは異なるところです。
しばしば「プログラマ35歳定年説」がいわれることがあります。確かに私の周辺でも30代後半くらいから「めっきりプログラミングしてなくて」という情けない「元プログラマ」が増えていますが、それは能力の低下というより社会的な事情でしょう。優れたプログラマの価値をそれほど認めない日本のIT業界で、年功序列制度による賃金上昇と、職業的価値のバランスが取れなくなる年齢が、35歳くらいということなのでしょう。
事実、海外の著名なプログラマの多くは、年齢を重ねても一線級で活躍している人が珍しくありません。日本でも、私の大学時代の指導教官であった方など、定年で退官した後の方が、事務的な雑事がないから集中できると、ばりばりとコードを量産しています。私もああいうふうに一生現役でありたいものだと思います。
プログラミングは本来楽しいものであり、楽しいからこそ能力が向上し、優れたプログラマになれるのだと私は思います。「仕事だから」とかいう理由を付けて、しかめ面でプログラミングをするのはやめましょう。また、楽しいプログラミングは人生をより実りあるものにしてくれるはずです。私はそう信じています。
Coding Edgeフォーラム トップページ |
Ruby/Rails関連記事 |
プログラミングは人生だ まつもと ゆきひろのコーディング天国 ときにプログラミングはスポーツであり、ときにプログラミングは創造である。楽しいプログラミングは人生をより実りあるものにしてくれる |
|
生産性を向上させるRuby向け統合開発環境カタログ Ruby on Rails 2.0も強力サポート 生産性が高いと評判のプログラミング言語「Ruby」。統合開発環境を整えることで、さらに効率的なプログラミングが可能になる |
|
かんたんAjax開発をするためのRailsの基礎知識 Ruby on RailsのRJSでかんたんAjax開発(前編) 実はAjaxアプリケーション開発はあなたが思うよりも簡単です。まずはRuby on Railsの基礎知識から学びましょう |
|
Praggerとnetpbmで作る画像→AA変換ツール Rubyを使って何か面白いものを作ってみよう! 一般的な画像をアスキーアートに変換するツールを作ってみる。さらに出力にバリエーションを持たせてみよう |
|
コードリーディングを始めよう Railsコードリーディング〜scaffoldのその先へ〜(1) 優れたプログラマはコードを書くのと同じくらい、読みこなす。優れたコードを読むことで自身のスキルも上達するのだ |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|