実際どうなの?未経験から始めるプログラマー

Pocket

「ぶっちゃけどうなのよ??」

てところを自分の経験ベースに書いていきます。

んーまずはとりあえずネガティブなイメージを書き出してみると、

  • プログラミングスキルの習得が難しい
  • どのプログラム言語を勉強すればいいかわからない
  • プログラム言語の数が多くて全部マスターするの無理
  • 頭が良くないとなれない
  • 理系有利で文系不利
  • ブラインドタッチできないレベルなので絶対無理
  • プログラミングのプも知らないし流石に無理だと思う
  • 1日中パソコンに向かって仕事するの無理

こんな感じかな?

自分が当時思っていたことや、未経験ならこう思うだろうと想像して書いてみたけど後半のいくつかはプログラマーになろうとしていない人の可能性があるな^^;

ではでは、10年以上プログラマーやってきた経験者として、すべて答えていきます。

プログラミングスキルの習得が難しい

これはウソでもありホントでもありますね。

自分の経験で話しますが、Webシステムのプログラマーを目指すのであれば、ある一定のレベルまでは誰でも習得可能という意味ですごく簡単だと思います。

ある一定のレベルとは、とりあえず仕事ができるレベルと捉えてください。サッカーで例えるなら高校生レベルでしょうか。真面目に練習すればとりあえず試合には出れる世界という意味で。

プログラミングも同じで誰だって時間をかけて真面目に勉強すれば、とりあえず仕事ができるレベルにまでは到達できます。時間さえかければ誰でも習得できるというのはすごくハードルが低いですよね。

簡単なバグ修正だったり、入力項目を1つ追加する程度の機能追加であれば、3ヶ月もあれば出来るようになります。

経験者が言うので間違いないデス。自分は会社の研修で平日朝から晩まで毎日Javaの勉強をしてたら3ヶ月ほどでそのレベルには到達できていましたし、未経験から始めたひとを何人も教育してきた経験もあるのでこれは断言します。

さらに上のレベルを目指そうとすると、計り知れない勉強量が必要になってくる世界ですね。サッカーでいうとプロレベルの世界。これもある意味時間をかければ誰でも到達できるかもしれませんが、人生のほとんどを捧げるくらい時間をかけれるのか?と考えるとハードルは高いと思います。プロスポーツ選手って人生のほとんどをそのスポーツだけに捧げた結果だと思いますので。

自分はプロレベルの人たちとも仕事をしたことがありますが、本人にとっては勉強している感覚はまったく、ただただプログラミングが好きなんだろうと感じました。だって、通勤中も仕事中も家でもずっとプログラミングしてるんだもの。好きこそものの上手なれ。

結論として、仕事するうえで最低必要なスキルを身につけるのは簡単。プロ級のスキルを身につけるのは難しい。ということです。

いきなりプロレベルを目指す必要はまったく無いし、プログラマーの全員がプロレベルを目指す必要もまったく無いです。

どのプログラム言語を勉強すればいいかわからない

言語って200種類以上あるらしいですね。でも、これは何系のシステムをつくりたいのか?によってある程度絞り込めますし、筆者が実際に仕事で出会った言語なんて20種類もない気がする。

  • Web系:Java、C#、PHP、など
  • 組み込み系:C、C++、など
  • MacOS系:Swift、Objective C、など

筆者が仕事で出会った代表的なのはこんなとこですね。

ちなみに、Web系でHTMLやJavascript なんて言語もありますが、これらはシステムを作るうえでメインの言語になりにくいので、何から勉強すればいい?という観点からは省きました。

Webシステムをつくるとき、サーバー側:Java、クライアント側:HTML+Javascript、のような構成になることが多く、どうしてもサーバー側の処理がメインになります。

なので、勉強するならメインとなる言語を習得したほうが、最短で仕事に繋がります。

ぶっちゃけ、最初はJavaを勉強しながら、ある程度Javaがわかってきて、そろそろWebシステムをつくってみるかってなったときに、HTMLとJavascript をそのシステムに必要な処理の部分だけ勉強する、ってやり方でも十分かと。

結論として、筆者のオススメはJavaかC#です。最近はフレームワークも充実してて、意外と簡単にWebシステムがつくれちゃいますよ。それでいて、ひととおりのプログラムの概念が習得できる。

プログラム言語の数が多くて全部マスターするの無理

「諦めたらそこで試合終了ですよ」

先生はそういってますが、大丈夫です。諦めても試合続行できます。

