2020-11-20

デスマーチの歩き方

努力不足でSESしか行けなかったというツイート話題になっていますね。

件の人に限らず、スクール卒業者が就職できないやら、採用したけど使えなかったとかという話をよく聞くので、そんな悲しいミスマッチを減らし、この業界を目指す人が希望と勝算をもってチャレンジできるようになることを願って思っていることを書いてみようと思いました。

簡単自己紹介

業界に入って十数年、メガベンチャーで働きGAFA関連企業から1X00万円のオファーを貰うくらいのスキル経験はある。もちろん開発のスペシャリストとして。

学生時代メンタルをやり10年程通院。

多浪してFラン大学に入り四年間通うが卒業できず中退

フリーペーパーで未経験歓迎SE求人をみて応募。

新宿雑居ビルオフィスのある中国人経営するSES会社からキャリアスタート最初会社雇用保険も払ってなかった。

紆余曲折あり現在に至る。

想定読者

新卒または第二新卒文系または数学が苦手、プログラミング経験者でスクールサロンに入ってプログラミングを身につけて働きたいと思ってるひと。

理系プログラミング得意な人は、学生ならインターン、働いてる人はなんでも良いかスクリプト業務改善すれば実務経験になり、そこからならどうとでもなるのでこの記事は参考にする必要なし。

プログラミングは誰にでも身につけられるか?

