プログラマーを目指す未経験者向け、プログラミングの初歩的なQ&A

「俺もプログラマーになりたいっ!」と思ってる人は多い。

まあプログラマーはこれから需要がなくなることはないし、実力次第でいくらでもキャリアアップの可能性がある。

理不尽な感情労働で疲弊してる人が、「プログラマーという生き方」に憧れるのは無理もない。

問題は、「今から努力すればプログラマーになれるか?」ということだろう。

そもそも未経験者は、プログラミングに関する常識的なことがわかってなかったりする。

今回は、プログラマーを目指している未経験者向けに、Q&A方式で初歩的な疑問を解決していこうと思う。

文系でもプログラマーになれるの?

そもそも理系がプログラミング得意っていうのが勘違いだ。たしかに理系科目とプログラミングはそれなりに親和性がなくもないが、東大理系卒でもプログラミングできないやつは普通にいるぞ。

「海外だと情報系の修士や博士を持った人じゃないと良い企業に就職できない」みたいな話が日本ではよく言われるけど、GoogleやAmazonに就職するような人の話をここでしてどうすんの?

そもそもプログラミング得意なやつは、大学入る前からめちゃくちゃコード書けたりするので、「大学でこれを学んでいないとプログラマーにはなれない」みたいなことは一切ないぞ。

数学得意じゃないとプログラマーになれないの?

実はプログラミングってそんなに数学を使わない。数学が必要な分野もたしかにあるけど、本質はそこではない。

初心者は、「プログラマーやるためには数学が必要だから、とりあえず高校数学くらいはしっかり復習しておこう」みたいなことを考えてしまいがちだけど、これは悪いやり方だ。

何か作りたいものがあって、そのためにプログラミングをやっていて、問題を解決するために数学が必要だと感じたら、そのときに始めて数学を学ぶ始めればいい。「基礎を身につけてから実践」ではなく、「解決できない問題に直面したから学ぶ」という順序が大切なのだ。

ここらへんのこと関して、詳しくは、「初心者向けプログラミング勉強法!多くの人が理解できてないプログラマーにとって最も重要なこと」を参考にしてくれ。

プログラマーに数学は必須ではないし、少なくとも「プログラマーになるために数学を基礎からやり直そう」と考えるのは間違っていまる。最初からプログラミングに取り組め!

英語はできたほうがいいの?

英語は、数学よりもひょっとしたら大事かもしれない。英語が得意な人はプログラミングする上でも有利。

ただ、英語がまったくできない凄腕プログラマーとかもいるので、必須の要素ではない。

なぜ英語ができたほうがいいかと言うと、プログラミングやるときはGoogle検索でわからないところを調べながらやるのが基本。その際に、英語でググることができれば、アクセスできる情報が一気に増える。

あと、翻訳されていない公式のドキュメントは英語で書かれているので、そこにアクセスできるとめちゃくちゃ有利。

それなりに人気があって、よく使われている技術ほど、日本語の情報が多いので、日本語でググるだけでこと足りる場合も多い。だから英語は必須ではないのだが、できたほうがいいことは間違いない。

ただ、数学と同じように、プログラマーになるために英語を勉強するのではなく、プログラミングをやっていて、「英語でググれないと駄目だな」と思うようになったときから英語を勉強し始めると効率が良い。

そもそもプログラミングってどういうことをやるの?

そもそも初心者って、「プログラミング」がどういうものなのかよくわかってない場合がある。

例えば、「自動販売機」の場合、

お金を入れてボタンを押す(入力)と、飲み物とお金が出てくる(出力)。

これを処理するシステムを作るのがプログラマーの仕事だ。

200円入れたらお釣りはこれだけで、500円いれたらお釣りはこれだけ、足りない場合は、飲み物の在庫がない場合は……みたいに、色々と考えないといけないことがある。

スーパーのレジとか、自動車とか、駅の改札とか、銀行とか、クレジットカードとか、身の回りのほとんどのことにプログラミングが使われていることがわかるだろう。製造業はプログラミングの知見が必須だし、最近では農業などの一次産業でもプログラミングが求められるようになってきている。

もちろん、WEBサイトや、ブログやTwitterなどのウェブサービスもプログラミングで動いている。アプリもそうだ。

たいていのことにプログラミングが関わってくる。身の回りにあるシステムに対して「どういう処理で動いているんだろう?」という視点を持つといいぞ。

プログラマーってブラック労働なの?

日本には「IT土方」という言葉があるが、プログラマーはときにブラック労働の代名詞ともなっている。

けっこう昔の話だが、2ちゃんのスレから書籍化されて映画にもなった「ブラック労働に勤めてるんだが、もう俺は限界かもしれない」の主人公の職業はプログラマーだった。

「プログラマーはめっちゃブラック!」という印象はたしかにある。

ただ、これはかなり偏った情報だ。ネットで「俺は苦しんでる!」と情報発信する人は多いが、普通にホワイトな環境で働いている人は特に何もつぶやかない。

日本のインターネットでは「無能な上司に困らされる」類のテンプレが人気になる傾向があり、プログラマーがその主人公になる場合も多い。しかし、そんな極端な話はほとんどない。そこまで酷い会社があったとしても、まともなプログラマーなら絶対にもっとマシな企業に就職できるからだ。

たしかに、日本型雇用とITが悪魔合体して地獄化している職場っていうのもあるにはあるのだろう。派遣のプログラマーとか、ハローワークからほとんど何も理解しないまま現場に放り込まれた人は、そういう酷い場所でやっていかざるを得ない場合もあるかもしれない。ただ、そういう仕事をプログラマーと呼んでいいのかもわからん。

日本はプログラマーがまた比較的に冷遇されている国ではあると思うが、それでも他業種よりもプログラマーの平均年収は高い。

