文系学生がプログラマーになるまで

こんにちは。SUNABACOスタッフのしょーやさんです。

普段はJavaScriptを使ってWebアプリやスマホアプリを開発したりDjangoを使ったり、プログラミングスクールの講師をしたり、プロダーツプレイヤーをしたり、プロの写真屋さんをしたりしてます。

開発のお仕事ではReact Nativeを使ったスマホアプリの開発やDjangoを使ったWebアプリの開発を小規模なチームで行っています。チャットができるライブストリーミングアプリ(YoutubeLiveみたいなもの)や地元の飲食店さんや交通事業者さんのお役に立ちたいという思いからトヨタ自動車九州さんと共同開発をしたスマホでお弁当を注文・決済が出来るテイクアウトアプリなどを今までに作っています。他にもWordPressを使って災害時に役立つWebサイトを作ったりしています。

今回はプログラミング学習中の方やこれから始めようとしている方、プログラミングって聞いたことあるけど何の役立つの?と思ってる方へぼくのこれまでのプログラミング履歴をご紹介できればと思います。

文系学生でした

今でこそReact Native, React.js, Djangoなどで開発をするようになってソフトウェアエンジニアとしてお仕事することが増えてきましたが、元々は経済 / 経営学部に進学してがっつり文系学生でした。大学でちょっとだけプログラミングを触ったことはありましたがSUNABACOのプログラミングスクールに通うまで本格的に勉強したことはなかったです。
「今からでも間に合うかな?」「自分には難しいかな?」って思ってる方に一番最初に伝えたいのは、ぼくのプログラミングのスタートラインは多分みなさんと同じかそれ以下だったことなにかを始めたいと思った時が最速であるということです。

ぼくは自身の経験から文系学生にこそプログラミングを学習してもらいたいなって思ってます。その理由の一つに文系学問とプログラミングの相性がものすごくいいことにあります。「マーケティング×プログラミング」「組織経営×プログラミング」「法律×プログラミング」「英語×プログラミング」といったように「なにか×プログラミング」という価値がいま注目されていると思います。
まず知ってもらいたいことは、プログラミング学習で最も大事なことはコードを書けるようになることではなく、物事を細分化して課題を見つけそれらを解決する能力を身につけることにあります。
マーケティングではユーザーの動きを細分化し市場の課題を見つけ次の売り上げに繋げる施策を考えて実行すること。組織経営ではメンバーの動きを細分化しチームの課題を見つけ動きをよくしていくための施策を考えて実行すること。
これらの事例はそのほかのお仕事全てに共通する部分であり、これから社会に求められる人材の特徴の一つとして挙げられると思います。それは自ら考えて自ら行動できる力です。考えるところまでは出来てもそれを世の中に実装するところまではなかなか辿り着けません。
さらにプログラミングはインターネットを通じて世界中の人々へ価値を提供することが可能です。自分で考えたことを実際に世の中に出すことができる手段の一つとしてとても有効なのです。

何回も挫折しました

プログラミング学習でよく聞くワードとして「挫折」というものがあります。「独学で挫折した」「業界に未経験で入ったけど分からず挫折した」など色々あると思います。その数だけを見ると「大丈夫かな?」と思うかもしれませんが、これはより多くの人が挑戦しているからこそよく聞くワードなのかなと思います。プログラミングに限らず何かを始める時、誰しもが初めてで初学者だったはずです。ではどうやってそこから出来るようになったのか?今回はぼくの経験を書きたいと思います。挫折の原因は教材や聞く人がいなかったなど色々な環境があると思いますが、ぼくも大きく3回の挫折を味わいました。

1回目の挫折は高校1年生の時。初めてパソコンを買ってもらって動画を見るだけだと勿体ないしプログラミングをやってみようと思って本を買いましたが、プログラミングをするための準備 “環境構築” というものが出来ず結局コードを1文字も書くことなくその本をそっと閉じました。それからというものニコニコ動画やYoutubeなどに入り浸る日々でした。(プログラマーになって久しぶりにその本を見たときには余裕で理解できる内容でした)

