見出し画像

2年目の目標 〜Webエンジニアとして〜

😸はじめに

久しぶりの投稿です。どうも、うえすとです🏠
都内でWebエンジニアとして働いていて、PHPを書いているものです。久しぶりなので、簡単に自己紹介させていただくと、経歴はこんな感じ。

2018年 3月〜 千葉大学大学院(園芸学)修了
2018年 4月〜 新卒で大手花屋に入社
2019年 5月〜 長時間労働に絶望し、転職を決意
2019年 7月〜 プログラミングを独学
2019年10月〜 都内でSESとして勤務 ←今ここ


エンジニア歴としての歴は、約1年で、いわゆる駆け出しエンジニアです。今回の投稿では、『2年目の目標と、なぜその目標を設定したのか』をまとめました。備忘録と言いますか、決意表明として書いたつもりですが、一応想定読者はこんな感じ。

・未経験でエンジニアへの転職を考えている方
・バックエンドになるために必要なスキルがイメージできていない方
・Webエンジニアとして、どんな目標を設定すればよいかわからない方

各項目の下に、なぜその目標を設定したのかのを書き出したので、エンジニアの目標設定の参考にしてみてください。私は、バックエンドエンジニアとしてのキャリアを考えているので、バックエンド周りがもりもりですが、そこは勘弁🙇‍♂️


🙌2年目の目標


〜バックエンド編〜

🐘 PHPのより深い部分を理解する
私は、この1年間ずっとPHPを書いているので、『こんな感じに書けば動くんでしょ』ってのは大体わかります。しかし、1年間、PHPを書き続けても理解しきれていない部分は、たくさんあります。例えば、「PHPがどうやって実行されているのか」「配列の検索は、どの書き方が早いのか」「可読性、保守性の高いコーディングをするには、どの関数を組み合わせればいいのか」とかとか・・・。挙げだしたらきりがないです。

『動くものは作れる。じゃあどう作る??』
ってのが、私の次のフェーズだと思っています。「じゃあどう作るか?」という話は、設計にも関わってきますが、関数単位でどう作るってのを考えれることが重要かなと思っています。

もし、動くものが作れないで悩んでいる方は、paizaで問題を解きまくることをおすすめします。こんな問題解いてて意味あるの?って思っても解き続けてください。必ず力になります😌

💻 オブジェクト指向、デザインパターンの概念を理解し、Webアプリケーションの設計をできるようにする
私は、バックエンドエンジニアとして、高単価を得る方法はこんな感じだとイメージしています。

エンジニアとして、高収入になる方法は、
1.  上流工程から案件に携わる
2. マネジメント職につく

上流工程から案件に携わるに当たって、絶対に必要となるスキルが、「設計力」「技術選定力」です。自分の単価を上げるためにも、まず設計力を身に付けなればいけないと感じています。

そこで必要になる概念が、「オブジェクト指向」と「デザインパターン」です。

オブジェクト指向とは・・・
互いに密接に関連するデータと手続き(処理手順)をオブジェクト(object)と呼ばれる一つのまとまりとして定義し、様々なオブジェクトを組み合わせて関連性や相互作用を記述していくことによりシステム全体を構築していく手法。(こちらのサイトより)

デザインパターンとは・・・
ソフトウェアの設計時に直面しがちな問題とその典型的な解決策を整理し、様々な場面で応用・再利用できる形にまとめたもの。(こちらのサイトより)

まあ簡単にいうと、オブジェクトを組み合わせて再利用性の高いコードを書こうねっている思想です。僕はそう捉えています。
Webアプリケーションは生き物です。作ったその日から古くなっていく一方なんです。少しでもWebアプリケーションを長生きさせるために必要な考え方が「オブジェクト指向」「デザインパターン」です。これらを理解し、実践に落とし込めるようになることが当面の目標です。

正直、上記の目標が2年目でできるようになるとは思っていません。でも、意識している人としていない人では、明らかな差が生まれるだろうなと感じています。
いつかPackagistにオブジェクト指向で作ったパッケージを公開してみたいと、強く思ってます。頑張るぞ〜〜〜🔥


👇こういうので勉強しています。参考までに。
PHPデザインパターン ~オブジェクト指向でのソフトウェア開発に於ける再利用可能な設計パターン集~ 
PHPでデザインパターンを理解する
PHP WEBアプリケーション設計入門――10年先を見据えて作る


🚀 複雑なテーブルに対して、適切にSQLを実行できるようになる
私は、バックエンドにあるまじきSQLが苦手です😥

簡単なテーブルをJOINしたり、取得したい情報をWHEREで絞って取ってくるのはできるのですが、複雑なテーブルを対して適切なデータを取得したり、複雑なクエリを読み解くのに苦手です。これを克服するためには、『SQLを自分で投げまくる』しかないと思ってます。大量のデータを個人開発で作るのは、なかなか難しいので、実務でSQLを使う開発、保守案件に積極的に手を挙げていこうと思ってます。

効率的な勉強法があれば、大募集してます🙇‍♂️


🦊RESTの概念を理解し、API設計ができるようになる
僕は、RESTの概念がすごーく好きです笑。こんなシンプルなルールで、こんなにも色んなことができるのか!と感動したことを覚えています。なので、この辺の分野に大変興味があります。

