プログラマとは

プログラマというのはもちろんプログラムを書く人のことです。 ひとくちにプログラマと言っても、様々な種類があります。

ソフトウェア業界の種類

プログラマは、もう少し広い定義であるソフトウェアエンジニアの一部と言えます。 ソフトウェアエンジニアが所属するソフトウェア業界は、様々な属性により分類されているといえます。

例えば

  • プラットフォーム: PC / Web /ゲームコンソール / スマートフォン / ハードウェア など

  • 言語: 低級な言語(C/C++) / 堅い言語(Java/Scala) / 軽量言語(Ruby/Python)

  • 顧客: BtoB (企業向け) / BtoC (消費者向け)

  • 作るもの: 業務アプリケーション / パッケージソフト / ゲーム / サービス

  • 組織構造: 多重下請け構造 / 自社開発

  • 業務範囲: 設計・実装・テスト・運用・全部

ほとんどの企業がどれかの属性を組み合わせて持っていると思います。 例えば銀行システムを作る企業だと BtoB, Java, 業務アプリ, Web + サーバサイド + 専用ハードウェア(ATM) になってくると思います。 (銀行システムを作る会社のことはよく知らないので推測ですが) また、ひとつの属性が決まると他の属性もおのずと決まってくることも多くあります。 例えばハードウェア制御は現状ほとんどC/C++を使っているのではないでしょうか。

世の中のプログラマ像

世の中でいわゆるプログラマとしてイメージされているのは、 上記で言う BtoB && Java && 業務アプリ && 多重下請け構造 の業界に属し、 いわゆるSI業界というやつです。 中でも多重下請け構造の最下層な人たちは、まさに世間のイメージ通りのプログラマで、 技術も伸びずに家にも帰れず安月給で使い捨てられる運命にある人です。 なったら死にます

それでは多重下請け構造の上層、いわゆるSIerはどうなのかというと、 この人たちは基本的にプログラミングをしません。 ソフトウェアエンジニアではあるかもしれませんが、プログラマと認識されることはほとんど無いようです。 本質はコンサルタントであり、設計だけして(時々設計すらせず)下に丸投げし、 プログラミングは奴隷がすることと考えています。 新卒1年目に奴隷の限界を知るためにプログラミングをさせられる程度で、 あとの人生は出世レースに勤しむようです。 終身雇用が主流で、歳とった時の給料は非常に良いようです。 (ただし今の若い人が引退する頃にこの業界が存続しているとは思いません)

この業界では上流の人のことをシステムエンジニア(SE)と呼び、奴隷のことをプログラマ(PG)と呼びます。 他業界ではプログラムを書くこと自体に誇りを持っている人が多く、その人たちを間違ってもSEと呼んではいけません

ゲーム業界もプログラマと深く関連付けてイメージされていると思います。 筆者も子供の頃ゲームが好きで、ゲーム作る人になりたいという思いでプログラミングを始めました。 しかしゲーム業界自体がすでに死に体なのでその考えは捨てましょう。 伝え聞くに、この業界も地獄のようなものらしいです。

この本で言うプログラマ

筆者は上記のような業界にはあまり詳しくなく、 Web && BtoC && 軽量言語(LL) && サービス && 自社開発 な世界の住人です。 このWebサービス業界は、技術を追求することとそこそこの給料を両立しやすく、 自社開発なのでやらされてる感のある仕事は多くありません。 技術はオープンで、転職はしやすく、圧倒的に会社より労働者が強い世界です。 勉強会や転職者のつながりで人材の交流は非常に活発で、 プログラミングが好きでプログラマとして人生を全うしたいならよい環境だと思います。

筆者はWeb業界の人間であり、知り合いもほとんどがWeb業界、 そもそも世間で名が知られているプログラマは多くがWeb業界の人なので、 この本では、主にWeb業界のプログラマの生き様を紹介していきます。

また、Web業界で働くソフトウェアエンジニアはすべてプログラマなので、 この本でプログラマという語は、多くの場合ソフトウェアエンジニア全体を指す意味で使われています。