2回目の挫折は大学の必修の講義でした。いきなり”オブジェクト指向”という内容をやらされて訳も分からず先生のコードを書き写すのみ。何が楽しいのか分からず先生が言ってる内容も全く理解できないので諦めました。

3回目の挫折は、大学生の時にネットで知り合った人から1回Webアプリ開発の案件をもらったことがありました。高校生の時からの知り合いで「ITに興味がある」とざっくり相談してた人で、機会があって声をかけてもらいました。
圧倒的学習不足で人に聞くこともできず手も足も出ず納品ができませんでした。めちゃくちゃ謝りました。この時「自分にはプログラミングは無理かもしれない…」と痛感した瞬間でした。

これらの経験を通じて思ったことは学習環境ってなにより大事だなということです。
学習中に躓いた時。案件中にどうしようもなくなった時。誰かを頼れるという安心できる環境ってめちゃくちゃ大事だなと心の底から思いました。
これは今も大事にしていることで、完成物を作ったことがない初めての技術を使って開発をする際にTwitterなどでその道の人をフォローしてリプをして交流させてもらったりしながら、いつか本当に困った時にヘルプのDMができる環境を自分で作っています。
コミュニティに属することも大事だなと思います。コミュニティでヘルプを出して助けてもらえるかもしれないし、普段から知っている人が困ってたら自分も助けられる機会があるかもしれない。安心して挑戦できる環境ってとっても素敵なことだなって思います。

初めてのスクール

大学生も終わりに近づいた頃、ふと「自分でサービスを作ってみたいな」と思いました。
その時は男性用コスメのECサイトを作りたいと思っていたのですがどうやって作ったらいいのか一切分かりませんでした。大学の講義でたまたまSUNABACOの代表を知っていたので思い切って相談のDMをしてみました。その時にこんなものを作りたい!と言ったら「君はプログラミング出来る?」と言われて「出来ません…」と答えました。やっぱりプログラミングが必要なんだな…と思いました。
「沖縄でプログラミングスクールをやってるから来たら?」と言われて「なんなんだろうそれは」と思いました。ぼくはその時、世の中にプログラミングスクールというものがあることすら知りませんでした。
大学4年生で時間は有り余っていたので物は試しということですぐに飛行機のチケットを取って沖縄に行きました。
今思えば「人生は常に最善の選択をしている」とはまさにこのことなのかなと思う大きなターニングポイントでした。

スクールにはぼくより年齢が上の人も下の人もいる。色んな経験を持った人がいる。みんな同じ方向を向いて学習している。全てが新鮮で刺激的でした。ぼくはそこで初めて体系的にプログラミング学習をしました。一人じゃないからということもあり、とても楽しかった記憶があります。なにより良かったのはいつでも聞ける人がいるということ体系的に組まれたカリキュラムがあるので大きく逸れることはないという安心感があったこと。この安心できる環境。なのでぼくは一切質問をしませんでした。
カリキュラムの内容に沿っていけばある程度ひとりで突っ走ってもいいんじゃないかと思ったプラス聞ける人がそばにいていつでも分からないことを聞ける状況だからこそ自分の限界の限界まで挑戦できると思い、スクール期間中は結局1回も質問をしなかった気がします。時間は有り余ってましたから無限に挑戦ができました。指定した場所のGoogleマップをHTMLに入れるのに8時間費やした日もありました。データベースに文字列をinsertする際に文字化けが発生してそれを解決するのに2日ぐらいかけました。でもそれらの時間は決して無駄ではなかったと胸を張って言えます。自分で考え抜いた時間と経験は誰にも奪われることのないかけがえのない資産なのです

