概要
フルスタックエンジニアの定義はやや曖昧ですが、様々な開発工程や技術分野において広範な知識を有するエンジニアを指します。
開発工程においては、要件定義、設計、開発、テスト、リリース、運用などが含まれます。技術分野としては、フロントエンド開発、バックエンド開発、そしてインフラ構築が挙げられます。
私は10年ほどにわたりフルスタックエンジニアとしての経験を積んでいます。この経験から得た悩みや考えを記事にまとめ、共有していきたいと思います。
簡単な自己紹介
- 開発工程においては、要件定義から運用まで経験しております
- 使用言語は、JavaScript、PHP、Python、Javaなど様々で、特に好きなのはJavaScriptとPythonです
- インフラの経験としては、サーバー構築、AWSやGCPのクラウド環境、Dockerの構築、FWやファイルサーバの運用などがあります
- 個人の開発では、WEBサービスの公開やプラグインの開発を行っています
- 将来的には、スマホアプリの開発や機械学習などにも挑戦したいと考えています
- 過去の記事のタイトルからも分かるように、くだらないことを形にするのが大好きです
悩み
自分が使いたい技術の開発ができない
開発の役割分担をする際に、人が足りない部分を補うような穴埋めでの業務の割り振りになることが多いです。
そのため、フルスタックになればなるほど、自分の好きな技術を担当させてもらえることは少ないです。(好きなことをするのが仕事ではないのでしょうがないですが...)
対策としては、「もっとこうしたほうが良いのではないですか」と提案したり、作業が遅れている人のサポートをして担当外の部分に手を出すようにしています。
すべての技術を評価してもらえるわけではない
今まで習得した技術はすべて評価につながる訳ではありません。
プロジェクトによっては、バックエンドだけの開発になったりするのですが、その場合にフロント技術やインフラの技術という部分で勝負ができなくなってしまうので、バックエンドをやり続けたプロフェッショナルより能力が低いと判断されてしまう場合があります。転職活動においても同じことが言えます。
対策としては、プロフェッショナルとは戦わずに、フロントやインフラにも視野を広げて開発やコミュニケーションをするようにして、差別化しています。
経歴だけで判断される
私の場合は、JavaScript
PHP
Python
Java
と経歴書に書くことになりますが、実際のところは、Kotlin
Swift
R
Ruby
など、業務では使ったことの無いような技術を使いたいですがエンジニアの経験を重ねるほど、新しい技術のプロジェクトに割り当てられないような気がします。
都合の良い所だけフォーカスが当たるため、「きみは、PHPの人なんだね」みたいなことも言われたことがありますw
似たような例をあげると
COBOL
のエンジニアが、COBOL
の改修ばかりになったり
jQuey
のエンジニアが、Vue
やReact
の開発ができなかったり
と過去に習得した技術が足枷になっている場合があります。
対策としては、自分のやりたいことを自己アピールできれば良いですが、印象としてはよくないので、上司や仕事を取ってくる営業側が、今までの経験とこれからやりたいことをヒアリングして、適した作業やプロジェクトを割り当てて欲しいです。本人のモチベにもなりますし、成長も全然違います。
終わりに
私がフルスタックエンジニアの悩みを紹介しました。
フルスタックエンジニアじゃなくても共感できる方は沢山居るのでないかと思います。
皆さんの悩みや対策を行っているを行っているか知りたいので、ぜひコメントしていただければと思います。
また、フルスタックエンジニアについてネガティブな記事になってしまいましたが、
フルスタックエンジニアの経験が「良かったこと」のほうが多いので、それも記事にできたらなと思います。
ここまで読んでいただきありがとうございました。