明日のご飯に困らないプログラマーの勉強法

プログラミングは、語学である。

中学英語で、"Would you ...", "Could you ...", "May I ..." など許可を求める表現を習うが、英語のない生活をしている方で、それぞれの違いを明確に答えられる人はそれほど多くないと思う。

当時の英語のテストで正答できたかもしれないが、日常生活で使わないものは忘れてしまうのである。

逆に、日常生活で使わざるを得ないものは、才能問わずある程度までは使えるようになる。
少なくとも私自身は、才能はないがある程度まで使えているため生活をできている自負がある。

使わないと忘れてしまう点のほかに、語学であることを留意する必要がある点があり、それは、

「プログラミングを技術にすると、代わりがきくようになる」

ということである。

プログラミングはあくまで全工程のいち作業である。

そのいち作業のスペシャリストが必要なことは否定しないが、プログラミングでご飯を食べることを考えると、年齢と共に俯瞰した物の見方が求められる。
(上流工程に進まずとも、上流を見渡した下流工程に従事することが求められる)

プログラミングなしでソフトウェアは成り立たないが、
プログラミングのみではビジネスが成り立たない。

英語を話せるだけでは仕事がないのと同じで、
・ビジネスパースン向けの会話ができる
・スポーツ実況ができる
・宗教上、政治上でのセンシティブな場面で通訳ができる

など、ニーズがあって初めて語学が活きるシーンが生まれる。

自戒の念も込めて、プログラミングは語学であることを残しておきたい。


所詮は人間のために考えられたもの。

2014年6月2日、WWDC で新言語「Swift」が発表されました。

4Sあたりから携帯国内2キャリア(Softbank, au)、%sからdocomoも加わり、日本ではスマホ比率の圧倒的に高いiPhone。

2〜3年かけてやっと使えるようになったObjective-Cから、また新しい言語を覚えるハメになるのかとげんなりする人もいるだろう。

ウェブ業界でも、PHPにネームスペースの概念が加わったり、関数型言語の影響でクロージャの実装されるなど、日々勉強すべき課題は常に与えられている。
(逆にレガシー技術で忘れてよい・ライブラリ化されて実装不要なものも生まれている)

勉強しなければいけないプレッシャーと真面目に向き合っていると、いつか疲弊する。
そして、過去の杵柄で標準関数を自作したり、.NETの時代にVB6で構築を提案したりする大人になってしまう。(さすがにもういない?)

そんな時に救われる魔法の言葉が、「所詮は人間のために考えられたもの」

新しいものには、過去のリスクヘッジか、未来の手間の軽減が必ず含まれている。

人間様が楽になるために新しいものが生まれたのだ、と大きく構えて取り組むことをお勧めする。

オブジェクト型言語から関数型言語へのパラダイスシフトはあっても、
所詮は人間の都合のいいように作られているので、気負いしなければ案外何とかなるものである。


局所疲労を累積しないように。

プログラマーは目が命!

新人研修で「電車の中でも寸暇を惜しんで本を読め」な教訓を与える会社が多いが、経験上の結論として、得られる知識より、失われる集中力と疲労感によるデメリットの方が大きい。

そもそも、満員電車で不格好な姿勢でオライリーみたいな重い書籍を必死に読むくらいなら、30分早い電車に乗って、コーヒーでも飲みながら10分勉強するほうがよほど身につくだろう。

始発駅からある程度座ってられるにしても、微振動の絶えない車内で細かい文字を追うことが快適であるはずがない。
(我ながらよく素直にしたがっていたものだと今でも思う)

それでも寸暇を惜しんで本を読まずにいられない方へは、単語帳ぐらいの大きな文字で書かれたものか、中谷彰宏くらい読みやすいものを選ぶことをお勧めする。


話したいから話す状態がベスト。

プログラミングは語学であることは先述したが、日常会話でも話をする気分でないときは話をしたくないことと同様に、プログラミングにおいても書きたくない・勉強したくない瞬間が存在する。

日常的に使わないといけないものに嫌悪感まで抱いてしまうと勉強どころの話ではないので、心の声には素直に耳を傾けて、やりたいときはやればいいし、やりたくないときはしばらく離れてみるとよい。

ITなんて聞こえのよい言葉に集約される職種だが、求められる部分は思いのほか自分自身の人間味と向き合い折り合いをつけていくことだと思っている。

やりたいことやって欲求みたせてご飯も食べられる、なんて素晴らしき世界。

みんなの読んで良かった!