「とりあえず入門向けの本を読み終えたけど、次に何をしたらいい?」という状態で悩んでいませんか。
私もプログラミングスクールを終えて、晴れてプログラマーになったものの、何をやったらいいのかわからないことも。
プログラマーのいいところは、やればやっただけ、給料UPや待遇の向上を望めるところです。
脱初心者を目指して頑張るプログラマーのために、ステップアップのための5つの方法を紹介していきます。
特化してみる
自分が勉強したプログラミングで、さらに進んだ内容にチャレンジします。
具体的には、フレームワークを使ったアプリケーション開発をやってみるのがよいです。
フレームワークとは、「アプリケーションやシステムを開発するために必要な機能があらかじめ用意された枠組み」。
Pythonであれば、Django、FastAPI、Bottle、Flask、Tornado、web2py...
ご自身で調べてみて、取っつきやすそうなところから入るのをおススメします。
どれを選んだいいかわからない...という人には、FastAPIがよいかもしれません。
最近のフレームワークということもあり、高速に動作し、短いコードで機能を実現可能です。
https://fastapi.tiangolo.com/ja/
また、フレームワークにこだわらずに、自分の興味を持った分野で調べる、作るを繰り返すことで特化した知識を習得できます。
キーワードとしては、ウェブ開発、モバイルアプリ、データ分析、AI、機械学習など...
気になるキーワードをピックアップして、自分が主力で使っている言語で実際に開発にチャレンジしてみましょう。
拡げてみる
別の言語にチャレンジしてみます。
プログラマーは複数の言語を覚えないといけなくて大変!と思っていませんか?
実際は技術の根っこにあるものは同じであり、共通する考え方・アルゴリズムがわかっていれば、別の言語もすぐに適応できます。
ただ、それぞれの言語には得意分野があり、思想があります。
言語ごとの共通部分を理解することで、プログラミング全体に通底する重要な共通概念を理解でき、
さらに各言語の思想を知ることが、よりよい設計や読みやすいコードの書く技術につながります。
共通する部分については、変数、条件分岐、繰り返しですね。
これはほとんどのプログラムに共通します。
さらに呼び方は違えど、ファイル、クラス、メソッド、オブジェクトなど、構造を整理する手段が用意されています。
プログラミング言語の成り立ちや、関心領域の違いによって、手続き型、関数型の違いがあります。
どのプログラミングもある種の思想を持っており、プログラミングをより便利に使うための創意工夫があります。
そのため、ある言語に習熟することで、その言語の長所を別の言語に適用することも可能。
例えば、関数型プログラミング言語に触れることによって、その思想を手続き型に一部適用するなど。
別の例で言うと、元陸上選手が野球で活躍したり、野球経験者がその技術をバドミントンに応用したりするイメージです。
色んな経験が、自身の開発力向上に活きてくるということです!
作ってみる
勉強のために用意された課題よりも、実際の開発は少し複雑です。
調査して、解決するスキルが非常に重要です。
そのため、どうやっていいかわからない => 調査する => 作ってみる、この繰り返しが非常に鍛えられます。
また、この過程で今まで勉強してきたことも復習可能。
人間はとかく忘れる生き物だし、飽きっぽいので、やり方を変えて、復習・勉強を継続しましょう。
何より、作ってみることで、雑でもなんでも自分のアプリケーション、WEBサービスができるのは楽しいものです。
この過程で、勉強したはずなのに忘れている...こんな簡単なこともできないのか....と何度も感じるかもしれません。
でも、そういうものだと割り切ってガンガン進めましょう。
そもそも、最近は扱う領域が拡がる一方で、新しい技術もどんどんでてきます。
知らない状態から、調査して開発していくスタイルが圧倒的に多いです。
調べながら作れる人間を目指しましょう!
読んでみる
コードをどんどん読んで、理解できるようになりましょう
OSS(オープンソースソフトウェア)で、色んな先人の知恵に触れることができます。
ソースを見る場合は、Githubで色々見てみるのが良いでしょう。
さらに、GithubのソースコードをVSCodeの画面でさくっと見れる方法も!
以下を参考に使ってみてください。
https://qiita.com/naohiro2g/items/7f42687f832ff5e1a742
以下はおススメの本です!
設計してみる
勉強や初心者向けの本では、既に設計が完了している状態です。
こういう機能を持ったプログラムを作ってみましょうという例題、条件が設定済みで、それに従って開発をしていますよね。
実際にアプリケーションを作る際は、どんな機能が必要か、どんなUIにするかは自分で考える必要があります。
また、実現のためのクラス構成、書き方、変数名、などあらゆる要素を自分で決定していきます。
初心者の頃は、言われたままに開発することも多いですが、設計の視点を持っているだけで成果物の質はかなり変わります。
アプリケーションがどのように作られるのかを知るためにも、設計に関する本を読んでおくことをおススメします。
いくつもおススメはあるのですが、一つだけ挙げるならば、これが一番おススメです。
設計と開発、双方に良い影響がある良書です。
本を読むといろんなものが見えるようになってきて、現場のシステムがダメに見えてくることがあります。
そこで、一気に改革を進めようとするのはやめましょう。
本に書かれていることが正解とは限らない、歴史的背景で今の状態になっているなど様々な要因があるため。
私は、結構これで失敗しましたし、相当煙たがられました。
チームが今困っていて、何とかしたいと思っていて、賛同者が何人かいないと、改革はなかなか成功しないです...
まとめ
ここまで、ステップアップのための方法を5つ紹介しましたが、一気に全部やる必要はないです。
少しずつ、興味の赴くままにチャレンジすることをおススメしています。
ちゃんと継続的に勉強できている人は意外なほど少ないものです。
少しでいいので、自分が面白そうだと思うものをコツコツ勉強していくことで、まずは中級者にステップアップしていきましょう!
体系的に学んでいないな...と感じる場合は、スクールで学び直しもありです。
以下も参考にしてみてくださいね。