【脱・初心者】プログラミングスキルを劇的に上げる方法


【脱・初心者】プログラミングスキルを劇的に上げる方法

ドットインストールやった、 Progate もやった、じゃあ次は.... となっている方や「基礎学習ばかりでいいのだろうか?」と疑問を抱いている方。

自分でも実感できるようなスキルアップ、実現したいですよね。

今回は筆者も体験したスキルアップ方法を交えて、プログラミング・スキルの向上方法をご紹介させて頂きます。

目次
  1. プログラミングスキルを劇的に上げる方法
  2. スキルアップの一般論
  3. 学習の目的と学習時間を整理
  4. プログラミングスキルを飛躍的に向上できた成功事例
  5. モチベーションの持続方法
  6. サンプルアプリのアイディア発生方法
  7. まとめ

プログラミングスキルを劇的に上げる方法

スキルアップの一般論

image

Google で「プログラミングスキル 上げる方法」や「How to improve programming skills」 と検索するといくつかの答えを見つけることができます。一例をご紹介すると、

・ 目的を明確にする
・ 最適な学習方法を知る
・ 良い仲間を見つける
・ 継続する
・ 学習進度を管理する ....

・ 自分で問題をセットし、プログラムを組んでみる
・ 他の人のプログラムを読んでみる
・ 自分のコードも公開してみる(CodePenやGitHub)
・ 他の言語にも挑戦する
・ プロジェクトに挑戦する(アウトプット) ....

ん〜って感じるのは私だけでしょうか?

まずプログラミングスキルを上げるためには、「目的」と「自分の立場」を明確にしておくことが重要でしょう。例えば目的については「就職・転職のため」「副業のため」などがあると思います。

そしてその目的をリアルワークに図化してみると以下のように。

image

言葉で「就職・転職」「副業」「フリーランス」というのと、実際の業務には隔たりがある印象。

一般的にフリーランスでよくある Web制作やシステム開発というのは、案件獲得からプロジェクトの完了、着金まで会社員に比べてハイリスク。高いコミュニケーション能力と高いプログラミングスキル、それから「俺ならできる」という自信が必要。そのため図の右上に位置(ブルー)。 そのほかの就職・転職(グリーン)、比較的簡単な副業のエリア(オレンジ)については概ね想像できるでしょう。

そして仮に就職・転職が目的だった場合、プログラミング学習後の就職・転職のリアル、具体的にどうすればいいかイメージ湧きますでしょうか?より目的を具体的にイメージするためには、 indeed や DODA などの求人情報を確認すると、どんなスキル・人物像が求められているのかイメージできるでしょう。このあたりまで掘り下げて考えることが、プログラミングを学ぶための "目的" になってくるでしょう。

