ぼくがブログを書く理由

JavaScriptやロックンロール、デバイス・ガジェット等の話を、オムニバス形式で書いていきます。

33歳フロントエンドエンジニア(仮)の苦悩

株式会社ゆめみという会社で働いている、会社員の大塚です。表題では「フロントエンドエンジニア」としていますが、「フロントエンドエンジニアとは?」という疑問を一年以上考え続け、まだ答えが出ていないので(仮)とさせていただいております。(よって、会社員と名乗っておりますw)

Web 制作現場のマークアップエンジニアから転職してフロントエンドエンジニアを名乗るようになったのですが、最近、自身のやりたいこと・できることが迷子になり少し負の感情に飲まれ気味だったので、転職してから現在までのこととや今の気持ちの整理をここに書いていこうと思います。

(何かが解決する記事にはならないのですが、自分のキャリアに似ている社内のエンジニア何名かと話をしてみたところ、どうやらみな同じようなことで悩んでいるようでしたので、答えはお教えできないけど、同じようなことで悩んでいますよとお伝えできれば幸いです)

入社までの経歴

前職ではマークアップエンジニアとしてコーポレートサイトやキャンペーンサイト、 LP と言った、いわゆる Web 制作の現場で働いていました。そこで培ったものは、 Qiita の記事にまとめています。詳細は Qiita の記事をご覧いただければですが、ざっくりいうと HTML, CSS, JavaScriptを駆使して、デザイナーが作ったデザインをブラウザで表現することをやっていました。

今の会社に転職した理由はいくつかありますが、そのひとつが SPA を使って Web サービスをつくるようなフロントエンドエンジニアの仕事がしたい!でした。その希望は叶うわけですが、ここから前述した自身のやりたいこと・できることが迷子の状態になっていきます。

転職から現在まで

転職し、フロントエンドエンジニアとして働き始めたわけですが、ここからいろいろと悩むことが増えました。前職でも同じような悩みを抱え、マークアップエンジニアからフロントエンドエンジニアになってみたのですが、悩みは減りませんね。

ちなみに、最近は気持ちがマイナス気味ですが、悩みと同じだけ新しいことにチャレンジできる楽しさや、学びが成長につながっている充実感もあるので、つらくて仕事をやめたい!みたいなことはないです。

はじめての React × TypeScript × テスト

今ではこのレベルであればとくに苦労なく実装できますが、転職したばかりのころは経験がない部分だったのでけっこうきつかったです。

React のコンポーネントを TypeScript で書くと、おそらく以下のようになるかと思います。

// ¯\_(ツ)_/¯
import React from "react";

interface Props {
  text: string;
}

export const TextComponent: React.FC<Props> = ({ text }) => <p>{text}</p>;

TypeScript のレベルが低すぎて React.FC<Props> ってなんやねん?でした。

また、テストも一文字も書いたことがなかったので、そもそもテストとは?なんのためにやるのか?から勉強しました。(Jest のドキュメントをずっと開きっぱなしにしてました)

活躍できたコンポーネントづくり

しかし、ただつらいだけではありませんでした。 React を TypeScript で書く方法がわかってきてからは、前職で培った HTML と CSS の知識を活かせたコンポーネントづくりはとても楽しかったです。貢献できている手応えもありました。また、 React を通してデザインシステムの設計をより深く理解することができ、 CSS 設計力を伸ばすことができたかと思います。

プログラミング苦手問題

JavaScript はそこそこ書けるレベルだったと思うのですが、メインは HTML, CSS だったので、プログラミングは弱い部分でした。ビジネスロジックなんて単語は聞いたことなかったですし、みんながクリーンアーキテクチャや DDD みたいな話をしているときも ( ゚д゚) こんな状態でした。

日々勉強はしているつもりですし、そこそこ書けるようになってきた実感はあるのですが、入社から約2年たってもまだ自信を持てない部分です。

そんな日々を過ごすうちに、「フロントエンドエンジニアの職域とは?なにができれば、フロントエンドエンジニアなのか?」ということを考えるようになり、いまの自分のスキルではフロントエンドエンジニアと名乗るのはおこがましいな思ってしまい、名乗るのをやめてしまいました。

スクラムマスターになってみる?

大きめのプロジェクトの主担当になったとき、開発部分よりも仕事の進め方チームのあり方みたいなことを考えるようになり、ためしにScrum Inc.認定資格スクラムマスター研修を受けてみました。研修を受け、チームにどうフィードバックしていったか?についてはこちらの note を見ていただけばと思いますが、研修を受けたことにより、案件でも実際にスクラムマスターとして動いてみることになりました。

すこし note の続きになるのですが、研修で聞いたことをいろいろ試してみてもあまりうまくいっている実感が持てず、チームをよりよくするために動いているけど、もしかすると、悪くしてしまっているのではないか?と悩むようになりました。これに関しては、チームメンバーでもあるフロントエンドエンジニアの先輩方からいろいろとアドバイスをいただいたり、お話をさせてもらって、ひとりで抱えすぎていたことに気がつけたので、今はそこまで気持ちが落ち込んだりはしなくなりました。

その他、やってみたこと

仕事でさわることはないのですが、インフラのこととか全然知らなかったので、AWS を勉強しようと思い AWS 認定 ソリューションアーキテクト – アソシエイトを取得してみました。エンジニア同士の話についていけるようになっただけでも、勉強したかいはありました。

あと、プログラミングの基礎を学ぶため Java の学習を始めてみました。こちらも、なんとなく TypeScript を書き始めた自分としては、形のある言語の基礎を学べているのでとても有意義です。

フロントエンドエンジニアの苦悩

そんな経歴のわたくしですが、以下のようなことで悩んでおります。

自分はフロントエンドエンジニアなのか?

  • React, TypeScript がそこそこ使える
    • めちゃくちゃ高度なことはできないけれど、プロジェクトで困らない程度には使えている(はず)
  • ロジック部分よりも、セマンティックなマークアップやデザインに寄り添いつつ破綻しないデザインシステムの構築が得意
  • (一応)認定スクラムマスター

このスキルでフロントエンドエンジニアを名乗っていいのか?わからいので、名乗っていません。

こんな気持です。

けっきょく自分はなにがしたいのか?

Twitter でこんなことをつぶやいたのですが、いまの自分の課題というか悩みは「けっきょく、自分はなにがしたいのか?」が決まらず、いろいろな方面に手を出して全部中途半端な状態になっているということです。

最後に

まとまりがない文章になってしまいました。まだ答えが出ていないので、この記事ではこれ以上書くことはないのです。ご勘弁を!