APIエコノミーと言いまして、今やAPIでWebサービス同士が繋がれているのが当たり前の時代です。API開発の大きな特徴として、「一度APIを公開したら、安易に修正できない」ということが挙げられます。APIはリソース(URL)を指定して、それを窓口として、内部情報を相手に与えています。つまり、リソース(URL)を変えてしまうと、相手側も修正しないといけないので、困ってしまうわけです。
なので、APIを作る際には、設計力が非常に大事だと考えています。長期的に見て、機能追加がしやすく、修正の少ないAPI設計をできる人は、必ず市場価値が上がります。なぜなら、これからより一層、Webサービス同士がAPIで繋がっていくからです。

現在、世の中のAPI設計の大半は、RESTです。バックエンドエンジニアとして、REST API設計をできることは、武器になると考えています。実務レベルでRESTを実装できるようになっていきたいです!!!


👇私が好きな本、記事はこの辺。
Web API: The Good Parts
翻訳: WebAPI 設計のベストプラクティス


🥳リプレイスに必要な考え方を学ぶ

2025年の崖』を知っていますか?
日本のシステムは、未だにレガシーなシステムで運用しているものがたくさんあります。それを作り直すことを、「リプレイス」とか「スクラッチ開発」と言ったりします。私は、ここ5年くらいはリプレイス案件が増えるのでないかと想像しています。いつまでも、レガシーなシステムで運用していると、優秀な人材が入って来にくくなりますし、そもそもシステムをメンテナンスできる人がいなくなっていくからです。
ちなみに、私が携わっているプロダクトもリプレイスをするらしいので、そこでしっかりノウハウを貯めることができれば、人材価値が上がると考えています。


〜フロント編〜

😘React、Vueのどちらかで動くものは作れるようになる
私は、基本的にPHPを書いているので、フロント周りは弱めです。JavaScriptを最低限書けるのと、React、Reduxを独学で少し勉強したので、なんとなく理解することできるってのが現状です。
個人的には、フロントの技術も結構好きです。動いているもの作ってる時って楽しいじゃないですか笑。
これからVue.jsを使ったプロダクトに携わることになりそうなので、予習しておきたいなと感じています。


人材価値を上げるという意味で、フロントとバック両方できるようになるってのは、正直正攻法ではないと思っています。もちろんフルスタックエンジニアになれたらすごいのですが、未経験がそんな簡単になれるものだとは思っていません。バックエンドの開発をやっていて、フロントも触らせてもらえる機会があれば、手を挙げれるように最低限知っておきたいなと考えています。



〜インフラ周り〜

📖個人開発でAWSに触れ、実務でタスクを振られるようになる
現状は、EC2、S3、EBS、EFS、VPS、ECS、ECR、Lambda、CF、API Gateway、Code3兄弟・・・あたりの基本的に部分については理解しています。話が少し反れますが、インフラ周りでいうとDockerが好きです。Dockerの根底概念「開発者が開発に集中できるようにインフラを整える」という部分にすごく共感します。AWSも同じで、開発者が開発に集中できるようにするために100を超えるサービスを提供しています。やるべき人がやるべきことに集中できるようにするために、インフラの知識も最低限身につけたいと考えています。

🐣 ネットワークの最低限の基礎を学ぶ
僕の業務範囲では、ネットワークの設定をいじることはほとんどありません。今までやったこととしては、指定のプロキシの情報をセットするとか、IPアドレスのホワイトリストを登録してもらうとかです。なんで勉強したいかというと、「意味不明なものを操作してる感」を減らしたいからです笑。僕は、大学で情報学、コンピュータ・サイエンスを専攻していなかったので、圧倒的に基礎力が低いです。なので、ネットワーク周りの理解は全然です。自分の業務とは直接関係ないとはいえ、「知っているとトラブルシューティングの時の選択肢が増える」って意味で、ネットワーク周りの知識もつけていきたいです。


🙋‍♂️ AWS SAAを取る

SAAとは・・・
ソリューションアーキテクト アソシエイトというAmazonの認定資格です。AWSの登竜門と言われている資格。

SAAは稼げるIT資格ランキング1位の大人気資格なんです!
なぜこの資格に興味があるかというと、今後の案件の幅を広げていきたいと考えているからです。前述の通り、ますはバックエンドエンジニアとして、設計〜実装までできるようになることが目標なわけですが、AWSの知見があれば、新たな提案が出来ると考えています。AWSは、今後様々な分野で導入されることが予想されます。バックエンドとAWSの知見があれば、自分がやってみたいという分野に積極的に挑戦できるのではないかと思ってます。
そういう意味でも、SAAを取ってAWSサービスへの理解を深めたいと考えています。


😉その他、興味あること

・もくもく会に積極的に参加して、エンジニア仲間を増やす
・妻のWeb系エンジニア転職をサポートする
・Qiitaを月2本投稿する
・noteを月1本投稿する
・PHP Unitでテストコードを書けるようにする
・React Nativeで簡単なアプリを作ってみる
・社内勤怠アプリ(Laravel, Vue, Docker)を作りきる


🐹 終わりに

長くなりましたが、ここまで読んでくださりありがとうございました!まとめてみると、やりたいこと多すぎですね笑
Webエンジニアとして現場で1年やってきましたが、まだまだ勉強したいことがたくさんあることは、本当に嬉しい限りです。

去年の今頃「しゃああああああ!!!!1年実務積んで、年収1000万になってやるぜ」って意気込んでいた自分をぶん殴りたいです。僕には、無理でした。
「1年では無理でも、何年かあれば」と思い、気長に頑張ることにしました。最近は、年収1000万よりも、海外で働きたい欲の方が強いですけど。

目標にもある通り、定期的にnoteを投稿していきますので、どうぞこれからもよろしくお願いします🙇‍♂️

この記事が気に入ったらサポートをしてみませんか?