このエントリーをはてなブックマークに追加

記事更新日:2017年03月25日

私たちは疑問を抱くことなくITに触れています。

インターネットにはあらゆる情報が広がっていて、情報を発信することも簡単に出来ます。ホームページを作ったり、コンピュータ上で動くものを作ったりしている人に、普通に出会えます。

そういう触れ合いが日常的になると、今度は自分も作ってみたいと思うのも自然ですし、「プログラマー」という言葉に興味を持つこともあるでしょう。

プログラマーとはどんな人でどんなことをするのか?給与はどうなっているのか?自分もなりたいけれどどうすれば良いのか?……こんな疑問を持つことも無理もないでしょう。

この記事はそんな疑問に答えるために、プログラマーについて全般的に紹介しています。

1. プログラマーとは

1-1. プログラマーの定義と役割

プログラマーとは直訳すれば「プログラムを書く人」となります。

プログラマーは英語で「Programmer」です。英語では大体が単語の最後に「er」を付けると「○○する人」となりますよね?この「Programmer」も同じで、「プログラムする人」・「プログラムを書く人」という意味になります。

ではプログラムとは何でしょうか?
あなたも、学校などで運動会に参加したことがあると思います。運動会では、パンフレットなどで「プログラム」というものが配布されると思います。

また、テレビの番組表も「プログラム」と呼ばれています。

運動会のプログラム、番組表としてのプログラム、共通点は何でしょうか?
……そう、これらの共通点は「【何がどの順番で行われるのか?】ということを表現している」ということです。

コンピュータはいまだに「指示されたことを行う」ことしか出来ません。
コンピュータに何かをさせたい時はどんなことでも「指示」しないといけないのです。

コンピュータは「ある意味頭脳明晰で、ある意味お馬鹿さん」です。
私たち人間同士なら「車で○○まで送って」と言えば、場所や時間などの詳細を決めないといけない場合があるものの、大体が伝わりますよね?

ところがコンピュータは、車を走らせるだけでも

  • キーを挿して
  • エンジンかけて
  • ギアを入れて
  • アクセル踏んで
  • ハンドルをどれだけ動かして

と、逐一指示しなければなりません。

人間同士なら「それは違うでしょ!」という場面でも、コンピュータは「間違った指示であっても指示通りに動く」のです。

ですが指示される限りは、それを愚直に、疲れることを知らず、指示通り正確にこなします。単純作業であっても疲れることなく、複雑なことをどれだけ要求してもミスをすることなく(指示にないことをせず)、きちんと動いてくれるのですね。

プログラマーとは、そんな性質を持ったコンピュータを相手に、

  • 「何かをさせる」ために、
  • その指示を順序立てて組み立てる

ということをする人なのです。

1-2. 色々なプログラマー

プログラマーは「プログラムを書く人」であり、プログラムとは「コンピュータに何かをさせたい時に、その指示を順序立てて組み立てる」ことだと説明しました。

お医者さんにも内科や外科(もっと言えば呼吸器内科や整形外科)がいるように、同じ「プログラムを書く」にしても、細分化されています。

よくシステムという言葉が使われますが、ITの分野で言われるシステムとは「何かをさせるために構築(用意)されたソフトウェア(プログラム)とハードウェア(機械)の環境」のことを指します。

ソフトウェアとハードウェアを連携させ、何らかのサービスを提供する……電車の切符をインターネットで予約したりするのもシステムというわけです。

プログラム開発というものも、このシステムを構築する上で、どのようなものを対象にしてプログラムを書くかで、

  • 汎用系・・・汎用系と呼ばれるコンピュータのシステムを開発します
  • 組み込み系(制御系)・・・炊飯ジャーなどに埋め込まれる制御用のプログラムを書きます
  • 通信系・・・ネットワーク機器を制御するプログラムを書きます
  • パッケージ系・・・店頭で販売されるソフトを開発します
  • Web系・・・インターネットを利用したシステムを開発します
  • ゲーム系・・・ゲームの開発を行います

のように分けられることがあります。

