プログラマーの仕事
プログラマーの仕事を知る前に
プログラミングについて学んだことのない人たちでもプログラマーがWebサイトを作ったり、社内システムを作ったりしていることはご存知だと思います。
しかし、プログラミングを知らない人たちはプログラマーの仕事の質を出来上がったものだけでしか判断できないのが現状だと思います。また、社内でプログラマーを含むソフトウェアエンジニアとそれ以外の職種の人たちの間にギャップが生まれることはよくあることです。
そのギャップが少しでも埋まるようにプログラマーの仕事についての紹介しようと思います。
ソフトウェアエンジニアの仕事の種類
プログラマーと言ってイメージされる職種は、ほとんどがプログラマーではなく、ソフトウェアエンジニアだと思います。プログラマーはその内の一つの種類で、ソフトウェアエンジニアの仕事内容は様々で、会社によっては細分化されています。
・システムエンジニア
システムエンジニアとは、システム開発に関する業務を一貫して行うエンジニアで、クライアントの課題・要望をヒアリングして、その内容をもとにシステムの提案や設計書の作成、開発、テストまでを行います。主に上流工程を呼ばれる、システムの提案から設計書の作成までを行うことが多い印象です。
・Webエンジニア
WebエンジニアはWeb上で動くサイトやアプリケーションなどの開発・設計・保守・運用を担当するエンジニアです。
・プログラマー
プログラマーはプログラム言語を用いて、システムやソフトウェアを開発します。一般的にはシステムエンジニアが書いた設計書をもとにプログラマーがコーディングを行います。
プログラマーは主にフロントエンドエンジニアとバックエンドエンジニアに分かれます。
フロントエンドエンジニアはJavaScriptを使いクライアントサイドのデータの受け渡しやビューの描画を開発し、バックエンドでは受け取ったデータの処理したり、データベースのやり取りをする部分を開発します。
・インフラエンジニア
インフラエンジニアはサーバーやネットワークなどのITインフラの設定や管理を行っています。システムの稼働の管理や障害発生時の対応、復旧作業などを担っています。
代表的な仕事の種類は上記ですが、他にも電化製品や産業用機器などに組み込まれているソフトウェアやOSの設計・開発を行う制御・組み込みエンジニアや、コンピュータゲームやスマホゲームを開発するゲームエンジニアなどもいます。
プログラマーの仕事について
それではメインとなるプログラマーに仕事内容について紹介していきます。
プログラマーの仕事内容は名前の通りプログラミング、つまり、プログラミング言語を用いてコードを書いていき、プログラムが動くようにすることです。
「プログラムが思った通りに動く」はプログラマーの仕事を完了するための絶対条件ですが、プログラムが思った通りに動くことだけでプログラマーの仕事は終わりではありません。
プログラマーのコードには質があります。
その質のポイントとなる2つの大きなポイントが「プログラムの処理速度」と「理解しやすさ」です。
プログラムの処理速度
プログラマーが書いたプログラムは、コンピュータによって読まれて、その指示に従うようにコンピュータが動きます。
この時に書いたコードが複雑だったり、処理に無駄が入っていた場合はコンピュータは処理に時間がかかったり、負荷がかかったりします。
例えば、この負荷の重いプログラムへのアクセスが同時刻に発生してしまうとコンピュータは処理しきれず、サーバーがダウンしてしまうなんてこともあり得ます。
また、プログラムの処理速度が速いとWebサービスを使う時に反応が速くなり、ユーザビリティに改善されるのもメリットです。
理解しやすさ
プログラマーによって処理速度が変わるように、書くプログラムも変わります。そこで発生してしまうのが、自分だけしか読めないコードが作られてしまうことです。
「正常に動くならそれでいいんじゃないの?」と思われる方もいるかもしれませんが、それはそのシステムが全くエラーを出さず、かつ、拡張しない場合のみです。
多くのシステムは、想定されていないユーザーの挙動によるエラーが発見されます。また、どんなシステムでもユーザーの反応に応じて拡張されていくものです。
この時に一度書かれたコードを見直して、コードを追加していくことになりますが、コードを追加するプログラマーは既存のコードを書いたプログラマーとは限りません。別のプログラマーがそのコードを見た時に、どうような処理を行っているのか、それどころかどこにそのファイルが存在するのかも分からないかもしれません。
また、もし同じプログラマーがコードを追加するとしても、それが何ヶ月も前に書いたコードなら覚えていない確率が高いでしょう。
結局、そのコードを再び理解してコードを追加していくのに時間がかかり、余計な手間も増えてしまうことになります。
コーディングルールとリファクタリング
プログラムの処理速度と理解しやすさがコードの質のポイントとなると言いましたが、チーム内の誰かがいいコードを書けるだけでは不十分で、全体のコードが良質である必要があります。そのために、チームでコーディングルールというものを作成します。
コーディングルールは会社やチームによって様々ですが、チームメンバー全員が理解のしやすく、良質なコードを書くための指針ともなります。
プログラミング言語自体のアップデートやチーム内のスキルの向上などの様々な理由によって、以前書かれたコードを綺麗に書き直すという習慣があります。それがリファクタリングです。
サービスを運用・保守していく際は、定期的なリファクタリングを心がけていくことで、機能追加や機能改善の際にコーディング作業自体が早くなります。
まとめ
今回はソフトウェアエンジニアの仕事の種類からコードの質、そして、その保ち方について説明しました。
非プログラマーからするとプログラマーの仕事は何をしているのか分からないことがあると思いますが、これで少しは理解できたかと思います。
高いコードの質を保つ一番のコツはめんどくさがらないことだと言えます。めんどくさくて乱雑に書かれたコードは、数ヶ月後、または数年後の自分をもっとめんどくさい状況に落とし込む可能性すらあります。