誰しも何をするにも、最初は未経験ですね。
プログラマーも当然そうです。
しかし、プログラマーに関して言えば知識なしでは務まりません。
未経験=実務経験なしという意味であって、プログラムへの知識や構文の理解はできているのが普通です。
プログラマーに限らず、技術屋の世界には「技術は教わるものではなく盗むもの」という言葉がある通り、本人にやる気や才能、根性、努力があれば、見よう見まねで自ら率先して習得しようとするはずです。
また、そうでなければ身につかないか、他者より身につくスピードが遅く足手まといになりかねません。
この「自発性」こそ、プログラマーになるにあたりもっとも必要な要素の1つだと思います。
もしあなたがプログラミング未経験で知識もなく、でもプログラマーになりたいのであれば、こう言います。
すぐプログラマーに就職しないでください。
今回は、プログラマー未経験で知識もない人がプログラマーに就職してはいけない理由と、就職できてしまうリスクとリターン、そして、本当の意味でプログラマーになりたい方に向けた「知識」の付け方と本質論です。
プログラマー未経験・知識なしで就職するな
そもそもできる・できないについて疑問のある方もいるでしょう。
地方ならいざしらず、東京や大阪、そしてそれなりの地方都市ならば、
「プログラマー未経験・知識なしでも歓迎!」
とうたっているプログラマーの求人は探せばおそらくでてきます。
謳い文句が嘘の可能性はありますが、そんな言い方をすれば本当に「プログラマー未経験・知識なし」の方が面接に来ますよね?
あえてそんな方が欲しい企業は、一体何が目的なんでしょうか?
それにはそれなりの裏があると考えるのが自然ではないでしょうか。
プログラマー未経験・知識なしで就職できるような会社は99%ブラック企業
ブラック企業・・・この言葉で片付けるのが一番ピンと来るでしょう。
プログラマーになるのに容易い道などないのです。
たとえば実際にはプログラミングのプの字も関係ない雑用を押し付けられたり、教育や研修が全くないのに「作れ」とだけ言われたり、ちょびっとだけ研修みたいなことをして「もうできるね」と言って別の会社に斡旋されたり・・・。
こういった悲惨な体験談は、検索すればまいきょにいとまがなく出てきます。
実際私の知人でも経験者がいます。
ブラック企業が悪いとは言い切れない
ブラック企業とはある意味レッテルであり、露骨な法律違反や雇用契約違反がなければ、それに同意したあなた本人にも悪いところがあります。
冒頭申したように、プログラマーは知識なしでは務まりません。
にも関わらず、プログラマーに就職したかったあなたは要するに
- 勉強は会社で給料をもらいながらする
- やってればできるようになる
- 難しいことは何でも教えてもらえる
といった発想があったのではないでしょうか?
特に一番上の「勉強は会社で給料をもらいながらする」は、たしかにその側面はありますよ。
しかし会社からすれば、そんなモチベの低くできるようになるかもわからないあなたに、なぜそこまで奉仕してあげる必要があるのでしょう?
ありませんね。
となれば当然、「ゼロから教育してあげる」の名の下に雑用をやらされるに決まっています。
そうなってしまえば、プログラミングと関係ない仕事ばかりやらされる羽目になり、結局プログラミングの勉強は空いた時間に自分でしなければならないのです。
「プログラマーになりたいけど未経験で知識なし」とは、つまり夢はあるけどそのための努力はしたくない、人に叶えてもらいたいという心に漬け込んで、「ここでこの仕事をすれば夢(=プログラマーになる)は叶うよ」と誰もやりたがらず何のプラスにもならない雑用をやらせるのです。
私の意見としては、どっちも悪いですが、僅差でその人に問題があるように思います。
夢があるなら自分で叶える、プログラマーになりたければ自分でなれる
自身の夢を簡単に叶えてくれるという甘い誘惑に負ければ、結局は雑用として何ヶ月何年も時間を無駄にすることになるでしょう。
または無理難題を押し付けられて頭がおかしくなるかもしれません。
世の中は常に等価交換、ローリスク・ハイリターンなど基本的には存在しないのです。
結局は「知識なし」でのプログラマー就職は厳しいということになります。
そこで、次は「自発的」な「知識」の付け方を私流のやり方で紹介したいと思います。
プログラマー未経験?知識がなければつければいい
簡単なことです。
幸いなことにプログラミングに関する書籍やネット情報、ネットサービスは星の数ほど存在します。
一方プログラミング言語もたくさんありますので、自分が目指すプログラマーに適した言語を先に調べる必要がありますが、学ぶべきプログラミング言語がわかったら、あとはもう実践あるのみです。
用意するものはPCとネット環境のみ。
最近では一部スマホでもできるようですが、実践的なことを考えればPCでやった方がいいでしょう。
「◯◯ 始め方」(◯◯=プログラミング言語)で早速ググってみましょう。
※ググるとは「グーグルで検索する」の意味です。念のため。
いくつもサイトがヒットするかと思いますので、片っ端から試して下さい。
できるまでです。
さあ!
あえてスパルタキャラで言ってみたのですが、それには理由があります。
実はこの"ググる"という作業はプログラミングそのものより多く時間を使います。
特に未経験なら未経験なほど、知識がなければないほど"ググる"必要があります。
「ググる」ことの3つの重要性
「◯◯の始め方」が分からないからプログラマーを諦めるなら、仮に◯◯が始められたとしてもプログラマーにはなれません。
答えをできるまで探して何度も試すトライ・アンド・エラーはプログラマーのメイン業務です。
未経験・知識なしのあなたは◯◯始めた後の方がもっと分からないことが多いわけですから、そのメイン業務と同じように、あなたもトライ・アンド・エラーを繰り返して、ゆっくり一歩ずつ前進していく必要があります。
1. 着実な前進、知識を得た実感が得られる
自分で調べて覚えた知識や、何度も調べたことは人間は忘れないものです。
逆に、他の人にやってもらったり、他の人からサクッともらったアドバイスで分かった気になっても、実際身についてはいないものです。
「前は1行のコードを書くのに1回ググっていたのが、いつのまにか数行連続でかけるようになった!」
こんな感動の経験はありますか?
まだないという方、実はコレはすべての先輩プログラマーがしてきていることです。
最初からバシバシコードがかけるプログラマーなどいないのです。
2. 気づけば「ググり方」が上手になっている
最初の頃は1歩進むために何度も「ググる」必要性があります。
大変でも繰り返し継続することで力になります。
しかし、1つの問題に対する「ググる」回数は、回を増すごとに減っていくことにきっとあなたは気がつくでしょう。
知らず知らずのうちに「ググり方」が上手になっているのです。
実はググり方の上手い下手は、プログラミングスキルと直結しているといっても過言ではありません。
プログラミングには、ファイル管理、構文、処理の3つがありますが、この内構文と処理が知識に該当します。
構文は文法と同様、一度覚えれば種類は多くないので、パターンがわかってきます。
しかし処理は無限に存在します。
処理には無数の関数(function)を必要とし、プログラミング言語ごとに組み込まれている関数の種類や関数名が違います。
とにかく数が膨大なので、さすがの先輩プログラマーもすべてを覚えている人はごく少数か、もしくはいないに等しいでしょう。
私も、時に構文もド忘れますし、処理については本当によく使うものくらいしか覚えていません。
都度ググります。
ググって1発で答えにたどり着ける人とそうでない人には効率面で大きな差が生じます。
3.就職してから人に迷惑をかけなくなる
プログラマーは「ググる」のが仕事のようなものです。
裏を返すと、細かい知識はいちいち覚えておらず、できたかどうかだけを覚えておきます。
やり方は都度「ググる」。
この方が良いということに経験年数が多いプログラマーほど気がついています。
プログラミング技術や手法は日進月歩であり、すぐに新しい方法が登場します。
それは、従来の方法にはセキュリティホールがあるなど、致命的なエラーの改善の結果でもあります。
新しい方法を知らず、古い手法を使い続ければ、セキュリティホールが残ったままになります。
先輩プログラマーも常にググってググって新しい方法を知ったり、やってみたりしているのです。
そんな中ですので、先輩プログラマーに何かを質問するということは、「先輩、俺の代わりググってください」といったのと同じです。
そもそもそんな暇ない上に、みんなググってやっているのです。
あなただけ楽をしようとしていると思われても仕方がない言動です。
当然嫌な顔をされますし、あなたが自分でググってやった方が早いんじゃないですか?
なるべく自分で解決できる人の方が好かれますよ。
先輩プログラマーに質問するのは、ググってもググってもどうしてもわからなかった時と、やってみたことをコレで良いかチェックしてもらう時にしましょう。
以上、3の重要性を紹介しました。
これはプログラミングの勉強でも実践でも全く同じです。
仕事にはそれに加えて納期と責任がありますので、プレッシャーがかかります。
知識がなければないほど「ググる」必要があると言いましたが、納期と責任がある以上は悠長に作業はできませんし、バグだらけでは困ります。
「ググる」ことに時間がかかると結局は時間が足りなかったり、納期が遅れたり、回りにも迷惑をかけてしまいます。
「ググる」ことに慣れないうちは、知識がない未経験プログラマーが、いきなり就職することをおすすめしない理由でもあります。
未経験・知識なし=受け身の姿勢ではプログラマーは務まらない
未経験で知識なしでもプログラマーとして採用してください!というのは、会社に甘えているとさきほど述べました。
言い換えると受け身なのです。
プログラマーが受け身では困ります。
なぜならコンピューターが受け身だからです。
プログラマーとは、プログラミング言語を駆使してコンピューターに命令を出す仕事のはず。
そのあなたが、受け身の姿勢では受け身対受け身で何も始まりませんよ。
コンピューターに対して、まずあなたからアクションしましょう。
それはまず知識をつけることでもあり、同時にプログラミングという仕事の本質です。
今あなたが知識ない状態でもかまいません。
焦らずゆっくり、知識をつけていけばいいのです。
まとめ
いかがでしたでしょうか?
最後にはプログラミングの本質に直結させましたがちょっと強引でしたかね?
ここまでの内容を1つの単語にまとめると、未経験・知識なしでプログラマーになりたければ、まず「自発性」を持ちましょう。
就職は3ヶ月、6ヶ月、1年先になってもかまいません。
焦って乗った船の行き先はブラック企業かもしれませんよ?
なんとか時間を作って、知識を獲得することで、「知識」と「知識を獲得する方法」を手に入れましょう。
最後に、受動的姿勢なコンピューターに対して主導的に命令を出して、コンピューターをうまく動かすのがプログラミングです。
コンピューターにやってほしい処理のケースや条件は決まっているので、それをできるようにうまいこと指示を出すのがプログラミングです。
会話する相手は人間ではなくコンピューター。
1文字間違えれば意味は通じませんし、返答は極めてそっけないものです。
最初の頃はこれに嫌になったり、わけがわからず戸惑ったりします。
しかしそれは、今を輝くほぼすべてのプログラマーが通った道ということを思い出して下さい。
「わけわからん」「もう向いてない」「無理だわこれ」「詰んだ」と嘆いたのはみんな同じなのです。
それを何とかするのが、プログラマーの仕事。
あなたも負けずに自分から動き出しましょう!
どうしても詰んだ時は、無理せず別のことをして気分転換です。
がんばってください!