後から聞いた話ですが質問がなさすぎてスクールの内容を理解できてるのかどうか講師は分からなかったそうです。皆さん、適切なコミュニケーションは必要です。
適切な質問はしましょう。「どこまで分かっててどこから先がわからないのか」「何がしたくて、何をして、結果どうなっているのか」この2パターンの質問はめちゃくちゃ大事です。自分の思考の整理にも繋がりますし、仕事だとチームメンバーに自分の状況をシェアすることができます。質問をすることは悪いことではなく、とっても大事なコミュニケーションなのです。会話のきっかけにもなります。誰かと繋がれるチャンスでもあります。
自分で挑戦すること、他人の時間をちょっとだけもらってコミュニケーションを取ること。どちらも大切だと思います。個人的には時間が許す限りは自分で挑戦することを選択しています。仕事の場合は納期もあるのでTwitterに開発状況をちらっと呟いたり、全部は聞かなくても時々チームの分かる人やTwitterで繋がった人に質問するようにしています。そうやって自分の状況をシェアすることは意識的に行っています。

初めてのプログラミング。カリキュラムがあるとは言っても内容自体が難しい場合もありますよね。
ぼくもスクールのカリキュラムの内容を当時100%理解していたかと言えばそうではありません。理解度はだいたい60%ぐらいでしょう。「何を言っているんだこの講師は…」となる時も多々ありました。ぼくはそんな時深く考えすぎないようにしています。「なるほど、そんなもんなのね。まだよくわからんけどとりあえずいいや」と。リバースエンジニアリングというか、まずは写経なりなんなりをして動くものを実際に手元のPCで作ります。この時点では理解できてなくてOKです。まずは完璧よりも動くものを作りましょう。
理解はそのあとからでいいと思います。「このコードがこう動くからこういう原理なのね!」という理解パターンが個人的には圧倒的に多いです。いきなりドローンを作ってくださいって言われても難しいじゃないですか。でも完成品を分解してパーツに分けて仕組みを1つずつ理解していくとあら不思議。いつの間にかドローンが作れるようになってるかもしれません。
理解のアプローチは人によって向き不向き・考え方の違いはあるので、学習中に躓いてどうしても理解が進まないという方は参考にしてみてもいいかもしれません。
あとは「他の人が出来ているんだからやってれば自分も出来るっしょ」と考えています。人それぞれ習得スピードに違いはあれどいつかは出来るようになるだろうってなんとなく思ってます。自転車と一緒だと思います。最初はこけまくってもいつか乗れるようになります。挫折しそうになった時は楽観的に考えてみるのもいいかもしれません。

学習のモチベーション

なぜひとりだと続かないんでしょうか。
挫折を理由の一つに「モチベーションが保てない」ということがあります。どんなことでもそうですよね。目的が見出せないと続けることは難しいです。

稼ぐ。リモートワークがしたい。とっても大事なモチベーションです。ただ絶対忘れて欲しくないのは「仕事は他人とするもの」ということです。他人の困りごとを解決する。ありがとうと一緒にお金をもらう。困りごとを解決するためのツールの一つとしてプログラミングがあるということです。

SUNABACOのスクールでは「誰のどんな課題を解決するためにプログラミングを使うのか。その課題を解決するためのツールは本当にプログラミングなのか?」ということを問い続けます。また、コードを書いてプロダクトを作ることだけがプログラミングの魅力ではなく「人々はいまどんなことで困っているのか。なにが原因なのか。そのための解決策はなにか」を考えられる力を身につけることができるのも魅力の一つです。ぼくがプログラミング学習をおすすめする理由は圧倒的にこれです。将来的にコードを書く仕事がなくなったとしても、人の困りごとを見つけることができてそれを解決できればその力が一生仕事になります
ここが意識できていると自分は今何のためにプログラミング学習をしているのかを認知できるのでモチベーションが保ちやすくなります。