実際にはこれらを厳密に分けることが出来ませんし、被る部分もあります。
また、これらのうち1つをやったからといって、他の全てをしないというわけでもありません。

1-3. 他の開発職との違い

システムを構築する際は多くの人間が関わります。
ハードウェア(機械)も「環境」という意味でシステムの中に当然入りますが、そういったハードウェアを制御するのはプログラムです。

コンピュータは「ある意味頭脳明晰で、ある意味お馬鹿さん」と説明しました。
これは「どんなことでも細かく決めておかないとダメ」だということです。例えば、人の生命に関わるシステムを構築する時、そこにミスがあったらとんでもないことになりますよね?

システムを構築するということは、最初は私たち人間の「こういうことがしたい」・「こういうことがあったら(出来たら)」という想いから始まりますが、その想いは最終的には「他に解釈しようがないがんじがらめの指示」に収束されなければなりません。

多くの人間が関わるということは、多くの人間の想いが入ります。解釈の違いも当然出て来ます。

システム開発の現場では、多くの人間が関わることによってそういったことを出来るだけなくすようになっています。

システムの開発にはプログラマー以外にも、

  • プロジェクトマネージャー
  • プロジェクトリーダー
  • システムエンジニア

という人たちが参加します。

プログラマーは「PG」と略記されることがありますが、同じようにプロジェクトマネージャー(PM)、プロジェクトリーダー(PL)、システムエンジニア(SE)と略記されたりします。

以下、略記した形で、様々な開発職について説明していきます。

1-3-1. PM(プロジェクトマネージャー)

プロジェクトの管理をするのが文字通りPMです。ひとつのプロジェクトを管理することは勿論、時には複数のプロジェクトを管理することもあります。

顧客との交渉を行ったり、契約処理や予算処理を行ったりします。当然、決済権を持ちます。プロジェクトの進捗状況を上司に報告したりします。

マネージ……まさに管理が主であり、設計書や仕様書を書いたりプログラムを書いたりすることはほとんどありません。

1-3-2. PL(プロジェクトリーダー)

PMの下についてプロジェクトの管理やプロジェクトメンバーの管理を行います。

後述するSEと兼任していることが多いです。その意味では後述する設計書や仕様書の作成にも関わります。
PLも顧客との交渉や予算管理を行います。決済権はないものの、それに近い裁量権を持っています。

1-3-3. SE(システムエンジニア)

プログラムを書くといっても様々な工程があります。上流の工程ほど抽象的で、下流の工程ほど具体的なのですが、SEはシステム開発において上流工程を担当します。

こういうシステムを作りたいという想いをコンピュータの世界に落とし込んで形にしていく作業を「要求定義」と言ったりしますが、SEはこの要求定義を顧客との打ち合わせで作っていきます。また、顧客やプログラマーに対して資料作成なども行います。

こういったことを通して設計書や仕様書というものが作られます。
また、プログラマーと技術的な点や納期の点で打ち合わせなども行います。PLはSEが担当する場合もあります。

2. プログラマーの仕事と役割

2-1. 業務内容

プログラマーは、冒頭でも書いた通り、「プログラムを書く人」です。
そしてプログラムは「何かをさせるための指示を順序立てて組み立てる」ことだとも書きました。

「じゃあ、指示って何?」ということになりますよね?

私たちは意思疎通をする際に「言葉」を用います。それと同じでコンピュータに何かを指示する時も「言葉」を使います。
「この計算をして」・「これを○回繰り返して」などという具合です。

そういった「指示をするための言葉」が「プログラミング言語」であり、プログラマーはプログラミング言語でプログラムを書くことによってコンピュータに指示を与えるのです。

プログラミング言語はたくさんあります。
プログラミング言語には作りたいシステムによって「向き不向き」があります。

2-1-1. プログラミング言語とは何か?

プログラミング言語についてもう少し詳しく見てみましょう。
なぜプログラミング言語はたくさんあるのでしょうか?
コンピュータは厳密には「0と1」しか分かりません

この0と1をどう組み合わせるかで処理させたい指示を決めていくのですが、そんな組み合わせなんて人間が「見てすぐに分かる」ものではありませんよね?