たこラクダ理論というものがあります。(https://ameblo.jp/bradnine/entry-11911830387.html)

要約すると、出来る人と出来ない人がいて、何が要因なのかわかっていないし、出来ない人への教え方も確立していないとのことです。

学び始めてすぐに判断を下す必要はないですが、スクールカリキュラムを終える頃には周りとの成長スピードの差で自然理解できるかと思います

しかし、もし適正がなかったとしても悲観するのはまだ早いです。

プラグラミングの適性がない人にもこの業界にはポジションがある。QA、PdM、PjMUIデザイナーUXデザイナーカスタマーサクセス営業採用、などなどいろいろあります

なにはともあれ3割くらいは可能性があって外れても選択肢があるんですからポジティブに受け止めましょう。

あなたは凡人か天才か?

エンジニア生産性の差は10倍や100倍にもなると言う話は聞いたこことがあるかと思います底辺天才を比べた極端な話だと思いますよね?実はこれありふれた話です。超有名ベンチャーで難しい採用試験を潜り抜けて即戦力採用された人たちの中でも100倍の差があることもあります。それも瞬間風速的な話ではなく、年間の変更コード行数を計測してそうなります10倍の差はもっとありふれた話です。

さてここまではプラス面だけの話ですが、マイナス面も考える必要があります

あなたが無事現場に入ってわからないことを教えてもらう必要があるとします。面倒見のいい先輩がなんでも聞いて良いよと言ってくれたので、質問をして、3時間先輩の時間を使ってしまいました。先輩は100倍エンジニアだったとすると、その3時間あなたの二ヶ月分の作業量が消し飛んだ計算になりますあなたはそれに見合った成長をして恩返しできますか?

ちなみにそれくらい能力差があっても給与はあまりかわりません。良くて倍くらい。同じ給与ってこともまぁよくある話で、多重下請の現場では逆転してることも珍しくはありません。

底辺生存戦略

そろそろ本題に近づいてきました。

ここまでの話を踏まえてどうするべきだと思いますか?

特別なことでも難しいことでもなく、いたってシンプルです。それは「足を引っ張らない」ことです。大抵の現場では初心者に毛が生えたような人にアウトプットを期待していません。ある程度の教育期間をとった後で普通の人の半分でもアウトプットを出してくれたら恩の字です。

あなた天才でなければ、まずは自分アウトプットを出すのは一旦諦めてください。先輩の時間を増やしましょう。例えば動作確認や他チームやステイクホルダーへの連絡、文書作成など、100倍エンジニアでも生産性が変わらない業務を肩代わりして先輩が開発にかけられる正味時間を増やしましょう。これが現段階では正しいチームワークです。100倍エンジニア時間を奪って質問するくらいなら、10倍の時間をかけて一人で調べた方が、10生産性が高くなります。聞くとしても調べた上での答え合わせと間違っていた時のヒントだけにしましょう。個人学習効率をだけみてもそっちのほうが効率いいです。理解できない人には独学大全がオススメです。

ろくに動作確認をしていない可読性の低いコードをプルリクに出して、レビュワーになった100倍エンジニア仕様確認したりローカル動作確認したり、あまつさえバグを見つけてしまうなど、最悪です。

初心者から間違えてもしょうがないというのは正論です。しかし、プロジェクト時間コスト考慮すれば逆の結論になりますあなたアウトプットが数倍早くなろうが遅くなろうがプロジェクトには影響がないのです。学習時間リスク考慮してそういうふうにタスクを組んでいます。数倍時間をかけて慎重にやって良く、マイナスを生まない事を考えれば、初心者こそ絶対バグを出してはいけないという結論になります。0は無理でもそういう気持ちでやりましょう。

ここまでは現場に入ってからの話でした。皆さんは現場に入る方法を知りたいと思いますが、もう少し辛抱してください。敵を知り己を知れば百戦危うからずの故事もあります。もう少し敵を知ってから戦術を立てましょう。

デスマーチ

デスマーチと呼ばれているものには2種類あります。一つは定義通りのデスマーチ (https://ja.m.wikipedia.org/wiki/デスマーチ )。もう一つはデスマーチ要件を満たさないが、関係者能力不足によってデスマーチ様相を呈しているもの。実は前者はとても希少で、世の中のきついプロジェクトというのはほとんど後者だと考えてください。

様々な点で両者は異なります

真のデスマーチほとんどの場合技術的な問題ではなく政治的問題で発生します。そのため予算は潤沢ではないが常識的にはあり、技術は枯れてリスクが少なく確かな効果確認されているもの採用されていることが多いです。工学的なアプローチ生産性を向上する仕組みなどが取り入れられていることもあります管理プロセス機能しておりコンプライアンス違反も少ない傾向があります政治的理由プロジェクトが延長されている都合で、PMプロジェクトを終わらせたいと思っていても、予算がある限り新しい要件が発生しつづけて終わらないという状況も発生しえますこちらのタイプに参加するメリットとしては、よく管理運営されたプロジェクト体験できる点、ドキュメントがしっかりしている点、低スキルの人が参加することを考慮して仕組み化されているのでキャッチアップにかかる時間が低いなどがあります

なんちゃってデスマーチ技術力や要件定義能力集団合意形成能力などの不足によって起こりますPMステイクホルダー赤字を垂れ流すプロジェクトを早く終わらせたいと思っているので多少納期が伸びても必ず終わりますプロジェクトを終わらせるための提案であれば下から意見でも柔軟に対応してくれることもあります。新しい技術と古い技術が混在していたり、新しい技術採用しているのに使いこなしていないこともありますCI/CD自動テストが無い又は不十分な現場も多いです。こちらのメリットとしてはスタンダートが低いのでキャッチアップ戦力になれるまでの時間が短かったり、小さな労力で大きな生産性改善ができ職務経歴書に書ける良いエピソードが作りやすいといったことが挙げられます

また両者には人の出入りが激しいという共通点があります。そのためドキュメントの有無にかかわらず新しい人が参加し、教育環境構築を行いタスクを振って実務を行うという、一連の受入業務現場担当者が慣れています。またこれは両者それぞれのところで触れましたが、理由はそれぞれ違いますキャッチアップして戦力になるまでの時間は小さいという共通点があります

デスマーチでは残業が多いと思われていますが、新人は戦力として期待していないので残業する必要はないです。マネージャーからすると、無駄残業代は払いたくないし事故って仕事を増やすリスクも嫌なので、1秒たりとも残業してほしくありません。早く帰ってリフレッシュするなり自習するなりしてプロジェクトリスクを減らしてください。

そのため、デスマーチに入って残業というのは底辺層にとってはほとんどの場合杞憂です。テスト要員としてでも残業を頼まれたら戦力に数えられている事を喜んでも良いと思います

翻って比較対照としてみなさんに人気のあるWeb企業を考えてみましょう。GoogleNetflixとまではいかなくても、ほとんどの会社ではそれらを模倣しています共通点としてはだいたい自走・自律できることが求められます。辞める人は少ないので比較的受け入れ体制は整っていないケースが多いです。企業によってスキルレベルピンキリですが、周りとのスキル差が大きくなるのでキャッチアップにかかる労力と時間は大きくなります開発プロセスは整えられているため、あなたが工夫して改善できる余地は少ないです。

ここであなた採用する立場になったと想像してください。「最新の技術スタックで言われた作業をやっていました。ついていくのがやっとで自分で工夫した点は特にないです。勉強はがんばりました」という人と、「技術スタックが古かったのですがXXを導入してXXをXX程改善できました」という人がいたとして、どちらが戦力になりそうでしょう?どちらを採用したいですか?

まとめ

ここまで書いたことを理解して謙虚面接を受ければそう悪い結果にはならないと思います

残業は大したリスクではありません。

現場技術レベルが高い現場を望んでもメリットは無いので、少しでも自分が成果を出しやす環境を探しましょう。

面接ではチームのアウトプットを高めるために最大限努力するという姿勢を見せましょう。

  • GAFAの関連企業ってなんだよ

    • リアクションありがとうございます!特定機能を受け持つ子会社の現地法人でストックオプションとかは本体と同じようにもらえたりするところでした。

  • 先輩の手を止めるなは比較優位の話だね。 確かに検証を丸投げするな!が上位エンジニアとして見たときに思うことかな。 そうは言っても新卒の社員にはわからないと思うので、 やっ...

    • 僕も五十六大好きです!後半の節も良いですよね。 僕は中途のオンボーディングはしてるんですが完全な新人は採用してないので会う機会ないんですよ。 「俺か orz」の経験確かに大事...

  • 自罰的すぎてNG 先輩エンジニアが時間と手間をかけて親切に教えなければいけないし、それを引け目に感じるべきではない クソなコミットクソなプルリクをガンガン出していい。教えら...

    • コメントありがとうございます。タイトルは失敗したなと後から思いました。僕がクソとくのは特に否定するつもりはありませんが、新人ができるようになるまで手取り足取り教えない...

      • これについてはどっちもあるなぁと思った。 企業はあくまで営利団体であって新人教育を行う機関ではないけれど、自分のそしてチームのアウトプットを増やすには人を育てないといけ...

        • コメントありがとうございます!ご指摘はおっしゃる通りで極端な例でしたね。 例のケースでは前提としてブリリアントジャークじゃなくて、他の同僚とはうまくやってるという状況を...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん