「プログラマーの仕事って難しいのかな?」

プログラミング技術を身に着ければ誰だってプログラマーになれます!

しかし、仕事に就くにはやりがいや向き不向きも気になりますよね。

今回はプログラマーの仕事内容・必要な能力・向き不向き・歩むキャリアについてまとめております!

プログラマー(PG)の仕事内容

アプリケーションやソフトウェア(システム)を作ります。
もっと掘り下げた言い方をすると、システムの動き方を機械に指示する「プログラム」を書くお仕事です。

スマホやコンピュータで動くものを想像しがちですが家電製品や工場・研究所などで使われる機械を動かすプログラムを作る人もいます。

そんなプログラマーの仕事内容の詳細と、やりがいを詳しく見ていきましょう。

システム設計書に基づいてプログラミングを行う

プログラマーは、システムについてどんな「画面」・「機能」・「動作」なのか…ということが書かれた設計書を担当者から貰い、その通りにシステムが動くようプログラミングを行って、動作テストをする、というお仕事をしています。

仕事についてもっと具体的に想像できるよう、例を出しながらご説明してみます。
例えば、設計担当者から「2つの数字を足し算する計算機アプリを作って」と言われました。

※設計書例です。実際に使われる設計書はとてつもなく詳細に書かれています。

あなたは
1、入力画面を表示する
2、OKボタンが押されたら
→未入力項目がある場合→エラー画面表示
→未入力項目がない場合→入力された数字を足して結果を表示

・・・といった内容を、プログラミング言語を使って書いていきます。

こんな画面を使ってプログラミングをしていきます。
(上の開発画面はモバイルアプリ開発用のMonaca
下の開発画面はMicrosoftのVisualStudioです。
どちらも基本の機能は無料で使えますので、興味のある人は使ってみましょう!)
※画像内のコードはここで挙げた例とは関係ありません。

一見わけのわからない英数字の羅列に見えますが、決まったルールに従って書かれた「動作」が書かれています。

そしてプログラムが書けたら、エラー画面は適切に表示されるか?足し算の結果は合っているか?と動作内容をテストします。

この時、他の作業者と書いたコードをチェックし合う「コードレビュー」といった作業が行われることがあります。
動かない原因を見つけてあげる、別の書き方をすればもっとシンプルな文になる、などアドバイスをし、チームプレーの助け合いの元、進んでいきます。

また、複数人で手分けをしてプログラムを書いていた場合は、それらのコードを合体させてテストを行う作業に入ります。

こうして決められた期日までにシステムを完成させていきます。

プログラマー(PG)のやりがい

「システムが形になったときの達成感」「最新の技術を学び続けられる」といったことをやりがいに感じる方が多いです。

「システムが形になったときの達成感」…皆さんも図工や工作・絵画、などなどコツコツと作業を積み重ねていき、完成した時に感動を味わったことがありませんか?
プログラムというのは「ものづくり」です。一つ一つのプログラミング言語という「材料」があり、それを組み合わせ、積み重ねてシステムが出来上がります。うまく組み合わせることができず中々進まないこともありますが、そこは発想と工夫次第です。
困ったら助け合うなどチームプレーにやりがいを感じる場合もあれば、このコツコツとした作業自体がとても楽しい!という人もいます。その中でなんとか完成までたどり着けた達成感はとても良いものです。
また、依頼されたお客様やユーザーから喜ばれたりお礼を言われたりする瞬間もモチベーションになります。

「最新の技術を学び続けられる」…プログラマーは、作業自体はコツコツ進めなければいけないのですが、知識を更新し続けるような刺激が欲しい!という方にうってつけです。IT業界は常に新しい知識が求められます。また、チームプレーをする上で、困っている人がいれば技術を教えたり、逆に教えてもらったりと人と人との関わりの中でもやりがいを感じられます。

プログラマー(PG)に必要なスキル、能力

