広告営業からPHPエンジニアに!!
みなさんこんにちは!!
本日は、広告営業から一転、未経験でPHPのエンジニアになった弊社社員が執筆を担当します。未経験から如何にしてPHPエンジニアになれたのか、エンジニア目線で選ぶSES企業のポイント等、読みごたえ満載ですので是非最後までご覧ください。
自己紹介
経歴紹介
参画したプロジェクトについて
初学者に向けて
SES企業を選ぶポイント
1. 自己紹介
私は現在28歳で学生まで大阪で過ごし、社会人になってから上京しました。得意な言語は、PHPとJavaScriptです。
2. 経歴紹介
学生時代から文系だったため、当時はITエンジニアとして働くという選択肢が全くなく、社会人の1社目は広告会社のBtoB営業をしておりました。
その会社を3年ほど務め、SESとして研修期間の短いIT会社に転職しました。転職前に、プログラミングスクールに通う選択肢もありましたが、プログラミングを独学で勉強しておりました。
理由としてはプログラミングスクールより独学の方が学ぶことに対して自走できる好印象を与えれること、あとは金銭面的に2.30万払って通うスクール代が単純に高いということです。
今思うとその選択は正しく、年齢的にもどれだけ最速で現場を経験できるかを考えていたため、転職して3ヶ月で、コーディングができる現場に携わることができました。(もちろん現場では苦労しました。)技術的にはスクール出身者には劣りますが、数ヶ月の差くらいは努力ですぐ埋めることができます。
3. 参画したプロジェクトについて
4つあるため、それぞれ分けて紹介します。
①幼稚園・学校の校務支援システム開発
すでに自社の人がいる現場で、一緒に研修を受けていた人とセットで参画しました。業務内容としては、システムを導入している学校から要望があった追加機能を実装していました。私が配属されたのが、「帳票」を扱うチームで、学校の保護者向けのプリントや、成績表や賞状、事務書類などを作成・編集・ダウンロード等できる機能を実装しておりました。
すでにシステムとして出来上がっているため、ほぼ既存のコードを踏襲するだけで問題ありませんでしたが、私自身スキルが不足していることと、納期がかなり短いためメンバー総出で残業をすることが多かったです。
②食料品小売店の業務支援システムの開発
この現場は、4名チームで中国籍2名と私と同時入場の方が1名と私でした。業務内容としては、小売店の商品販売サイトの管理画面の追加機能実装をしておりました。PLの方が、なかなか曲者(すぐ怒る)で、私たち4名は苦戦を強いられておりました。中国籍のチームリーダーの方とそのPLの方のコードの書き方が異なりいつも言い合いをしているような環境でした。
③公共事業の管理システムの開発
こちらはなかなか馴染みのない業務の管理システムで、まず専門用語から調べないと仕様の理解ができませんでした。(鉄塔の線を繋ぐ輪っかの名前とか知らないですよね、「がいし」と言います)
業務内容に関しては、C#で組まれていたシステムをPHPにして刷新するという内容で、この案件から初めて設計に携わりました。基本設計のサポート業務から、詳細設計、開発、テストとおおよそ開発の一連の流れをこの現場で経験することができました。<経験業務:基本設計、詳細設計(設計書全般、CRUD図、処理フロー、操作フロー)、開発、単体テスト、結合テスト>多くの人数が関わるシステムで、私のチームはPL1名、PG6名でしたが他社でも複数名いました。
私が設計から携わっていたため、他社のPMの方と仕様について会話したり、全機能の仕様を把握する立場として、機能概要を開発メンバーに説明を行い、開発後に出たバグの管理をPLの方と一緒に行っておりました。
設計時は、かなり期日が押しており、終電を逃してPLの方に車で家近くまで送ってもらうこともありましたが、設計に初めて携わる身として仕方ないと思っていましたし、最後まで一緒に残っていただく感謝と申し訳なさがありました。(優しいPLの方に感謝)
④EC構築サービスの開発業務
こちらはECサイトの追加機能の開発業務でした。
2〜3ヶ月周期で機能改修・追加が行われる流れで、その中で、設計→開発→テストを行います。設計に関しては、決まったフォーマットはなく、これまで使用したドキュメントを参考にする形でした。
追加機能は営業や、顧客から直接、こんな仕様にしたら良さそうという案があり、要件定義が始まります。私が行った業務は、設計作業として、スクリーンショットしてエクセルに添付した画面に課題点や改修内容の吹き出しをつけて仮の画面イメージを作成→その後、画面イメージが固まったら上記ドキュメントを元に、HTML,CSS,JavaScriptを使用し簡易的にUIを作成→それをまたキャプチャし、PGが見て理解できるレベルのドキュメントに仕上げる(画面仕様書)
開発も行いましたが、最初はまだリリース予定のない機能の実装でした。(少しもやっとしましたね)そのあとは、上記の設計を行ったあと、その機能の開発を行いました。機能に応じてはPHPで実装されている箇所と、Perlで実装されているところがあり、私が設計を行なった機能はPerlの部分で、初めてPerlを触りました。(意外といけました)
4. 駆け出しエンジニアに向けて
私の持論ですが、エンジニアとして、大事なことは、4つあると思っています。(SESエンジニアの視点)
自走力
コミュニケーション能力
責任感
どうにかなる精神
①自走力エンジニアの仕事をするには、業務外の学習、スキルアップが必要だと思っています。世に新しい技術が次々に出てくることも学習の必要性としてありますが、SESであれば一定期間勤め終えれば、次は新しいプロジェクトになると思います。
その時に次のプロジェクトの技術をいち早くキャッチアップしなければ不要とみなされて契約を切られることは珍しくありません。そこで必要な技術をキャッチアップする自走力が必要となってきます。また、スキルがなくともキャッチアップしている姿勢を見せることも非常に大事です。
②コミュニケーション能力
正直コミュニケーション能力さえあればなんとかなると思っています。(だめ)駆け出しエンジニアの場合、スキル不足で現場が変動することがあると思います。残念ながらプログラミングは一朝一夕には身につきません。
私はそのマイナスを覆せるのがコミュニケーション能力だと思っています。コミュニケーションは自分の意識次第ですぐに行動に移すことができるかつ、簡単に良い印象を与えることができる最強のスキルです。
プログラミングはほぼ数名以上のチームで構成されています。そのチーム内の潤滑油として存在意義を発揮することにより、必要な人材と認識させることができれば、多少プログラミングがおぼつかなくても重宝されます。また、質問する際にも気軽に接してくれるようになり、その空気感が他のメンバー同士にも伝染します。
あと、付随して大切だと感じているのは、連絡ツール(slackやdiscord)の即レスを意識することです。すぐに返信できない、答えが出ない等の連絡が来たとしても、必要に応じては一報「少々お待ちください、〜終わり次第ご連絡します。」「今検討中です。少々お待ちお待ちください。」等、返信することがチームを円滑に回す1つのポイントとも言えます。
実際、私が入ったプロジェクトで、SEの人が仕様書の確認お願いしますとPMの人に連絡しているにもかかわらず2日くらい放置されていたことがあり、関係している私としても憤りを覚えました。あと、私自身も10分ほど放置しただけで怒られたことはあります。
③責任感
責任感とはどの仕事にも当たり前に必要ですが、ここでいう責任感とはプログラマーの自分で書くコードに対して責任を持つという意味です。(これは自戒としても書いてます。)
すでに完成されたシステムの改修、追加機能開発の仕事をする機会は必ずあると思います。そこで、似たような既存のコード探し、コピペして「やった、動いた!」では絶対ダメです。エンジニアとして成長する人はそこで、なぜ動いたかを深くまで掘り、理解しています。根本的にその返ってきた値はどこから取得されたのか、どの関数、どのデータベースが関与しているのかの仕組みと流れを理解することが大事です。
なぜかというと、そこを理解しないと、初学者の場合、他の応用が全く効かなくなるからです。(経験あり)私自身も元文系が関係しているのかしていないのかはわかりませんが、感覚で捉えている部分があり、深く理解する癖をまだ徹底しきれていません。とにかくわかったフリをすることをやめた方がいいと思っています。
エンジニア(プログラマー)としての責任に、自分で理解したコードを書くことが1つあると思います。
4.どうにかなる精神
エンジニアは設計〜開発〜リリースまで、期日に追われる日々が続きます。(営業は売り上げの数字ですね・・)まだ駆け出しの身にとっては、どの程度見通しを立てて期日を設定すればいいか正直イメージできないと思います。
では期日を設定したものの、間に合いそうにないことはよく発生し、そうなると結構焦ります。私はそうなると一旦、タスク管理者にすぐ相談して、期日を再設定してもらい、プログラミングができるチームメンバーに聞き倒していました。正直聞きすぎると迷惑がられることはあるかとは思いますが、それでも聞いた方がいいです。
結局は自分の期日も伸びているし、その質問受けた人のタスクも間に合わないかも知れません。人によってはその申し訳なさで質問できなかったり、質問しても追われることに耐えかね病む人もいると思います。
精神論で申し訳ないですが、ここで「どうにでもなる」とか「結局どうにかなる」という気持ちが大切で、そう思っている方が精神的に安定しますし、実際に絶対なんとかなります。
SESのエンジニアだとその点もメリットがあると思っていて、どうにもならないような激務に直面した時、退場を打診できます。
5. SES企業を選ぶポイント
転職してエンジニアになるために、多くの人がSES企業に行くと思います。また、それと比例して日本にはSES企業が数多く存在しており、企業選びの最後は社長でもない面接官の人柄で選ぶという最悪なパターンで入社する可能性があるかもしれません。そこで私が思う失敗しないSES企業を選ぶポイントを3つ挙げました。
研修体制
フォロー体制
給与
①研修体制
※未経験者に向けた内容になります。SES企業の未経験者を採用して行われる研修の例を挙げると、1年間や半年の期間を設けて「日中は家電量販店で販売業務後、自社の研修を受ける」という会社がよくあります。
その場合、まだ20代前半であれば社会人経験を積めるため良いかと思いますが、目的がエンジニアとして働くことであるのに、1920時間/1年間(1年を平日240日換算した場合)を別の業務に時間を取られてしまうことは非常にもったいないと思います。
私がオススメしたいのは、独学orプログラミングスクールで学んだのちに研修期間が短いor研修がない企業に転職することです。結局、現場で生のコードを書くことが一番の成長につながります。(これに関しては、そのSES会社がしっかりとコーディングできる現場を提案してくれるかを確認することも大事です。)そのために何が最善かを考えて企業探しするべきだと思っています。
②フォロー体制
フォロー体制とは、そのSES会社がエンジニア社員に対して、時には現場の働き方の改善や、エンジニア自身の相談を聞いて行動してくれるかを指しています。
例えば、俗にいう炎上案件や、職場の人間関係(パワハラ等)があった際にどのように会社が対応してくれるか、エンジニアが上流をしたい、この技術をしたいという希望があった際にどのくらい会社が要望を通してくれるかなどのフォローを確認をしたいところではあります。
また、確認したいところとしては、SES営業1人に対して、エンジニア何人抱えているかも知りたいところです。その理由は、エンジニアが増えれば会社としてはそのまま利益が生まれますが、SES営業を増やしても会社の利益には繋がらないからです。
そのため、SES会社によっては営業1人に対してフォローできないほど多くのエンジニアを任せるところもあり、その点フォロー体制に懸念が出てきます。
このようにSES事業は人を集めれば集めるほど儲かるため、採用しても社員であるエンジニアを放置するような企業もあり、よってSES会社のエンジニアフォロー体制がどの程度整えられているかを事前に確認しておくことが大切です。
③給与
給与ベースは案件の単価ですが、そこから自分に何%還元されるのかを確認が必要です。(実際に給与からの数値を確認させてもらう)
また、当たり前かも知れませんが、入社時の給与ではなく、入社してからどのように給与アップしていくかを確認した方が良いです。会社に応じて評価軸が違い、インセンティブ(手当て)の内容も異なります。
6.終わりに
今回、長々と記載させていただきましたが、自分を振り返る良い機会となりました。SESエンジニアはずっと同じ現場で働くこともありますが、転々とすることもあるので、備忘録や現場で学んだことのアウトプットの意味でもこのように文字に起こすことが大事です。
今回記載した内容は私の主観や経験を含んでいることが多いため、また数年後どのような見方に変わっているか私自身楽しみです。
また定期的に振り返っていきたいと思いますが今回はこちらで以上とさせていただきます。