安易にプログラミングを学んではいけない
最近、とある知り合いに「デジタル領域の知識に自信が無いからプログラミングを教えてほしい」と頼まれました。その知り合いはエンジニアではなく所謂ビジネス職の人ですが、仕事でWebサイト制作の依頼に関わることもあるらしく、課題感を感じているみたいでした。僕自身、最近の関心テーマが「非エンジニア向けのデジタル教育」なので、喜んで依頼を受けました。ちょうど先週から授業みたいなものをやってみています。
しかし、実際に教えようと思うと、「プログラミングを学びたいという非エンジニアの人に対して、まず何から教えるべきか」というテーマはとても難しいことに気付きました。今回はそんなテーマに思いを馳せながら、既存の「非エンジニア向けプログラミング教育」に対する違和感について書きたいと思います。
「プログラミングを学びたい」という人に何を教えるべきか?
「プログラミングを学びたい」という非エンジニアの人に対して、まず何から教えればいいでしょうか。実際に考える必要に駆られてみると、それはとても難しい問題であることがわかります。
そもそも多くの人は、プログラミングというものをどのくらい学ぶとどんなことができるのか、肌感がありません。そのため本人の目的や課題意識から解きほぐしつつ、「どんな知識があれば今の仕事に役立ちそうか」を1から考える必要があります。
また「プログラミング」というテーマ自体が、WebフロントエンドもサーバーサイドもNativeアプリもデータ分析ロジックも業務効率化のための書き捨てのコードも全てを含んでいるので、その中でどれが必要かという取捨選択もあります。
そして何より、「プログラミングを学びたい」と言っている人に本当に必要だった知識は実はプログラミングではなかったという可能性もあります。本人の中でやりたいことが明確にあった場合でも、実はプログラミングはそれを実現するために必要がなかったということもあるでしょう。たとえば、発信のためのWebサイトを作りたいとか自分が作ったものを売るためのECサイトを開発したいという場合であっても、STUDIOやShopifyなどのWebサービスを使えばまさにNoCodeで作ることができます。また、「教養としてデジタル関連技術を学びたい」という漠然とした思いがある人も、いきなりプログラミングを学ぶより、詳しい人に技術の概要を解説してもらった方が近道かもしれません。「プログラミングを学ぶと仕事が効率化できるんじゃないか」という人もいるかもしれません。その人も、普段から使っているExcelやスプレッドシートなどの機能を全て理解した方が、実は簡単に業務効率化ができるかもしれません。
確かにプログラミングができないよりはできた方がきっといい。ただし、「プログラミング」というもので何が実現できるのか、それを学ぶと自分にとってどんな嬉しいことが起こるのか、それがわからないまま「プログラミング学習」を志向してしまう人が多いような気がします。その状況は、少し危険ではないでしょうか?
「非エンジニアでもプログラミングを学ぼう」というコンテンツに感じる3つの違和感
「プログラミング」に憧れがある人は、きっと「プログラミング 学習 初心者」などの言葉で検索します。しかしその検索結果に出てくる記事やコンテンツを見ると、違和感を感じることがあります。その違和感は、主に3つに分類されます。
1つは、やたらとエンジニア転職を勧めてくる点です。別に「プログラミングを新しく学びたい」という大人の全員がITエンジニアに転職したいと思っているわけではないはずです。それなのに、「エンジニアに転職して年収を上げよう!」とか「自由な働き方を実現しよう!」みたいなキナ臭い記事がたくさん出てきて辟易してしまいます。まるでエンジニアこそが人生の勝者で、誰もがその勝者たるエンジニアになるためにプログラミングを学ぶべきだと信じているような論調の記事も散見され、吐き気がします。また多くのプログラミングスクールでも、やはり「エンジニア転職」という目的が一番大きく取り上げられています。実際にそれを目的に学習する人もかなり多いと想像しますが、他の目的を持っている人は肩身が狭く感じそうです。
2つ目の違和感は、内容がWebアプリケーション開発に寄っていることです。実際にはプログラミングによって扱える領域はとても広く、たとえばデータ分析や簡単な業務効率化のためのプログラミングを教えるコンテンツがもっとあっても良さそうです。エンジニアに転職したい人がWebアプリケーション開発から学習し始めるのは納得感ありますが、そうじゃない人にとっては知ったことではありません。あるいは、そもそも「あなたが学ぶべきはことはプログラミングではない」という提案がもっとあっても良さそうです。(もちろん、プログラミング教育を事業にしている企業や個人がそんな提案をするとは思えませんが。)
3つ目は、価値実感までが遠いということです。現状の多くのプログラミング学習コンテンツは、「プログラミングって楽しい」ということを前提としています。そのため、目の前のプログラムが何の役に立つのかわからないまま学習が進んでいきます。プログラミング自体を楽しめる人にとっては、そのプログラムが何の役に立つのかわからなくても関係無いからです。一方、「プログラミングって楽しい」とすぐには思えない人にとって、こうした手段自体を目的とするような作りのコンテンツはつらいものになりがちです。「で、結局この文字列加工や数値計算などのプログラミングが私の仕事の何の役に立つんですか?」という疑問にすぐに答えられるコンテンツがあまりにも少ない(あるいは見つかりにくい)ように感じます。この課題感については、「非エンジニアのためのエンジニアリング」というサイトを始めた頃の僕が過去に書いていました。
僕がこうした3つの違和感を感じたとしても、プログラミング学習コンテンツを作る側が悪だという話では必ずしもありません。実際に「エンジニア転職」や「Webアプリケーション開発」に対する需要が多く、またお金も発生しやすいので、対応したコンテンツが増えるのは当然です。「エンジニアに転職したいなら、プログラミングという手段をまず学ぶべし」というのも理にかなっています。ただし、この世の全員がエンジニアに転職すべきはずは無いので、もっと多様な目的を前提としたプログラミング学習コンテンツ(あるいはデジタル技術学習コンテンツ)が増えて欲しいなあと強く思います。
ちなみに、ここで書いたような違和感を感じている人が他にいないか調べてみたら、「頼むからプログラミングを学ばないでくれ」というキャッチーなタイトルのTechCrunchの記事が見つかりました。2016年の記事で少し古いですが、とても共感したので引用します。
実際、たとえばコミュニケーションや意思決定プロセスの改善によって解決すべき問題を無理やりプログラミングで解こうとしてしまうようなケースは、プログラミングに精通しているはずのITエンジニアたちの間でもよくあります。いわんや、非エンジニアをや。
「プログラミングを学びたい」という人の目的の多様性
色々と言いましたが、「非エンジニアでもプログラミングを学ぼう」的コンテンツにしばしば感じる違和感は、「多様な目的に対して対応できていない」ということに起因しています。そこで、「プログラミングやITについて学びたい」と主張する人の目的にどれくらいの幅がありそうか考えてみしょう。
まずは「エンジニアに就職/転職したい」というものです。前述のように、最も目立つ(企業にとっては最も稼げる)目的です。
次にありそうなのは、「エンジニアや開発業務のことをもっと理解したい」という目的です。たとえばシステムやWebサイトの開発を外部に発注する立場にある人や、自社プロダクトの方向性を決めるプロダクトオーナー職の人は、「そもそも開発業務とはどのようなものか」を理解していた方が有利です。たとえばエンジニアとのコミュニケーションが円滑に進んだり、リスクを正しく判断できたりします。また、エンジニア採用担当人事や経営者などエンジニアのスキルや採用要件を正しく理解する必要があるケースもあります。特に「人事向けエンジニアリング学習」という領域は僕の観測範囲で最近盛り上がっていて、たとえばエンジニアのスカウトサービスを提供するLAPRAS社がよく情報発信していたりします。
次によく聞くのが、Webサイトの運用やWebマーケティングに関わっていて、「Webに関する知識が欲しい」という場合です。業務で自社Webサイトの更新業務に関わっていたら、「HTMLやCSSの知識が自分にあればもっと色んなことができそう」と感じるのは自然なことです。さらにWebマーケティングまで手を伸ばすと、アナリティクスツールの使い方やデータ取得のためのタグ実装、データ分析スキルが当然に求められたりします。なお、広告代理店やコンサルティング系の会社に所属していて、クライアントのWebサイトに関わるというケースもよく目にします。「代理店のWeb関連事業に従事する社員はWebの専門家ではないのか?」と思うかもしれませんが、実際にはWebの仕組みや技術をよくわかっていない人もたくさん観測できます。そうした人も、「Webの知識がもっとあれば仕事の幅が広がりそう」と感じている節があります。
また、ソフトウェアの営業やサポートをしていて、そのソフトウェアの仕様を理解するために技術的な知識を要するということもあります。ソフトウェアの販売を企業向けに行う場合、たとえばクライアント企業側の担当者がシステム部門の人で、細かいソフトウェアの仕様やセキュリティ上のリスクについて質問してくる場合があります。もちろん自社のエンジニアに同席してもらうこともできますが、技術的な領域まで自分でサポートできた方が話が早いでしょう。
特にSaaS業界では利用クライアントの支援をする人を「カスタマーサクセス職」と呼ばれますが、そのカスタマーサクセスへの転職を目指すためのIT教育プログラムなども市場に出てきているようです。こういった目的別のスクールがどんどん増えていくといいなあと思います。
他にも、ビジネスモデルの変化を掴むためにデジタル領域の知識が欲しいとか、単に目の前の業務効率化したいなど、多様な目的があります。重要なのは、「プログラミングを学びたい」と言っている人のほとんどは、実はプログラミングを学ぶこと自体を目的とはしていないということです。考えてみれば当たり前ですが、これを忘れてしまうとプログラミングという手段が目的化し、本質を見失ってしまいます。
その目的は、本当にプログラミングをしないと達成できないか?
目的やそれに費やせるコストによっては、実際にプログラミングを学習した方がいいという可能性はもちろんあります。ITエンジニアに転職したいけどプログラミングは学習したくないというのは、ちょっと何を言っているかわかりません。開発業務を深く理解したいだけであっても、実際にプログラミングを体験してみるのが一番かもしれません。Webマーケティングを仕事にするなら、JavaScriptが書けた方が圧倒的に仕事の幅が広がります。
しかし、プログラミング学習を1から真面目にやろうと思うと、実際にはかなりの時間とそれなりのお金がかかります。主要なプログラミングスクールに通うのにかかる費用は、だいたい15〜30万円くらいです。また未経験者がITエンジニアとして仕事をするレベルになるには、一般に約500〜1,000時間の学習時間が必要とされています。あまり知識も無い状態でプログラミング学習という高い高い山に登り始めるのは、それなりにリスクがあります。
何度も言うように、「プログラミング学習をしたい」と思っている人の真の目的に対して「プログラミング」が最良の解決策ではないということは、往々にしてあります。教養を身に付けるだけなら手を動かす前に本を読めばいいかもしれません。簡単なサイトを作りたいだけならサイト構築サービスを使うだけですぐに実現できます。業務効率化したいなら、Zapierなどいい感じのSaaSを導入してその使い方を極めた方が早いかもしれません。
安易にプログラミングを学び始める前に、「プログラミングとはどういうときに必要で、それを学ぶことで何ができるようになるのか」を理解することが重要です。それを知った上で「それでも自分にはプログラミング経験が必要だ」と思ったタイミングで初めて、学習を始めるべきではないでしょうか?
とはいえ、その「プログラミングとかエンジニアリングとかデジタルとかいう言葉で表されるよくわからない世界」に対してどうエントリーすべきかは、人によってかなり違います。そんな「勇気ある越境」をサポートする人が増えると、エンジニア転職色の強いプログラミング学習コンテンツに惑わされる人も減らせるんじゃないかと想像します。まずは僕がそんな存在になりたいなーと思って日々色々と活動してますので、「興味はあるけど何から始めればいいかわからん」という人は、怪しい者ではないのでぜひお気軽にDMください。
ここから先は
仕事を楽しくするデジタルリテラシー読本
【初月無料】デジタル時代の歩き方について考えたことを発信します。ソフトウェアの時代とは何か。エンジニアの頭の中はどうなっているのか。NoC…
サポートをいただけると、喜びドリブンで発信量が増えます!初月無料のマガジン『仕事を楽しくするデジタルリテラシー読本』もおすすめです!