%E3%80%8C%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AF%E7%B0%A1%E5%8D%98%E3%81%AB%E5%AD%A6%E3%81%B9%E3%82%8B%E3%80%8D%E3%81%AA%E3%82%93%E3%81%A6%E3%81%93%E3%81%A8%E3%81%AF%E3%81%AA%E3%81%84%E2%80%95%E5%A5%B3%E6%80%A7CTO%E3%81%8C%E4%BD%93%E9%A8%93%E3%81%8B%E3%82%89%E3%81%AE%E3%82%A2%E3%83%89%E3%83%90%E3%82%A4%E3%82%B9

「プログラミングは簡単に学べる」なんてことはない―女性CTOが体験からのアドバイス

編集部: 寄稿者のKate Rayは最近Wordpressに買収されたビジュアル・ウェブページ制作ツール、scroll kitの技術担当共同ファウンダー。

私の経験によると、これからプログラミングを始めようという人間にとってもっとも危険なことは「プログラミングなんて簡単だよ」と聞かされることだ。

このときあなたの頭の中では次のようなプロセスが進行する。

〔下は筆者のイラスト〕

プログラミングは第2の識字能力だ! 子供だってプログラミングできる。 誰だってできる。
それに私は頭がいい!
…なんでプログラミングがさっぱり学習できないんだ?

簡単だって言われたのに。
私は向いてないのかも。
それとも私は本当は頭が悪かったの?

rage-programming2

お断りしておくが、私のプログラミングはイラストよりマシだ。

ほとんどの場合、プログラミングには特別な能力は必要ない。しかしプログラミングというのは他のあらゆる仕事に比べてはるかに苛立たしく、めちゃくちゃな作業だ。スマートですっきりした効率的なプログラミングが学べると約束するブログ記事、教室、アプリが溢れている。

そういうバラ色の約束には、プログラミングを始めるにはまず第一にそれに適した環境を設定するという大事業が必要だという注意が抜けている。はっきり言っておくが、どんなに親切なプログラマーの友人でもこの点では助けにならないはずだ。というのもこの作業は頭がおかしくなりそうなほど苛立たしい上に、一旦終えてしまえば誰も細かいこと覚えていないからだ。

誰も教えてくれない秘密は他にもいろいろある。たとえば、プログラミング能力の非常に重要な部分はGoolgeに正しい質問をし、発見したコードのうちどの部分をコピー&ペーストしたらいいか見分ける能力だ。プログラミングには「これで免許皆伝」などというレベルなどないことも誰も教えてくれないだろう。迷子になったような、自分がバカに思えるような精神状態はプログラミングに必然的に付随する。

この冬、私はiOSを勉強することにした。私は夏休みに独学でプログラミングを学んだので、新しい言語を習得する能力にはいささか自信を持っていた。問題は、それがどんなに辛いか忘れていたことだ。まずXcodeに面食らった(これ、なによ? 子供向けの絵本じゃあるまいし、こんなの本当のプログラミングじゃない)。その後で始めたいくつかプロジェクトはどれも私のレベルでは手に負えないものだとわかった。iOSはウェブ・アプリの開発とはまるで違うことが次第にわかってきた。私が「これは難しいだろう」と思う部分はやさしくて、やさしいはずの部分に際限なく手間取った。

私が忘れていたのはプログラマーの生活には「準備不足感」が付き物だという点だった。プログラマーが学ぶべきことには際限がない。一つの言語なりフレームワークなりに習熟することはできるかもしれないが、何か役に立つものを作りたかったら常に新しいツールが必要になる。絶えず自分の不慣れな分野に踏み込んでいかねばならない。自分がバカに思えるという状態に慣れておく必要がある。

著名な心理学者、ミハイ・チクセントミハイは学習過程を、退屈と不安の間のジグザグの歩みとして巧みにグラフ化した(どんな分野の学習にも当てはまるだろう)。

anxiety-boredom-3

Adapted from an image in “Flow: The Psychology of Optimal Experience”

私がプログラミングを学んだ過程を思い出してみるとまさにこの通りだった。

  1. ステップバイステップのチュートリアルをよくわからないところがあっても忠実にフォローしていく。作家志望者が巨匠の文章を丸写しにタイプして勉強するようなものだ。これで言語/フレームワークがどう働くのか感じがつかめてくる。この段階は比較的やさしいが退屈である。[楽観的状態。進歩は速い]
  2. チュートリアルで作ったサンプルを少し変えてみる。すると分からないことだらけだと分かる。 [恐れが忍び寄る。進歩は遅くなる]
  3. ごくシンプルだが自分が作りたいものを作ろうとする。すると自分がほとんど何も理解できていなかったことを知る破目になる。 [絶望の海に投げ込まれる]
  4. 自分のプロジェクトにより関連の深い別のチュートリアルを見つける(うまくいけば背景となる学んでいる言語の知識を増やしてくれる)。またステップバイステップで学ぶ。[少し理解できた気がしてくる。多少の自信]
  5. サンプル・プロジェクトを少し変える。 [また恐怖]
  6. 新しいプロジェクトを始める。 [また絶望]
  7. 1に戻って繰り返す。

私はチュートリアルの大ファンだ。上記のプロセスを繰り返すうちに、私は推薦するプログラマーをベースにベストなチュートリアルをリストするアプリを作った。このアプリが自分に合ったチュートリアルを見つける手助けになればよいと思う。

フラストレーションに耐えて努力を続けていれば、やがて見晴らしのいい場所からそれまで登ってきた道を振り返ることもできるだろう。理解できないことが多くてもかまわない。自分が進歩しているのかどうか分からなくても、進歩していると信じて進もう。焦りは禁物だ。 幸運を祈る。

Teach Yourself To Codeで学ぶことを可能にしてくれた Shuttleworth Foundationとこの記事を書くのを助けてくれたCody Brownに深く感謝する。

Kate Ray – Scroll Kit from WeWork on Vimeo.

[原文へ]

(翻訳:滑川海彦 Facebook Google+

広告

blog comments powered by Disqus

コメント

anonymous
デバイスが曲がってしまうこと自体、(動作に影響がなかったにせよ)精神衛生上にも良くないですし、モバイ…
vaidurya
参考:スティーブジョブズ188cm,ティムクック190cm…わかるだろう?ぼくは今日Androidス…
vaidurya
Chromebookだと「フルHDで329ドルしかも東芝製」なんてものもあるんだよね。
神崎渉瑠
ネットワークドライブに保存するなら、上り速度が5MB以上だろうな、やっぱり。となるとADSLは全滅と…
Akira Miyamoto
すげえじゃん!!でもいまんとこいろいろ信用できないからいらないです
フォロー

新しい投稿をメールで受信しましょう。

Join 125 other followers