SES現場の実情

【40代】SESで考えることをやめたエンジニアの実情 | PART-ⅠI

前回の記事では、40代SESエンジニアが現場で止まる理由は、年齢や最新技術不足ではなく、Shell、Linux運用、設計読解、ログ切り分けの弱さにあると整理しました。今回はその続きです。

現場で詰まらない人が最低限持っている土台と、今の自分が危険な状態かを見分ける基準を、実務に直結する形で整理します。読み終えたときに、自分が次に埋めるべき穴が見えるように進めます。

現場で詰まらないために最低限必要な土台

現場で止まる人と、短時間で状況を整理できる人の差は、知識量より順番です。サービスが動いているのか、どこまで通信できているのか、Shellのどこを見れば流れが掴めるのか、設計書のどの項目を作業へ落とすのか。

この土台があるだけで、障害対応も設定変更も一気に進めやすくなります。ここでは、現場でそのまま使える最低限の見方だけに絞って整理します。

土台見えてくること止まりにくくなる理由
起動確認の順序そもそも動いているか無駄にログをさまよわない
疎通確認の観点どこまで届いているか疑う場所を絞れる
Shellの読み方処理の骨格修正箇所を外しにくい
設計書の見方誰がどこを触るか会議だけで終わらない

サービス起動確認とログ確認の順序

画面が出ない、処理が流れない、ジョブが止まった。このときに最初からログへ飛ぶ人は多いです。ですが、その順番だと迷いやすいです。先に切るべきなのは、そのサービスが今動いているのか、それとももう落ちているのかです。ここが曖昧なままログを開くと、原因ではなく結果だけを追いかけることになります。

とりあえずログを見ます

先に起動状態を切るべきです

動いていないもののログを眺め続けても、前には進みません。まず生死を確定させる。この順番があるだけで、初動はかなり変わります。

systemctl is-active sample-app.service

【出力例:】

active

ここで active なら、次に見るべきは直近の異常です。inactive や failed なら、起動失敗前後のログへ入る理由がはっきりします。

journalctl -u sample-app.service -n 20 --no-pager

【出力例:】

Apr 04 09:12:01 app01 systemd[1]: Started sample-app.service.
Apr 04 09:12:03 app01 sample-app[2145]: Application started successfully.

現場で強い人は、ログを長く読む人ではありません。起動状態を切ってから、必要な範囲だけログを見る人です。

疎通確認と設定確認の基本観点

疎通確認で本当に大事なのは、つながるかどうかだけではありません。どこまでは届いていて、どこから先で止まっているのかを切ることです。ここを飛ばして設定ファイルを見直し始めると、ただの当て勘になります。

画面が出ないので設定を全部見直します

その前に止まっている場所を絞ります

まず待受があるかを見る。次にその入口へ届くかを見る。そこまでできてから、設定を見る。

この順番が崩れると、確認した気になるだけで何も切れていません。

ss -ltnp | grep ':8080 '

【出力例:】

LISTEN 0 100 :::8080 ::: users:(("java",pid=2145,fd=58))

待受があるなら、次は実際の到達です。

curl -I http://127.0.0.1:8080/app/

【出力例:】

HTTP/1.1 200 Content-Type: text/html;charset=UTF-8

ここまで返るなら、アプリの入口までは届いています。そこで初めて、中継設定や公開経路を疑う意味が出ます。

grep -n 'ProxyPass /app' /etc/httpd/conf.d/sample-proxy.conf

【出力例:】

18:ProxyPass /app http://127.0.0.1:8080/app

現場で必要なのは、設定をたくさん見ることではありません。

どこで止まっているかを先に切ってから、見るべき設定だけを見ることです。

Shellを読むときに最初に見るべきポイント

変数部、関数部、事前処理、主処理、事後処理。

この並びを意識してShellを書けるのは、プログラマとしての経験がある人に多いです。

ところが現場にあるShellは、最初からそんなに親切には書かれていません。

我流で継ぎ足され、途中で変数が出てきて、後ろで関数が定義され、条件分岐もあちこちに散っている。

実際は、そういうShellのほうが多いです。

このShell、長いし汚いし、どこから見ればいいのか全然わかりません
それが普通です。最初から全部読もうとすると負けます

こういうShellを読むときに最初にやるべきことは、精読ではありません。まずは地図作りです。

