この記事では、Webエンジニアに興味がある未経験の人の、このような疑問に答えます。
この記事の内容
- Webエンジニアの業務内容は大きく3つ【幅広いです】
- Webエンジニアの業務内容のイメージ【1日の具体的な流れ】
- Webエンジニアの業務と個人Webアプリ作成との3つの違い
- 未経験者がWebエンジニアになるには【壁を乗り越えるゲームを楽しめるか】
この記事を書いている私は、自社Webアプリの開発と運用を4年以上担当している現役Javaエンジニアです。複数のチームでの開発・運用経験があるので、極端な事例に片寄りすぎずに、かつ具体的なイメージをお伝えできればと思います。
この記事では、「Webエンジニア」はWebアプリの動く裏側をプログラミングする人を指しています。Web制作を中心に行う人については、当てはまらない内容も含まれるかもしれません。
Webエンジニアの業務内容は大きく3つ【幅広いです】
自社Webアプリの開発と運用を担当するWebエンジニアが関わる業務は、大きく3つに分けて考えることができます。
- 営業職などビジネスサイドの人が発案する「プロジェクト」
- 開発職などエンジニアサイドの人が発案する「技術的な改善」
- システム/ユーザ/ビジネスサイドの人から発生する「トラブル/問い合わせ対応」
主にビジネスの視点で(=利益を上げるために)企画される「プロジェクト」と、自社Webアプリの技術的な問題を解決する「技術的な改善」が、それぞれ同時並行で発生するイメージです。
トラブルが発生してその対応をしたり、ユーザやビジネスサイドの人から問い合わせがあれば、それに対応することもあります。
それぞれ、詳しく説明していきます。
業務内容①:プロジェクト
営業職などのビジネスサイドのメンバーは、会社の利益を増やすために、どのようなWebアプリを作ればいいか「企画」します。すでに世の中に公開されているWebアプリについては、何を追加するか企画することもありますし、場合によってはサービスを終了することもあります。
企画の例としては、このようなものがあります。
- 新しいWebアプリを一から作成する
- すでにあるWebアプリに新しい決済方法を追加する
- ユーザが商品を探しやすくするため、推薦システムを開発/導入する
- Webアプリを段階的にサービス終了させる
この企画に沿って、Webエンジニアは次のような流れでプロジェクトを進めます。
- 要件定義:企画に沿って、Webアプリが持つ機能や性能(要件)を洗い出して定義する
- 設計:要件を実現するようなシステム構成を決める
- 実装:いわゆる「プログラミング」
- テスト:実装したWebアプリが要件通り動作するか確認する
- リリース準備/リリース:Webアプリの公開準備/公開
- 運用:リリース後に見つかった不具合の修正など
最近は「アジャイル型開発」も増えていますが、進め方が違うだけで、「設計」や「テスト」などを行ってWebアプリの品質を保つことはとても大切です。
ウォーターフォール型開発とアジャイル型開発
上で紹介した「要件定義→設計→実装→テスト→リリース」のような開発手法を「ウォーターフォール型開発」と呼びます。流れ落ちる水に例えている通り、基本的に後戻りができないので、初期の「要件定義」や「設計」が大切になります。経験豊富なエンジニアが担当することが多いです。
最近は「アジャイル型開発」もメジャーになってきています。最初の段階で要件を厳密に決めてしまわずに、「設計・実装・テスト」のサイクルを短い期間で区切って何度も繰り返しながら、徐々にWebアプリの質を高めていく手法です。最低限の機能を持つWebアプリを早い段階で見ることができるのが特徴です。
業務内容②:技術的な改善
「技術的な改善」には、例えばこのようなものが含まれます。
- Webページの表示速度を早くする
- データベースを変更して、Webアプリ内部での処理速度を早くする
- ソースコードの管理方法を見直して、Webアプリに不具合が含まれにくい仕組みを作る
これらの改善は、うまくいったとしてもユーザの目に直接見えにくい・気づきにくいことが多いですが、
こういう不満に先回りして対応しておくのは大切だなと感じます。そういうWebアプリ、使わなくなってしまいますからね・・・。
業務内容③:トラブル/問い合わせ対応
「トラブル/問い合わせ対応」には、例えばこのようなものがあります。
- ネットワークの障害があり、自分たちのWebアプリに影響がないか確認する
- ユーザから「購入した商品が届かない」と問い合わせを受けて、原因調査をして解決する
- ビジネスサイドの人向けに、データを抽出/加工して渡す
トラブル/問い合わせ対応は、Webエンジニアとしてのスキルが問われる部分です。
ただそこまで頻繁にトラブルも起こらないので、トラブル対応のスキルが上がらないというジレンマもあります。
このように、いわゆる「プログラミング」以外にも、Webエンジニアの業務には幅広い内容が含まれることが分かります。
Webエンジニアの業務内容のイメージ【1日の具体的な流れ】
Webエンジニアは、「プロジェクト」「技術的な改善」のバランスを取りながら、日々取り組む業務を調整しています。
「プロジェクト」には〆切があることが多いですが、「技術的な改善」はそうでないことが多いです。急ぎの「プロジェクト」だけやってもいいのですが、それだとつまらないし「技術的な改善」が進まないので、スケジュールに合わせて取り組む業務を調整します。
「トラブル/問い合わせ対応」に関しては自分で取り組むタイミングを選べないので、発生したら随時対応するイメージです。
具体的に、1日の仕事の流れを紹介します。
この例では、自分がプロジェクトAと技術的な改善Dをメインで担当しているとすると、そこに多くの時間を使いながら、他の人のプロジェクトBやCにもフィードバックをする形になります。
あと、ずっと座りっぱなしも体によくないので、当然ですが適当なタイミングで休憩は取っています。
ある1日 | 別の1日 | |
---|---|---|
9時 | 要件の理解(プロジェクトA) | 調査(技術的な改善D) |
10時 | 設計ミーティング(プロジェクトB) | ↓ |
11時 | 要件の理解(プロジェクトA) | ディスカッション(技術的な改善D) |
12時 | ↓ | ランチ |
13時 | ランチ | 週次進捗ミーティング |
14時 | コードレビュー(プロジェクトC) | 設計ミーティング(プロジェクトA) |
15時 | ↓ | 実装(プロジェクトA) |
16時 | 設計(プロジェクトA) | ↓ |
17時 | ↓ | ↓ |
18時 | 帰宅 | トラブル対応 |
19時 | ↓ | |
20時 | 帰宅 |
Webエンジニアの業務と個人Webアプリ作成との3つの違い
Webエンジニアの業務と、個人でのWebアプリ作成を比較すると、
- 「コードレビュー」
- 「システムの理解」
- 「影響範囲の大きさ」
この3つが大きな違いとして挙げられます。
会社として自社サービスを開発する場合、基本的にはそのサービスを稼働させ続けることで利益を生み出す必要があります。そこに個人が関わる時には、自分一人でWebアプリを作る時にはあまり考えなくてよかった要素が出てきます。
実際に、Webエンジニアとして働きながら、同時に個人でWebアプリを作成して実感したこの3つの違いを紹介します。
「コードレビューしないよ」「個人でWebアプリ作っても影響大きい時もあるよ」という声もあるかもしれませんが、Webエンジニアとして働いたことがない人のために、仕事のイメージを膨らませるための目安としてリストアップしています。
違い①:コードレビュー
コードレビューとは、自分が書いたプログラムが正しいか、おかしなところがないか、他のエンジニアに見てもらう作業のことです。
経験豊富なエンジニアからフィードバックをもらう貴重な機会でもあります。ある程度経験を積めば、自分が他の人のプログラムをレビューする機会も増えると思います。
自分だけが読めて動かせるプログラミングを卒業するには、このような仕組みを生かして経験から勉強することも大事です。一方で、チーム開発に役立つ読みやすいコードを書くための本もあるので、知識として勉強することもできます。
違い②:システムの理解
会社のWebアプリを開発するためには、まずそのシステムのことを理解しないといけません。
個人でWebアプリを作成するときには、自分で何を作りたいか、どういう機能を持つべきか、全く分からないということは少ないと思います。
Webアプリを構成するシステムを理解するために、「コードを書くより読む時間が長い」というのは、個人的には意外でした。
自社サービス開発のWebエンジニアになって意外だったのは「コードを書くより読む時間の方が長い」ことでした。
今あるプログラムを理解しないと、そこに修正を加えられないからです。
退屈に感じる時もありますが、大量のユーザを相手にする商用サービスが動く仕組みに感心することも多々あります。
— 三年坊主🐤投資エンジニア👩💻 (@SannenBouzu) August 27, 2018
違い③:影響範囲の大きさ
会社で開発するWebアプリは、その影響範囲の大きさが特徴的です。
規模にもよりますが、Webアプリが短い時間動かなくなるだけで、数十〜数千万円の損失(=得られたはずの利益が得られなくなる)が生じることがあります。
システム構成の面でも、自社だけでなく外部の会社からの影響を受けることがあります。例えば、配送や決済の仕組みを取り入れていると、外部の配送会社や決済会社のサービスにトラブルが起こった時に、自社のWebアプリにも影響することがあります。
金銭面やシステム構成の面での影響を考えながら、「Webアプリが停止しても自動的に復旧できるようにする」「外部会社との連携を瞬時にオンオフできる仕組みを作っておく」など悪影響をなるべく小さくする準備を最初から行っておくことが大切です。
未経験者がWebエンジニアになるには【壁を乗り越えるゲームを楽しめるか】
Webエンジニアになるには、プログラミングをある程度勉強しつつ経験者の話を聞いてイメージを多少つかんだ後は、環境に飛び込んでしまうのが一番だと思っています。
新卒向けの研修や、中途採用でもメンター制度など、他のメンバーがサポートしてくれる体制があり、そのサポートを生かして徐々に学んでいけることが多いからです。
私自身、経験の少ない分野への部署異動面接を受けたことがありますが、純粋なプログラミング経験値やシステムに対する現状の理解というよりも、未知のシステムや技術について短時間で理解を深めていく能力を評価された経験があります。
「未経験者」「経験者」の区別を気にしすぎて動けなくなってしまうのは、もったいないと感じます。「壁を乗り越えるゲームを楽しめる」なら、Webエンジニアはとても楽しい仕事です。
現役Webエンジニアですが、日々壁にぶつかっています。
・一歩引いた姿勢で、問題を分解して、冷静に整理すること
・経験豊富なエンジニアから解決のアプローチ、考え方を学ぶこと(直接聞いたり盗んだり)
を心がけて、「未経験」を「経験」に変えていくゲームをプレイ中です。
自戒も込めて。 https://t.co/CvKDyHXsNh
— 三年坊主🐤投資エンジニア👩💻 (@SannenBouzu) August 30, 2018
DODAなどの転職サイトでは、キャリアアドバイザーとの面談を無料で申し込めます。もちろん登録自体も無料で簡単にできるので、自分のこれまでの経験を棚卸ししながらWebエンジニアになる第一歩を踏み出してみましょう。
Webエンジニアとして、今日も「未経験」を「経験」に変えている三年坊主がお伝えしました!