最近話題なので書いてみました。
まず大前提として、このブログ記事に限らず、この手の記事はそのへんの一般人が書いています。もしこれからプログラミングをはじめる人は一つの記事をあんまり鵜呑みにしないことをおすすめします。
じゃあなんで書いたかというと、割と私の考えと異なる記事とかがあったので、私も別の視点から記事を書いたら何かしら意義はあるのではないかと思ったためです。
あとは話題のプログラミングスクール……。有名所のスクールでもネットにデタラメ解説記事を出しまくってたりして教育内容が怪しすぎるところが多いので、自衛のためにも最初はある程度自習でできるようになったほうがいいのかなと思っていたりします。
(スクールそのものがいらんとはいいません。困ったときに質問できる先生や一緒に勉強する仲間が周囲に居るのはいいことだと思います。)
簡単な自己紹介だけしておくと、私は一応ソフトウェア開発を生業としています。(Linuxで走る画像などを処理するC++製コマンドラインツールや.NETなGUIアプリなど。以前はSpring FrameworkでWeb開発[フロント含む]をしたりもしていました。今流行りのフリーランスではなく正社員です。)
- とりあえず作りたいものを考える
- 基本情報技術者試験の勉強をする
- 軽量なノートPCを購入する
- 設計やプログラミング手法を勉強する
- コードの読みやすさを意識する
- 高速化を意識する
- セキュリティを意識する
- テストを勉強する
- 上記の内容にとらわれてなにもできない状況は避ける
とりあえず作りたいものを考える
何かしら自分がやりたいことに向けて勉強するのは楽しいものです。
とりあえず自分が作りたいものを決めて、それに向けて勉強をすると捗ります。
なお、私の場合このときの目標が特殊過ぎたのであんまり参考にならないと思います。
基本情報技術者試験の勉強をする
割と浅く広くを問う試験で、一部の人からは割と無意味と言われがちな試験です。
ただ、浅く広い知識は以下のような活用方法があります。
・いろんな分野を知ることで、漠然と「プログラムをしたい!」という状態から、自分がどの分野をやりたいのかというイメージを具体化できる。
・言葉をいっぱい覚えているだけで情報の検索効率が上がる。
・仕事の上でのコミュニケーションのための下地となる知識がつく。
なんだかんだちゃんとした国家試験なので、特定のベンダーに偏った情報がでにくく、普遍的に使える知識が多いというのも嬉しいところです。
ただ、「俺はこの分野でこういうことがやりたいんだ!」と目標が明確な場合には、最初っからそっちに特化して勉強したほうがいいかもしれません。
軽量なノートPCを購入する
物理的に軽いノートPCを買いましょう。
私も最初ケチって重量級のノートPCを買ったのですが、正直持ち運ぶのがつらいです。
プログラミングの勉強は最小でPC一台あればできるので、軽いとどこまでも持ち運んでいつでも勉強ができます。
MacにするかWindowsにするかLinuxにするかChrome OSにするかは好みや用途によりますが、最初のうちは今後プログラミングをしていく上で必要なスペックが具体的にはわからないので、とりあえず安めのやつを選んでおいてあとで買い換えることをおすすめします。
(1.2kgくらいでメモリが8GB、ストレージがSSDで128GBあればとりあえずはいいと思います。)
設計やプログラミング手法を勉強する
学び始めて最初のうちはとりあえず好きにプログラミングしていっていいと思うのですが、好き放題してるとどこかで限界が来ます。
その限界を超えるために先人がいろいろな手法をまとめてくれているので、大いに参考にしましょう。
とりあえず最初に目を通しておいて、書いているコードが大変なことになってきたら「あれを活用すれば便利なのでは?」と気づいたときにガンガン取り入れていけばいいと思います。(必要性がわからないものを勉強するのはつらいので、ある程度自由にやって必要性がわかってから勉強したほうが身につくのではないかというスタンスです。)
コードの読みやすさを意識する
チーム開発では他の人が自分のコードを読むというのはもちろん、個人開発でも数日後の自分は他人です。人間の記憶力を過信してはいけません。
最初のうちは、あとで見返して自分が読めるコードを書くことを心がけましょう。
読みやすいコードがどういうものかがわからない場合、他人の優れたコードを読むのがいいでしょう。
有名なオープンソースソフトウェアを探しましょう。
高速化を意識する
「速度は二の次、まずは保守性」という意見をよく目にしますが、高速化は自分から学びにいかないと身につきません。
そして、速度をおろそかにしても殆どのプログラムは問題なく動きますが、突然速度が必要なプログラムを書く必要が出てきたときに大変なことになります。(実際プロジェクトメンバーが全員速度に無頓着だったゆえに大変なことになったプロジェクトを見たことがあります。)
ゴリゴリにプログラムを高速化しろとはいいませんが、普段からある程度意識しているだけで大分変わってきます。
セキュリティを意識する
今の時代、ほとんど全てのソフトウェアにとってセキュリティは切っても切れない関係にあります。
そのため、開発者一人ひとりがセキュリティについての知識を身につけている必要があります。
セキュリティの知識がなくてもプログラムは書けますが、それは後々大惨事を引き起こすことになるのでマジで気をつけましょう。
テストを勉強する
ある程度コードが書けるようになってきたら、テストについて勉強しましょう。
テストと言っても筆記試験対策というわけではなく、ソフトウェアのバグを探すためのテストのことです。
ソフトウェアを作るのは楽しいですが、作ったソフトウェアがバグだらけだと誰にも使ってもらえません。
テストは開発と同じくらい大切な工程なので、しっかり勉強する必要があります。
(筆者も最近のテスト事情から遅れ気味な気がしてるので頑張ります。)
上記の内容にとらわれてなにもできない状況は避ける
ここまで私が大事だと思ったことを書いてきましたが、これにとらわれて「ああしないといけない…こうしないといけない…」となにもできなくなったら本末転倒です。
「しんどいな」とおもったら、一旦全部忘れてとりあえず動くプログラムを書いてみましょう。
余裕が出てきたら思い出してくれたらいいし、そもそも私が書いてることが正しいとも限らないので、おかしいと思ったらガン無視しましょう。