関数はどこにあるのか。条件分岐はどこにあるのか。外部スクリプトを読み込んでいるのか。まずはこの骨だけを拾います。

きれいに章立てされていなくても構いません。自分で骨格を起こせば、長いShellもようやく読める対象になります。

grep -nE '^[a-zA-Z_][a-zA-Z0-9_]*\(\)|^case |^if |^for |^[[:space:]]*(source|\.) ' sample.sh

【出力例:】

12:checkEnv() 28:backupFile() 49:if [ -f "$target_file" ]; then 77:case "$mode" in 103:. ./common.sh 140:main()

この出力で最初に見ているのは、実行順そのものではありません。Shellの中にどんな部品が置かれているかという骨格候補です。

shellの骨格

12行目に checkEnv という関数
28行目に backupFile という関数
49行目に if の分岐
77行目に case の分岐
103行目に外部スクリプトの読み込み
140行目に main

まずはそこまで分かれば十分です。

つまり、この段階では全文を理解するのではなく、このShellの中に関数、分岐、外部依存がどこに散っているかを荒く掴んでいます。

ここで誤解してはいけないのは、この出力だけでは実行順までは分からないことです。

main が本当に最後に呼ばれているのか、checkEnv がどこから使われているのか、そこまではまだ見えていません。

だから最初の一歩として、全文を読む前に部品の配置を把握する。

そのあとで入口になっている関数や、そこから呼ばれる処理を追う。この順番にしないと、長いShellは読んだつもりで終わります。

変数部とか主処理とか、そんなきれいな書き方になっていません
だから読む前に、自分でその区切りを探すのです

現場で必要なのは、整ったShellだけを読める力ではありません。

散らかったShellの中から、どこで値が入り、どこで分岐し、どこで外部処理を呼び、どこで本処理が走っているのかを拾い上げる力です。

Shellを読むときに最初に見るべきポイントは1つです。文章として読むことではなく、処理の骨格を先に掴むことです。

設計書を読むときに外してはいけない項目

設計書を読んでいるのに作業が進まない人は、文章を理解できていないのではありません。実作業へ変換できていないのです。

どのノードで触るのか、どのファイルへ落ちるのか、再起動が要るのか、影響範囲はどこまでか。

ここが見えない設計書は、読めても使えません。

設計書は読みました。でも何を触ればいいのか残りません

読むだけでは足りません。作業単位まで砕く必要があります

見た目が整っていても、下の項目が抜けていると現場では止まります。

外してはいけない項目これが抜けると起きること
対象ノードどのサーバーで作業するか曖昧になる
反映ファイルどこへ設定を書くのか分からない
再起動要否反映確認が中途半端になる
影響範囲変更が怖いだけで進まない
一次切り分け担当障害時に責任が宙に浮く

設定の置き場所を確認するなら、設計書の文面と実ファイルがつながるかを見る必要があります。

grep -n 'port="8080"' /opt/sample-app/conf/server.xml

【出力例:】

88:<Connector port="8080" protocol="HTTP/1.1" />

この1行に設計書の内容が落ちるなら、その設計書は使えます。

逆に、読む人の頭の中で補完しないと成立しない設計書は、会議資料にはなっても実務資料にはなりません。

現場で詰まらない人は、設計書を読む人ではなく、設計書を作業へ変換できる人です。

今の自分が危険な状態かを見分ける基準

現場で苦しくなる人は、ある日いきなり壊れるわけではありません。

もっと前から、危ない兆候は出ています。

  • 会議では何とか乗り切れる。
  • 返事もできる。
  • ですが、実作業になると急に手が止まる。

その状態を放置したまま年数だけ重ねると、40代に入ってから一気に苦しくなります。

ここでは、自分がその危険な状態に入っていないかを見分ける基準を整理します。

指示された確認作業を自力で分解できるか

現場で飛んでくる指示は、きれいに整理されたものばかりではありません。

  • 画面が出ないので見てください。
  • ジョブが止まったので確認してください。

こういう雑な依頼は普通に来ます。ここで危険なのは、指示が曖昧だから動けませんで止まることです。

何を見ればいいのか、そこまで言ってもらわないと動けません

その時点でかなり危ないです

現場で必要なのは、依頼をそのまま受け取ることではありません。

自分の頭の中で、起動確認、疎通確認、設定確認、ログ確認、責務確認へ分解することです。