システムが大規模になればなるほど指示内容は増えます。その分、見ただけでは決して分からない「0と1の組み合わせ」が増えます。
それはまるで何かの暗号文のようです。

プログラムにミスがあってはいけません。ミスがなくても時代によってシステムは変わっていきます。その度にこの暗号文みたいなものと付き合っていては極めて非効率となります。

もし、「この言葉を使ったらこの0と1の組み合わせにして」みたいなものがあったらどうでしょう?
プログラマーは、複雑奇怪な暗号文との付き合いから一気に解放されます。

……プログラミング言語とはまさに「この言葉を使ったら」という願望を叶えるものであり、私たちが使う言葉に似ています。そしてどのプログラミング言語も、最終的には「0と1の組み合わせ」に変換され、この変換作業はプログラミング言語そのものが行います。

2-1-2. プログラマーの仕事は「プログラムを書く」ということ

このように、コンピュータに指示を与えるための「言葉」として「プログラミング言語」がありますが、プログラマーはこのプログラミング言語を用いて、つまりプログラミング言語を書くことによってコンピュータに指示を与えるということが仕事の内容となるのです。

プログラマーはどういうシステムを構築するかによって、一番適したプログラミング言語を用いて指示を書いていきます。

繰り返しになりますが、コンピュータは指示された通りにしか動きません。

「この処理を10回繰り返して」と指示したつもりが間違えて「100回繰り返して」となったとします。実際のプログラムも「10」と書いたり「100」と書いたりしますが、たった1文字0を多くしたがために、コンピュータは愚直に100回繰り返します。

格言的なものに「プログラムはプログラマーの思い通りには動かない、書いた通りに動く」というものがあります。これはこういったことを端的に言い当てたものです。

システムはきちんと動かないといけません。
10と100はプログラムを見ればすぐに気付くことが出来ますが、中にはなかなか気付かないものもあります。

こういった「プログラム上のミス」をバグと呼んだりしますが(バグとは虫のことです)、「バグを潰すこと」をデバグ(またはデバッグ)もプログラマーが行います。

2-1-3. バグがないように書き、あってもデバグするだけでなく、早く・効率的に動くようにする

バグがないプログラムを書ければ一番良いですが、バグのないプログラムというのはほとんどありません。だからこそ、デバグを通してバグを潰していきます。

そしてそれだけでなく、きちんと動くだけでなく「実用に耐える」ようにしなければなりません。

ある処理をするのに10分もかかったら先へ進められません。コンピュータは言われた通りにしか動かないし、何をさせるにしてもひとつひとつ指示しなければなりません。言い換えれば、あることをさせるためにどう指示するかは「いくらでもやり方がある」ということです。

ある目的を達成するための方法や手順をアルゴリズムと呼んだりします。
「東京から大阪に行って」という指示は「東京から北海道に行って、北海道から大阪に」でも「東京から寄り道せずに大阪に」でも、共に「東京から大阪に」という目的は達成出来ます。

このように処理にかかる時間はアルゴリズム次第で変わります。

SEのところで説明しましたが、SEは要求定義を行いながら最終的に「仕様書」というものを作ります。仕様書は人間の想いを実現するために、コンピュータ上で「この場合はこう」という取り決めを記したものです。

「この場合はこうして」と仕様書にあっても、それが詳細に明記されていない場合はプログラマーが最適と思うアルゴリズムを用いて指示します。

仕様書通りにプログラムし、実用に耐えるようにする、間違いがあればデバグを行って訂正していく……プログラマーの仕事とはこういった一連の流れをずっと行っていきます。

2-2. プログラマーの役割

プログラマーはこのように人の想いを実際に形にする上で、最もコンピュータに近い部分を担当します。

何かの企画・イベントで、あるバンドが曲を作ることになったとしましょう。人の想いや願いを込めた曲だとします。

この企画を統括する人、渉外担当、スケジューリング、プロデューサーなど、多くの人がこのプロジェクトに関わります。想い自体は声(ヴォーカル)や様々な楽器が表現します。こういった声や楽器を操るのは勿論バンドです。

