こんにちは、Hawaiiです。
突然ですがみなさん、
ふだんプログラミングや機械学習の勉強をするとき、どのように勉強していますか?
本を読んだり、動画講座を見たり、プログラミングスクールに通ったりでしょうか。
今日はタイトルにあるとおり、
「プログラミングを学ぶときはアウトプットが必須」な話について、
私自身の実体験をもとに書いていこうと思います。
本記事の目次は以下の通りです。
1.私の自己紹介
以前は全くの異業種(人材マネジメント)に7年程勤めていました。
私立四年制の文系出身で、学問面でも仕事面でも、統計やプログラミング、AIといった領域には無縁の世界でした。
しかし、仕事でのプロジェクトリーダーにアサイン頂いたことをきっかけに統計・プログラミングの学習を始め、
データサイエンスの分野に興味を持ちました。
その結果、2020年4月から、ビジネス寄りのデータサイエンティスト(AIコンサルタント)として未経験転職を果たしました。
勉強を始めたころは本当にわからないことばかりで、

と、よくストレスを感じていました。
こういう、
「このモデルはざっくりどういうもので、シンプルなプログラミングの仕方はこれ」
という説明がされている本やサイトって意外にないんですよね。
転職も決まり、転職まで少し時間があった(10月内定、4月入社)ので何かしたいなと思い、

と考えました。
2.プログラミングを学ぶときはアウトプットが必須な話
(1)私がQiitaに投稿を始めた理由
私は中学生くらいのときから、「人に説明することで自分の理解度を上げる勉強法」をとっていました。
中学1年生のときに、歴史の定期テストの範囲をお母さんに何回も説明して、最終的に何も見ずに定期テストの範囲を喋れるようになり、
定期テストで満点を取ったことを今でも覚えています。
なぜ人に説明することが大切かというと、
自分がわかっていなかったり理解が浅いところで必ず口ごもるんです。
ノートを読んだり教科書を読んだときは「わかったつもり」になっていても、
いざ誰かに説明しようとすると自分が理解できていない部分で必ず詰まります。
なので、私は「人に説明することで自分の理解度を上げる勉強法」をすごく大切にしています。
このときの経験があるので、転職までに何かやりたいなと思った時、
人に何か説明をする=アウトプットをしよう、と一番最初に考えました。
Qiitaの存在は知っていて、非常に多くの方が使われているプラットフォームなのでもちろん適当なことは書けないし、
しっかり勉強する良い機会だと思い、Qiitaへの投稿を決意しました。
(2)Qiitaに投稿し始めた内容
せっかくやるので、私が機械学習を勉強するときに一番困っていたことを記事にしようと考えました。
主には下記の内容を記事に含めようと思いました。
Qiitaに投稿した内容
・この機械学習モデルはざっくりどういうものなのか
・シンプルなコーディングはどうすればできるのか
・数学的にはどういうモデルなのか
特に、2つ目ってありそうでないんですよね。

って多くの人が言いますが、Kaggleのkernel(他の人の解き方)を見ると、
当然複雑なコーディングしかないんです。
こんな難しい書き方じゃなくて、シンプルな書き方を知りたいだけなのに・・と、何度も何度も思いました。
なので、この内容を自分で勉強して、わかったことをQiitaの記事にまとめようと考えました。
(3)Qiitaに投稿した頻度
これも決めないとやらないと思ったので、週1回投稿をすると決めました。
結果的に、2020年の1/28から7/12までの約半年、週1投稿を続けました。
以下が、投稿した記事の一部です。
関連記事
他にもいくつか記事を投稿しているので、よろしければ私のQiitaのページも是非チェックしてみてください。
(4)アウトプットを始めて私に起こった変化
アウトプット(人に説明すること)の重要性は既に書いた通りですが、
実際にQiitaに週1投稿を始めて良かったことを紹介していきます。
1つ目:自分の理解力が高まる
これは記事の前半でも書いたので言うまでもないですね。
当然、初心者だからといって適当な記事を投稿していいわけではけっしてありません。
私が書いた記事はベテランの方や、数学に詳しい人から見たらもしかすると「レベルが低い」と思われるかもしれません。
それでも、自分が躓いたところを過去の自分に伝えるように丁寧に調べて記事にしました。
これをコツコツ続けることで、非常に時間はかかりますが、機械学習・コーディング・数学の全体的な力の底上げができたと感じます。
また、記事の品質についてですが、私の記事の1つの「【機械学習】決定木をscikit-learnと数学の両方から理解する」が
ちょうど昨日100LGTM(いいねのようなもの)をいただきました!
もちろんLGTMの数は品質と必ずしも相関しませんが、
それでも多くの方に読んで頂き、「いいな」と思っていただけたことが本当に嬉しかったです。
✅週1Qiita、更新しました
半年ほど前に投稿したロジスティック回帰について、
より知識が増えたので追記しました。なぜロジスティック回帰ではシグモイド関数を使用するのか?
というテーマで追記しています。https://t.co/kkmAgUSkzw— Hawaii@AIコンサルタント (@Hawaii07597403) July 26, 2020
2つ目:無理やりでも勉強するようになる
私はTwitterでも週1回Qiitaに投稿していることを発信していたので、
「来週の投稿のために週末勉強しないと・・!」
と、自分を奮い立たせることができました。
もちろん、投稿してなくても誰に何を言われるわけでもないのですが、
Twitterではお互いの直接のコミュニケーションがない分、
信頼関係が非常に重要だと考えているので、週1投稿は必死に守るようにしていました。
3.まとめ
いかがでしたでしょうか。
アウトプットを通じて、私には以下の良いことがありました。
ポイント
・自分の理解力が高まる
・無理やりでも勉強するようになる
プログラミングを学ぶときは、本や講座を見て「わかったつもり」になるのではなく、
「人に説明するようにアウトプットすること」で自分の理解力を高めることができると、
自分の経験を通じて感じています。
皆さんも是非、何か勉強している場合は「アウトプット」を意識してみてください。
最後までお読みいただきありがとうございました。
※以下に、私が前職のプロジェクトで成果を出すために仕事とプログラミングのアウトプットを両立した時の体験談記事を載せていますので、
よろしければこちらもご覧ください。