こんにちは。Web系エンジニアのカズです。7年前に未経験からプログラミング学習を始めて転職し、現在は単価80万円~90万円の案件を受注して活動しているエンジニアです。
本記事の内容
・SES(客先常駐)の働き方とは?
・SES(客先常駐)のメリット
・SES(客先常駐)のデメリット
・SES(客先常駐)の具体的なタスクの進め方(Webプログラマー向け)
・SES(客先常駐)のプログラミング技術以外に重要なスキル4選
・SES(客先常駐)はスキルアップできるのか。
SES(客先常駐)の働き方とは?
エンジニアには客先常駐という働き方があります。
簡単に言えば、「所属会社から派遣されて、別企業で働く」勤務形態です。
派遣といっても「派遣社員」ではなく、あくまで「正社員」として扱われます。
また、派遣といっても最近はリモート勤務の現場が多いです。
実はIT業界では、この客先常駐で働くエンジニアが多くの割合を占めています。
SES(客先常駐)のメリット
・色々な企業で働けるため、様々な経験ができる
・未経験でも入社しやすい
・出会いが多い
・残業が少ない(月の勤務時間上限が決まっている)
色々な企業で働けるため、様々な経験ができる
様々な経験ができる点はメリットでありデメリットでもあります。
その常駐先の企業の「良し悪し」によって積める経験が変わってくるからです。
ただし、自分が需要のあるスキルを持っていれば、そのスキルを活かせる企業に常駐できます。
そのため、スキルさえあれば良い経験を多く積んで、更なるスキルアップができるでしょう。
未経験でも入社しやすい
未経験でも入社しやすいことは、かなりのメリットです。
最近では未経験からエンジニアになる需要も高まり、入社が難しくなっているためです。
しかし、スキルがない状態で客先常駐させられる企業に入社してしまうと、良い経験が積めない可能性が高くなります。
いわゆるテスターや資料作成のような業務が多くなり、スキルアップにつながらないためエンジニアとして成長できなくなってしまいます。