また副業については、ランサーズやクラウドワークスなどの案件を確認するのが ◎ 。 例えば『定期的に決まったサイトにアクセスし、 Web ページ内のデータを収集し、 CSV に出力』 という案件があったとすると、 Web スクレイピングやデータの CSV 化、データの送信などを実行できるスキルがあれば良さそう。(サンプル案件のリンク

つまりプログラミングを学習する上で、「目的」が大事なことは分かりますが、もっと具体的な現場の情報を確認しておく方がより「明確な目的」になり、学習意欲にも期待できるでしょう。

学習の目的と学習時間を整理

image

プログラミング・スキルを向上させるためには、「時間」 の確保が重要です。プログラミング学習に当てられる「時間」は人それぞれ違ってきて、例えば私の場合は 1日 5時間が限界。そしてその 5時間も API のドキュメントを読んだり、テストプログラムを書いたり、エラーハンドリングしていたりしていると、5時間でできることは限られてきます。

また睡眠時間を削って学習するのはモチベーションの低下を招き、あまり好ましくありません。まず一般論や成功者のやり方を真似するというよりは、自分にあったスキルアップのプロセスをイメージしておく方が重要でしょう。

上図は各目的に合わせて時間があるパターン、時間がないパターンを図化したもの。

まず目安の学習時間として、アメリカのコンピューターサイエンスの学生は、 4年間で平均 100時間学習すると言われています。プログラミングが全く初めてという方は、学習方法にもよると思いますが、独学であればプログラミングの基礎習得だけでも倍の 200時間は必要になってくるのではないでしょうか?

「いやいや、そんなに時間かからないでしょ。簡単な Webアプリぐらいできるでしょ、自分作りたいのあるし...」 と思って、やってみると分かるのですが、最初のうちのアプリ開発は思った予定時間よりも 3〜4倍は時間がかかると思います。

例えば私の例では、以下のようなエゴサーチのボット App をイメージし、 3日ぐらいでできるだろうと思い開発に着手しました。

上図フローの Webアプリ (リンク)

しかし実際にボットを動かしてみると、取得データが正しくない、エラーが出る、Chrome では OK だが Safari では表示されない、初回登録メール機能も追加しようか、など様々な想定外の作業が発生し、結局 8日間(60時間)でいったん完成。完成後もこの機能があった方がよかったな、と欲が止まらない始末。

つまりプログラミングのスキル向上にアプリを開発するのは ◎ と思いますが、時間のリスク管理には気をつけた方がいいでしょう。

プログラミングスキルを飛躍的に向上できた成功事例

image

プログラミングスキルの向上、という言葉の定義は人それぞれあると思いますが、例えば「簡潔にコードを書けた」とか「できないことができる・・・ようになった」とか。

今回は「できないことができる・・・ようになった」例をご紹介。

【できるようになった事】
・ Django でデータベース内を検索し、必要なデータのみを抽出できるようになった
・ Django でデータベースの書き換えができるようになった
・ Django でメールを送れるようになった
・ Djnago に定額課金のカード決済ができるようになった
・ Twitter API が使えるようになった
・ ボットが定期的にデータベースにアクセスし、必要な情報を抽出できるようになった
・ 改めて Django にはない Rails 、 Laravel の CRUD はすごいな、と思った

Django ・・・ Python製の Webフレームワーク

これらは自分の思いつきで始まった Web App(Twitterで私、つぶやかれている?) 開発を経て学び、習得できたスキル。参考書などではこうした実践的なことは紹介していないため、「スキルが急上昇した」と感じることができました。

そしてこれらのスキルを習得できた原因としては、「時間の確保」「モチベーションの維持」「Pythonの基礎」があったからと思います。

時間の確保にしても、基礎学習にしても、何よりもやっぱり「モチベーション」が要ですよね。 次はモチベーションの持続方法についてご紹介させて頂きます。

モチベーションの持続方法

image

思ったより 3倍ほど時間のかかった自作の Web App。途中何度か挫折しかけましたが、それでも一応クリアできた原因には「モチベーション」があります。

今回モチベーションを維持し、サンプルをアプリを作成し、スキルアップができた「モチベーション」は以下の通り。

  • 将来的にWeb制作で自立するために、課金の実装は経験しておきたい
  • こんな風にすれば Web で儲かる、皆様もしませんか?というサンプルが欲しい
  • データベースに強くなりたい

と、根底にあるのは "独立" というキーワード。ラーメンや美容関係でもあるように修行の一種ですね。

また修行に耐え得るだけの明確な理由が、自分にとって必要となるでしょう。ちなみに私の独立理由としては、「Webで地域貢献」「収入の多様化」 です。

以前に近所の知人の Web サイト作成を受けたことがありますが、その際も 80時間におよぶ開発で、自分なりの開発する理由を明確にし、モチベーションを維持することが重要だったと経験しています。

つまりプログラミングに限ったことではないと思いますが、モチベーションを維持するための "動機付け" "理由" を日頃から考えるクセをつけておいた方が ◎ ということですね。

サンプルアプリのアイディア発生方法

image

プログラミングスキルを向上させる方法に「サンプルアプリの開発」があります。しかし「サンプルアプリ」と言っても..... となる方も。

まず「サンプルアプリ」ですが、プログラミング経験者、データベース経験者、プログラミング未経験者によって発想は違ってくるでしょう。今回はある程度プログラミングの基礎を終えた方を想定して、サンプルアプリのアイディア発生方法をご紹介させて頂きますね。

アイディア発生方法で一番効果的なモノは、身近な問題をプログラミング的に捉えることです。例えば 2020.04.21 AM 10:00 にシャープがマスクの販売をはじめました。しかしアクセスが集中し、サイトが 502 サーバーエラーでダウン。アクセスできた人は買え、アクセスできなかった人は買えない、閲覧さえできない始末。マスクを平等に提供しようと Web で販売されたものの、このアクセス障害に不満の声も。

この問題、あなたならどうしますか?というのがサンプルアプリのアイディアになってきます。例えばサイト運営者の立場で考えると、定刻 10時に販売するのではなく、事前に申し込みだけしてもらっておき、抽選(ランダム関数)で当選者のみに購入券をメールなど。そして処理工程のプログラムは GitHub でオープンソース化し、平等性を担保。 "平等" "信頼感" というマスク販売の目的と収益が両立し、企業ブランドもアップとなりそうではありませんか?

シャープのマスク販売については、実際に 4/23 抽選方式に変更されました。

またこうした「定刻」「アクセス集中」を回避できる Webテンプレートがあったら、今回のような事態を避けられ今後もそのテンプレートによって救われる機会もあると思います。

このほかにもランサーズなどの案件を見て、デモで案件をクリアしてみるのもいいトレーニングになりますし、自信に。つまりサンプルアプリの題材は、毎日の生活の中に転がっているということですね。

Webサイト担当者としてのスキルが身に付く

CodeCampの無料体験はこちら

まとめ

プログラミングスキルを劇的に向上させる方法は、

① 目的の明確化、② 時間の把握、 ③自分でできる範囲を確認、 ④実行

といった流れ。 そして具体的な目的把握には、「実案件の確認」、「問題解決のイメージ」が重要。

開発現場に入ればスキルが向上することは確実と思いますが、プログラミング初学者にとって就職・転職するためのサンプルサイトやアプリも必要で、そのために脱・教科書レベルのスキルも必要になります。

「明確な学習目的なんてない...」「やっぱりプログラミング、自分にはあってないのかな」とネガティブモードが働いてしまった方、 CodeCamp の無料体験や LINE相談はお済みでしょうか?

一度は夢に描いたプログラミングできる自分、もうひと踏ん張りして自分の能力を確認してみませんか?


関連記事

オシママサラ
この記事を書いた人
オシママサラ
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp