プログラマになるにはどうすればいいですか?

こんにちは。プログラムをはじめて25年経ったヤマヤタケシです。

ニコ生やってると「プログラマになるにはどうすればいいですか?」と、ちょくちょく聞かれます。

資格はいらないので、自称でOKじゃー!
俺が犯罪を犯したら、山屋健(34)プログラマー(自称)とでも報道してくれたまえ!
本当に自称でいいのですが、質問した人はきっと「職業として、仕事として、収入の糧としての職業プログラマにどうすればなれるのか?」が聞きたいのでしょう。

アドバイスいたします!

職業人としてのプログラマは基本的に普通のサラリーマンに求められる事と同じです。
無遅刻、無欠勤、サービス残業、報告、連絡、相談です。
プログラマとして付け加えるのは、仕様書を見てそれをプログラム言語で書いて問題なくコンピュータで実行させるスキルです。
それができたら派遣会社に登録してください。
どっかの現場に突っ込んでくれることでしょう。

これであなたも立派な職業プログラマです!

プログラマは一般派遣労働者ではなく、特定派遣労働者で法律上の立場が違います。
頭の片隅にでも置いてください。

職業プログラマを志すのであれば「仕様書をみて実現する」というのをやってみればいいのです。
やってみて、向いてなければ他の仕事を当たってください。

よしやろう!と決心しました?

では、最初に作るべきは「電卓」です。
小さい完全なアプリとして、電卓という題材は最高です。
身近ですし、役に立ちます。
絵に個性を持たせるだけでバカ売れです!

実物の電卓を手元に置きましょう。

作ろうとして最初に悩むのは開発環境と実行環境です。
開発環境はMac? Windows? Linux?
実行環境はMac? Windows? FireFox? iPhone? Android? Windows Phone? Tizen? XBOX? Ouya?
使用する言語は? C? C++? C#? D? Java? PHP? Lua? Ruby? Python?
と迷います。
多すぎてどれを選んで良いのかわかりませんね。

そこで、俺だったらこうするなーっていう学習の流れを提案致します!
開発と実行の環境は、Windows、メモ帳、ブラウザのFirefoxです。

1. Googleで、「Javascript 電卓」を検索します。
2. お好みの分かりやすいサイトを選びます。
3. そこのプログラムの例題を実行します。プログラムコードを眺めます。
4. 見ないで作ります。分からないところはカンニングします。
5. 見ないで作れるようになるまで繰り返します。

見ないことには何も進まないなら、最初は写経で良いと思います。
そして、見ないでかけたなら結構な力がついている事でしょう。
最初に解説を読んでも、考えるための材料がないのであまり意味を汲み取れないのです。
小さいけど完全なアプリを脳内に入れておけばそれが幹になります。その後に枝をのばし、葉をつけましょう。
電卓の次は時計に挑戦しましょう。時刻はOSから取得する必要があり、APIを調べる事になります。

時計ができたら、次は妄想を紙に書いて仕様書にして、オリジナルアプリに挑戦!
これができれば妄想が現実になるのです!
呪文でアプリを召還するようなものです。

アプリの内容を紙に書いた物を仕様書と言います。
仕様書は日本語という曖昧言語でかかれており、プログラマはそれを厳格なコンピュータ言語に変換するのです。
仕様書は特別決まった形式がある訳でもなく、パワポでバーン!みたいなものから口頭で、ぽろっと言っただけまで幅広いものです。
なんかもう時と場合によります。
ようするに内容がわかって忘れなければ何でも良いのです。
穴だらけの仕様書にイライラしてはいけません。仕様変更にイライラしてはいけません。
その曖昧さにどれだけ対応できるか、どこまで拾えて実装できるが職業プログラマとしての評価基準なのです。

完璧な仕様書を作るのはかなり大変ですし、完璧な仕様書を書けるお客さんは、翻訳してインドに発注すればいいのです。
完璧な仕様書を落とし込むだけのプログラマの人月単価は安いのです。
所詮自称ですし、コンパイラは無料だし、パソコンは安いし、ネットに情報は死ぬほどあるので、本当に誰でもなれるのです。参入障壁なんてありません。
プログラムの世界はグローバルです。
日本人じゃなくても良いですし、英語がベースなので英語圏の連中は有利です。
実際のところ人件費が安いわ頭がいいわのインド人のプログラマも多いのです。

