めざせプログラマー!仕事の内容を紹介!必要な3つのスキル

プログラマー仕事プログラマーの実情

みなさんプログラマーにどんなイメージを持っているでしょうか?インテリっぽくてカッコいい?メンタルを病む人が多そう?理系の人にしかできない難しそうな仕事?

プログラマーって難しそうに見えて、実はそこまで難しいことをしているわけではないです。理系の職業と思われがちですが、文系出身のプログラマーもいます。

事務の人から難しそうって言われることもありますが、事務から転職する人もいます。

この記事ではプログラマーの仕事の内容と、求められる3つのスキルについてご紹介します。

この記事はこんな人におすすめ
  • これからプログラマーを目指す学生で、プログラマーの仕事が知りたい人
  • プログラマーに転職を考えている人で、転職に有利なスキルを身につけたい人
  • 単純にプログラマーの仕事に興味のある人

プログラマーってどんな仕事?

プログラマーのイメージは人それぞれ色々あるかと思いますが、まずはプログラマーの仕事の流れを紹介します。
企業でもフリーランスでも大抵この流れになります。

  1. 仕様調整
  2. プログラム設計
  3. プログラミング
  4. テスト
  5. 納品

プログラマーの仕事って実はプログラミングだけじゃないんです。
プログラミングはほんの一部で、ほかの仕事が大部分を占めています。

1.仕様調整

企業ならば営業が持ってきた仕事、フリーランスならWebサイトなどを介して受注した仕事をプログラマーとして処理していくことになります。

企業なら、SE(システムエンジニア)と呼ばれる総取りまとめの人の下につくこともあります。

お客さんや営業が持ってくる要求仕様は、とてもあいまいなことが多いです(汗)
そんな要求仕様から、製品にできるレベルまで昇華させるのが最初の仕事になります。SEが付いていればSEの仕事になりますが、フリーランスなら自分でする必要があります。

この工程をサボると、出来上がった製品が要望のものと違うというとてもややこしい事態におちいります。最悪作り直しです。
こうならないため、製品の出来上がりイメージはお客さんと合わせておく必要があります。

2.プログラム設計

要求仕様がかたまったら、どうやってプログラムを作るかを設計します。

全体像から、機能ごとにブロックを分けて、オブジェクト指向やカプセル化を意識して設計していきます。
オブジェクト指向やカプセル化をしっかりしておけば、急な仕様変更があっても対処できます。

この工程をすっ飛ばして、試しにプログラミングをしてみることをプロトタイピングといいます。
プロトタイピングのいいところは、要求性能を満たせるか、所望の機能を本当に実装できるかを事前に調べられることです。
性能の見積もりはかなり難しくて、プロでもきっちり性能仕様を出すのは困難です。
また初めて作る機能の場合もプロトタイピングは有効です。
ただ、プロトタイピングの場合も、プログラミング設計はある程度しておく方がよいです。製品とプロトタイプで違う設計をしていたら、まったく意味がありませんので。

3.プログラミング

いよいよプログラミングです。
プログラマーにとって一番楽しい作業です。

プログラミング設計がしっかりできていれば、プログラミングはほとんどやることがないです。
設計書の内容をプログラムに起こすだけになります。

ただ、バグを埋め込みにくいコード、他人にも読みやすいコード、セキュアなコードなどはプログラマーのスキルによるところが大きいので、プログラマーの腕の見せ所になります。

大きいプログラムになると、数人でプログラミングしていくことになります。
大抵は機能やクラスごとに分けて、GitやSVNなどで成果を共有管理していきます。
プログラムにバグがないかを調べてくれる静的解析ツールを使っている企業もあります。

4.テスト

出来上がったプログラムをテストします。

単体テスト、結合テスト、総合テストなど数回にわけてテストを行います。

  • 単体テスト:機能レベルの試験
  • 結合テスト:機能間の試験、複数パソコンをまたがる場合はパソコン間の機能も含む
  • 総合テスト:全機能、全パソコン、全システムの全体を通して問題がないかの試験

よく言われますが、テストは”正しく動くことのテスト”ではなく、”バグを見つけ出すためのテスト”です。
バグを見つけられないテストは、テスト設計が間違っているということになります。(本当に品質がいいなら別ですが)

ソフトウェア・プログラムにはバグはつきものですから、バグがないと考えるのは間違っています。必ずバグはあります。

WindowsやiOSといった一流のソフトウェアでも、頻繁にアップデートをしているのはバグがあるからです。セキュリティパッチも、バグによるセキュリティリスクへの対策です。

5.納品

テストが完了したらいよいよ納品です。

設計書やプログラム、テスト結果などをまとめて、お客さんへ提出します。
ここでお客さんによる試験や監査がある場合もあります。

問題がなければ、はれて納品完了となり、お金がいただけます。
この段階で初めてお金がもらえることになります。(手付金などがある場合を除いて)
ですので、しっかり納品をしないと無駄作業になってしまいます。
フリーランスの人は、数カ月のプロジェクトの場合、分割の場合もありますが、一括の場合は最後までお金がもらえないことに注意しましょう。
企業の場合は、大抵は最後にまとめて支払われる形になります。

