見出し画像

未経験者がSQLを使えるようになる最短の方法は何か?を考えてみた

私の職種は下記のように遷移したのですが、SQLを業務で使うようになったのは2社目からです。マーケ施策やプロダクトの分析をする必要があったのがキッカケでした。学習開始から業務活用開始までは2~3ヵ月程度でした。

1社目:営業・企画
2社目:営業・マーケ・分析など
3社目:マーケ・分析・事業開発など

今回のnoteでは、自身の経験を元に、SQLの未経験者や初心者の方がSQLを習得するにはどんな方法が最短か?を考え、まとめてみようと思います。
よってこの記事の対象者は、これからSQLを学ぼうと思っている方や初心者の方です。また、私が非エンジニアなので、近しい方をイメージしています。

私はどうやってSQLを習得したか?

まずは私がどのようにSQLを習得したかまとめます。振り返ると非常に恵まれた環境だったなと思います。

<周囲の環境>
・自由に分析が行える環境が既に整っていた(Re:dashやBigQuery)。
・社内でエンジニアにSQLを教えてもらえる環境もあった。
・ベンチャー企業で、新しいことにチャレンジする組織カルチャーがあった。

<習得の背景>

今までデータ抽出を片手間でやってくれていたエンジニアが退職することになり、データ抽出業務の引継ぎ先が必要だった。
→経緯は忘れたが、私ともう1名に白羽の矢が立つ。

<習得の流れ>
(1)社内のエンジニアに勉強会を開いてもらう

たしか1時間×5回程度で、勉強会を開催してもらいました。ここでRDBの基本的な考え方やSQLの構文を学び、簡単な問題を解く練習も行いました。

(2)他人が書いたクエリを読み込んで、一部だけ変えて使ってみる
BIツールとしてRedashを採用していましたので、他の人が書いたクエリを見ることや、コピーして使うことが出来ました。
まずは簡単そうなクエリを見つけてコピーし、何をしているクエリなのか読み込みます。そして、一部だけ変更してデータを抽出してみるという作業を繰り返しました。
これにより、「クエリをこう変えたら、抽出結果はこう変わる」という実践的な理解が進みました。

(3)SQLを使って勝手に分析し、社内共有する
次に、SQLを使って勝手に分析し、アウトプットを作ってみました。
携わっているプロダクトがアプリだったので、
「この前の施策後にAというイベントログが増えているから、〇〇という仮説が考えられる。よって△△をテストしたらどうか」
「最近、〇〇の属性のユーザーが増えているから、△△という施策をやったら有効かもしれない」
みたいな簡単なアウトプットです。これが、SQLを活用した分析業務のトレーニングになりました。

(4)他人からの依頼を受け始める
ここまでで、「阿部はデータ抽出が出来るらしい」みたいな認識が社内に出来てきます。そして、プロダクトの分析ポジションをもらえることになりました(元々は分析専門のポジションはなかった)。
他人の要求を整理して、必要なデータを考え、クエリをたたく作業を繰り返すと更に理解が進みます。実現したいことのために覚えなければいけない関数やテクニックも増えていきました。

(5)SQL解説本を参考に、複雑なクエリを試す
実務を行いつつ、主に2つの解説本を参考に学習し、ある程度複雑なクエリも書けるようになりました。
本で読む→実際に書いてみる
の繰り返しです。下記の2冊は、私にとって常に横に置いておきたい2冊です。

以上が、私のSQL習得の流れでした。

早期に使えるようになったポイントは、緊張感のある中(業務)でインプットとアウトプットを繰り返してきたところかなと思います。

最短習得の理想は業務でSQLを使うこと

やはり自身の習得経緯を振り返ると、最も有効なのは、緊張感のある中でインプットとアウトプットを繰り返すことだと思います(当たり前の結論でごめんなさい…)。
例えば本やオンライン動画、学習サイトは探せばたくさんあります。しかし、必要に迫られないと本気で取り組まないのが人間の性ではないでしょうか。
だから、自分だけで完結する方法よりも、他人の時間を使ったインプット方法(勉強会)や、強制的にアウトプットせざるを得ない状況に追い込むこと(業務でアウトプットを約束する)の方が有効だと思うのです。イケてないアウトプットをしたら即、周りの評価が下がる緊張感です。
ちなみに私はSQLとは別の内容について、本やオンライン学習サイトなどで学習することがありますが、「実務に勝るものはない」という実感が正直なところです。まとめると下記です。

<理想的な学習方法は?>
■インプット
本やオンライン講座、学習サイト < 勉強会・業務時間内の学習
└:仕事の時間を使ったり、他人の時間を奪うことで緊張感を持つ

■アウトプット
本やオンライン講座、学習サイト < 業務でのアウトプットなど他人に成果を約束する
└:業務でSQLを使う役割をもらったり、第三者に成果を約束することで緊張感を持つ

あとは、いきなり未経験の状態で業務に組み込むのが難しく、それでもSQLを業務で活用できるようになりたい場合は、私のように勝手にアウトプットして、役割を勝ち取っていくのも方法としてアリかと思います。
ただこれは、組織のカルチャーや考え方によって、出来る/出来ない が変わりそうです。役割分担がきっちりしている組織には向いていないかもしれません。

業務で取り組むのが無理な場合でも、緊張感のある環境を作りたい

私の場合は、「SQLを覚えざるを得ない+社内に教えてくれる人がいる」という学習するにあたり最高の環境だったのですが、誰もがそのような環境を用意できるわけではないですよね。
ただ、その場合でも、ただ一人で本や学習サイトで勉強し続けるだけのプランは避けた方が良いと思います。

・同じように学習している仲間を見つけて、アウトプット先にする。
・WEB上に、「アウトプットすること」を約束し、記事などで内容を公開する(Twitterやnoteなど)。

例えばこのような方法で、強制的にアウトプットしなければいけない環境を作るほうが良いのではないでしょうか。
最終的に、SQLに限らず、あらゆる学習に言えそうな話になってしまいましたが、
以上が私が経験を元に考えた、未経験者がSQLを使えるようになる最短の方法でした。
少しでもお役に立てれば嬉しいです。また書きます。

この記事が気に入ったらサポートをしてみませんか?