未経験から転職するとしても、ある程度のスキルが必要ですね。
出会いが多い
上手く関係を築くことができれば人脈が広がる可能性があります。
キャリアアップにもつなげられますし、フリーランスエンジニアになる際に仕事をもらいやすくなるかもしれません。
残業が少ない
客先常駐の契約をする際に、月の勤務時間の下限と上限が決めて契約をします。
多くの現場は140~180時間、150~190時間などの勤務時間が一般的です。
仕事が完了していれば残業をする必要はないですし、仕事がある場合でも稼働時間の上限を超えてはいけない契約のため、残業は比較的少なく働くことができます。
SES(客先常駐型)のデメリット
・常駐先の詳細な働き方は、働いてみないと分からない
・年齢とともに仕事が制限される可能性
・自社の人と関りが薄くなる
常駐先の詳細な働き方は、働いてみないと分からない
どの企業でも言えることですが、実際に働いてみないと分からないことはあります。
働いてみないと分からないこと
・現場のタスク量
・現場のスピード感
特にタスクの振られ方は、一番気になるところではないでしょうか。
タスクの工数を見積もって適切な量の仕事を振られるのか、なりふり構わず無茶な要求をされるのかは現場によるでしょう。
反対に、客先常駐する契約をするときに事前に知らされる情報もあります。
事前に分かっている情報は主に下記です。
事前に分かっている情報例
・勤務形態(出社、テレワーク)
・プロジェクト概要
年齢とともに仕事が制限される可能性
スキルがないまま年齢を重ねてしまった場合、仕事が制限されてしまうリスクがあります。
スキルがなくても若ければ、「実務経験を積ませて育てる」という意図で採用してくれる企業も多いです。
しかし年齢が上がってしまうと、仕事が制限されてしまう可能性があります。
逆に言えば年齢が上がってもスキルがあり、エンジニアとして豊富な経験があれば重宝されることが多いでしょう。
スキルアップをしながら、経験を積むことが大切です。
自社の人と関りが薄くなる
客先で仕事をしていると、どうしても自社の人との関りが薄くなってしまいます。
客先で仕事をしていて困っていることなど相談ができる状態が望ましいです。
「客先を変更したい」「どうキャリアアップするか悩んでいる」など自社と相談したいことは複数出てくるでしょう。
自主的に「自社に顔を出す」などの取り組みが必要です。
SES(客先常駐)の具体的なタスクの進め方の参考例
現場によってやり方は異なるのですが、下記のような流れが多いと思います。
下記はプログラマーとして客先常駐したときの参考例となります。
1 プロジェクト管理ツールで各担当タスクを割り当てられる
2 タスクの納期を確認する
3 タスクの仕様を確認する
4 実装(プログラムを書くこと)
5 テスト
6 レビュー(添削)
7 納品
1 プロジェクト管理ツールで各担当タスクを割り当てられる
プロジェクト管理ツールとは、チケットにタスクの概要、担当者、期限を記載して進捗管理ができるツールのことです。具体的によく使われるツールがこちら
・Redmine
・Backlog
・Jira
各タスクにはそれぞれ工数見積もりがされている、または自分で見積もる形になります。
工数見積もりが、おおよそあっていれば無理なスケジュール感で作業をすることがなくなるわけです。
私の経験上、タスク管理ツールを使用せずタスクを割り振る現場は無茶ぶりが多くなります。
2 タスクの納期を確認する
基本的にはタスク管理ツールに記載があるはずですが、書いていないときもあります。
納期が曖昧なこともあるので事前に確認が必要です。
3 タスクの仕様を確認する
基本的にはタスク管理ツールに記載がありますが、細かい仕様の部分が書いていないときがあります。
クライアントやタスクを振ったSEやプロジェクトマネージャーも細かい仕様について把握していないこともあるので、仕様を明らかにしないといけない点については報告して確認しましょう。
仕様が曖昧だと実装(プログラムを書くこと)の作業に影響を与えてしまいます。
4 実装(プログラムを書くこと)
仕様が決まったら、いよいよ実装です。どのようにプログラムを組むのか想定して実装をします。
「どのようにプログラムを組むのか」が決まれば、あとはそんなに時間はかかりません。
もちろん内容によりますが、実際にプログラムを書く時間は実はそんなに多くないのです。
それより仕様の確認、「どうプログラムを組むか」の見積もりが重要ということですね。
5 テスト
テストはテストコードを書いてテストを自動化させる方法と、手動で画面動作を確認する2種類のテスト方法があります。
最近はテストコードを書くニーズも増えてきました。余裕があれば学習しておくと良いでしょう。
6 レビュー(添削)
自分が書いたプログラミングコードを添削してもらいます。
指摘があれば修正し、問題なければ納品する工程に移ります。
7 納品
基本的にはバージョン管理ツールを使って、本番環境に反映して納品完了です。
バージョン管理ツールとは主に「Git」のことです。
プログラミング以外に重要なスキル4選
スキルとは言語や技術的な部分にフォーカスされがちですが、それ以外に大事なスキルがあります。
エンジニア歴7年の経験から、私がプログラミング技術以外に重要だと思うスキル挙げてみます。
良ければ、参考にしてください。
プログラミング技術以外に重要なスキル4選
・工数見積もり
・複雑な仕様の理解力
・提案力
・上流工程の理解(バックエンドエンジニア)
私もまだまだ成長途中の未熟なエンジニアですが、技術的スキルに加えてこの4つが大事だと思っています。
工数見積もり
工数見積もりとは、タスクに対して何時間作業すれば完了できるかの見積もりを算出することです。
見積もりを算出しクライアントに見積もりを提出して、最終的にはタスクの納期が決定することが多いでしょう。
クライアントと納期を直接やり取りするのはSE(システムエンジニア)やディレクターの場合が多いです。
プログラマーは工数を算出して、SE(システムエンジニア)やディレクターに見積もりを報告する必要がある場合があります。
誤った見積もりを報告してしまうと、「予想外にタスクが終わらない」「意外と時間かかるタスクだった」「納期に間に合わない」という状況に陥ってしまいます。
工数見積もりを誤ってしまうと、精神的にも辛い状況になりやすいので工数見積もりはしっかり算出できるようにしましょう。
工数見積もりをするためには、何が必要なのか。
工数見積もりをするためのステップを下記にまとめました。
工数見積もりをするための3ステップ
ステップ1 : 仕様の精査をする
ステップ2 : タスクの細分化をして、実装想定を明確にする
ステップ3 : 実装、テスト、リリース作業にかかる時間を算出する
ステップ1の仕様を精査する点は、仕様が曖昧な状況でタスクを割り振られる可能性があります。
仕様は最初のうちに全て明確にすることが望ましいです。
仕様が曖昧なまま実装工程に入ってしまうと、後から別の仕様を盛り込まれた時に実装をやり直さなければいけない事態が発生するからです。
仕様が曖昧な点についてリーダーやSEまたはクライアントに確認をして、お互いに仕様の認識が一致した状態にしましょう。
複雑な仕様の理解力
システムが長年運用されていれば、規模はどんどん大きくなり仕様は複雑になりがちです。
単純にプログラムの読み書きが出来るだけではなく仕様の理解力が重要になってきます。
仕様の理解力については慣れが必要です。
多くの案件を経験して培っていくことで複数な仕様の理解力を高めていくことが出来るでしょう。
提案力
要求されたことだけを対応するエンジニアでは、良い関係は築けないことがあります。
「この機能を導入するには、このツールを使うとよい」「設計はこうした方が汎用性があり工数削減できる」など例を挙げればいくつもありますが、要件定義の部分から提案ができるエンジニアが好まれるのではないでしょうか。
普段から「プラスα何か良い提案ができないか」と思考を巡らせることが大切です。
上流工程の理解(バックエンドエンジニア)
プログラマーの業務は一般的に下流工程に分類されますが、バックエンドエンジニアの場合は上流工程の理解があると尚良いでしょう。
上流工程とは要件定義や詳細設計、顧客折衝などが含まれます。
バックエンドエンジニアであれば、要件定義や詳細設計の業務が含まれることがあります。
仕様を決定する際に、システム的にどのように設計するのが望ましいのかはバックエンドエンジニアがシステムの構造を理解していることが重要です。
上流工程の理解力向上のための、おすすめの本を紹介するので良ければ参考にしてください。
SES(客先常駐)で初出向の時に気をつけること
SES(客先常駐)の初日は、緊張したり何をやれば良いかイメージできない方もいるのではないでしょうか。
初めて現場勤務する方は、こちらの記事を良ければ参考にしてください。
コメント