プログラマーに必要な3つのスキル

わたしが考えるプログラマーに必要なスキルは次の3つです。

  1. コミュニケーションスキル
  2. ロジカルシンキング
  3. 忍耐力

コミュニケーションスキル

まずはコミュニケーションスキルです。
話術とか人を笑わせる力ではなく、相手の言っていることや書いてあることを誤解なく理解でき、自分の考えを正確に相手に伝える力です。

最初の仕事に仕様調整と書きましたが、コミュニケーションスキルがないと、ここで時間を食ってしまい、設計やプログラミングの時間が短くなってしまいます。
また間違ったものを作ってしまうリスクもありますので、このコミュニケーションスキルは重要です。

ロジカルシンキング

2つ目がロジカルシンキング、論理的思考力です。
プログラムとはコンピュータに与える計画書のことです。

よくプログラミングは料理に例えられます。
カレーを作る時の手順は、お店に行って、材料を買って、材料を洗って、切って、炒めて、煮て、ルーを溶かして・・・と順序があり、どれが抜けても目的のカレーは作れません。

順序だてて正しく設計しなければ、コンピュータは実行することが出来ずに、計画は破綻します。これがバグです。
ロジカルシンキングは、プログラミングを経験していくうちに養われていきます。

忍耐力

最後が忍耐力です。
どんな仕事もそうですが、最後までやり遂げる力が求められます。
途中で手を抜いてしまったら、そこでバグが発生し、手を付けられない状況におちいります。

よくドラマなどで出てくる仕様変更は発生します。
仕様変更に対応するために徹夜、なんて話もよく聞きます。

ただ最近は働き方改革で、昔ほどプログラマーにシワ寄せが来ることも減ったようですので、一般的な仕事と同様レベルの忍耐力が求められます。

プログラマーってつらいの?

プログラマーのつらさってどこにあるでしょうか。

  1. 仕様変更の多さ
  2. リーダや熟練者の負担

仕様変更の多さ

1つは仕様変更の多さでしょうか。
設計も終わって、プログラミングも最終段階ってときに、お客さんから「聞いてた話と違うからこう変更してほしい」なんてことがよくあります。
この度に徹夜して修正して、しかも修正のせいでバグが混入して・・・なんて普通にあります。こうなるともう手が付けられません、デスマーチ決定です。

こんな仕様変更が発生する原因は、前に示した仕様調整が甘いからです。
仕様調整をしっかりして、文書にしてお客さんと合意しておけば、たとえ変更があっても費用請求と納期延長が可能です。
お客さん・営業・エンジニアのイメージがあいまいなまま進めると大変なことになりますので、面倒でも最初にしっかりやっておけば、問題ありません。

また例え仕様変更があっても、オブジェクト指向やカプセル化がしっかりしてあれば、比較的対処はできるものと思います。

リーダや熟練者の負担

2つ目は何かあるとリーダや熟練者の負担が急増するということでしょうか。

例えば1つ目の仕様変更で、大幅な工程遅延が発生したとします。
工程遅延を挽回するために、増員させてプロジェクトを進めることになりリーダが管理しきれなくなったり、プログラミングが早い熟練者に大量にタスクを割り当てたりすることがあります。
そうするとリーダや熟練者の負担は急増します。
マンガやドラマで出てくるIT企業のブラックのイメージはこんなところから来ているのではなないでしょうか。

この問題への対策はなかなか難しいですが、教育による企業全体のプログラマーの底上げなどが考えられます。
全員が熟練者になってしまえばいいという考えです。
昔は仕事のなかで覚えろ的な教育が多かったプログラマー業界ですが、最近ではスクールやオンライン講座なんかもできて、手軽に勉強できる環境が整っています。

未経験でもプログラマーになれるの?

完全な未経験者でも、企業に就職して1年も研修すればプログラマーになれるでしょう。

前にも記載したと通り、プログラミングはロジカルシンキングです。
実は日常生活で色々なロジカルシンキングをしています。

  • 8時の電車に乗るので、家を何分に出る。
  • 4人家族なので夕飯のカレーの材料はこれだけ買おう。
  • 雨が降ってきたので傘をさそう。

などなど、条件や結果によって行動を決めています。
まさしくこれがプログラミングです。

つまり、どんな人でもプログラマーになる素質があります。
あとは行動次第です。

ただ注意が必要なのは、転職サイトなどで未経験者向けのプログラマーの案件を見ていると、「研修期間3カ月でプログラマー」や、「すぐにプロジェクトに参加できます」というものがあります。
こういった案件は、研修内容について確認するなど、しっかり調査した方がよいでしょう。

まとめ

プログラマーの仕事の内容と求められるスキルについて紹介させていただきました。
これからプログラマーを目指す人の参考にすこしでもなれたなら幸いです。

  • プログラマーの仕事はプログラミングだけじゃない
  • 必要なスキルはコミュニケーションスキル、ロジカルシンキング、忍耐力
  • プログラマーのつらさはあるけど、仕事の進め方で対処できる部分もある
  • 未経験でも文系でもプログラマーの資質は備わっている

コメント

タイトルとURLをコピーしました