ここができる人は、指示が雑でも動けます。ここができない人は、相手の言葉が整っていないだけで止まります。

もっと言えば、分解できない人は、確認したあとも説明が弱いです。

何を見たのかは言えても、なぜその順番で見たのかが言えないからです。

40代で求められるのは、指示待ちの正確さではありません。曖昧な依頼を、自分で実務へ落とせることです。

障害時に最初の10分で動けるか

障害対応で差が出るのは、最初の10分です。この時間で軸を作れる人は、その後の調査も崩れにくいです。

逆に、ここで全部の画面を開いて全部のログを眺め始める人は、そのあと一時間たっても状況が整理できません。

とりあえず全部開いて見ています

その時点で情報に飲まれています

最初の10分で必要なのは、たくさん見ることではありません。

どのノードで、どのサービスで、どの時刻帯から切るか。この起点を決めることです。

今止まっているのは入口なのか、中継なのか、アプリ本体なのか。そこを決めずに動くと、確認しているようで何も積み上がりません。

危険な状態の人は、この最初の10分で確定情報がほとんど増えません。

画面はたくさん開いているのに、サービスが落ちているのか、通信が止まっているのか、設定がずれているのかが切れていない。

これは知識不足というより、初動の型を持っていない状態です。

自分の説明がコマンド暗記で止まっていないか

一番見落としやすいのがここです。

自分では説明しているつもりでも、中身がコマンドの列挙だけで終わっている人は多いです。

これを確認しました。あれも見ました。ログも開きました。ここまで言えても、現場では弱いです。

一通り確認しました

その言葉だけでは何も伝わっていません

本当に必要なのは、確認した事実から何が消えたのかを言えることです。

起動していた。待受もあった。そこまで届いていた。だから次は中継設定を疑う。この形まで話せて初めて、切り分けとして成立します。

危険な状態の人は、確認した内容は話せても、原因候補をどう絞ったかを説明できません。

つまり、コマンドを知っているだけで、確認の意味がつながっていないのです。

40代のエンジニアに求められるのは、コマンドをたくさん覚えることではありません。確認結果を、判断として言葉にできることです。

ここまで読んで、自分に当てはまるものが一つでも強くあるなら、見直すべきなのは年齢ではありません。土台です。

  • 指示を分解できるか。
  • 最初の10分で軸を作れるか。
  • 確認結果を判断として説明できるか。

この3つが弱いまま現場に出続けると、ある日急に止まるのではなく、ずっと止まり続ける人になります。

SESはキャリア形成にはならない

今回あらためてSESの現場に参画して強く感じたのは、SESは働いた年数や案件数が、そのままキャリア形成につながる世界ではないということです。

現場に出れば経験は増えます。ですが、その経験が自分の市場価値として積み上がるかというと、話は別です。

むしろ、案件ごとの都合に合わせて動くことばかりが増え、自分の軸として残るものが薄くなっていく。

今回の現場は、その現実をかなりはっきり見せてくれました。

増えるのは案件歴であって市場価値ではない

SESにいると、経歴上は確かに案件歴が増えていきます。

何年この業界にいた、どんな案件に入った、どんな現場を経験した。表面上はそれらしく見えます。

ですが、今回の現場で見えたのは、その案件歴がそのまま市場価値にはなっていない人がかなり多いということでした。

なぜそうなるのか。理由は単純です。その案件の中で求められた役割をこなしただけで終わっているからです。

自分の武器として外へ持ち出せる力になっていない。

現場が変われば通用しなくなる運用手順や、そこでしか使わないルールに慣れているだけで、構造理解や切り分け能力として残っていないのです。

今回の現場でも、長く業界にいる人は多くいました。ですが、長くいることと、強いことはまったく別でした。

案件歴は増えている。ところが、問題が起きたときに何を起点に見るか、自分で状況を分解できるかとなると、急に止まる。

これでは、案件歴は増えても市場価値は増えていません。

評価されるのは技術力より現場適応力になりやすい

SESで厄介なのは、技術的に強い人がそのまま評価されるとは限らないことです。

今回の現場でも、評価されやすかったのは、技術を深く理解している人より、場を荒らさず、空気を読み、何となく会議を回しているように見える人でした。

つまり、見られているのは技術力より現場適応力です。

その場に馴染めるか、波風を立てないか、言われたことをそれらしく受け止められるか。

