「プログラマー」と聞いても、初めはふんわりとしたイメージしか浮かばないですよね。
今回は、初心者プログラマーまよい羊くんと一緒に、
プログラマーを目指すにあたっての「初歩の初歩」
「プログラマーとはなんぞや?」について学んでいきましょう!
プログラマーと聞くと専門用語も多く、敷居が高く感じることも多いかと思いますが、
なるべくわかりやすい、やわらか言葉で説明していきますのでご安心を…!
目次
プログラマーの仕事とは?
一言で言うと、
WEBアプリや機械が正しく動くように、プログラミングで命令を書いていきます。
例えば、Google検索なら
- 「このキーワードを含むサイトを調べて!」と言われたら、
- データベースから対象のキーワードを含むサイトを調べて、
- 結果を一覧にして表示する
といった動作をするように、プログラミングで指示しています。
Google検索の他にも、普段使っているアプリやゲーム、このブログも…
裏側ではプログラマーが書いたプログラムによって動いています。
代表的な職種
「WEB系」「アプリ系」「組み込み系」「汎用系」 etc…
何系のプログラマーなのかによって、使う言語や必要なスキルも変わってきます。
ここでは職種別によく使われる言語も合わせて紹介していきます!
WEB系
インターネットを介して閲覧できる
「WEBサービス」や「WEBアプリケーション」の開発がメイン。
前述で説明したGoogle検索、ブログの他にも、
ネットショッピングやSNSなどがこの部類に入ります。
WEBアプリとは、インターネットを介して利用できるもののこと。
スマホアプリなどのように、
インストールを必要としないWEB上のアプリケーションのことを指します。
よく使われる言語:PHP(ピーエイチピー)、Ruby(ルビー) etc…
アプリ系
iPhoneやAndroid、Macなどで使用するアプリケーションの開発がメイン。
前述のWEBアプリとは違い、
スマホやPCなどの端末にインストールして使うアプリを指します。
またこのような形式のアプリのことを「ネイティブアプリ」と呼びます。
よく使われる言語:Java(ジャバ)、Swift(スウィフト/スイフト) etc…
組み込み系
電子機器や家電の他、
ロボットや自動車などの操作・制御のプログラム開発がメイン。
お湯が沸いたらスイッチを止めたり、
洗濯機の水の量や乾燥時間を制御したりする部分を担っています。
最近ではIoT家電の普及やロボット技術の発達により、
技術的にもどんどん前進していくのではないでしょうか。
よく使われる言語:C言語(C++(シープラスプラス/シープラ)、C#(シーシャープ)) etc…
汎用系
一台のコンピュータで処理を行う、企業の基幹業務を担うシステムの開発がメイン。
金融機関や保険会社などで使われる、
データの膨大な大規模なシステムに携わることが多いです。
顧客管理や会計などを担う、
その企業内で使われる業務用のシステムの開発が汎用系にあたります。
よく使われる言語:COBOL(コボル)、PL/1(ピーエルワン) etc…
他にも、ゲームを開発したいならゲームを作る言語を勉強しなくてはいけません。
どの言語を選ぶのかによって、今後の仕事や人生も大きく変わってきます。
- 自分が目指すのは何系のプログラマーなのか?
- どんな仕事内容や言語を扱うことが多いのか?
自分がどんなものを開発したいのかも考えて、
さらに詳しく調べてみることをオススメします!
エンジニアとプログラマーの違いは?
求人を探していると”ITエンジニア”とか”システムエンジニア”という言葉も出てきます。
と思う方も多いと思います。
システムエンジニア(SE)とプログラマー(PG)の違いについて例えると、
プログラマー = 大工
下記のようなイメージです。
具体的な仕事の内容としては、
システムエンジニア
システムやサービスをどのように設計・実装するか?仕様を決めたりしていきます。
開発メンバーの指揮を取ったり、お客様の要望を聞き要件定義をまとめたりもする役割です。
家(システム)作りに置き換えるなら、
- 設計図の作成
- 内装(どんな機能が必要か?)
- 材料(どのサーバーや言語にするか?)
- 大工(プログラマー)
をどうするのか決めていきます。
プログラマー
設計をもとに、実際にプログラミング言語を使ってシステムを作っていく役割です。
コードを書き、動作のテストやバグチェックなど作ったりメンテナンスを担当します。
設計図をもとに
- 玄関を作ったり、部屋を作ったり(システムを作る・機能の実装)
- 水が出るか?電気はつくか?確認したり(テスト)
- 問題がないか見守ったり、修理したり(保守)
を担当します。
場合によっては、2つの職種の境が曖昧で、
システムエンジニアの役割もしながら、コードを書いて開発場合もありますし、
プログラマーだけど設計など1から担当する場合もあります。
その場合は総じて”エンジニア”と呼ばれることが多く、
役割は企業や受ける仕事によって変わってきます。
私自身も小さな会社なので、企画をもとにシステムの実装・設計、
プログラミング、インフラ周りの構築など多岐にわたって担当しているので、
広義だと”WEBエンジニア”ということになります。
また、フリーランスなどで活動する場合も1人で広範囲のことをこなすため、
「エンジニア」と呼ぶことが多いです。
求人を探す際は、プログラマー・エンジニアの言葉に注目しつつ、
仕事の範囲や関われることについてしっかり見ることが大切です。
プログラミングだけが仕事じゃない
前述の通り、プログラマーは主にシステムの”作る”部分などを担い、
プログラミムを書き、開発する仕事です。
ですが、システムエンジニアとプログラマーの境が曖昧なように、
プログラマーでもプログラミングの技術だけでは成立しません。
プログラミング言語を使えるのはもちろんですが、それ以外にも
ネットワークやサーバーなどのインフラ、データベース、セキュリティ、
フロントエンド(ユーザーに見える側の部分)、Javascript・・・
様々な部分の理解、そして使えなければいけません。
どれもプログラムを組む上で関わりのあることなので、
これがわからなければプログラムを作ることも難しくなってきます。
もちろん、企業によってはインフラエンジニアがいたり、デザイナーさんがいるので、
自分ががっつり担当することはない場合もあります。
ですが、その知識がなければその人たちと、話し合うこともできません。
プログラマーを目指すなら当然、プログラミング言語の勉強から始めると思います。
その時に他の知識も必要なことがわかってきます。
そこを乗り越えるのは最初は大変ですが、覚えれば覚えるほどできることも増えて
プログラミングや仕事の楽しさも増してきます。
心折れずに頑張っていきましょう!!
主な業務形態について
最後に、プログラマーの働き方の種類について説明します。
会社によってその業務形態は様々です。
業務形態によって、携わる仕事の範囲・待遇も変わってきますので、代表的なものを紹介します。
自社開発
自社で企画やサービスを開発し、運用・保守や販売などを行なっている場合です。
開発に1から携わることができたり、同じシステムを強化したり保守するのでずっとそのシステムと関わり、育てていくことができます。
オリジナルのサービスやシステムを開発したい場合はこのような会社を選ぶ必要があります。
受託開発
他社からの依頼を受け、それに応じたシステムやサービスを開発・保守します。
様々な受注を受けるため、案件の数だけさまざな開発に携わることができます。
会社によっては得意な分野があり、似通ったシステムの受注が多いこともありますが、
受注する案件によっては新しい技術を使ったりスキルアップできる仕事になります。
客先常駐
これは会社から出向し、他社に派遣されて現場で開発を行う業務です。
受託同様、派遣先によって様々な案件に関わることができ、
社内で開発するのと違いたくさんの開発現場を経験することができます。
ただし、労働環境や開発する案件は、派遣先に準じることになります。
フリーランスで活躍する人も…多いよね…!
私の場合は自社開発のWEBサービスを製作しているので、ディレクターやデザイナーと
企画段階から開発に参加したり、自分のアイデアを提案したりすることも多々あります。
自由度が比較的高く、作ったものに愛着が湧いてくるのが特徴です。(笑)
受託開発で有名な会社といえば、ソニックガーデンさんなどがあります。
様々な案件を取り扱っており、また受託開発には珍しい”リモートワーク”を採用しています。
かくいう私もリモートワークOKのため、自宅で仕事をしていることがほとんどです。
また友人が客先常駐で働いていましたが、友人の派遣先はチームワークも良く
派遣先のエンジニアとも和気あいあいと開発できていると言っていました。
一方、友人の同僚は常に案件に終われてなかなか意思疎通のしづらい現場であったとも聞いています。
4. まとめ
いかがでしたでしょうか?今回のポイントは以下です。
- プログラマーはプログラミングで開発するシステム版”大工”
- プログラマーにも種類が複数ある
- プログラムを書く以外にもたくさんの知識や技術が必要
- 業務形態によっても携わる仕事や環境が変わる
はじめはイメージが湧きづらいかと思いますが、
プログラマーを目指すなら絶対知っておいて欲しい職種についてのことを紹介しました。
これからの勉強や転職活動での指標になればと思います。