同じ想いでもメロディーによって伝え方は全く変わります。

楽器という機械(ハードウェア)を楽譜という音階の指示(ソフトウェア)で奏でる……プログラマーは楽器に一番近いバンドメンバーといえ、システム開発において一番コンピュータに近いところに位置し、人の想いを実際に形にする役割を持っているのです。

3. プログラマーになるには

3-1. プログラマーになる方法

プログラマーになる方法としては「プログラミング言語を覚え、ある程度プログラムが書けるようになって」からプログラマーの募集案件に応募する、というのが道筋です。

ここで、一番最初にお伝えしたいことは「プログラマーは誰でもなれる」ということであり、特定の資格を必要としません。

あなたがプログラミングに興味を抱き、プログラミング言語を覚え、そのスキルが採用される側に認められれば、その時点であなたはプログラマーです。

「プログラミング言語を覚え」・「スキルが認められれば」と書いたのは、職種によっては「未経験者歓迎」というものもある一方、プログラミングの世界では「全くの未経験」は相手にされないことが多いからです。

そして、こういったルートをたどるにしても、これは全体像であって、そのたどり方は主に3つあります。

3-1-1. 【大学】

理系の大学生は自分の研究においてコンピュータで何らかのシミュレーションが必要な時、必要に応じてプログラミング言語を習得します。コンピュータサイエンス自体が研究対象ならはじめからプログラミング言語を学びます。

学部としては、

  • 理工系
  • 情報処理系系

などが挙げられます。

3-1-2. 【専門学校】

プログラマーになるための専門学校もあります。
コンピュータ系・情報処理系の専門学校にてプログラミングが学べます。

※大学と専門学校の違い
大学では4年、専門学校では2年という在籍期間の違いがあります(短大の場合は2年で専門学校と同じです)。

大学では学部・学科によって違いはありますが、「自分の研究内容」がプログラミングの課題になるのに対し、専門学校では実務で使われるようなものが課題となります。

学問的・業務的という違いがあるにしても、実務との開きはどちらにもあります。
プログラミングは「何かに対して何かの処理をする」ことが基本です。

例えば何らかのシステムで何十万・何百万の顧客データを基に何らかの処理をしたい場合、何十万・何百万という「生きたデータ(具体的な住所や具体的な名前)」は、大学や専門学校ではなかなか得にくいのです。

「この場合はこういう処理(アルゴリズム)で」とプログラムを書いても、その対象数が多ければ処理に時間がかかったり、想定していた結果を返さなかったりということは往々にしてあります。

大学・専門学校のどちらを選ぶとしても、プログラミングの基礎を学べることに違いはありませんが、どれだけ実践的・実務的な課題に取り組めるかは一般論で説明出来るものではなく、

  • 自分がやりたいこと
  • 自分が学べること
  • 実践的かどうか

は、ひとつひとつの大学・専門学校を個別に調べることが必要になります。

確かに、いわゆる新卒では、最初から即戦力が求められるわけではありません。
また、ITの業界では資格よりも「何が出来るか?」・「何をして来たか?」が重視されます。

資格を持っていればそれだけ実務でも役立つ、つまり即戦力とは言えない部分もあり、むしろ資格を全く所有していなくてもバリバリ実践的なプログラムを書ける人もいて、当然そちらの方が重宝されます。

どちらで学ぶにしても、このようなことを頭の片隅に置いておくようにしましょう。

3-1-3. 【独学(ネット・教材)】

最近の傾向として多いのは、プログラミング言語を学ぶ機会がなかった環境からプログラミングに目覚めて学び始めるというものです。

今はITが当たり前の世の中です。そんな状況下で「自分もやってみたい!」と思うことも当然あります。こういう人たちは、それこそ専門学校や大学に進学したりすることもあるでしょう。

ですがそういう教育機関や養成機関に行かずに学ぶ人もいます。インターネットの恩恵により、教育・養成機関で学ぶようなことをインターネットで行うことも出来るようになりました。