こうした要素の比重が高くなると、本当に必要な技術的整理や責任分界の切り分けより、無難に振る舞うことのほうが得になります。

これでは、キャリア形成とは言えません。

本来、キャリアとは、自分の価値が積み上がっていくことです。ですがSESの現場では、技術を深めるより、その場に適応する力ばかりが鍛えられやすい。

今回あらためて見えたのは、そこでした。現場に長くいればいるほど、技術者として強くなるのではなく、その現場で摩擦を起こさず生き残る技術ばかりが磨かれていく。この構造はかなり重いです。

技術は積み上がらず、案件依存の経験だけが残る

今回の現場で特に強く感じたのは、積み上がっているように見える経験の多くが、案件依存の経験だということです。

つまり、その現場では通用するが、外へ出した瞬間に価値が薄くなる経験です。

たとえば、その現場特有の会議の回し方、その案件だけの責任分界、そこでしか通用しない運用ルール。

こうしたものに慣れることはできます。ですが、それは技術の習得とは違います。

むしろ、その現場の文脈に自分を合わせ続けることによって、普遍的な技術理解や構造的な思考が後回しになりやすいのです。

結果として残るのは、技術力ではなく、この案件ではこうだったという断片的な記憶です。

だから現場が変わるたびに、また最初からやり直しになる。これでは、年数のわりに土台が弱い人が増えるのも当然です。

今回SESに参画して一番重く感じたのはここです。

SESは現場経験を積んでいるように見えて、実際には技術を積み上げる構造になっていない。

残りやすいのは案件歴であり、場に合わせた振る舞いであり、その場限りの経験です。

だから、長く続けるほどキャリアが形成されるのではなく、むしろ自分の価値が何なのか分かりにくくなっていきます。

これが、SESはキャリア形成にはならないと感じた理由です。

本当に積み上がるのは誰のキャリアか

SESの現場に入って痛感したのは、働いている本人のキャリアより、間に入っている会社の都合や実績のほうが積み上がりやすいことです。

現場で問題を解き、火を消し、責任の曖昧な仕事まで引き受けているのは自分です。

ところが、その価値がそのまま自分の市場価値や報酬へ返ってくるわけではありません。

むしろ、構造としては、現場で稼いでいる人間より、その人を流している側のほうが得をしやすい。

今回あらためて見えたのは、この歪みでした。

現場で稼いでいるのは自分でも、単価を握るのはエージェント

現場で実際に価値を出しているのは、作業している本人です。

問題が起きたときに呼ばれるのも、会議で説明を求められるのも、最後に何とかしろと押し込まれるのも、現場にいる人間です。

ですが、その本人が自分の単価を決めているわけではありません。案件を握り、条件を握り、金額を握っているのはエージェント側です。

ここに違和感を持たないまま続けると、おかしな感覚が当たり前になります。

自分が現場で稼いでいるのに、単価交渉は別の誰かがやる。自分が責任を負っているのに、条件を決めるのは別の誰か。

つまり、価値を出している人間と、価値を管理している人間が分かれているのです。

これでは、自分の仕事が自分のキャリアとして積み上がりにくくなります。

ピンハネ構造に慣れるほど違和感が消えていく

最初は、多くの人がどこかで違和感を持ちます。なぜ自分が現場で働いているのに、間に入る会社が大きく取るのか。

なぜ自分の評価や条件が、現場ではなく営業やエージェントの都合で決まるのか。

ですが、SESの中に長くいると、その違和感そのものが薄れていきます。

怖いのはここです。構造がおかしいのに、その中で長く生きていると、おかしいことをおかしいと感じなくなります。

案件をもらうには仕方ない。中間が取るのは当然。自分は現場に出るだけ。こうやって納得したつもりになっていく。

ですが、それは納得ではありません。麻痺です。違和感が消えたのではなく、違和感を感じる感覚が鈍っているだけです。

自分の価値を自分で回収できないまま年齢だけが上がる

この構造の中に長くいると、年齢だけは上がっていきます。案件歴も増えます。現場経験も積んだように見えます。

ですが、その経験が自分の価値として回収できているかというと、話は別です。

単価を自分で決められない。仕事の選択権も弱い。何を積み上げたのかを自分の言葉で切り出しにくい。

これでは、年数のわりに自分のキャリアを自分で握れていません。

本当に厳しいのはここからです。

年齢が上がるほど、現場では経験者として扱われます。