まとめると、「責任をもって」コーディング(コードを書く=プログラミングをすること)をする「根気」と言えます。下記にて詳細を複数項目挙げていますが、それらは経験を積む上でつけていけばOKです。むしろ常に技術が新しくなっていくIT業界では仕事をしながら下記のスキルを積み重ねていかなければいけないと言えます。そのスキルは「システムを良いものに仕上げるという責任感」と、「コツコツ技術を磨く根気の良さ」があれば自然とついていきます。

それでは必要なスキル・能力と、具体的にプログラマーを目指すにはどうしたらよいか見ていきましょう。

システムの実現に必要なコーディング知識

論理的思考能力が問われます。もちろんコードにどんな書き方があるか、という知識(記憶力)も必要ですが、実際の仕事上では検索エンジンや本などで調べてOKです。ここでいう必要な知識とは、そのコードを「どうやって組み立てるか」という知識(記憶だけでなく論理的な思考も必要)です。

例えば、システム内で画面に0から9までの数字を表示させなければいけなくなったとします。
下記はコードの書き方の例です。プログラミング言語の処理動作を日本語で簡単に示してみました。

1>> x = 0
2>> (A
3>>   xの値を画面に表示
4>>   x1を足す
5>>  x が9以下であれば(A)に戻る

上から順番に実行されます。コンピュータになったつもりで処理を追って見てくださいね。1行目から5行目まで処理が行われた後、2行目の位置に戻され、9を画面に表示したあと処理は止まります。
結果は“0123456789”となり、問題ありませんね。少し疲れましたが。

次の書き方の例はどうでしょう。

1>> x’ = 0,1,2,3,4,5,6,7,8,9
2>> x’に入っているすべての数字に以下の処理を行ったら処理はおしまい
3>>   { x’の値を画面に表示 }

x’は複数のモノをまとめて入れておける箱です。
(プログラミング上では「配列」と言っています。)
結果は“0123456789”となります。同じことをしているのにあっという間に終わりましたね!

「配列」と、2行目のコードの書き方を知っている、なおかつ組み合わせ方を思いつけば(知っていれば)、上で5行だったものが3行になり、何度も行ったり来たり処理を行わなくて済みます。

このように、論理的思考能力をもとに生み出されるコーディング知識が、コンピュータの処理の負担を減らし、サクサクと進む快適なシステムを可能にするのです。

バグやエラーに対応できるコーディング知識

問題解決能力が問われます。もちろん、そもそもとしてシステムが動かない原因を生み出さないようなコーディングの腕・バグやエラーの種類を見ただけでピンポイントに間違っている箇所の見当をつけられる知識(経験)も必要なのですが、実際のコードというのは長ったらしく、書いている途中にケアレスミスで必要な1文字が抜けているために動かなかった、など細かなミスでコードが動かなくなることもしょっちゅうです。
ここでいうコーディング知識とは、ありとあらゆる手段を駆使し最速で解決できる力の事を言います。

基本はトライアンドエラーです。例えば、原因箇所がわかって、そこの書き方を変えてみてデバッグ(動作テスト)をしてみたり、プログラミング環境(ツール)の設定を変えてみたり・・・

もちろん早く解決できるのであれば人に聞く、インターネットを使う、などもガンガン試しましょう。
あまり一つの方法・箇所に執着せず広い視点を持ち、諦めない根気の良さが大切です。

細かい部分も責任を持って行う能力

少しのミス・見逃しが重大なシステムの欠陥に繋がります。これはどんな仕事でも当てはまりそうな能力ですが、プログラマーにとっては重要度が違うのです。もしも担当したシステムがお金を扱ったり、大事な個人情報を扱うシステムだったりしたら…怖いですね。

もし、あなたが納期も間近、時間が無い!という時に、納めなければいけないシステムの、動きの怪しいところを見つけてしまったら・・・どうしますか?

上司や提出先に相談して納期を伸ばしてもらうなど、確認・修正する方向で出来る限りの手を打ちましょう。こういうことは割とあるので作業時間は出来る限り貰っておきたいですね。

ちょっとのミスが、他の動作にも影響するかもしれません。何回も色んな視点から動作テストをしましょう。プログラマーは完璧なシステムを追い求めるストイックさを持たなければなりません。

プログラマーを目指す方法

(1)独学で知識を習得する
(2)未経験者として就職、転職する
(3)専門学校・大学を卒業して在学中に技術を習得する

オススメ順にご紹介しました。
(1)独学で知識を習得する…この方法は誰にでもチャンスがあります。知識を付けた後、転職・就職をしても良いですし、フリーランスとして仕事を受注するなど、働き方も選べます。

現代は情報が得やすいですから、インターネット・本を駆使すればあまりお金をかけずにプログラミングの勉強をすることができます。

まずはどんなものを作りたいか(パソコンで動くソフトウェアか?スマホで動くアプリか?)を考え、それに適した、学びたいプログラミング言語(パソコンならC#やJava、スマホならSwiftやPythonなど)を決定しましょう。

無料の学習ツールもありますからどんどん活用しましょう。

また、独学とはいえスケジューリングに自信の無い人は、プログラミングスクールに通うと良いでしょう。現役プログラマーの講師と実際にやり取りをすれば専門用語などにも慣れやすいですし、就職・転職のサポートを行ってくれるところが多いのでオススメです。

(2)未経験者として就職、転職する未経験でも就職・転職して、会社で教育を受けたり、仕事を行いながら知識をつけたりすることができます。ただし、転職の場合は年齢を重ねるごとに未経験枠での入社は難しくなります。もし転職を考えている方はすぐに行動に移しましょう。

(3)専門学校・大学を卒業して在学中に技術を習得する…もしあなたがプログラマーになりたい中学生や高校生であるならば、情報・電気・電子工学などが専攻できる大学や、専門学校を目指しましょう。ただし、プログラマーになるのに学歴は関係しないので、既に社会人の方や、他に進路を考えている、時間が無い、という方はわざわざこの方法を目指さなくても大丈夫です。もちろん文系の大学を出ていてもなれますので心配ご無用です。

大学では、あくまで「学問」としてプログラミングやITの専門知識を学びますので、実務につながるかという点では弱いです。しかし、幅広く、かつ深く掘り下げた視点で学ぶことができますので、プログラマーのみならずIT業界全体で通用する専門知識がつけられるでしょう。

専門学校ではより実務に近い授業を受けることができます。就職に対しても手厚くサポートしているところが多いため、早く現場で活躍したい!という方は専門学校を目指しましょう。

プログラマーに向いている人、向いていない人、適性

プログラミングが好きか、嫌いか。極端ですが、プログラミングが好きになれれば向いている、といって大丈夫です。もちろん、プログラミング学習を始めたばかりや、どうしても動かないといった壁にぶつかったときは嫌になるでしょう。投げ出したくなりますね。ですが、その最初の山場を乗り越えたときに、またプログラミングして何か作りたい、と思えれば良いのです。一番良い方法は、実際に体験してみる事です。

それを踏まえたうえで、実践してぶつかるであろう厳しさ、そこから向いている人の特徴・向いていない人の特徴を記します。下記を読んで向いていない、と思っても、実際にプログラミングをしてみると意外と自分は向いている素質がある、という発見につながることもありますので、参考程度に読んでみてください。

プログラマー(PG)の厳しさ

「プログラムそのもの」「時間」「システムトラブル」「新しい技術」・・・この4つとの戦いになります。

第一難関のプログラムについて、作らなければいけないものは、プロジェクトごとに毎回変わります。決まった書き方はなく、その都度自分で考えていかなければいけません。

その為、第二難関として時間が迫ってきます。お客様からお金をもらってシステムを作るのであれば、時間がかかるごとにお金(人件費)は増えていきます。決められた予算内で作る為、また、今か今かとシステムが世に出されることを待っている人の為、時間内に完成させなければいけません。

第三の難関は作り終えたシステムにトラブルが起こった時、責任をもって対応にあたらなければいけないということです。

そして第四の難関として、経験を積んでも、常に進化していくIT技術を吸収していかなければいけません。

プログラマー(PG)向いている人

「効率化を求める怠惰な人」「仕組みを考えるのが好きな人」です。

怠惰な人、と聞いてなぜ?と思われるかと思いますが、もともとシステムや機械というのは、人間が楽をしたい、という気持ちから生まれたものです。今まで決まっていた通りに行動するのではなく、別のやり方に変えた方がよっぽど楽で効率が良いのではないか?という事を常に考えられなければなりません。

プログラマーの厳しさで触れた「時間」「システムトラブル」を解決できるよう、プログラムも短く効率の良い書き方をする必要があります。効率の良いプログラムは、時間短縮、バグ・エラー発見のしやすさに繋がります。また、効率の良い技術=「新しい技術」ですから、どんどんラクしていこう!という気持ちで積極的にそれらを吸収することが大事です。

楽したい!面倒くさい!無駄を省こう!という気持ちから、前向きに仕組みを考え、効率化していく人は良いプログラマーになれるでしょう。

プログラマー(PG)向いていない人

「決まったやり方にこだわってしまう人」「IT技術に興味・関心が持てない人」です。

IT技術は驚くほどのスピードで進化しています。効率の良い方法・技術がどんどん生まれ、常に知識を新しくして対応していかなければなりません。昔ながらの決まったやり方にこだわってしまっていると、「時間」のロスや「システムトラブル」に迅速に対応できなくなってしまう場合があります。また、「新しい技術」も、勉強する、という意識では無く趣味レベルで常に吸収できるとよいでしょう。興味・関心が無ければ続けることが苦になってしまいます。

プログラマー(PG)のキャリアパス

自分はプログラマーに向いていない、と思った人でも、経験を生かして他の働き方を選択することもできます。

キャリアパスは主に2パターン

(1)「作る人」から、「作成全体の指揮をとる人」
(2)「作る人」から「職人レベルの作り手」

詳しく見ていきましょう。
(1)「作る人」から、「作成全体の指揮をとる人」へ…これはプログラマーからSE(システムエンジニア)・PL(プロジェクトリーダー)・PM(プロジェクトマネージャー)になるキャリアパスです。
プログラマーは設計書をもらってその通りに作るお仕事でしたが、今度はその設計書を作る側に回ります。設計書を作るということは、依頼してきたお客様との話し合い、プログラマーが作ったシステムを確認し、その運用まで責任を持つということです。設計書を作るお仕事、SEについては他の記事で詳しく解説しております。
(参考記事:SE(システムエンジニア)とは?概要、仕事内容を解説
プロジェクトごとのSE達をさらに管理する、PL・PMといったお仕事もありますので、それぞれ適性を考えて進む、もしくは会社で働いていくうちに、プログラマーから任されていく、といった形になります。

(2)「作る人」から「職人レベルの作り手」へ…これはプログラマーからエキスパートプログラマーになるキャリアパスです。
システムと一言にいっても、経営に関わるシステム、モノを売るシステム、情報を管理するシステム…など様々なものがありますね。その分野に関する知識も持ち、かつ高い技術をもつプログラマーをエキスパートプログラマーと呼びます。プログラミングが好きで、作る現場にいたい!という方はこういったキャリアパスを進むとよいでしょう。

まとめ

プログラマーというお仕事、いかがでしょうか?仕事をする上で大変なことも書きましたが、大事なのはまず体験してみることです。

独学で学んでいると、どうしても乗り越えられない…と思う山場があります。そこを乗り越えられないままだと、プログラミングの楽しさを実感できず、やっぱり自分には無理…と思ってしまいます。考え方のコツなどもありますから、そんなときはスクールを活用してみてください。
プログラミングジャパンにて無料体験を行っていますので、是非お気軽に参加してみてくださいね。