学費を払うことによって、自宅やカフェなどでインターネットを利用して学ぶことも出来るのです。そういったところでは授業は勿論、質疑応答や添削も行ってくれます。

また、同じくインターネット上で、質疑応答や添削がない分、無料で学べるところも最近は多くなり、そういったところを利用して独学で学ぶ人もいます。

早く正確にプログラミングをマスターしたい!という方は、業界でも有名なTechAcademy [テックアカデミー]
がおすすめです。

また、ドットインストールというところもあります。
ドットインストールはプログラミングを学ぶ上で必要となる知識を網羅的に学べます。

学ぶにあたって必要となる環境(OS・プログラミング言語・データベースなど)の構築の仕方もきちんと説明されており、ある程度実践的なレッスンもあります。

ドットインストールは当初は完全無料でしたが、今は無料部分と有料部分とに分かれています。それでも、無料部分だけでもかなり多くのことを学び、習得出来るようになっています。

全てが動画です。

  • 実際にどのようにプログラミングしているのか?
  • どのようにプログラムが動いているのか?

を動画を通して見れるということはとても大きな武器といえます。

プログラムを書くには、それが出来る環境というものが必要となります。この環境を「開発環境」と呼んだりしますが、これもインターネットの普及とコンピュータの高性能化によってほとんど無料で構築出来るようになりました。

プログラミングの勉強は何よりも「実際に書いて動かす」ことなのですが、開発環境を簡単に構築出来るようになった現在はやる気次第でどんどん学ぶことが出来ます。

このような形でプログラミングを学び、プログラマーとして就職します。
就職先ではOJTといって、働きながら(その職場のスタイルに合うように)更に学んでいき、一人前になっていきます。

3-2. プログラマーの資格について

プログラマーにも資格はあり、国家資格もあれば民間資格もあります。プログラミング言語そのものの資格もあればプログラム開発全般に対する資格もあります。

医師・弁護士・税理士などといった「士業」とは違い、「この資格がないとプログラムを書いてはいけない」ということはありません。

ですが、就業において資格所有を条件にしているところもありますし、システム開発の受託要件として資格保有が前提になっているプロジェクトもあります。

プログラマーがプログラムを通して触れるネットワークやデータベースに留まらず、より専門的な、ネットワークエンジニアやデータベースエンジニアとしての資格もあり、そういった資格の中にはプログラマーの人でも受験することが可能なものもあります。

サーバーというものを相手にプログラムを書く場合もあり、サーバーに関連する資格もあります。

資格として以下のようなものがあります。

  • 基本情報技術者
  • 応用情報技術者
  • エンベデッドシステムスペシャリスト
  • ネットワークスペシャリスト
  • CCNA
  • CCNP
  • データベーススペシャリスト
  • オラクルマスター
  • LPIC

4. プログラマーの職業事情

4-1. プログラマーの就職先(種類と特徴)

この記事で、

  • 開発といっても色々分けられている
  • プログラムを書くにしても様々なプログラミング言語がある

と今まで説明しました。

何を対象にするかによって分けられているのですが、例えば組み込み系(制御系)の人がWeb系をすることはほとんどありません。
それぞれが高度に専門化しているからです。

そういったことを踏まえて、プログラマーの就職先の種類と特徴について述べていきたいと思います。
プログラムを書くといっても、「コンピュータにどんなことをさせたいのか?」によって色々変わってきます。

4-1-1. 【オープン系】

オープン系は会計・人事・販売管理などといった業務系のシステムを中心に開発を行います。

4-1-2. 【汎用系】

汎用系は大型汎用機で動くシステムを開発します。汎用機とは政府機関や大企業向けの高性能な大型コンピュータのことであり、ハードウェア(機械)の部分からソフトウェア部分まで独自に作られたものであることが多いです。

何らかの業務システムとして使われることではオープン系と同じなのですが、汎用系は目的に応じて特化されたコンピュータを用いますので処理速度や信頼度が違います。ATMなどを含む銀行勘定系システムなどの開発は大体が汎用系となります。

4-1-3.【組み込み系(制御系)】

