こんにちは。ホーさんといいます。
今日は、ALIS Boot Campというサービスの開発メンターをさせて頂くことになりましたので、そのご報告をさせていただきます。
ALIS Boot Campてなに?という方はこちらの記事をご覧ください。
簡単にいうと、ALIS(このブログプラットフォーム)のアンバサダーであるワインさんが立ち上げた、ALISブロガーやプログラマーのためのメンタリングサービスです。
私がメンター(指導側)としてお声をかけていただいたのは「Hacking Boot Camp」という、初心者プログラマーのためのメンタリングサービスです。これはエンジニアになるためのプログラミングスクールではなく、ALISでやりたいこと/作りたいものがあって、そのためにプログラミングを学びたい(けれど周りに聞ける人がいない)という方に、プログラミングをお教えしたり、学習のアドバイスをするようなサービスです。決まったプログラムに沿ってプログラミングを学習するものではなく、ALISCHOOLで進めている相互学習支援の延長で、作りたいものをプログラミングによって実現するための、よりしっかりとしたサポートを行います。億ラビットくんも将来的に開発メンターとして参加予定ですが、まずは第一弾で私がメンターとして活動を始めることになりました。
"作りたいものをプログラミングによって実現するために勉強する"と良いのは、その方が達成感を積み重ねることができるので挫折しにくい(あと単純に楽しい)からです。「遅延評価勉強法」と呼ぶ人もいます。
"遅延評価勉強法とは、「その知識が必要になった時に初めて勉強する方法」です。もっと言えば、「○○を学んだから××をやってみる」ではなく、「××をやりたいから○○を勉強する」と定義できます。"
上の記事中にもありますが、日本の義務教育では何のために勉強するのかがよくわからないまま勉強しているので楽しくないと感じる人が多いと思います。ところが一転して社会に出てみると、仕事のために様々な知識が必要で、なんなら仕事以外でも色んなことに興味が湧いてきて、むしろ学生の時よりよっぽど集中して勉強できている人が多いのではないでしょうか。人は動機ありきで学習した方が間違いなく集中できて効率が良いです(なお、勉強が得意な人は学習そのものが目的でも高い集中力を発揮できますがそういう方は稀です。)
最近だと、れんとくさんのツール作りが、作りたいものがはっきりしてて、そのために学習することで大成功している好い例だと思います。
ハッカー系アリシスタのはるか先生もプログラミングの始め方について次のような記事を書いていますのでぜひご一読ください。
私は、プログラミング学習のアウトプットの場としてALISが適していると思っています。ここでいう学習のアウトプットとは、「こんなの作ったよ」と記事で報告するという意味です。
現在のALISは、信頼できる情報が欲しくてアクセスする場所となるほどにはまだユーザー数とロジックが十分でないので、共感できる言葉を探したり、仲間とのつながりを求めたり、自分を認めて欲しかったり、何か面白いことが起こっていないか期待したり、自分が発起して新しいことを立ち上げたりと、総じて"感情の動き"を求めてアクセスする人が多いのではないかと思ってます(※個人的見解です)。なので、誰かの努力や行動に対して投げ銭やコメントで応援する良い空気があり、それは初心者にとって小さな成功体験の積み重ねを得やすい環境や雰囲気でもあると考えています。自分で「これは頑張った」ということが周りから褒められたり評価してもらえたりすると、「やってよかった、またやろう」と、次の頑張りのモチベーションにつながりますよね。
プログラミングを始めてすぐの"ちょっとしたもの"の開発を、自分の中だけで完結させてももちろん良いんですが、ALISで発表すると多少なり他の人に見てもらえたり、使ってもらえます。こうした、ただ勉強しているだけではなかなか得難いフィードバックの積み重ねが、作りたいものが次々出てきてそのために必要なことだけを集中して勉強するという、良い循環を生むと考えています。また、ALISはユーザーが足りないと思う機能が結構多いので、「プログラミングによって解決できる問題」を見つけやすい、というのも大きな利点です。以上のことが、プログラミング初心者にとって現在のALISがとても適した環境なのではないかと思う理由です。
「××をやりたいから○○を勉強する」というプログラミング学習では、××をやるために何を勉強したらいいか分からないという状況になりがちです。そんなときに相談者がいると、「今はこれを勉強すべきだよ」というアドバイスをもらえるので、最小限の学習で目標を達成できるようになります。メンターをつける意味の一つはここにあると思っています。
また、プログラミングはエラーとの戦いでもあるんですが、しばしば「何を調べたらエラーが解決するか分からない」という状況になります。あなたにとってメンターは一番身近な相談相手です。以前に似たような状況を経験しているかとしれませんし、見たことないエラーであれば一緒に調べることができます。エラーがすぐに解決する事による時間短縮というメリットもありますが、「何を調べたらそのエラーが解決するか」の感覚を掴める事の方が、長期的には大事なことだと思います。
プログラミングにおいて最も基本的かつ重要なスキルは「調べる力」だと思っています。最初は人に聞きながら進めるのも良いですが、ずっとそうするわけにもいきません。原因を調べる力がついてくると、自分の力で進められるようになっていきます。
プログラミング学習を始めたけどいきなりメンターをつけるのもな…という方には、初心者プログラマのための相互支援コミュニティがありますので、こちらで質問を投げていただくと何かしらの答えが返ってきます(私も質問したり回答したりしてます)。お気軽にどうぞ。
私は普段仕事でプログラミングをするときは、主にPythonというプログラミング言語を使用しています。データ処理や機械学習なんかによく使われる言語です。あと、学生の時に授業や研究でMATLABを使ってました(こちらもPythonと似たような使用感)。データの処理や単純作業の自動化などは比較的慣れています。
昨年ALISに検索機能が実装されていない問題の解決のため、PythonのFlaskというフレームワーク(WEB開発のための便利機能がプリセットされてるもの)を使ったALIS記事の検索サイトを作りました。
昨年作った検索サイトは、ALIS本体に検索機能が実装されたため現在は閉鎖しています。当時取得したalisista.comドメインは(初めて取得したドメインという思い入れもあり)最近作ったALISTUDIOに移しています。
データ取得を半手動でやったりサーバー代を払ったり、技術や知識が足りない部分を力技でやってました。
これがきっかけでWEB系の技術を趣味で学習するようになってからは、昨年の年末頃からJavaScriptというWEB開発によく使われるプログラミング言語を使いはじめました。主にALIS関係の問題解決(ハック)に関連した取り組みとして、OAuth認証用のモジュールを作ったり、ALIS APIクライアントの改良をしたりしてます。アプリケーションでは、Twitter DMでALISユーザをフォローできる仕組みや投げ銭すると投稿記事の情報を集計するBotなんかを作りました。数ヶ月前からReactという、WEB開発の現場でも使われているフレームワークを使い始めて、最近公開した「ALISTUDIO」はReactを用いて開発してます。
最近の開発では、サーバレス・コストレス開発を標榜する億ラビくんの使用サービス構成を参考に、Netlify、Zeit Now 、Heroku、Firebase、mlab、Redis Labのような基本無料のクラウドサービスを組み合わせて開発してきました。逆に、WEB開発の現場で一般的に用いられるAWSやGCPは使い慣れてないです。
ということで、WEB関係の実務経験は全くなく、実力的にもドレイファスモデルでいう所の中級者で、意識的に上級者へのステップアップを目指しているような段階です(初心者/中級者/上級者/熟練者の明確な境目を決めるのは難しいので、ご参考程度)。本来なら技術メンターをできるようなレベルにはないのですが、これまでALISで色々作ってきた経験があるので、APIやOAuthの使い方、無料サービスを使ってサーバーレス個人開発をする方法など、ALISやWEBアプリの個人開発に限定するとメンタリングできることもあるだろうと思っています。また、問題解決起点で作りたいものを決定し、集中的に学習する「ハッカー的」プロセスは自分が結果的に(無意識に)そういう進め方をしてきたこともあり、お勧めできる学習方法だと思っています。
メンターですが、実は昨年ALIS内のご縁でWandaさんという方にボランティアで実施したことがあります。経緯や実施内容は以下の記事でご紹介してます。
"実際に行ったことは、主にWandaさんの書いたコードの修正とその解説です。もちろん直接お会いすることはできないので、Discordの通話とテキストで行いました。プログラミング言語はPythonです。毎晩23:00〜24:30程度のレッスンを1週間ほど続けました。
教える際には、以下の三点に注意しました。
1. 実装の方法はまず本人に考えさせる
2. 今のコードで、どんなエラーが起き得るか想像させる
3. より綺麗なコードに書き直せる(ベストプラクティスがある)ときは、すぐに修正・解説する"
また、今回のメンタリングの準備の中で、ワインさんの投げ銭広告Bot立ち上げのお手伝いをしたりしました。この件に関してはワインさんが記事にしてくださっています。
現在メンタリングは一枠(1時間程度のチャット等での会話)で500ALISです。時価で計算すると約750円ですが、
・ALISでしか行えない経済活動を増やしていくことで、ALISを欲しがる人を増やす
・Hacking Boot CampやALISCHOOLを通じてALIS払いのサービスがどんどん出来ることでその流れが加速する
→ALISの価格が今後上がれば”実質時給”が上がる
という構想です。今はALISを取引できる場所がないので絵に描いた餅ですが、ALISの経済圏を広げる土壌づくりが今は大事なんじゃないかと思って参加してます。あとは、メンタリングによって“ALISマフィア”を増やすことが真の目的です(?)
また、メンタリングを通じて自分自身も勉強できたり理解が深まったり、ここでできたつながりで次にまた新しいアイデアが出たりと、一人で学習しているだけでは得ることのできない価値が生まれると良いなと思っています。
以上、ALIS Boot Campメンター就任のご報告でした。
記事を書いた人:ホーさん(@hoosan16)
使用画像(クレジット)