スキルも経験もコミュ力もまったくない人が「プログラマー」として採用されて過酷な労働を強いられる現場はあるのかもしれない。だが、俺の知ってる限り、まともにコードを書ける人やまともにコミュニケーションをとれる人が社畜のような扱いになるとは考えられない。

(まあでも、派遣はやめとけ)

スキルによって給料が上がっていくの?

プログラマーという職業の魅力に、「スキルアップできる職業である」というのがある。

面倒くさい人間関係とかポジションとは関係なく、実力さえあればそれに見合った給料が稼げる、というのはなかなかの魅力だ。

現実には、「高度なスキルを覚えるほど需要が上がっていく」といったゲームみたいな世界観ではない。ただ、経験を積んで「仕事ができる」ようになれば、他の職業よりはずっと稼げるようになる。

「スキル」に関しては、自分がやっているスキルが時流に合ってるか(需要があるか)っていうのが大事で、「高度なことをすればお金になる」ってことはない。

ただ、「技術に関するこだわりとか無しに、とにかく給料と地位を上げたい」と思った場合、やるべきことはわりとはっきりすると思う。高給がもらえるスキルを身につければいいだけだからだ。

プログラマーの実力はなかなか一般化することができないし、高度なスキルが給料に直結するわけでもないのだが、「努力」が給料に反映される度合いは会社員よりも大きいだろう。

プログラマーは手に職がつくの?

プログラマーのスキルは、「自動車整備士の資格を持っていれば食いっぱぐれがない」みたいなものとは種類が違う。

求められるスキルは変わっていくものだし、プログラミングはあくまで手段なので、一つの言語に習熟してからといってそれが良い結果につながるとも限らない。

ただ、「わからないことを調べながら動くものを完成させる」とか、「わからないことを調べたり学んだりしていくときに勘で当たりをつける」といった「メタスキル」は、プログラミングを続ければ身についていくし、そのスキルはかなりバリューが高い。

ここらへんの話は、「初心者向けプログラミング勉強法!多くの人が理解できてないプログラマーにとって最も重要なこと」を読んでくれ。

プログラミング言語って何からやればいいの?おすすめの言語とかある?

これは初心者にありがちな疑問で、俺もプログラミングの勉強始めたころはそんなこと思ってた気がするが、プログラミング言語は自然言語と違って、一つ一つの学習コストは全然高くない。一つの言語できれば他の言語もわりと簡単に使えるようになる。

「Javaをずっと書いてた人はJavaが上手い!」みたいな感じではないわけよ。

「まず何かしらの言語を学んで、その後でその言語が得意なものを作る」って方法はあまりよくない。「まず作りたいものを決めて、それに最適な言語を選ぶ」ほうがいい。

自主性が重視される風潮ってない?

「プログラミングおじさんって、まずは何か作ってみろとか自分で調べろっていうじゃん?何なのあれ?」って思うやつもいるかもしれない。

でも、自主性のないプログラミングの現場は地獄になるので、「教えられたことしかできない」人はあんまりプログラミング身につかないと思う。SE(システムエンジニア)とかはひょっとしたら向いてるのかもしれんが、WEB系のエンジニアはかなり自主性は重視される。

今のプログラミングは変化が激しくて体系化が難しいので、自主性にキャッチアップしていく姿勢があったほうがいいってことだ。

まあ今こういう記事を読んでる時点で、自分で検索などして情報を取捨選択できるってことなので、その延長でやれば問題はないだろう。

プログラマーは勉強し続けなければいけないの?

プログラマーはたしかに勉強し続けないといけない仕事だ。

だが、「仕事中には仕事のコードを書いて、休みの日には趣味のコードを書いてるくらいじゃないとプログラマーにはなれないよ」とかいうバカの言うことは信じなくていい。休みの日は休め。

そもそもプログラマーの仕事自体、勉強しながら(調べながら)作っていくものなので、「勉強」も仕事時間に含まれる。寝る間も惜しんで勉強する必要は一切ない。周りを見渡してもプログラミング以外の趣味を持っている優秀なプログラマーばかりだし、「とにかく努力が大事!」っていう思考をするやつは逆にプログラマー向いてないと思うぜ。

社会人で未経験だけど今からプログラマーを目指すならどうすればいいの?

プログラミングは、座学でコツコツと勉強するよりも、現場に放り込まれて働きながら学んだほうが格段に身につく。ただ、美味しいファーストキャリアを獲得するのはけっこう難しい。

今やってる仕事がブラックなのであれば、スキルが低い職場で雇ってもらって、「プログラミングという仕事」がある程度理解できてから、キャリアアップを狙うというのも手かもしれない。

今やってる仕事がそこそこの待遇なのであれば、趣味の時間にプログラミングをやって、GitHubなどに自分の作ったものを公開していくのがベスト。SNSや技術ブログで現役のプログラマーたちと交流していれば、自分がプログラマーになりたいのか、プログラマーとしてやっていけそうかどうかがわかってくるだろう。

どういうスキルが求められているのか、というのは変わっていくし、個人的な資質も大きく関わってくるので、一概に言うのは難しい。

一つ言えるのは、プログラミングというのは他の資格試験などと違って座学で身につくものではないので、何かを作って形にしてみようとするのが大事。

プログラマーに向いているのはどんな人?

「こういう人じゃないとプログラマーにならない」ってのは馬鹿らしい。今は義務教育でプログラミングやるんだろ? じゃあ色んなタイプのプログラマーがいて然るべきだろう。

ただ、私見を言うなら

  • 手を動かすのが嫌い
  • わからないことを調べるのが面倒くさい

っていう人にはプログラミングは難しいかもね。この2つが平気なら誰でもなれる可能性はあると思うぜ!

スポンサーリンク

コメントを残す