組み込み系(制御系)は家電製品や自動車などの機器を制御するために搭載されたマイコン(コンピュータ)上で稼動するプログラムを開発します。

電子レンジやエアコンや炊飯ジャーはボタンを押しただけで制御出来ますよね?

これは、「このボタンを押した時はこのようにする」とプログラムされているからであり、そのプログラム部分を書くのが組み込み系(制御系)です。

4-1-4.【通信系】

通信系はルーターなどのネットワーク機器やテレビ会議システムなど、通信に関連したプログラムを開発します。ネットワークでつながるコンピュータ同士の通信制御(通信の開始と終了、通信中のデータの送受信)を主にプログラミングします。

4-1-5.【パッケージ】

パッケージはパッケージソフトの開発を行います。

ではパッケージソフトとは何かというと、店頭でソフトが入った箱をよく見かけると思いますが、この箱のことをパッケージと言います。それを購入し、パソコンにインストールしてソフトを使うことになると思いますが、こういったソフトを開発するのが仕事となります。

4-1-6.【Web系】

Web系はインターネット上で稼働するプログラム、イントラネット(会社やその他の組織内の閉じたネットワーク)内で稼働するプログラムを開発します。

占いや性格診断などはお馴染みだと思いますが、その他にもチャット(指定した相手とブラウザ上で文字のやり取りが出来るものです)などがあります。

イントラネットでのWeb系システムでは、人事・予算管理や顧客管理データベースなどがあります。Web系はブラウザ(Webサイトを見るソフト)上で動作することが前提となっています。

4-1-7.【ゲーム】

ゲームは文字通りコンピュータ上で動くゲームを開発します。最近は3Dを駆使したものが多く、数学的知識が求められます。また処理速度が早いことが当たり前になっていますのでプログラミング言語に深い造詣があることが求められます。

また、最近はスマートフォンやタブレットがかなり普及しています。

持っていることが当たり前とも言える世の中ですから、既存のシステムをスマートフォンやタブレットからも閲覧・制御出来ると利便性が増します。そのため、スマートフォンやタブレットのアプリケーションエンジニアの求人もあります。

4-2. プログラマーの給料、年収について

プログラマーの平均年収は350万円〜500万円だと言われています。他の業種と比較しても大きな違いはありません。他の業種にも言えることですが、企業規模の大小によって給与は増減しますし、残業代や資格手当が付くのであれば当然変動します。

後述しますがプログラマーは残業しなければならない状況が往々にしてあります。企業がどれだけ大きい案件を受け持つかにもよりますが、忙しい年だとそれだけで年収で100万も差が出てきます。

難易度の高い資格を取得すると資格手当も当然高くなり、年収が大きく変わるということもあります。

厚生労働省の統計資料を見てみましょう。

参考:統計表一覧 政府統計の総合窓口の「職種別きまって支給する現金給与額、所定内給与額及び年間賞与その他特別給与額」によれば、プログラマーは、

平均年齢 32.7歳
勤続年数 6.2年
労働時間 162時間/月
超過労働 17時間/月
月額給与 299,100円
年間賞与 494,300円

となっており、月額給与額を12倍して年間賞与額を加算すると年収は4,083,500円となります。

4-3. プログラマーの辛いこと・悩み

IT技術は日々進化しています。IT業界の進歩の早さを「ラットイヤー」と言ったりします。ラットにとっての1年は人間の20倍以上に相当し、いかに早いかが分かります。

同じ分野でさえ、つまり一人のプログラマーが職務上必要な技術知識でさえ、日々新しい技術が生まれては消えていったりします。

こういった新しい技術をどんどん吸収していかないと自身の労働価値が減っていきます。すでにある知識をもっと深めつつ、新しい技術をきちんと取捨選択しながら取り入れていかなければならないのです。

参考:IT エンジニアの職務満足度に関する実証研究(大薗陽子)

以下、この論文を参考にしながら見ていきましょう。

【取引先の都合・納期に合わせる必要がある】

この論文にて紹介されていますが、システム開発には納期があります。
取引先の都合によっては、かなり短納期だったりすることもあります。

