はじめに
これからエンジニアになって、開発をやるぞーという方も多いと思います。
そこでこんな疑問が出てくるのではないでしょうか。
現場に出たらそもそも何をするの?ってずっと思ってました。
そのような方が開発現場に入ったらまず何をするのか、
どう考えて行動すべきかがわかるような記事を書こうと思いました。
自分が参画した現場で共通しているものがあったので、それを書いていきます。
あとエンジニアになってどうキャリアアップすればいいのかみたいなヒントも書いていきます。もうすでに5つの現場に入ったことあるので、説得力があるかと思います笑
そして東大生のインターンに開発指導の経験あります。💪
想定
- Web系の開発現場
- エンジニア1,2年目のジュニアエンジニア
Web系の開発現場に入ったことを想定していきます。
ちなみに書いている自分はエンジニアの2年生から3年生になる頃です。
前提(エンジニアはチームプレイ)
前提としてエンジニアはチームプレイです。
個人プレイではないです。ここを頭に入れましょう‼︎
逆に個人プレイばかりを見る現場は微妙かもです。💦
前提(報連相はできて当たり前)
これができないとどれだけ実力があってもレッドカード退場です。🔥
オリエンテーション
まずはオリエンテーションが入ります。
自分のPCを使う場合はSlackと連携したり、Teamsで連携したりします。
自分がいた現場はほぼSlackでした。
PCを貸与してもらう場合もあるので、PCの設定などを行なっていきます。
ここで注意して欲しいのが、
現場によって環境やバージョン、ルール、ツールが会社ごとに違います。
スクールや前の現場と環境が違うということは当たり前なので、
スクールで現場の環境を全部揃えるのは不可能です。
環境構築
まずは環境構築です。基本ドキュメントなどオンボーディング資料があるはずです。
ないなら1on1でやるかもしれないです。
もしオンボーディング資料を後から入ってくる人のために提案して作成するといいと思います。GitHubの案内が来て、Dockerを起動して、動作チェックをしてみたいなのは、どこの現場も同じです。GitHubではなく、GitLabやRedmineを使っている現場もあります。Dockerない現場もあると聞いたことはあります。
環境構築は詰まることがあるので質問することになると思います。
質問の仕方
その際、質問のやり方は気をつけてください。
「何が言いたいかわからん」って言われたら警報が鳴ったと思ってください。
以下の記事を参考にしてください。
これできないと現場でヤバい❗️開発エンジニアの質問の正しいやり方
現場のミッションを確認しよう
今のプロダクトは何をするために作っているのかを確認しましょう。
(新規事業拡大なのか、ユーザーの満足度を上げたいのか)
新規開発フェーズ、既存システム改修、受託開発かによってミッションは
変わってくるのでここを確認するといいです。
まずこれを把握しないと自分は何に向かって仕事するのかわからなくなります。
現場がやって欲しいことを確認して実践
開発いっぱいやりたくても、現場が仕様理解して欲しいなら仕様理解優先、
会議で議論や提案してほしいなら議論提案するどまずは現場がやって欲しいことを確認しましょう。これ無視すると...💦💦
現場の課題を把握、提案しよう
現場によってはタスクをすぐやる場合もあれば、仕様理解からお願いされるなどいろいろあると思います。
その際に技術やヒューマンエラーなどいろいろ出てくると思います。以下の観点で現場を見てみましょう。
それを提案するとベンチャーやスタートアップなら好印象になったりします。
いきなり自分を出しすぎないように
最初は現場の空気に合わせましょう。
例えばあなたが陽キャラなら大人しい人が多い現場でいきなり陽キャのような立ち振る舞いをすると現場によっては、チームを乱す人、カルチャーに合わない人扱いになってしまいます。自分は1回やらかしました。💦
現場のルール確認
現場のルールやお作法などは確認しておきましょう。
ルールが細かいとこもあれば、全然ないとこもあります。
サービス、システムの確認
サービスの理解は、仕様書の確認や動作確認などをしていく必要があります。
システムの確認はまずコードやアーキテクチャ、テーブルなどを理解していく必要があります。
現場のシステムと仕様を理解する方法❗️(駆け出しエンジニア必須)
ソースコードを読めるようになるためのコツ(これできないと開発現場でヤバイ‼️)
チームの確認
誰が何を担当しているか、誰に聞けばいいかを把握していく必要があります。
ex)
- リーダーやCTOは忙しいから定例会とか時間を見つけて聞いておこう。(事前に予定を聞いておくといいです)
- この機能はこの人が実装したからこの人に聞くなど実際に作った人に確認を取る
- 先輩がついてくれるなら先輩が誰か把握する(先輩も忙しいので、質問の仕方やタイミングは気をつけましょう)
自分目線ではなく、相手の状況を確認する相手目線でやっていくようにするといいです。
実際は現場のコードは難しいからつい自分目線になっちゃいますけどね。笑
僕も同じです。笑
イベントの確認
よくあるイベントでは以下のイベントがあると思います。
ex)
定例会、リリース日、スクラムイベント、打ち合わせ
などがあると思います。
どういうイベントがあっていつあるのか、それも頭に入れておくといいと思います。
アジャイル開発用語集にスクラムイベントの用語なども記載しておきました。
現場の人と会話する
現場の人とは、なるべく会話をしましょう‼︎
エンジニアだけでなく、デザイナー、QA、ビジネス層、CTOなどなるべく会話をしましょう‼︎ 仕事以外のお話や雑談でもいいのでやっておくと後でコミュニケーションがとりやすくなります。あと可能なら出社して、直接会って話しましょう。お昼とか飲み会なども行けるなら行った方がいいです。毎日出社は必要ないです。大事なのは、1回リアルで会うことです。逆にコミュニケーションを大事にしない現場はそもそも微妙かもです。💦
信頼をもらえるようにしよう
開発エンジニアに限らず大事なことです。
僕も失敗して痛い目にあったことがあります。技術よりこっちで減点になることが多いです。💦
ソフトスキルってなかなか注意してもらえないのが1番やっかいなんですよね💦
実装手順
いよいよタスクが来ました‼︎よかったら読んでください‼︎
AI時代前のやり方かもしれないですが、参考になるかなと思います!
技術面の対策
最低限CRUDと認証機能は現場に入る前実装しておいた方がいいです。
可能ならチーム開発もやっておきましょう。または、個人開発で何か作りましょう。
未経験スキルに参画時、駆け出し、未経験のエンジニア必読❗️現場についていけない場合はどう対応すべきか
Git運用はマジで気をつけましょう😱
Gitでミスるとマジで会社に損害を与える危険性があるので、絶対確認しましょう😱
会社のシステムを破壊することもぶっちゃけできます😱
不明点は質問しましょう💪
ブランチ運用する上で、GitFlowやブランチの命名規則などには気をつけましょう。
masterやmainにpushしないように気をつけましょう。💪
チーム開発なので、Git操作は必須です。
-
GitFlow
Git-flowって何? -
ブランチ命名規則
ブランチ命名規則 -
コンフリクト解消
コンフリクト解消 -
Git操作
RUNTEQのGitFlowの動画
トランクベース開発(mainブランチ)
全員が1つのmainまたはmasterブランチに頻繁にマージする開発手法です。
基本はGitFlowに沿った開発ですが、最近このやり方で開発している会社があります。
学び方と考え方(東大生に教えてわかったことと最強のCTOから教わったこと)
東大生に教えたことあり、教える上でわかったことと最強のCTOから教わったことですが、驚くほど同じでした。
東大生に教えてわかったことと強強CTOから教わったこと(プログラミング学習のスピードが速い人と遅い人の思考)
仕様や処理の不明点は紙に書いてみる
仕様や処理でわからない箇所は図で書いてみたり、何がわからないのか言語化です。
自分の頭だけでやってしまったり、何がわからないのかがわからん状態です。
これできなくてかなりきつかったです。😅
コミュニケーションの対策(マジで大事🔥)
基本的には、コミュニケーションの不足や協調性の有無が多いです。
SESや業務委託で切られる原因として、技術力不足と言われることありますが、
正直内心は協調性やコミュニケーション力の欠如などソフトスキルの原因が多いみたいです。
知らなきゃヤバイ❗️現役の開発リーダーから教わった現場で戦力外扱いされる理由No.1は何か!
アジャイル開発用語集
自分はたぶん知らない人いないくらいの某有名企業の案件に入った時、
スクラム開発の用語が全くわからなかったです。大きい企業程レトロ、リファインメント、ベロシティなど当たり前のように使っているので知っておきましょう。小さい会社だと使わなかったりします。
企業の利益を上げるエンジニアを目指す
CursorとかChatGPTなどが台頭しているので、コードが書けますだけだと
今後価値が下がってしまいます。
企業の利益を上げるために価値提供できるエンジニアを目指してください。僕も目指しています。💪
一つこれも意識してください。この記事読んだCTOが実際にSNSで一緒に働きたいとDMを送ってきました。これだけではないですが、自分のキャリアではなく企業への価値提供に考えもシフトしていくべきです。
情報共有の施策がチーム開発を円滑に進める(技術力が低いエンジニアが活躍するには)
一流の技術選定です。
Dinii(ダイニー)から学ぶ一流の技術選定のレビュー(これ知らないとエンジニアとしてキャリアが終わる)
チーム開発の改善
自分だけでなくて、このプロジェクトを成功させるにはどうすればいいのか、
このプロダクトを伸ばすにはどうすればいいのかも考えて動けると強いと思います。
参考までに読んでください。
CTO、PM、全エンジニア必読‼️最強の開発チームの構築方法(ブリリアンド・ジャークはやばい😱モダンな技術を使えたら成果は出るのか🤔)
自己研鑽の方法
自己研鑽のやり方としては、以下の
1.個人開発で検証する(現場で使いそうな機能、提案できそうな機能など)
GitHubに残しておくと似たような機能を実装する時に役に立ったりします。
2.ドキュメントに書いてアウトプットする(発信する)
実務で学んだことは記事に書いてアウトプットしていくといいと思います。
3.KPTを自ら実施する
現場での反省点を自分で毎週振り返りをしましょう。
リーダーなどにレビューしてもらうといいです。
4.現場での不明点や学んだことの復習
現場で知らなかったことなどを仕事以外で調べてみましょう。
CTOの方がツイートされていたこと(現場に入ってから個人で取り組むこと)
以下の記事も参考にしてください。
プログラミング学習で詰まっている人、経験が浅いエンジニア必読! ドキュメントを書く習慣があると別人になれる!
こちらの動画を参考にしてください。
【エンジニアの技術習得方法】毎月たった600円でできる技術習得方法
AIがあるからプログラミングの学習は不要なのか?
結論必要です。🔥理由はざっくりこんな感じです。
-
そもそも何も知識なかったらAIに的確な指示を出すことはできないです。
知識0でいきなりアプリ作ってとか言われてできますか?🤔 -
AIがカバーできないところは必ずあります。手動でやった方がいい場面もあります。
いざそういう場面に遭遇して知識0で対処できますか?🤔 -
AIが今何をやっているのか理解できなくなってしまいます。
こんな状態で開発できますか?🤔 知識0でいいならエンジニアなんか不要ですよね?
AI時代でも必要なコードを書く練習(AIしか使わない学習はやばい😅)
勘違いしてほしくないのが、コードを速く書くとか、いっぱい文法知っているとか、
難しい機能作りましたとかそんなの価値あまりないですからね👊
(今だにそんなことに価値置いている会社もあるみたいですが😂)
技術よりAIを使ってどうやって貢献するかの方が100倍大事🔥です。
誰もやっていないけど圧倒的に差がつく自己研鑽方法(言語化能力)
結論言語化能力です。AI時代なので尚更必要です。🔥
どの時代でも使える普遍的なスキルですね😇
「エンジニア」、「エージェント」、「SES営業」の方に悲報😱「言語化する力」がないとどれだけ技術力や経験があってもアウトです‼︎
これができないと稼げないエンジニアの必須スキル ※プログラミング技術ではない
AIとの向き合い方
AI時代なので、AIとの向き合い方について書きました。
AIの方がコーディングは速いので、技術力の価値は落ちてきます。
AIを使いこなすために技術の知識も大事ですが、
個人的には、以下の力が必要だと思います。
1.言語化能力(AIに適切な指示を出すために必須です。)
2.自問自答力(とある最強CTOがお話していたのですが、プログラミングできる人を一言で表すと自問自答する力と話していました。)
3.選定力(AIで使うべきところと手動でやるべきところを使い分けたり、AIが出したコードを採用するかしないかを取捨選択する力)
4.対話力(AIと壁打ちしながらやっていく力)
技術大好きだけのエンジニアは終焉の時代😱 AI駆動開発によってどう変わり、どう対処すべきか
[番外編]キャリアアップ(あくまで参考に🙏)
似たような内容ですが、参考にしてください。
若手エンジニアは知らないとやばい‼︎ エンジニアになってからどう成長すればいいのか(現場に入ってからやること、キャリアアップの考え方)
フルスタックエンジニアを目指す上での注意
フルスタックエンジニアは目指してなるのではなく、
現場の要望に応えたらフルスタックのスキルを身につけたというパターンが多いです。
エンジニアは自分のキャリアばかり考える人多ですが、会社への価値提供、利益貢献を第一に考える必要*があります。CTOもなりたいからなるのではなく、
「この人ならお願いできる」って思われて評価されてなるものです。
目指してなるものではないです。
フルスタックエンジニアになりたいの?無理でしょ!【エンジニア初心者向け】
駆け出しエンジニアが成長するには
結論いろんな現場経験です。
自社開発の社員になりたがる人が多いですが、ぶっちゃけエンジニアとしてレベルアップしたいならいろんなサービスの経験をした方がいいです。
3年エンジニアをやるなら1つの現場に3年いるより、1年ごとに現場を変えていろんな課題に当たったり、いろんな現場の型やいろんな知見を広めていくといいです。
けっこういろんな現場の知見は重宝されることもよくあります。
こちらの動画を参考にしてください。
いろんな現場を経験する方法とは
1.受託開発に入社
いろんな案件ができるので、ジュニアエンジニアにおすすめです。
受託開発でレベルアップしてから、自社開発など自分の理想の会社に行くのはおすすめです。
2.フリーランスのような業務委託
フリーランスはフットワークが軽くいろんな現場に行けます。単価も高いのはもちろんいいのですが、フットワークが軽く色んなサービスの経験を積めるのはメリットです。フリーランスでもちゃんと実績を積めば、正社員でも十分採用されます。
3.派遣エンジニア
派遣もフリーランスと比べると単価は落ちますが、
派遣も色んな現場に行くチャンスがあります。
4.優良SESに入る
SESって評判悪いですが、本来ならエンジニアとして
レベルアップするには最高の環境です。色んな現場行けるので‼︎
[番外編]進路の参考に
自社開発の勘違い
自社開発だとこんなイメージがあるのではないでしょうか?
1.モダンな技術(SPAやGO、Next.js、AWSなど)
2.ホワイト企業
3.フルリモート
4.お給料がいい
こんなイメージあると思うのですが、会社に寄ります。
普通にSPAじゃなくてレガシーな案件もありますし、ブラック企業も普通にありますし、出社強制の会社もあります。お給料も会社が儲かっていないと良くないです。
会社ごとに見ていく必要があります。
自社開発だからホワイト、SESだからブラックではないですからね。
自社開発の社員のなり方(個人的にいいと思う方法)
業務委託で入ってから、そこで社員になるのは個人的に効率がいいと思います。
入ってからのギャップもないですし、最悪入社はいいやって思ったら現場変えればいいだけです。業務委託しながら理想の会社を見つけるのもありだと思います。
エージェントやSESの営業の言うことは間に受けなくていい
ほとんどのエージェントやSES営業は、はっきり言ってエンジニア出身ではないです。
特に話を聞いてやばいのが、経験年数とか肩書きでしかエンジニアを判断しない人です。中身を全く見ない人ですね。
そもそもなんでこういう人がやばいのかわかりますか?🤔
そもそも肩書きしか見ないならわざわざ面接なんかしないでAIで良くないですか?
人間が時間使って会うってただ肩書きだけ見ていないですよね?
はっきり言って肩書きだけ見るならバカでもできます。👊
現場や採用のこと突っこんだらほとんどこう言う人ってまともに答えられないです。
結局その人自体が採用や現場のこと何もわかっていない(完全な素人)ので
そういう素人の言うことを間に受けるっておかしくないですか?🤔
あなたがプロ野球選手だとして全く野球やったことない人に
「あなたの素振りはこれだ」みたいなアドバイスを間に受けるっておかしいです。
そもそも優良企業ほど肩書きより中身重視です。
僕が前話した採用の方もエージェントにはかなりご立腹です。(全部悪い訳ではない)
エージェントやSES営業は営利目的
彼らは営利目的ってことは忘れないでくださいね。
舐められたら、変な案件や会社に放り込まれたりすることは普通にあります。
だから経験少ないだけで舐めてくるし、相手の弱みをつけ込んだ営業もやってきたりします。1社か2社ダメなだけでお前はどこも受からんみたいなこと平気で言ってきます。
忘れないで欲しいのが、会社の評価基準なんてピンキリです。
ちょっと面接でダメだからって諦めないようにしてください。💪
あと面接で経験年数や技術不足が原因で落ちたのは面接に問題があったパターン多いです。そもそも書類通って面接に進んでいる時点で、
年数とかそう言うのはクリアしているってことです。
ここをエージェントは間に受けて、「もっと経験を積みましょう」「技術力あげましょう」って言って曖昧な言い方してきます。
具体的に何をするのかのアクションプランなど何も言ってこないです。
エージェントやSES営業はノルマがある
彼らは、ノルマがあるので無理やり変な案件や会社に放り込んだりしてきます。
そう言う事情があるのを忘れないでください。
複数エージェントを使ったり会社に直接応募したりしてください。
1つのエージェントだけは危険です。
過去に遭遇したやばいエージェント、SES営業
1.マウントを取ってくる営業
エンジニアやったことない上に自分はいかにも知っているかのようにマウントを取ってくる方がいました。色々突っこんだら何も答えられなかったです。
2.年数のことしか会話しない営業組織
会社の営業組織全体がこんなこと話している会社がありました。
案件を紹介するにも全部年数です。
年数年数とか言うけどそもそも経験10年の人も1年目や3年目の時代ありましたからね。
そもそも10年やってポンコツもいれば1,2年の経験でも凄い人はいます。
バカの1つ覚えみたいに年数、年数言っている営業は本当に多いです。
「経験年数気にしてません」って会社いっぱいありますからね。
3.求職者の希望を打ち砕くのが営業方針のエージェント
これを営業部長が当たり前のように話している会社もあったりしました。😱
こういうエージェントや営業なら話聞くのはあり
1.エンジニアの中身をしっかり見ようとしてくる人、
2.非エンジニアでも現場や採用のことをしっかり学ぼうとしてくる人、
3.キャリアのことを親身になって相談を受けてくれる人、
は話聞いてもいいと思います。
優良企業と成長していない会社の見極め方(スタートアップなど。かなりタブーに言及します。)
優良企業(自社開発)の特徴として、以下が挙げられます。
急成長したり、これからどんどん伸びていくプロダクトを作っている会社の特徴です。
1.コミュニケーションを重視している会社(心理的安全性など)
2.エンジニア間で仕様を決めたり、プロダクトをどうよくするかをみんなで話し合うことが多い(スクラム開発をやっているところだとレトロとかプランニングのイメージ)
3.提案とか積極的に歓迎してくれる
逆にあまり売上がなくて資金的に厳しい会社の特徴です。
1.作業ばっかりでコミュニケーションの機会が少ない(会話していると言ってもせいぜい個人の タスクの話くらい)
2.技術力の要求がやたら高い(資金がないのでこうなります。)
優良SESなら入る価値あり
この条件に1つでも多く満たしているSESなら入る価値はあります‼︎
1.開発ができる
2.駆け出しのエンジニアには、現場には必ず先輩エンジニアなど同じ会社の人がいる現場にアサインがルール
3.待機者がほとんどいない
4.案件を選ばせてくれる
5.嫌な案件なら変えてくれる
6.営業がエンジニア出身(開発の勉強は最低限やっていて欲しい)
7.SNSの発信をやっている(やばい会社はなかなかできない。発信していてもやばい会社はある)
社員なら教えてくれて、業務委託だと教えてくれないは本当?
これは会社や現場に寄ります。業務委託でも色々教えてくれる現場もありました‼︎
社員じゃなくても1on1でフィードバックとかもしてくれたし、社員の集まりにも呼んでくれました‼︎逆に社員でも、全く教えてくれない会社もありました。人が育たず、辞める社員も多くて業務委託に頼るしかなく、会社があまり成長していないです。
優良SESではないなら入社する必要ない
はっきり言って上記の条件を満たしていないSESではないなら入っても仕方ないです。
エンジニアとして入社したのに工場勤務、家電量販店、コールセンター(微経験、未経験の人は注意)
微経験、未経験の人は注意してください。SES企業だとマジでこういうことあります。
この3つ出たら絶対に入社しないでください。キャリアが壊れます。
最後に
偉そうに書いてますが、僕もまだ全然大したことないです。笑
できないと思っているからこういう記事を書いてアウトプットしています。
これから現場で大変だと思うのですが、一緒に頑張っていきましょう‼︎
仕事が始まってから
初心者エンジニアにおすすめしたい「進捗どうなった?」と言われないための仕事の進め方
この記事は有益です。
他にも読むと良さそうな記事