今回は中級者向けとしてプログラマーになる方法を説明します
中級者でプログラマーになる??
一見おかしなことを言っている風ですが『中級者(脱初心者レベルの知識を持った)の方がプログラマーになるため』ってっことです
ここでいう「中級者」とは、以下がざっくり理解できている方を想定しています
簡単に言うと事前に調べて予備知識がある方ですね
・勉強する時間ってどのくらい?
・プログラマーって年収どのくらい?
コードについて学習していると、プログラミング言語を知っているだけでプロの開発者になれると考えてしまいがちですが、他の仕事と同様に本当に優れた人材になるためには複数のスキルが必要になります
すべてのプログラマーが必要とするであろうすべてのスキルをリストアップすることはできませんが、プロのプログラマーとしてコードを書く以外にも多くの必須スキルがあります
メンバーと協力して問題を解決したり、コードのバージョン管理や進捗管理を行ったり など
ここではコーディング以外に取り組むべき重要なスキルをご紹介します
プログラマーの仕事観
仕事への向き合い方についてお話しします
プログラマーだけでなく、この業界全般に言えることですが
仕事 = 学習していかなければいけない という側面もあると思っていただいても相違ないです
仕事っていうのは一定の成果を求められるので
その水準に見合わない場合は、勉強して自己研鑽するしかありません
新しいプロジェクトに参加する時など
普通は面接や顔合わせなどで、スキルが満たないと思ったら選別され落とされるものですが
レベルの高いプロジェクトに配属されたときなどは運がいいと思うことも大事です
プレッシャーもありますが、スキルアップのチャンスも大きいです
この業界は心の病も多いので、無理は禁物ですが
最後まであきらめなければ、それ相応のスキルは身につくことは間違いないでしょう
まぁ、がんばればそれ相応のものが身に付くのは、どこの業種・職場でも共通認識です
また、オフのときも学習しなければいけないので、積極的にいろいろ試してみることが大事です
仕事と違って縛りがないので、自由にコードを書いていきましょう
そうすることで、新しいことを学んでいきます
コードを読んで理解することも大事です
必ずしも自分でコードを書かなくても勉強になったりします
「あ、こういう書き方があるんだ」と学ぶことが大事です
コードは自分で一から作ることありますが、プロジェクトによっては他人のコードをいじっていくということもありますので、こういう経験は大事です
そもそもこの記事は中級者向けなので、他人のコードから学ぶことの方が多いはずです
プログラミングを始められて、まだ慣れてない方はコーディングに何時間もかかったり、些細な間違いをしただけでプログラムが動かなくなります
バグの原因をじっくり探していけるようにプログラミングの読解力も鍛えていきましょう
プログラミング以外の必要な能力
コードを読み解いたり、書いたりするだけがプログラマーの仕事ではありません
仕事でしなければいけないことは、最初は理解が浅くてもいいのでなぞっておく(目を通しておく)と実際に行うことになっても、飲み込みが早くなります
また、以下に書いたことはプログラマーにとって最重要項目だと思います
問題の発見力と解決力
「なんで上手くいかないんだろう?」「こう動くはずなのになんで?」など
本来意図した動作通りにならない時も多々あります
プログラミングのスキルとはこういった問題をいち早く発見する能力やそれを解決していく能力というのが、実は一番重要だったりします
発見力や解決力が高いということはコードの読み書き能力が高いということを裏付けています
しかし、発見力はともかく問題を解決するというのは習得が難しいスキルで、練習が重要になってきます
具体的には、自分が興味を持った小規模なプログラミングを読み解くことからはじめてください
その際には、ただ言語を理解するだけでなく、コードの背後にある論理に注目し
コンピュータのように考えることを学びましょう
また、プログラムが動作する上での基盤、つまりコンピュータ(CPUやメモリ、ソケットなど)がどのように動くか理解する必要があります
そういう要素も視野に入れると問題解決力は高くなります
自分で解決できないのであれば、他人に聞くという手段も有効です
結局ビギナーは熟練者に頼らざるえません
こういったことを自然に確認できる能力というのもプログラマーには必要です
コミュニケーション能力
上でも書きましたが、わからないことを聞くということはコミュニケーション能力が必要になってきます
実際にチームとして仕事する場合は、多くの人とコミュニケーションを取ることになります
企業に勤めていれば、開発チームの一員として、他者とのコミュニケーションや協調性が求められます
プログラミング自体は一人でやるものだと言われていますが、明確で説得力のある話し方は是非とも身につけたい能力です
コミュニケーション自体苦手な人も多いかもしれませんが、あまりうまくなくても苦手でも経験を積むことが一番大事だと考えています
また、メンバーや関係者と良好な関係を気付いておけば、あまりうまくない説明でも通りやすくなります
コミュニケーションは円滑に物事を伝える手段でもありますが、同時に良好な関係を築く手段でもあります
一昼夜で何とかなりませんので、日ごろからコミュニケーションをしっかりとれるような空気づくりをしていきましょう
ドキュメント読解力
ドキュメントを読む力も重要になってきます
純粋なコーディングのみの担当だとしても、必須になってきます
それはコードの意味を読み解くうえで、参考になる技術書に目を通すことは避けて通れない道だからです
ただ、すべて覚えるというのも限界があるので
情報がどこにあるかを覚えて、それを引き出せるように情報を整理しておくと便利です
それに工程が上流になってくるにつれ、説明責任やドキュメント作成する機会は多くなってきます
今のうちに読解力をアップさせることで、将来的に必要なドキュメント作成能力だったり説明スキルにつながります
独学でやれること
仕事をするということは、そこで学ぶことは多いかもしれませんが
特定の工程をすっ飛ばされて、基本的なことを学ぶ機会がないときもあります
それは組織の中で働くということですので、自分の役割・担当を与えられますが
それ以外の つまり、役割・担当外のことは出来なくなる可能性があります
こと細かく教えてくれる良い師匠に巡り合えればいいのですが、現場でそんなことも言ってられませんし可能性は低いと感じています
なので、まずは独学での学習のコツをつかみます
独学でプログラミングの勉強するには自宅環境を作るやり方とインターネット上のサービスを使用する2つのやり方があります
また、プログラミングは机に向かってコードを書くだけではなく、一緒に作業したい人たちのグループを見つけて新しいプロジェクトを立ち上げたりするのもスキルアップの秘訣と言えます
自宅でできること
とりあえず、自宅PCにSVN導入して開発することをお勧めします
SVN・・・
Subversionといい、オープンソースのバージョン管理システムです
複数の開発者が共同で一つのソフトウェアを開発する際などに、ソースコードやドキュメントを管理するのに使います
すぐに始められるバージョン管理の学習として、環境設定だけなら、以下の記事が参考になると思います
技術は常に進化していくので、会社で学ぶこととは違うことを自宅で学べたらなお良いです
新しい言語、技術、ツールを学ぶ良い機会を作りましょう
繰り返しになりますが、技術文書を読み漁っておくことも重要です
技術に対して貪欲にそしてアンテナを高く立てときましょう
すべてを暗記することはできないしそもそもその必要はありませんので、どこにどの情報があるかは覚えておきましょう
つまり、文章をインデックスする方法ですね
必要な情報をすぐに見つけられるよう情報の整理整頓は日ごろからしておきましょう
インターネット上のサービスを利用する
プログラマーに問わず、技術を習得するためには「情熱」「練習」が必要になります
この2つのバランスをうまく取れなければ、学習していくこと自体が難しくなります
挫折する人というのはこのバランスがうまく取れなくなってくるからです
プログラミングを実際にやってみるとわかりますが、敷居が高いのです
独学ならなおさらです
オンラインコースを受講する
インターネット上には優れた教材を提供する仕組みがたくさんあります
普段の授業や仕事で必要なものが得られない場合は「Coursera」「Udacity」などの無料または低価格の講座をチェックしてみましょう
コンピュータ言語やスキルをその場で学ぶことができます
コーディングスキルを向上させるための多くのオンラインリソースは、クリックするだけで簡単に利用できます
あとは最近で言うなら「Udemy」(ユーデミー)もいいと思います
これは教えたい人と学びたい人をつなぐ動画学習プラットフォームになっており、世界中で4,000万人以上の方がこのツール利用して学んでいます
Udemyではさまざまな経歴やスキルを持つ人が「講師」としてコースを運営しています
講師になるための必須条件としては、当然ですが「スキル」はもちろんこと、あとは「受講生を応援したいという気持ち」です
コースは動画ベースになっており、受講者への質問に答えることが可能です
簡単に言ってしまえばYOUTUBEが学習特化になったコンテンツといえるでしょう
費用感は1講座の受講料の平均は11ドル程です
教える方に収益が発生するので、自分のノウハウやナレッジを切り売りすることができます
例えばプログラミングスキルがあればそれをコースとして売ることも可能となります
この記事の内容とかけ離れしまうため、詳細は書きませんが
YOUTUBEと違うところは
純粋なアクセス数というか、講師に対してコース受講の費用の一部が収益として発生するので、広告費とは違いリターンが大く狙えるかもしれないということです
Udemyを利用して、受講して得た知識を今度は講師としての立場で貢献していくことは可能です
インプットしたものをアウトプットするという行為は学習に効率的なので、Udemyのシステムはとても学習環境に適していると言えるでしょうね
ちなみにUdemyは2010年に設立でしたが、上場(ナスダック)は2021年10月29日です
株価はこんな感じです(記事作成時は2021年11月29日)
これこそこの記事に関係なくて大変恐縮ですが、今のうちに仕込んでおこうと思っております
コミュニティに参加する
ある意味チームの一員として参加できて、メンバーと対話できるのが特徴です
質問を投げかけて回答を貰うこともできるので、改めてコミュニケーションが大切だということがわかるでしょう
また、自分がそのコミュニティでどのように機能していくかを考えていくことが重要です
例えば「CodeChef」や「CodeAcademy」ではチームに参加して共同作業の方法を学ぶことができます
国内だと「TechCommit」あたりが有名です
こちらはプログラミング学習のコミュニティなので、初心者が質問できる環境が整っています
月額も1100円(初回のみ2200円:税込み)なので、参加しやすいと思います
まとめ
昔に比べプログラミングの学習が簡単に行えるようになってきました
理由の一つにプログラミングの学習を簡単にするためのソースやがたくさん開発されているからです
例えば以下のようなものがあります
Codecademy・・・コーディング講座を無料で提供しているオンラインプラットフォーム
これらはプログラミングの楽しさを伝えると同時に、学習プロセスを簡素化することを目的としています
他にも「Project Euler」「TopCoder」「Coderbyte」「Codility」「Scratch」「HackerEarth」などのサイトも学習に使えますが、残念ながらこちらは英語になります
時間をかけるなら、翻訳サイトを使いながら学習することはできますが、ちょっと億劫ですね
学習の仕方として、いろいろな選択肢を説明しましたが
それらに飛びつく前に認識すべき重要なことは、どのような学習方法が自分に最適かを知ることです
自分自身を知ることが、スキルアップの鍵となります
プログラミングを学ぶということは、認識していない領域に飛び込みわけなので、自分自身を知ることはその道しるべとなります
大切なのは、自分に合った方法を見つけてそれを進めていくことです
また、いざというときに何をすべきか、事前に練習しておくことも重要です
敷居が高い~
そう思ったら・・・
おすすめとしては多少高額だとしても、プログラミング教室に通うことです
こちらの記事でいつくか紹介しています
まずはきちんと基本をマスターするということとアグレッシブに質問することをセットで行うことが大事です
その後、開発環境やステージング(検証)環境を作るのであれば、クラウドのサービスを使うのがおすすめですね