プログラミングを学び始める方へ

想像以上の難しさを実感

記者がプログラミング学習を始めたきっかけは1年前。社内で新メディアを検討した際、プログラミングを含むWebサービスの知識の必要性を実感したことにある。経済情報をより多くの人に届けるには、デジタルの知識が不可欠――。そう考え、週末に通えるところを探し、上記のスクールにたどり着いた。

学習を始めてまず実感したのが、その想像以上の難しさだった。プログラミングとは、いわば人間からコンピューターへの「命令書」。パソコン上のWebアプリもスマートフォンのアプリも、すべてがプログラミングによって成り立っており、その指示はすべてコード(文字列)で記される。文字を1字間違え、半角を全角にしただけでエラーが表示され、コンピューターはぴくりとも動かない。普段使っている便利なコンピューターが、いかに融通の利かない代物かということを、学習を通じて痛感した。

学習中はとにかく疑問が無限に湧いた。写真を中央に配置するにはどうするか、指示の順序はどう書けばいいのか――。言われたとおりにコードを書いても、思うように動かない。もちろんスクールで基本的な方法は教わるが、週1度の授業ではとてもすべての疑問を解消できない。平日の仕事後、毎晩終電までカフェにこもり、課題提出のためにコードを叩いた。しかしエラーは解消せず、原因がわからない。冒頭に記したような真っ暗なトンネルの中でもがく日々が続いた。

 

ある日、ため息をつきながら帰りの電車に乗ると、スマホのアプリをいじる乗客の姿に目が留まった。頭をよぎったのは、その裏側にある大量の複雑な文字列だった。コンピューターに正しい文字列さえ打ち込めば、これほど複雑なアプリも作れる。そう思うと同時に、それは自分がいる場所とは別世界の出来事のように感じた。

当時、プログラミング経験者の多くから言われたのは、「わからないときはググれ」ということだ。そもそもプログラミングの世界は進化のスピードがすさまじく速い。コードの書き方もどんどん変わる。したがって、「わからないことをすべて人から教わる」姿勢ではとても身に付かない。一生かけて学び、調べ続ける「自走力」が求められると経験者は一様に口にした。

ただ初心者にとってはその「ググり方」が難しい。確かにインターネット上には、多くのコードの書き方が紹介されている。しかし、そのほとんどは「理解している人」が書いており、初心者にはなじみのない用語が多く交じる。各々の用語や概念には膨大な周辺情報があり、どこまでググっても「全体像」を理解できないのだ。部分部分の「正解」をいくらインプットしても、自分が望む作品のコードの書き方、つまり「個別解」がわからない――。私が最初に直面したプログラミングの難しさは、この一言に尽きる。

エンジニアを質問攻めにしたい

上記のような難しさは、私だけが感じたものではなさそうだ。あるオンラインスクールの幹部は、初心者が挫折しやすいポイントについて、「学習の序盤で疑問が山のように湧き、ググってもわからずに行き詰まる人が多い」と教えてくれた。無限に湧く疑問を、何とかその都度解消したい。エンジニアをいつでも質問攻めにできる環境はないか――。そう考え、探したが、そうしたサービスを売りにするスクールは少なかった。

「とくに対面型のスクールのほとんどは、学習の“方法”を教えるのが主で、細かいコードの書き方までは教えない」(別のスクール関係者)。そこには業界の構造的な事情があるという。「今はエンジニアが不足しており、報酬も高額。なので(いつでも質問できるような)労働集約的なビジネスは成り立たない」(同)。

初心者に人気のオンライン講座「Progate(プロゲート)」も2016年夏、エンジニアにいつでも相談や質問できる「プレミアム会員プラン」を導入したが、リソース不足を理由にプランを停止した経緯がある。いつでも質問できる環境が不足していることが、初心者がプログラミング学習を挫折しやすい一因――。これは業界の構造的な課題なのである。

もちろん、学習の初期段階でふるい落とされれば、それまでという見方もできる。プログラミングに限らず、学習に大事なのは何より目的意識だ。あるスクール関係者は「学習を続けられる人は2通り。エンジニアになりたいか、あるいは具体的に作りたいサービスがあるとかの目的を持っている人」と話す。確かに私が通うスクールでも、上記のいずれかの条件に当てはまる人ほど、上達のスピードが速い印象があった。

とはいえ、日中は仕事に追われ、時間的制約がある中、疑問と格闘し続けるには限界もある。何とか工夫の余地はないのか。私は前述のスクールに通いながら、「平日夜にマンツーマンで質問攻めにできる人」を探すため、オンラインのスキル売買サイト「タイムチケット」で、疑問の解消に根気強く付き合ってくれるエンジニアを探した。そこで出会ったある大阪在住のエンジニアは、コードの書き方から、その裏側のコンピューターの仕組みまで、スカイプで懇切丁寧に教えてくれた。

マンツーマンの授業ほど理解が進むものはない――。そう実感したが、ネックは高価格。細かい質問を聞くのに、いちいちレッスンを予約し、1時間当たり5000円近い受講料を支払わないといけない。高コストで、小遣いに制約がある私には、恒常的には利用しにくいものだった。

工夫して抜け出す道はある

ほかにいつでも質問できるサービスはないか。改めて探すと、オンラインスクールではいくつか見つかった。短期集中プログラムを提供する「TechAcademy(テックアカデミー)」もその1つ。学習方法や具体的なコードの書き方を指導してくれる「メンター」に週2回、ビデオチャットで質問でき、それ以外の時間帯もいつでもチャットで質問できることを売りにする。

運営会社キラメックスの伏田雅輝取締役は、「メンターは現役のエンジニアが副業でやっているケースが多い。オンラインで低コスト運営だからこそ、細かい質問に答える労働集約的な対応が可能」と話す。ただし、チャットでの質問は原則としてスクールのカリキュラムに沿ったものに限られるという。ゼロから体系的に学ぶにはいいが、すでに別の方法で学習を進めている場合には、質問できる範囲に限界もありそうだ。

一方、知人のプログラミング学習者に勧められたのが、マッチングサービスの「MENTA(メンタ)」だ。月額制でいつでも気軽に質問できる「メンター」とのマッチングを売りにする。「初心者の悩みは、疑問をその都度解消できないこと。そこでオンラインでエンジニアと学習者をマッチングしようと考えた」と運営会社イリテク創業者の入江慎吾氏は語る。サービス開始後1年半で、ユーザーは1万人を超えたという。「相性がいいメンターと出会えれば学習効率は上がる」と知人が教えてくれた。

ほかにも質問できる掲示板「teratail(テラテイル)」やIT勉強会を探せる「connpass」を使う手もある――。そのような情報も経験者から教わった。学習開始後2カ月を経た私が今はっきり言えるのは、初心者がコードを書く際、疑問の山が立ちふさがっても、「工夫して抜け出す道はある」ということだ。