ですが、自分の価値を自分で回収する力が育っていないと、その期待に見合う形で外へ出せるものがありません。

案件歴はある。けれど武器にならない。働いてきた。けれど主導権はない。

そうなると、長く続けたはずなのに、自分のキャリアが他人の手の中にある感覚だけが残ります。

今回SESに入って強く感じたのは、ここでした。本当に積み上がっているのは、自分のキャリアではなく、間に入っている側の実績や都合ではないのか。

この問いを持てなくなった時点で、構造に飲まれています。

だから重要なのは、どれだけ長く続けたかではありません。自分が生み出した価値を、自分のキャリアとして回収できているかどうかです。

新SESを名乗っても、搾取構造そのものは変わっていない

最近は、新SESや次世代SESのような看板を掲げる会社も増えています。

ですが、中身まで変わっているとは限りません。結局のところ、そこに残っているのは、仕事をする側と、その差額を取る側という構造です。

名前を変え、見せ方を変え、耳ざわりの良い言葉を並べても、エンジニア本人に仕事の選択権がなく、単価の決定権もなく、現場で生み出した価値を自分で回収できないなら、それは従来のSESと本質的に同じです。

さらに厄介なのは、エージェントの担当者自身が技術を理解していないことです。

技術を理解していない以上、案件の中身も、責任分界も、現場で何が起きるかも正しく見えていません。

見えていないまま人を流すので、結局は、現場に入ってから話が違う、責務が曖昧、できる人にだけ負担が集中するという、いつものブラックな構造が繰り返されます。

これは担当者個人の問題というより、技術を理解しないまま人を動かす仕組みそのものの問題です。

本来、エンジニアが自分で案件を選び、自分で価値を判断し、自分で交渉できるなら、まだ話は違います。

ところが実際には、その入口をエージェントが握っています。つまり、エンジニア自身に選択権がない。

ここが変わらない限り、SESはどれだけ新しい言葉で飾っても進化しません。

形だけ新しく見せても、主導権が本人にない以上、構造は何も変わっていないのです。

ただし、SESにも一つだけ現実的な利点はあります。

独り立ちを目指すうえで、企業名を伴った案件実績を持てることです。

どれだけ技術を語っても、相手が最初に見るのは、どこで何をやってきたのかです。

その意味では、有名企業や大規模案件の名前を経歴に載せられること自体は、営業上の武器になります。

問題は、それを技術の蓄積と勘違いしてしまうことです。企業名は信用にはなっても、技術力そのものを保証してはくれません。

それくらいかな・・

まとめ

40代SESエンジニアが現場で詰まる理由は、年齢や最新技術不足ではありません。

現場で本当に差が出るのは、サービス起動確認、疎通確認、Shell読解、設計書の実作業化といった基礎運用力です。

さらに、自分が危険な状態かどうかは、曖昧な指示を分解できるか、障害時の最初の10分で動けるか、確認結果を判断として説明できるかで見えてきます。

現場で止まらない人は、特別な才能があるのではありません。基礎を順番で使えるだけです。

次のおすすめ記事

止まっている構造が見えてきたら、次は実際にどこで詰まっているのかを作業単位で捉える段階です。Shell・設計書・ログで手が止まる現場を、外からどう整理して立て直すのかを次で整理します。

当ブログでは、必要な場面に向けたお手伝いも始めています。

論点整理、仕様整理、責任分界の切り分けなど、実務で前に進めなくなった場面を対象にしています。
まずは、対応できる内容を下記ページにまとめています。

依頼・問い合わせは、下記のページからお願いします。

よく読まれている記事

1

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか? 無料で使えるだけでなく、高い柔軟 ...

2

Linux環境でよく目にする「Vim」という名前。サーバーにログインしたら突然Vimが開いてしまい、「どうやって入力するの?」「保存や終了ができない!」と困った経験をした人も多いのではないでしょうか。 ...

3

ネットワーク技術は現代のITインフラにおいて不可欠な要素となっています。しかし、ネットワークを深く理解するためには、その基本となる「プロトコル」と「レイヤ」の概念をしっかり把握することが重要です。 こ ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

5

Javaは世界中で広く使われているプログラミング言語であり、特に業務システムやWebアプリケーションの開発において欠かせない存在です。本記事では、初心者向けにJavaの基礎知識を網羅し、環境構築から基 ...

-SES現場の実情