もう一つモチベーションを保つ方法を書いておきます。それは小さな成功体験を積むことです。
どんな小さなことでもいいです。ごぼうの下ごしらえが出来るようになったことでも、豆腐を綺麗に等分できたことでも何でもいいです。ごぼうってどうやって下ごしらえするんだろう?豆腐の大きさがいつもバラバラ…。分からない…ってなりますよね。
今の自分に出来ない・知らないことが出来るようになる方法があります。Google検索をすることです。

今の自分に出来ないことが他の人には出来ていることがあります。むしろその事の方が多いでしょう。
検索窓に「ごぼう 下ごしらえ 方法」を書いてみましょう。するとどうでしょうか。今まで知らなかった情報を知ることができます。めちゃくちゃ丁寧に解説されています。それを読みましょう。そして実行しましょう。すると出来なかったことが出来るようになります。
検索して一発で出来るようにならないかもしれません。試行錯誤をしましょう。手と脳みそを動かしましょう。そしてまた検索をしましょう。新しい情報を見つけましょう。自分で情報を取りに行きましょう。

試行錯誤をしまくった結果「出来た!!」という体験はないですか。生きているうちに1回はあるでしょう。たぶん。
その時ってめちゃくちゃ嬉しくないですか?もっとやりたい!もっと知りたい!ってならないですか。これってプログラミング学習中にも頻出します。
プログラミングのエラーは基本的に英語で出てきます。英語を読むのはしんどいですよね。Google翻訳やDeepL翻訳を使いましょう。読めます。エラー文をGoogle検索しましょう。同じエラーで悩んでいる人が地球上にたくさんいます。現に同じエラーの解決策がGithubのissueなどにたくさん書いてあります。エラーの答えはだいたい検索の先にあるのです。そうやって手と脳みそを動かしまくって試行錯誤しまくってエラーを解決できた時には、そりゃもう脳汁ドバドバですよ。ドーパミンが溢れて止まりません。快感です。
これがプログラミング学習のモチベーションに繋がります。自信にもなります。プログラミング以外でも「検索すればいけるんじゃね?」って思えるようになります。この感覚を持った時、個人的には人生の幅がちょっと広がった瞬間でした。

学習に魔法はない

最後になりますが、学習に魔法はないです。一つ一つを丁寧に地道に積み上げていくしかないです。そのためには仲間とモチベーションが必要です。ひとりだとできないかもしれない、けどみんなと一緒なら出来るかもしれません。コミュニティは大事です。

ぼくはプログラミングを始めてから3年ちょっと。ずっと泥臭くやってきました。検索しまくりました。情報を取り続けました。脳みそがちぎれるまで考え抜いてきました。とにかく動くものを作ろうと手を動かしまくりました。
まだまだ出来ないことの方が多いのでこれからも続けていくでしょう。プログラミング以外のことでもずっとこうやって泥臭くやっていくでしょう。その結果、自分の出来ることが増えて人の困りごとを解決できてその人が笑顔になってくれてありがとうって言ってもらえてお金も貰えるなら最高じゃないですか。

そしてなにより、安心して挑戦できる環境を作ってくれた人と周りの仲間、コミュニティの皆さんに感謝しています。

ぼくのリアルなプログラミング履歴。プログラミング学習中の方、これから始めようとしている方。プログラミングってなに?と思っている方へ。届けばいいなと思います。Twitterは寝てる時以外だいたい見ているのでいつでもリプください。だいたいなんでも答えると思います。

SUNABACOのスクールでは他にも色んな体験を持った講師がたくさんいます。
北海道江別市、東京都日本橋、香川県高松市、熊本県八代市、沖縄県沖縄市コザ、オンライン。拠点もどんどん拡大中です。
プログラミングスクールやデザインコースなど様々なコースの受講生を常時募集しています。募集中のコース・詳細はWebサイトをご覧ください。締め切り過ぎてても間に合うかもしれないのでぜひご連絡ください。
ぼくらはあなたのその一歩と一緒に歩みます。

https://sunabaco.com/#school