こんにちはカレイドです。
今回は僕の高校時代の浪人仲間で5年半ぶりくらいにたまたま彼のツイート見たらエンジニアになっていました
そこでいろいろ話そうぜってことでお互いの近況報告も兼ねて
エンジニア生活についていろいろ聞いたのでこれから目指す方が知りたいだろうなってことについて情報をまとめておこうかなと思います!
僕の質問形式のような形にまとめてあるので気になるところつまみぐいしてください!笑
PHPエンジニアのプロフィールは?
年は僕と同じ24歳
1郎して大学卒業しているので実質webエンジニアとして、二年目になるみたいです。
そんな彼は初期ベンチャーというよりはメガベンチャーのようなところでサイトを運営、改築をしています。
皆さんのイメージとしてはクックパッドとか食べログとか何か検索して結果画面を表示してといったような感じです。
もう少し規模は小さいみたいですが内容としてはこんな感じみたいです。
エンジニアって色々あるけど具体的には何をしているの?
1年目~
彼の場合はPHPを使ったバックエンドエンジニア
フロントのHTMLやCSSはほとんど触らないようで完全な分業のようです。
例えば皆さんが使うユーザページにどういった情報が必要でどのようにしてデータベースから引っ張ってくるかといった処理などを書いたりをする感じです。
逆に持ってきたデータをどのように表示させるかはフロントエンドのお仕事になります。
特に1年目では会社の名前を変えたり特定の部分の表示を変えたりすることをしていたみたいです。
一見すぐ終わるようなことに見えても、実際にはどのくらいの工数がかかり、それを修正したのちにマネージャーの承認だったりで結構大変みたいです。
これに関しては個人開発と複数人開発の違いで説明します!
2年目~
二年目では結構大きなプロジェクトを任せてもらえたみたいで、今まで駅でしか検索できなかったアプリにバス停での検索を出来るように改良を加えるものです。
それのPM(プロジェクトマネージャー)を務めているみたいです。
PMとは通常、コードを書くというより全体の実装を小分けにしてそれがかかる日数などを管理して、実際の実装などを他のメンバーに割り振り管理するような役職になります。
聞いたところでは私のイメージのPMとは少し異なり実際には管理するだけではなく、コードも書くようです。結構詰まっていて本来はよくないがこういう形をとっているそうです。
私が就活で受けてきた大企業ITでPMというともう少し時間がかかる役職なのでこういうところはメガベンチャーでどんどん成長したい人は向いていますね。
通常のルート
割かし最初はテストをやらされるケースが多いみたいです。私が話を聞きに行った大企業もテストが大半のケースが多いです。
そこから少しずつプロジェクトを担当していくといった感じになるかと思います。
お仕事の1日の流れについて
会社はフレックスタイム制みたいです。まだリモートワークでの作業は取り入れてないみたいで、その日は朝10時から夜7時まで仕事をして飲みにきてくれました。
バス停検索実装を取り入れる1日の話になります。
やることはいたって単純で午前中出社してその日のTODOを確認してgit margh pullから始まります。
gitはみんなで一つの製品を作り上げるときのバージョン管理のようなもので複数人開発では必須になります。実際個人開発から複数人開発に移るときにgitは必ず必要だよといわれました。
そしてgit margh pull はそのバージョンの中で最新のものを引っ張りだしてくることです。
基本的にはブランチと呼ばれる枝のようなものにみんなが分かれて小さいプログラムを完成させ、それを一本の木に流し込んでいくと思ってくれればいいです。
取り出した最新のバージョンに変更を加え始めて12時から1時までお昼休憩。
1時から再び同じように開発を進めていくみたいです。たぶん個人開発をしている人なんかはまさにイメージ通りだと思います。
ただ1日の終わりに進捗をgitにpull requestを出します。これは自分の実装を他の人にレビューをもらうことでその会社では二人の承認が下りれば新しいバージョンに加えてもらえるみたいです。
現在はこのプロジェクトは終わり無事にバス停検索が出来るようになったみたいですよ。
そして今は新しいプロジェクトに取り掛かり、次は上流部分を担当しているみたいです。
さっきの説明は下流工程と呼ばれていて、作る要件が確定し、どのような機能を実装するかまで確定させているので後はそれをプログラムに落とし込む作業になります。
では上流部分とは...
まさになぜその機能が必要なのか、そしてそれを実装するためのコストや工数(日数)計算し、設計書と呼ばれるどのような実装かを書く段階になります。
ここは彼にとって全くの未知の部分なのでてこずっているみたいですね。
お仕事は楽しいですか?
とても楽しいみたいです。何よりも帰り道にポロって言ってたのですが自分の作っているサイトやシステムをある日誰かが使っていた時にそれ、俺が作ってるんだよって言いたいみたいです。
この気持ちすごい良くわかります。何か人の役になっている感覚がよくわかるのがいいんですよね。
自分で調べたりすることもほとんど苦もなく楽しく仕事が出来ているみたいです。飲み会中に仕事の話を聞いている中で大変な作業もやりがいに感じているあたりとても楽しくてやりがいのある仕事なんだろうなと
改めて感じていました。
社会人と飲むと割かし愚痴を聞くことも多いのですがそういうことは一切なかったです。僕は愚痴を聞くのも好きなのでどっちも歓迎ですが笑
以前にこの話をしましたがやはり自分はやりがいと成長できる職場が一番いいかなと。
そのうえで必ず後からお金はついてくるっていう考えが一番合っているかなと思います。
【就活】好きな仕事を取るか、給料目当ての職を選ぶか。いろんな就活生と話してきたのでまとめます。
個人開発と複数人開発の大きな違いは?
ここはフリーランスの方が一番気になるところではないでしょうか。私自身まだ経験したことがないのですごい気になるところでした。
上でちょろっと触れたように、規模の大きいシステムになるとやはりそれなりに管理が大変になるので会社の名前一つ変えるだけでも結構かかるみたいです。
流れとしては
現状の会社名が表示されているページの洗い出し、それがデータベースのどこに保存されているか、それを変更して完了するまでの工数の洗い出し⇒マネージャーの承認
ここまで進んでようやく改良が始まります。
個人開発ならまぁそんな大変なことでもないだろうなと思うことでも複数人だとかなり大変な作業になるみたいです。
逆にメリットとしては個人開発ではできない規模を扱えることみたいですね。
私は彼よりもう少し大きめなシステムを扱う予定なので少し羨ましがっていました。とはいっても大規模になればなるほど扱いが大変になるのでどんどん自由度が失われるし、マネジメントも大変になります。
この辺はトレードオフですね。どのぐらいの規模を扱いたいかは一度ゆっくり考えてみるといいかもしれません。
もう一つ個人開発ではあまり当たらない問題としてversionの問題があります。
これは何かというと、古いシステムだとコードスタイルがかなり昔の物である可能性があります。彼曰く古い部分はphp5.?で動いているみたいで今の物と比べるとだいぶ異なるみたいです。
個人なら常に最新の開発をできるのですが、会社単位ということになると大変ですね。
Reactでいうならば最近React Hooksと呼ばれる関数型の管理方法が生まれましたが、現在の多くのシステムはほとんどこのタイプの物はないのできちんとReact+Reduxを勉強しておく必要があります。
新しさをどんどん取り入れられる個人よりと古き良きシステムを使っていく大規模型かなりトレードオフになると思います。
私の意見としては変わらず個で稼ぐ時代、なるべく少数精鋭で新しいものを取り入れていくタイプがいいと思っているのであまり大規模なものには関わるのは危険かなと思っています。
なので私が内定を頂いた会社は金融系の物メインでJavaを使っているのですがkobolだったり、git管理などが異なるために手を引こうかなと思いました。
代わりにNode.jsやReactを使った開発に積極的に携わっていこうと考えています
将来はどんなこと考えているの?
仕事付いた後でも、真剣に何のために仕事をしているのか最近よく考えているみたいで、彼はサッカーが好きみたいなのでスポーツ関係に行ってさらにITでよくしようと考えているみたいです。
また、僕と同じ考えで新しい考えをどんどん取り入れているみたいでGoを先行して勉強したり、今はさらに新しいものがないか、それを学んで最前線で活躍するようなことを話していました。
実際僕がUdemyで参考にしているシリコンバレーで働く酒井さんもおっしゃっていましたが、まさにGoが今はやりのPythonのような感じで日本に徐々に浸透してくると思います。
そんな感じで時代の流れに常に流されないようにいるためにIT業界にいることはかなり正しい戦略のように思います!
何度もいうようにこれからは個の時代自分で稼げるスキルが必須だと改めて感じます。
これからエンジニアになるに至ってどういうスキルや実力が必要?
彼から聞いた話だと、簡単なプログラミングをできる人は実はわんさかいるみたいです。
MVCモデルとか使える人は割とゴロゴロいるみたいです。ただし実際Cの部分にロジックを書くのは本当はよくないみたいで、そういうのをデザインパターンで学んだ人というのはごく少数みたいで
貴重な存在になるみたいです。
これからプログラミングも必修化されるようなので基本的なスキルは誰でも身につくようになると思います。
大事なのは自分でロジックを組めるようになることだと言っていました。
例えばよく使うライブラリなどはめんどくさい処理を一連の関数として記述してあるわけですよね。これを広げると自分が不便に思っていることを具体化してそれをどのような処理をして解決するかに落とし込む。
そしてそれをプログラミングとして記述できるかどうか。ここが大事なんじゃないかなと思っています。
どちらかというとやはりこれは数学的アプローチになるので難しいですよね。ただある程度は体系化していて組み合わせ次第なので完全に慣れだと思います。
解決策はやはり自分でアプリを作ることに限るんじゃないかなと思います!
まとめ
今回はPHPエンジニアの方にお話を聞いてきました!といっても同級生なのでほんとに気兼ねなく話せたし、やっぱり高校時代の友達の仕事話を聞くのは楽しいし今回はものすごく
自分の勉強が実際の現場でどう生かされるのかすごいイメージが湧きました。
私が学んでいる言語はJavaScriptメインなのでPHPではないですが内容的には同じものに変換できるので、すごいしっくりくるお話でした。
やはり就職した後も自分で学ぶ姿勢が大事ですね。
何でエンジニアがいいか少しわかった気がします。それは勉強しないと置いて行かれるから。でもその勉強って結構決まっていてルートがはっきりしているからなんだと思います。
他の職って何を学んだらいいかが結構不透明というか難しい印象があります。
それに対してプログラミングは最初のとっかかりはすごい難しいけれど全体像を把握できた時は新しいものを学ぶコストがぐっと下がる傾向にあります。
そこまでたどり着けるかどうかがカギになってくるのかなーって思います。
今回は以上になりますありがとうございました!