”マイクロソフトの従業員の34%、IBMの従業員の28%、インテルの17%、ゼロックスの13%がインド人だ。”(引用 http://gendai.ismedia.jp/articles/-/31236

ぞわっとしますけど、それがグローバルです。

日本人が人件費の安い国々の人と競合しないためには、日本語の曖昧な仕様を受け入れて、口頭の思いつきもちゃんとメモって漏らさないようにしましょう。
外国人プログラマとの差別化になります。
幸い日本語は難しいので良い参入障壁になっています。

もう少しプログラムについて書きます。
プログラムを書くというのは、人間の都合と機械の都合の両方を理解して調停する仕事です。
昔のプログラムは機械語、アセンブラという機械の仕組みがむき出しな言語を使うしか選択肢はありませんでした。
CPUの動作原理やレジスタ個数と役割を深く理解しないと実現ができませんでした。
今は先人の叡智により人間の脳の考え方に近い方法で記述できます。Javascriptを書くときにCPUの知識は不要です。コンパイラやインタプリタがCPUの面倒を見てくれます。
本当に、死ぬほど便利なものがインターネットに無料で転がっている時代になりました。

記念すべき最初の一歩を踏み出したその次にすべき事は、膨大な情報を扱うスキルを磨く事です。
アプリを作るために必要な情報は膨大です。アプリの分野によってぜんぜん違います。
電卓を作るのに必要な知識と、シューティングゲームを作るのに必要な知識は全然違います。
しかも、作りたいアプリやシステムや状況によってふさわしいコンピュータ、OS、ライブラリも違います。
それらもそれぞれ膨大な情報の塊です。
それら全部を覚えようとしても膨大すぎて、当たり前のように覚えられません。

だから、むしろ覚えないで作る技こそが必要です。

覚えないで作るためにメモを書き、検索します。
検索に必要な曖昧な知識と、こういうのがあるんじゃない?という連想力、発想力が大事です。
さっき「電卓 javascript」でググったところ、良いサイトがヒットしました。
俺が考えそうな事はもう誰かが考えて、ネットに置いてくれています。
ここに電卓の作りかたはありませんが、電卓を作ったら良いよという指針があります。

ということで、これからプログラマを目指す人は電卓アプリをJavascriptで作ってブラウザで実行しましょう!
そこから先は、ゴール次第です。
ゲーム?WEBサービス?FX自動売買システム?
それぞれにふさわしいコンピュータ、OS、言語、ライブラリ、プラットフォーム、ツールがあります。
死ぬほどコンピュータの世界は広がっているので、目指すところへ一歩一歩進んでください。

この文章が、これからプログラムを始めようと思う人に少しでも役立ったら幸いです。

システムやコンピュータに関する相談に乗ります。
コンサルティング料は1時間5000円です!

そんじゃまた。

軽い気持ちで有名になりたいのでクリックをお願いします!

追記:
そういう自分が電卓を作った事がなかったので、Javascriptで電卓を作りました。
「Javascriptで電卓を作ってみた。ソース付き。」

プログラマになるにはどうすればいいですか?” への53件のコメント

  1. 私はハードウエアプログラミングはやっていましたが
    ソフトウエアプログラムはど素人の30歳です。
    最近プログラムを勉強し始めました。

    電卓からの勉強の流れ、参考になりました。
    これからやってみたいと思います。

  2. どうでもいいじゃん、あげあしとりがおおいな !!
    こまかい話とかどうでもよくないですか?

    コンサルだって、別に頼まないなら気にしなけりゃ良いし、
    単価だって、別に普通でしょう。

    だれかのためになる記事があるとしたら、
    変な否定の仕方をしないで、ここをこうかえたら
    初心者にしたわりやすいですよ? 
    とか、将来の技術者に向けて一緒にアドバイスをしてあげる風潮があれば、
    情報の取捨選択をそこまでしなくても(初心者ならそもそもしにくい)
    一つのサイトのコメントまでキチンとみれば、わかり安いサイトがふれるのではないでしょうか。

    この人を叩きたいのか、初心者を助けたいのか、
    コメントしている人の立場はどうなんでしょうね。

    コメント欄なんでどうコメントするかも自由だとは思いますが・・・

    • まささん、コメントありがとうございます!
      完全に同意です。コメント欄も自由です。
      仰るとおり建設的な意見は大歓迎です。
      会社をやめて世の中を見渡した時に、本当に他の業界のことはさっぱりわかりませんでした。分からないけれども、どれかに決めて飛び込まないと収入につながりません。
      飛び込み先もわかりません。
      そういう人のために自分の経験から1本のルートを提示させていただきました。昔の自分に対する参考資料です。

  3. 梯子職人なので
    コードはひけません
    でも線は引けます
    梯子職人なので
    マウスでは操作が難しい
    でもタッチパネルなら主食です
    自己紹介は置いといて、今猿@5000ってエコですね
    相談範囲はどこまでおkですか?

  4. 素人にはいいアドバイスでも、そんなデタラメな多重派遣の素人に仕事に穴を空けられたら中小企業程度なら一発で吹っ飛ぶだろ、ついでに言うと派遣屋の多くは一般派遣免許でプログラマに該当する特定派遣登録はやってない、だから偽造請負という違法行為を助長するだけなので安易なコメントは控えた方がいいんでないかい?

    • だれでも最初は素人ですし正社員雇用が絞られている昨今においてはしょうがないかなと思っています。中小企業様におきましては多重派遣ではないことを確認し、常駐者の手取り額と支払額の差をご確認いただければと思います。もちろん無料で読める素人ブロガーの安易なコメントですので、インターネットの他の情報と同様に取捨選択していただきたいと存じます。

  5. ピンバック: プログラマになりたいならこの辺りがオススメらしい。 | ヤマヤタケシのブログ

  6. ピンバック: 職業プログラマから作家プログラマーへ | ヤマヤタケシのブログ

  7. ピンバック: 職業プログラマから作家プログラマーへ | ヤマヤタケシのブログ

  8. ピンバック: プロフェッショナル系プログラマーは無職や自営業や | ヤマヤタケシのブログ

  9. ピンバック: 本来のプログラマはこうあるべきだが日本の現状にあわせるとああなる。でも悪くない。 | ヤマヤタケシのブログ

  10. ピンバック: 年収370万円以上無いと人生が詰む件 ほか | みそかじつ。

  11. ピンバック: アクセス数が伸びた事を素直に喜ぼう! | ヤマヤタケシのブログ

  12. ピンバック: プログラマになるにはどうすればいいですか? | ヤマヤタケシのブログ | ブログハッカー™ 2chまとめブログアンテナ

  13. コンサル料うんぬんのとこ食いつきすぎでしょ。
    記事のスパイスとしてのネタだろうに。

    「ネタをネタと見抜けない人でないと(こういう人のブログを読むことは)難しい」んじゃない?

    あ、記事面白かったです。

    • コメントありがとうございます!
      ネタといえば全部ネタですし、本気といえば全部本気です。
      コンサル5,000円もオファーがあればやります!
      このブログをよんでオファーするかどうかは、お客様次第でございます。

      1時間5,000円という値段は、別に高くないです。
      弁護士の相談料は30分で5,000円ですし。
      その半額です。
      うまく、お客さんがいたと仮定しても、
      20 days * 8 hours = 20 * 8 * 5000 = 80万円
      売り上げベースで、人月80万円は普通の企業の人件費と同じくらいの値段です。

  14. ピンバック: ゲームクリエーターになるにはどうすればいいですか? | ヤマヤタケシのブログ

  15. これはどのような方に向けての文章か、いまいちわかりませんでした。
    0から始める人か、ある程度プログラミング経験のある人か。。。。
    もし、0から始める人に向けてならJavascriptで電卓は違うんじゃないかと思いました。

    • 0から始める人や、興味があるぐらいの人の背中を押すために書きました。この記事を書いた後、電卓を0から作ってみましたけどやっぱり良いネタと思います。しかも「0から作れ」ではなく、「見ながら書きましょう」ですし。
      もっと良いネタを教えていただければと思います。

  16. プログラマでもいろいろありますが、何系のプログラマがいいとかありますか?
    例えばWeb系、ゲーム系など様々にあります。
    興味があるのであれば、まず身近なことから始めてみてはいかがでしょうか。
    例えばHTMLやJAVAスクリプトなどでWebを構築してみるとか、
    iPhoneやandroidのゲームアプリを作ってみるとか。

    • 何系のプログラマが良いのか?もちろん興味のある分野をやるのが一番良いと思います。
      しかし、仕事として考えると働く場所に依存します。
      少なくとも、富山県にゲーム系の人を雇い入れるほどの会社は知りません。残念です。
      仕事として考えると、選択肢が限られている可能性があります。
      東京はなんでもあるでしょうけれども・・・。
      富山にこだわるといういみでも、自分自身iPhone、androidのゲームを作って食っていけたら良いなと妄想しているところです。

  17. プログラマーになるには、もちろん言葉や専門知識が必要ですが、それよりも頑張ってられる方に共通するのは、コミュニケーション能力の高い方だと考えます。うまくコミュニケーションの取れる方は、問題解決能力が高いようにも思えます。また、構築センスもよろしいように感じます。ですから、プログラマーになるべく能力が整ったら、日常生活も整えて頂きたく思っています。

    • おっしゃる通りです!知っている人に一言聞くだけで、数時間のハマりを回避できる事は多々あります。何時間もハマっていたことを、なんとなく聞いたら5分で解決するとか、珍しくありません。
      プログラムは問題解決の連続です。仕様の変更もあるのでコミュニケーションがうまくいっていないプロジェクトは手戻りなど、作業のロスが多発します。
      とにかく、どこかの現場に潜り込んだらできる先輩の側で技を見て盗み、話をして知識を吸収しましょう。

  18. 英語に拒否反応がなく、体力がある方がいいと思います。体力というと不思議な感じがすると思いますが、場合によっては徹夜で作業する場合もあり、肉体的に強くないと精神的にきつくなってくる可能性があるからです。英語は、調べ物をする時に英語の資料を参照することが多々あるからです。

    • 英語からは逃げられません。今時プログラムの変数や関数やクラスにローマ字を使っている人は見た事ありません。
      英語から逃げられないので、立ち向かいましょう。
      昔、何度か徹夜をしましたがもうしません。徹夜をするくらいならその職場を去りますね。寝不足は鬱病の原因になります。鬱病になっても誰も面倒は見てくれません。本人が損をするだけです。会社が原因だとしても裁判をするほどの元気はないでしょう。鬱ですから・・・。
      とにかく、睡眠時間だけは絶対死守です!

  19. なんだか辛口コメントが多いですね。
    私はプログラマとは全く無関係ですが、もし少し気になっていた場合や初めてみたいと考えている場合、良くも悪くも参考に出来たり、道しるべにしたりということも出来るので情報発信することはとても素敵だと思います。
    是非これからも続けて書いていただきたいと思います。

    • ありがとうございます。これだけコンピュータが普及するとプログラマという仕事は今はもう珍しくないと思います。社会から訳の分からない連中というレッテルはそろそろはがしたいですね。発信します!

  20. ピンバック: Javascriptで電卓を作ってみた | ヤマヤタケシのブログ

  21. 確かに「仕様書を見てそれをプログラム言語で書いて問題なくコンピュータで実行させるスキル」というのは合っていると思いますが、少なくとも「職業プログラマ」を名乗るからには、せめてプログラムの「構造化設計」の知識くらいは最低限持っていてもらわないと困ります。若者ができないと言っている機能を代わりにプログラミングしてあげたら「キレイなコードですねぇ」と感動されました。職業とするからにはキレイなコード書いてほしいです。

  22. プログラミングは適性と才能が大きくものをいいますので、まず才能のあるなしを見極めることです。次いで適性があると判断したら、プロのプログラマーについてプログラミング能力に磨きをかけることです。与えられた課題をこなせれば、黙っていても道は開けます。

    • この記事が、「プロのプログラマーの横にどうすれば座るか?」に役立てば幸いです。
      最初の一歩がなかなか難しいのです。
      適正と才能は学習の速度にでますが、「できない」という事はありません。
      最初からあきらめて才能が埋もれっぱなしはもったいないです。

  23. つまり日本語を話せるインド人を友人に持てば、5000円が浮くわけですね。
    勉強になりました、ありがとうございます。

  24. 客観的でいい文章ですね。
    私がIT業界に何年かいた時と同じような考えです。

    でも、電卓はハードル高くないですか?
    再起呼びたしは理解できる人と出来ない人のリトマス紙だと。
    物理シミュレーションもそうですが、
    出来る人はしばらく悩んだら突破できるけど、出来ない人にはベテランになってもなぜかできないらしいのです。

    自分はハタチの頃、電卓作りに一ヶ月半悩み抜いたのがいいレベルアップになりました。
    そこからスクリプト言語に発展するのは一週間もかからなかったと思います。

    • コメントありがとうございます!
      電卓は考えて作ろうと思うととても大変ですが、丸覚えする最初の一歩としては良いと思います。
      再起呼び出しを使用するアルゴリズムは難しいですよね。
      昔はスタックサイズが小さかったので、それが使えないときもありました。

      スクリプト言語に発展するような電卓ということは、関数電卓でしょうか。括弧などに対応するとなると、かなり大変ですね。
      文を処理するコードを書くとき、bison&flexを発見したときは感動しました。

  25. はじめまして、元PGです。
    このブログに書かれてあるように、身近なものから興味のあるものへと作っていけば私ももう少し上達していたかもしれません。
    会社に所属すると、意味不明なシステムばっか作るので全く面白くなかったですね。
    海外の、書かれていることだけを実現するプログラマでなくて、もうちょっと踏み込んだ気の利くPGになれていたら、私もまだこの世界に居られたかもしれないと思いました。

    • この業界は技術の進化が早く、せっかく覚えた知識がすぐに塗り替えられて覚え直すはめになります。それを乗り切るためには面白さが必須ですね。
      今は自分のためのプログラムを自分で作るハードルがすごい下がっています。専門家抜きでも役立つ物が作れます。今は別の業界かもしれませんが、だからこそ今の業務改善につながるアプリを開発してみてはいかがでしょうか?

  26. 品質に関する部分はどのようにお考えですか?プログラミングといってもいろんな世界があります。ゲーム、バンキング、医療、経理・・・・どの世界においても求められるのは品質で、それは仕様書を正確にコーディングすることはもとより、お客様が求める真のニーズを仕様書から読み取り、場合によっては仕様書に記載される矛盾点を指摘しつつ、システムにできることがプログラマに求められる素養ではないか、と思います。おじゃましました。

    • 品質はまさにコストとのトレードオフです。「仕様通りに動く」正常系の話は最低限の話です。
      今回の「プログラマ」はITゼネコンピラミッドの末端を意識しています。その立場だと稼働状況にあわせたシステムの提案はすでに営業やSEや課長や部長のレイヤーで終わっています。あとは組むだけです。
      品質は稼働率や、復旧までの時間、フェールセーフか?などいろいろあります。
      プログラムの不具合により人が死ぬのか、詫び石で済むのかでシステムの構成は大きくかわりますし、コストがかわります。実際のところプログラマのスキルの範疇を超えています。
      どこまで多重化するのか?テスト時間はどれぐらい確保するのか?保険に入るのか?という、開発体制、運営体制の問題になります。損益分岐点を意識した経営の話です。
      今回イメージしていた末端のプログラマはその決定に参加しません。プログラムは所詮人間が書くものです。誤字脱字なんて当たり前です。nullポインタアクセスもします。人間がプログラムを組む以上、どんなにベテランでもテストは必須です。
      プロジェクトのリーダーの方はその辺りを考慮していただきたいと思います。

  27. 何か辛口なコメントが多いですが、
    同じ業界のから言わせてもらうと、そこまで間違った事は言われてないと思いますけどね。
    ただ、良くも悪くも、売名行為。
    でも、それは本人も自覚されているの事なので、良いと思います。
    この方のブログですしね。
    ただ、コンサルは依頼したいとは思わないですけどね。

    • フォローありがとうございます。
      今回は最低限のプログラマに付いて書きました。
      最低限のプログラマでも同じ人月単価で机を並べて仕事をするハメになることもあり、腹立たしさも混じってこんな記事になりました。
      とはいえ、「属人的にしない」を合い言葉に個人のスキルに頼らない開発スタイルをとる組織もあります。そういうところでは、文字通り同じ生産性になるのです。ならざるを得ないのです。
      底上げのためのシステムは副作用として頭打ちにもなりますね。
      とにかく、スキルを磨くには経験を積むしかなく、経験を積むには「プログラマ」を名乗って現場に潜り込むしかないのが現状です。
      プログラマになりたい人はとにかく潜り込めば良いと思います。そして顧客はそういう人も紛れ込むことを前提に評価すべきでしょう。
      本当にできるヤツとモグリを見分けて、報酬に差をつけてください。

  28. プログラマーについては私も知りたいですが、もう少し言動に気を付けられた方がいいと思います。
    上記の方がおっしゃるように客観性にかけていると思うからです。
    おそらく私はもうこのブログを見ることはないと思います。

  29. 痛いなー。
    こういうブログを公開してる人に仕事を頼みたく思うか?
    そういう客観性すらないのか。

コメントを残す

メールアドレスが公開されることはありません。