Webエンジニアの仕事内容。現役エンジニアが解説。エンジニアの一日。開発の流れなど
Webエンジニアというのは一日中PCに向かって、何かを打ち込む仕事に見えますよね?
特に否定する訳ではないのですが、実際のところどんなことをしているのかって気になりますよね。新卒の方はもちろんのことSIerで働かれている方とは幾分働き方が違うので、そちらについて説明していきます。
Webエンジニアとは?
まずWebエンジニアとは、Webアプリケーションを開発する人のことをさします。
ここはイメージ通りだと思いますが、アプリケーションの開発とはプログラムを打ち込んでいくだけではなく、
- 「何を作るか」「何を作らないか」を決める要件の策定
- 「どう作るか」の設計
- 実際に作る実装(プログラミング)
- 「思い通り動くか」確認するテスト
というWebアプリケーションの開発に必要な工程を進めていくことが仕事になります。
この一連の流れがエンジニアの仕事になります。
SIerなどですと開発の手法の違いやシステム規模などの要因から設計しかやらないエンジニア、テストしかやらないエンジニアなど工程によって担当が別れていたりするのですが、Webエンジニアですと基本全部やります。
Webエンジニアですとシステムのリリースや機能のリリース、リリース後の保守まで責任を持って担当できるのでシステムにも愛着が出てきたりして僕は好きです。 (逆に、リリース後の保守は自分がカバーできなかった部分がそのまま跳ね返ってくるのでそういう辛さもありますが)
エンジニアになるメリットはこちらにまとめていますので、興味あればどうぞ
Webアプリケーションとは?
Webアプリケーションという言葉は抽象的でいまいちピンとこないというのがあると思うのですが、Google ChromやSafariなどのブラウザで見れて、なんらかの処理を返してくれるサイトは全てWebアプリケーションです。
なんらかの処理というと、例えばFacebookはWebアプリケーションですが、みなさんがFacebookのページに訪れた際に、自分の友達のポストが自分のタイムラインに流れてきます。
この友達のポストをタイムラインに表示するというのが一つの処理になり、アプリケーションの機能になります。
それを考えると、Facebookも,Twiiterも価格.comもこのサイトも広い意味ではWebアプリケーションです。みなさんがみているブログもWebアプリケーションの一つですね。
特に、ブログなどは初心者の方が作ってみると意外と大変で、データベースからデータをとっってきて表示するというWebアプリケーションの基本の流れを実装することになるので勉強になると思います。
エンジニアの開発の工程の話
エンジニアの開発の工程の話なので先ほどの工程のリストを再度掲載しますが、
- 「何を作るか」「何を作らないか」を決める要件の策定
- 「どう作るか」の設計
- 実際に作る実装(プログラミング)
- 「思い通り動くか」確認するテスト
この一通りのプロセスを着実にこなすことがエンジニアリングを行う上でかなり大切です。
独学でプログラミングを進めてから、会社に入るとこのプロセスを自分がいかにおろそかにしていたかを感じられます。
特に個人でやる場合、3のプログラミングでお腹いっぱいになってしまってテストしていないということが往々にしてあります。
初心者のうちはプログラミングをするのに精一杯でしかたないこともあるかとは思うのですが、いずれはしっかりテストできるようになるというのは念頭に起きつつ学習して頂ければと思います。
余裕があればテストコードの書き方も勉強して、品質の担保の仕方も勉強していくと良いと思います。 (これは、さすがに個人では辛いかも。経験者に聞きながら進めたいですね。)
エンジニアの一日
これはどの企業の人も一概には言えないと思うのですがどうなんでしょうか?無理やりわかり安くしようとして実態からかけ離れているような気もしますがどうなんでしょうか。
回答としては、エンジニアの一日は日によりますというのが一番近い答えになりますが、 先ほどの開発工程に即して考えてみるとよりイメージを持ちやすくなると思います。
Web系の企業ですとだいたい、1週間から2週間くらいかけて機能の開発を行います。
これを流れで表すと
要件定義
1.マネージャやディレクターからざっくりとした機能開発の依頼
2.仕様書を読み込みながら、疑問点や抜けのある部分を依頼者と相談して合意
設計
3.実際にどういうテーブル構成で作るかやプログラムの変更方針を決める
実装
4.実装する
テスト
5.テストコード書く
6.同僚にコードレビューしてもらう
7.依頼者に見てもらう
リリース
8.OKだったらリリース
となります。
ここで先ほどの質問に戻ると、Webエンジニアの仕事流れがだいたいこうなので自分が今どこのフェースにいるのかによってその日の過ごし方が違います。
仕事の流れの中でまだ設計ができていなければ、一日中設計しているし、実装できていなければ、実装するし、テストができていなければテストするしという感じです。
順番づつ上記の工程をこなしていくとこが理想ですが、実際のところは実装中に疑問点が出たら都度聞くというような感じで進めています。 (聞かないで後から違ったことに気づいてやり直しが一番辛いので・・)
このようにエンジニアの一日は、開発工程によって過ごし方が違うので日によって一日中設計をしていたり、プログラムを書いていたり、半分ずつやっていたりというような形になります。
まとめ
Webエンジニアの方々はだいたいこういう形で1週間のタスクが終わったらまた、次のタスクというようにぐるぐるタスクを回して行って、合間バグなどが発覚したらそれらに割り込みで対応していくという生活をしています。
会社によっては、要件を決める人がいないので自分で自ら社内を動き回りながら要件を決めて実際に開発も行うという人もいるかとは思いますが、これはなかなか辛いです。。
ここまででなんとなくWebエンジニアの仕事内容についてイメージできましたでしょうか?
ここで、あげた開発の例はあくまでも例ですが、経験が浅いうちは極力この例に沿った形で働ける会社に就職されることをオススメします。
会社によってはシステムに関するところはなんでもエンジニア任せみたいになり、何でも屋さんになってしまうケースも少なくないので、ある程度環境の整った会社で働けると自分の希望の分野での技術力もつきやすいのかなと思います。