ぶっちゃけ全部マスターするのなんて無理です。僕は他の人と比べると扱ったことのある言語は多いほうだと思いますが、それでも10数種類です。ましてやマスターしている言語なんて無いに等しいです。

マスターの定義があやふやなのでアレですが、僕の場合は先ほど「プログラミングの習得が難しい」の章でいったプロレベルを想定しました。高校生レベル(=とりあえず仕事はできるレベル)で考えると、10数種類ということになりますね。

ただ経験から言えるのは、この先どんな言語のシステムを担当しようが、まったく問題はないということです。なぜなら、ひとつの言語をある程度のレベルまで習得したことで、プログラムの基本が身についているからです。

ぶっちゃけ、言語が変わったところで、少し書き方のルールが変わる程度で本質的なところは変わりません。

結論として、とにかく最初はひとつの言語を集中的に勉強しろ!!ってことです。すべてはそこから。

頭が良くないとなれない

そんなことないです。大学出ていない自分が余裕でプログラマーやってますから。

理系有利で文系不利

そんなことないです。プログラミングのスキル習得には関係ないです。「プログラミングスキルの習得が難しい」の章で書きましたが、時間をかければ誰でも習得できます。

そして、むしろ文系が有利となるシーンも多いですね。まー文系というか、人に何かを伝えるスキルが高い人は有利ですね。どの仕事でも同じことが言えそうですが。

システム開発って通常はチームでやるんですよ。そうすると当然、チーム内でコミュニケーションをうまく取らないと進捗にも関わりますよね。プログラムの仕様の連携だとか、日々のホウレンソウだとか、とにかくコミュニケーションがうまく取れてるチームは強いです。

僕は今までたくさんの新人を教育してきたし、自分のプロジェクトに新人を招待して一緒に開発してきましたが、ひとつ分かったことがあります。

多少、プログラムのスキルが低くても、分からないことがあれば自分から適切に質問できて、進捗が遅れそうなときには自分からアラートをあげる、などこの当たりのコミュニケーションがしっかり取れる人はすぐにチームで活躍できるようになりますね。

逆に、プログラムのスキルが高くても(と言ってもその辺のプログラマーなんて大体みんなどんぐりの背くらべですけど)、分からないときに1人でずっと1日中悩んでる、おまけに進捗が遅れていても、こっちから確認するまで報告しない(ひどいときは聞いても進捗が遅れていることを隠す)なんて人は、チームから外されますね。

代わりなんていくらでもいますからね。

結論として、理系文系なんて関係ない。正しくコミュニケーションを取ることが大事。

ブラインドタッチできないレベルなので絶対無理

ブラインドタッチできないプログラマーなんてわんさかいるので大丈夫です。

そして、ブラインドタッチなんてそんなに気合いれなくても習得できますよ。僕はオンラインゲームでチャットしてたらいつの間にかできるようになってました^^

プログラミングのプも知らないし流石に無理だと思う

最初は誰しもプすら知らないですよ。プログラミングはやる気さえあれば誰でも習得できます!

経験者が言うのだから間違いない。

1日中パソコンに向かって仕事するの無理

これはねー。実はそんなこともなかったり。

そういう日もありますが、システム開発ってチームで作業するので、ミーティングしてる時間もけっこうあるんですよね。

僕が指揮するプロジェクトの場合だと、ミーティング(作戦会議)してる時間が結構ありますね。1日のほとんどをミーティングしてるときもあります。

というと、どこかのしょーもない企業みたく、無駄な会議を延々としてると思われちゃうかもしれないのですが、まったく逆です。

すごく単純なことで「段取り八分仕上げ二分」を実践してるからです。メンバーにどんなシステムをつくるのか、を背景からプログラムのだいたいのイメージまですべてチームで共有するためです。

メンバー全員がプロジェクトの全体像から細部までを明確にイメージできるようになれば、そのプロジェクトは必ず成功するからです。

実際、私がトップで指揮するプロジェクトは99%残業0という実績があります。

結論として、そういう日もたまにあるけど、そうじゃない日もあるよ。

まとめ

いろいろ書きましたが、正しく学べば未経験からでも簡単にプログラマーになれる!

まだまだプログラマー未経験者の募集はたくさんありますからね。これから先もこの状態は続くでしょう。

ぶっちゃけ、時間をかけて真面目に学べば誰でもなれるので、気軽に1歩踏み出せばいいよ。何も損することはないし、むしろプログラミングスキルを習得できれば、一生使えるスキルだし仕事には困らないし。

それだけでやってみる価値は十分にあるかなー。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください