スマホやパソコンを活用することが一般化した現在、プログラマーという職業に興味を持つ方が増えています。あなたが普段楽しんでるネットショップや、日常的に活用しているゲームアプリまで、ありとあらゆるソフトウェアがプログラマーによって作られているからです。
当サイトの管理人も、かつてはプログラマーとして、物流管理システムをプログラミングした経験があります。
何もないところから、パソコン1台で普段使用しているようなソフトウェアが完成する喜びは、何物にも代えがたいです。
あなたがプログラマーという職業に興味を持っているなら、ぜひIT業界に飛び込んでください。
しかし、プログラマーと一言で言っても、業務系・ゲーム系・ロボット系など、様々な業種にわかれます。業種が違えば、学ぶべきプログラミング言語や必要な知識なども異なるのがこの職業の特徴です。
未経験からプログラマーになることは、誰にでもできることです。
ただし、自分の選んだ業種で、最低限面接を突破できるレベルの知識は身につけておく必要があります。
そこでこのページでは、「プログラマーの詳細から業務内容」まで解説します。
Contents
プログラマーとは何か?
プログラマーとは、コンピュータ上で動作するソフトウェアを開発する人のことです。国民一人ひとりが携帯電話を所有する現在、ほぼすべての人が何かしらの形でソフトウェアを活用しています。
例えば、スマートフォンで気軽にプレイできる「ゲームアプリ」や、当サイトを閲覧するのに使用している「ブラウザ」まで、プログラマーが開発しているのです。
また、プログラマーがソフトウェアを開発することを「プログラミング(または、コーディング)」と呼びます。
もう少し噛み砕いて説明すると、プログラマーはコンピュータにも理解できる言葉である「プログラミング言語」を用いて、たくさんの命令をコンピュータに下します。その命令の集まりが、あなたが普段使用しているソフトウェアなんです。
上記の図のように、プログラマーがコンピュータに命令することで、コンピュータ上のソフトウェアが動作します。
身近な例を出します。
例えば、あなたが明日の朝早くに起きなければならない場合、携帯電話のアラーム機能を使う機会があるはずです。そこで、アラームを朝の6時にセットしておけば、翌朝の6時にアラームが鳴り響くはずです。
ここで、あなたが「朝の6時にアラームをセット」すると、アラーム機能は携帯電話(コンピュータ)に対して「朝の6時にアラームを鳴らせ!」という命令を下しています。(実際の処理手順はもっと複雑ですが…)
つまり、アラーム機能ひとつとっても、小さな「ソフトウェア(アプリ)」ということになります。
このように、小さなソフトウェアから、ソフトウェアを動作させるためのソフトウェアであるOS(オペレーションシステム)まで、コンピュータ上で動くソフトウェアを開発しているのがプログラマーです。
仕事内容
ここまでの説明で、「プログラマーとは何か?」という疑問が解消されました。
次に、プログラマーの人たちが、普段どのような仕事をしているかを解説してきます。
職場によって細かいところは違いますが、多くの職場では、プログラマーは以下のような業務を行っています。
- 効率の良いアルゴリズム(処理手順)を考える
- コーディング
- 単体テスト
また、これらの業務が始まる前には、システムエンジニア(SE)が作った「設計書」が必要になります。SEは、顧客からヒアリングした情報を元に、ソフトウェアの設計書を完成させてプログラマーに渡します。
すると、SEがつくった設計書を元に、プログラマーがソフトウェアを開発するのです。
それでは上記の3点について、順を追って解説させて頂きます。
1.効率の良いアルゴリズム(処理手順)を考える
SEが書いた設計書を元に、処理を実装するのはプログラマーの役目です。その際、どのようなプログラムを組めば、効率よく処理できるのかを考えるのが、プログラマーの腕の見せ所といえるでしょう。
ちなみに、プログラマーがコンピュータに命令する処理手順のことを「アルゴリズム」と呼びます。このアルゴリズムの良し悪しで、ソフトウェアの処理速度が、大きく変わってくるのです。
例えば、20~39歳の人間の年齢を当てる方法を考えてください。このとき、「あなたは20歳? あなたは21歳?」と順番に聞いていっても間違いではありません。
しかし、これだと39歳だった場合、20回も年齢を聞くことになります。
そこで、「あなたは30歳以上?」と質問することで、YESでもNOでも年齢を半分に絞れます。
例えば、「30歳以上?」という質問の回答がNOであれば、20~29歳までということです。次は「あなたは25歳以上?」と問えば、さらに選択肢を半分に絞れます。これを繰り返すと、4回の質問で年齢が把握できるのです。
これが、アルゴリズムの考え方です。効率の良い処理手順を考えることで、ソフトウェアの動作をスムーズにできます。
仕様の欠陥をみつけることも
ソフトウェアを実装する段階では、設計書の欠陥を見つけることもあります。必ずしもSEの設計が正しいわけではないため、仕様上の間違いがあれば指摘する必要があるでしょう。
仕様の欠陥を見つけるのは、早いに越したことはありません。開発が終わってから欠陥を見つけると、修正のための余計な工数がかかるからです。
常に、仕様の欠陥と改善案をセットで報告できるようになると、SEからは有能なプログラマーとして認識されるようになるでしょう。
2.コーディング
効率の良いアルゴリズムを考えたら、実際に開発していきます。なお、プログラミング言語を用いてプログラムのソースコードを記述する作業を「コーディング」と呼びます。
この際、どのようなプログラミング言語を用いるかは、業界や会社によって様々です。
例えば、業務系ソフトウェアを開発するときは、「VB.net」や「Java」というプログラミング言語が用いられます。その時のデータベースソフトは、VB.netであれば「SQLServer」、Javaであれば「Oracle」というソフトと組み合わせて開発することが多いです。
ほかにも、Web系ソフトウェアであれば、通称「LAMP」と呼ばれるソフトウェアの組み合わせで開発することが一般的です。これは、「Linux・Apache・MySQL・PHP or Perl or Python」の頭文字をとった言葉です。
使用ソフトを決めるのは、会社の経営陣及びにプロジェクト全体を仕切る立場の人間なので、プログラマーは現場で使用しているソフトウェアを覚える必要があります。
あなたが今からプログラマーになるなら、自分の行きたい業界でどのようなプログラミング言語が使われているかを調べてみてもよいでしょう。
その際、憧れの企業のエンジニア募集のページを見ると、どのようなスキルを持つエンジニアが求められているかが理解できます。そこから逆算してスキルを身につければ、憧れの企業に入社することも不可能ではありません。
3.単体テスト
単体テストは、自分が実装した機能にバグがないかを確認するテストです。通常、ソフトウェアには必ずバグが発生するものなので、単体テスト後に実施される「結合テスト」の前に、自分で取り除けるバグは取り除く必要があります。
こうすることで、その後の工程でプロジェクトに迷惑をかけることなく、業務を円滑に進められるのです。
単体テストを実施する際は、SEが作成したチェックリストを使用することもあれば、自分でチェックリストを作成することもあります。チェックリストには、コーディングする上で犯しがちな過ちなどをチェックする項目が盛り込まれます。
例えば、境界値分析と呼ばれるテストでは、数値の境界においてバグが発生していないかを検証します。
「22時からは割増料金になるというプログラムを書いているなら、21時59分を入力してみて、数値がおかしくならないかどうかを確認する。」
上記のようなテストをイメージしてください。
このようなテストを行うことで、ソフトウェアの完成度を高めるのもプログラマーの役割です。
レベルが上がると、SEとの境界が曖昧になる
プログラマーとしての経験を積むと、ソフトウェアの設計や、ソフトウェア開発のフレームワーク(多くのソフトウェアに必要な共通機能)制作に参画することもあります。
このレベルになると、ソフトウェアの設計を主に行うシステムエンジニア(SE)との境界が曖昧になるのが特徴です。
また、「コーディング」を重要視するかどうかも、企業文化によって異なります。
例えば、少数精鋭で技術力を売りにしているような企業では、すべてのエンジニアをSEと呼びつつも、彼ら自身がコーディングすることがあります。
反対に、プログラマーとSEとの間で一線を引き、SEには一切コーディングをやらせない企業も存在するのです。
現時点では、あなたはキャリアプランをイメージしづらく、どちらの企業に入社すればよいのか判断できないかもしれません。
「技術力を卓越させたければ前者の企業、マネジメント側に移りたいなら後者の企業。」
このようなイメージで就職活動を行えば、入社後のギャップを減らせます。
なお、一度IT業界に潜り込んで数年の経験を積むと、転職は比較的簡単になります。IT業界の技術者不足は、これからも続くことが予想されるからです。
入社後に考え方が変わっても、後から転職によるキャリアチェンジが容易なので、恐れずにIT業界に挑戦することをおすすめします。
どうすればプログラマーになれるか?
未経験からプログラマーになるなら、未経験者を受け入れている開発会社に入社するのが一番です。
当サイトの管理人であるヤマダは、昔IT系専門学校に通っていましたが、そこで得た知識はIT業界では1年程度で学べる知識だったと認識しています。
特に、別会社で社会人経験があり、ビジネススキルなどが身についているなら、中途採用でプログラマーになっても、ITスキルを覚えることに集中できます。適性があれば、未経験からプログラマーに転身しても、十分やっていけるのです。
例えば、僕がかつて勤めていた開発会社に、建築士からプログラマーに転身した方がいます。
1995年ぐらいからIT業界が大きくクローズアップされた時代に、未経験からIT業界に飛び込んだそうです。当時は今以上に情報が少ない中、入社後はとにかく業務時間外を学習時間に充てることで、今では事業部長にまで昇進していました。
そのことを考えると、「インターネットでわからないことを何でも検索できる時代」を生きているあなたが、同じことをできないはずがないのです。
もちろん、未経験からIT業界に潜り込むと、最初だけはとても苦労します。
しかし、未経験者を受け入れている企業であれば、最初の3カ月程度は研修期間を設けていることが一般的であり、そこで「分からないことを自分で調べて解決できるレベル」にまで実力を底上げしてもらえるのです。
「未経験からでも数カ月の研修期間を設けてプログラマーを育てている会社」を選択すれば、プログラマーへの転身は難しくありません。
業務未経験とプログラミング未経験では印象が大きく異なる
未経験からでもプログラマーになることは難しくありません。
ただし、「業務未経験」と「プログラミング未経験」では、面接官に与える印象は大きく異なります。
誰でも最初は業務未経験なので、これは仕方がないことと認識されています。
一方、あなたが「プログラミング未経験」であった場合、「本当にやる気があるのかな?」と疑問を持たれてしまいます。やる気があるなら、何かしらの行動に移していると考えられるからです。
そこで、転職前にプログラミングを経験したり、IT業界の簡単な資格に合格したりすることで、やる気を行動に変える必要があります。
以下の画像をみてください。
これはWindowsに標準で付属している電卓アプリです。
これと同じ機能を持つ電卓を、開発ソフトを使って制作してみるだけでも相当な実力がつきます。(ちなみに、このアプリを制作したいなら、Microsoft社が無償で提供している「Visual Studio」という開発環境をインストールして、VB.netという開発言語を使うのが最も簡単です。)
理解できないところを自分で検索して制作した事実は、実績にもなりますし、あなたの自信にもつながります。
ほかにも、国家資格である情報処理技術者試験の入門に位置付けられている「ITパスポート試験」に合格することで、IT業界に対する興味と初歩的なリテラシーを証明することもできます。
ここで気をつけなければならないことは、「あまり大きな目標を立てない」ということです。
あくまで「IT業界の知識・スキルの未経験をなくしてやる気を示すことで面接を通過する」ことが目的です。あまり大きな目標を立てて二の足を踏んでいると、転職するタイミングを失ってしまいます。
繰り返しになりますが、ITスクールや独学で学べることなど、IT業界に潜り込んで一年も経てば、自然と身につくような知識ばかりです。
やる気を行動に移したあとは、即座に転職活動を開始してください。
未経験からIT業界に潜り込むために「やる気を行動に変える方法」を知りたいなら、以下の記事も参考にしてください。
SE向けの記事ですが、たとえSEでも最初はプログラマーとして業務をスタートするのが一般的なので、面接ノウハウはプログラマーと共通しています。
プログラマーは、現代の魔法使い
プログラマーという職種は、少数でも価値あるモノを生産できる素晴らしい職種です。現在のIT業界は、大人数で大きなソフトウェアを開発する機会が多いですが、それでも個人で制作したソフトウェアが活躍することも大いにあります。
例えば、どこの企業でも使用している表計算ソフトのExcelには、同じ作業をプログラミングで自動化する「マクロ」と呼ばれる機能が搭載されています。
この機能を使えば、日々の業務を効率化して、数時間必要な業務を5分で終わらせることも現実的に起こりうる話なのです。
ほかにも僕であれば、文章を書いているときに、インターネット上に公開されている「文字数カウント」ができるソフトウェアを使用していますが、個人で制作したソフトウェアがインターネットを通じて多くの人に使用される機会も多いです。
上記のようなソフトウェアを開発できれば、多くの人に感謝される人生を送れます。
そう考えると、「プログラマーは現代の魔法使い」と言っても過言ではありません。
かつてコンピュータが存在していない遥か昔、人類は以下の2点のうちいずれかの方法を用いて、目的を達成していました。
- 自分でやる
- 人(動物)にやらせる
その後、社会に機械が誕生すると、機械にやらせるという選択肢が生まれました。
そのような機械も、今ではコンピュータが搭載されていることが一般的です。つまり、コンピュータに命令を下せるプログラマーは、「自分でやらず、人にやらせず、コンピュータにやらせる」という手段を使えるのです。
「本当であれば人がやっていたはずの作業を、文句を言わないコンピュータにやらせることができるプログラマー。」
プログラマーは現代の魔法使いと考える僕の意見にも、納得して頂けたのではないでしょうか?
この素晴らしい職種に、ぜひとも挑戦してみてください!
プログラムの設計まで行うシステムエンジニア(SE)に興味があるなら以下の記事も参考にしてください。
実際にプログラマーに挑戦したくなったら
本記事を読んで、「プログラマーに挑戦したい!」と考えたなら、転職エージェントに相談するのが一番です。経験者しか受け入れてくれないところもある一方、未経験からでも仕事を紹介してくれる転職エージェントもあります。
特に、プログラマーに限らず、ヘルプデスクなどのIT活用までに職種の幅を広げると、多くの仕事を紹介してもらえるのです。
なお、ITを駆使した現場では、Excelのマクロや自動化ツールなどで簡単なプログラミング経験を積めることもあります。
プログラマーに興味を持ったなら、そのような現場からスタートするのもありでしょう。
ここからは、「未経験からでもITの仕事を紹介してくれる」という観点で、おすすめの転職エージェントを紹介します。
・マイナビエージェント×IT
業界トップクラスの求人を抱えているのが「マイナビエージェント×IT」。また、首都圏だけでなく全国に対応していることも、大手ならではの魅力です。
取り扱っているIT業界の職種が、以下のように大量にあるところも大手企業ならではです。
- プロジェクトマネージャー・プロジェクトリーダー(WEB、オープン、汎用、制御・組込)
- システムエンジニア(WEB、オープン、汎用、制御・組込)
- プログラマー(WEB、オープン、汎用、制御・組込)
- 社内SE
- ネットワークエンジニア
- サーバーエンジニア
- セキュリティエンジニア
- データベースエンジニア
- システムコンサルタント(業務系、テクニカル系)
- パッケージ導入コンサルタント(ERP、CRM、SCM等)
対象年齢 | エリア | 未経験 |
20~30代 | 全国(首都圏・関西圏多数) | 〇 |