また、開発着手前にSEなどがきちんと仕様書を策定していないと、後々になって、

  • 実際は無茶な要求だった
  • ある程度プログラムを書いた段階で仕様変更を余儀なくされる
  • その度に打ち合わせなどで確認のために連絡を取ったり客先常駐しないといけなくなる

ということが起こり得ます。

納期は延期されることもありますが、基本的に厳守しなければならないものであり、納期を守るために残業することもあります。

納期内にこういったことに対処して納品が終わったとしても、プログラムにバグがあれば、それが与える影響によっては祝祭日や時間に関係なく呼び出され、対応を迫られます。

技術を吸収すること、自分のペースに無関係に対応しなければならないこと、そういったことがプログラマーの辛さであり悩みでもあります。

4-4. プログラマーの将来性とキャリア

ITは今や人間社会にとって当たり前のものとなり、そして今後もどんどん浸透していくでしょう。そういった意味では、プログラマーの需要は今後もあり続け、「出来るプログラマー」になればより求められる人材となります。

プログラマーとしてのキャリアパスは、部下を持ち開発そのものや開発者を管理していくマネージャー職(上述のSE・PL・PMなど)に進む道と自分の専門性をさらに高めてプログラマーとしてずっと活躍していく「エキスパート職」に進む道とがあります。

どんな業種でもやがては管理する側に進む形になると思いますが、プログラマーという業種でも同じことがいえ、それが前者となります。

「ずっとプログラマーでいたい」ということで、専門性をさらに高め、ヘッドハンティングを受けて別の会社にプログラマーとして転職したり、独立してフリーランスエンジニアになったりという道が後者になります。

4-5. プログラマーの魅力・やりがい

4-5-1. 【自分がスキルアップできるということ】

冒頭でも書いたように、コンピュータは素直で愚直です。

同じことをさせるのでも、プログラムをどう書くかで処理時間は変わります。自分が書いたプログラムでそれなりのパフォーマンスが出た時の喜びはとても大きいです。

また、あることを処理させたく、そのために今持っている知識をフル動員してそれが実現した時もとても嬉しいものです。そういったことの繰り返しによって知的好奇心が満たされ、自分の技術力も比例して高くなっていきます。

このことについて、先ほどの論文にも以下のような見解が示されています。

能力開発の機会が多いことが職務満足度に非常に強い正の影響を与える

出典:IT エンジニアの職務満足度に関する実証研究(大薗陽子)

4-5-2. 【自分が社会に対して役に立っていると思えるということ】

そして、システムというのは人の想いを具現化するものです。自分が書いたプログラムが誰かの役に立っている……それはとても誇り高いことです。

以下はIPA 独立行政法人 情報処理推進機構のエンジニアを対象としたアンケート結果です。

エンジニアを対象としたアンケート結果

図にあるような項目に対してエンジニアがどう思っているかという統計結果です。
この図にあるように、

  • 技術的好奇心
  • スキルアップ
  • 成果承認
  • 能力伸長

という面で「そう思う」・「どちらかといえばそう思う」が多く、技術力を高められることとそれが誰かに認められているという認識が高いということを物語っています。

色々な苦労がある反面、こういった魅力ややりがいがあるのがプログラマーなのです。

まとめ

想いや願いは気持ちのままでは形になっていません。社会が高度に発展している現在、世の中は複雑化し、様々なニーズを出来るだけ効率的に実現することが求められています。

好き嫌いといった人の感情はロジックには馴染まないものですが、ロジックで対応出来るものはコンピュータが一番得意とし、より正確に、より迅速に処理出来ます。

プログラマーはそのロジックをコンピュータに実際に当てはめていきます。

この記事を読んだあなたが、いつか、どこかのシステムのどこかの部分でプログラムを書いていることを期待していますし、この記事がその一助になることを祈っています。

このエントリーをはてなブックマークに追加

記事更新日:2017年03月25日

Facebookページで更新情報をお届けします!



購読にはTwitterやRSSも便利です。

follow us in feedly

コメントを投稿する

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

Close