日本のフロントエンド開発
問題
とある小学校に新 1 年生が入学してきました。
ところが、その学校では先生が授業を行ってくれません。
学校が授業を行ってくれないので塾に通わせましたが、塾の先生も講義を行ってくれません。
その子の親も教えてくれません。
誰も教えてくれません。
このままではその生徒の成績はずっと成長しません。
どうすればこの子は成績を伸ばすことができるでしょうか。
答え
教科書や参考書を読む、ネットで調べる。
上記のたとえ話は自分が数ヶ月前に考えたもので。
学校と会社って、教育という部分においては大差ないなーと思っています、お金がもらえるかどうかの違いくらいですかね?
で、日本の Web デザイナー及びフロントエンドエンジニア界隈では同じようなことが起きていると強く思っていて。
いわゆる有識者って人が会社に存在しないので、Web デザイナーやフロントエンドエンジニアが全く育ってないんですよね。
となると、上記のたとえ話に沿ったとして。
Web デザイナーやフロントエンドエンジニアとして成長するには、自発的に勉強するしかないよなーと、これは 3 年くらい前から思ってます。
ここ最近、自身のキャリアの進退をすごく考えています。
つまり、フロントエンドエンジニアを辞めようかなと。
ブログにはあまり書いてこなかったのですが、ここ 1 年くらい仕事がうまくいっていません。
で、なーんでうまくいかないのかなーと考えてみたんですが、自分の性格が日本のフロントエンドの現場に向いていないんだろうなと。
フロントエンドエンジニアになって 3 年半近く経ちます。
この 3 年半は、仕事でもプライベートでもずーっとフロントエンド開発、つまり React を用いた開発を行ってきました。
頭数ヶ月くらいは現場の先輩から React のことを色々教えてもらっていたんですが、その割に現場のプロジェクトの進捗はうまくいってなくて。
と同時にプライベートでも React を用いて開発を行っていると、『あれ、なんかおかしくないか?』と思うことが多々あったんですよね。
で、その違和感の正体って、まぎれもなく先輩の教えてくれたことが間違いだらけだったわけです。
つまり、現場で間違った開発を行っているからプロジェクトがうまく進まない。
でもその現場には React の有識者がいないから、何が正しくて何が間違っているか判断するすべがない。
なので必然的に、その先輩に言うことが正とされていて、本人も自分の考えが正しいと思いこんでいる。
だから、平然と間違ったことを教えてくれたわけですね。
そんな経験を 2 回ほど繰り返した時、『このままでは自分の知識がデファクトスタンダードからどんどん外れてしまう』と恐怖を覚えました。
そこからプライベートでの勉強を強化し、自分の React の知識にエビデンスを求めるようになりました。
そんな中、とある現場でフロントのリードエンジニアをやってくれないかという話を頂き、快く引き受けました、当時 27 か 28 の時です。
結局その現場で 1 年くらいリードエンジニアをやったのですが、うまくいく部分もあり、うまくいかない部分もあり、といった感じで終わりました。
で、うまくいった部分はどうでも良いのですが、うまくいかなかった部分は何が良くなかったのか振り返ってみると、
- ネットにエビデンスが乗っていない部分で、自分の知識が足りないところがあった
- フロントエンドの整備を行っても、プロジェクト全体の整備まで行えなかった
の 2 つかなぁと。
1 については正直厳しくて、ネットに答えがなければお手上げ、といった感じです。
ちなみに未だにネットで最適解に出会ったことがありません、なのでエビデンスは弱いです。
ただもちろんこれは言い訳に過ぎず、当時まだまだ現場をこなしていなかった弱さが強く出たなーと、強く反省しました。
2 についてはフロントエンド開発の最も闇の部分だと思っていて、多分自分が今後いくらフロントエンドに関わっていっても直らないのだろうなーと思っています。
Web サービスを作る上でプロジェクトを組む場合、多くの現場で以下のようなチーム構成となっています。
- プロジェクトマネージャーまたはディレクター(違いがわからん)
- Web デザイナー
- フロントエンドエンジニア
- バックエンドエンジニア
プロジェクトマネージャーやディレクターの指示に従って、Web デザイナーやフロントエンドエンジニア、バックエンドエンジニアは動くわけです。
ところがフロントエンドエンジニアの仕事って、Web デザイナーが作ったデザインプロトタイプと、バックエンドエンジニアが作った Api をがっちゃんこするお仕事となります。
つまり、フロントエンドエンジニアって上と左右に挟まれた立場であり、かつ Web デザイナーやバックエンドエンジニアと違い、0 からモノヅクリをする立場ではありません。
基本的に仕事が後手後手に回る立場なので、アジャイル開発的に一番割りを食う立場、言ってしまえば損な立場なのです。
したがって、プロジェクトを円滑に回すためには、メンバー全員がプロジェクトを円滑に回ることを最優先で行う意識を持たなければいけません。
これがつまり、エンジニアに求められるコミュニケーション能力であって、人間性なのかなーと。
Web デザイナーは、プロトタイピングツールを用いたコンポーネント開発を取り入れる。
バックエンドエンジニアは、スキーマファーストで開発をすすめる。
それに呼応して、フロントエンドエンジニアは Storybook やスキーマファーストでの開発を行うことで、プロジェクトの進捗が加速します。
しっかりとした横の繋がりと強いルールの元に開発を行う、これがアジャイル開発に繋がり、円滑なプロジェクト進行だと思っていて。
多分、これがデファクトスタンダードじゃないのかなーと思っています、現時点ではですが。
で、これを実現するのって各メンバーのプロジェクトファーストに対する理解が強くないと絶対に成り立ちません。
これって、言ってしまえばフロントエンドエンジニアの要望に近い部分も大きくて。
自分の経験では、Web デザイナーやバックエンドエンジニアの協力を得られたことは、過去一度としてないです。
それは多分自分の人望の弱さ(無さ?)と、プロジェクトファーストという考え方自体が間違っているのかなぁと、何度も考えてきました。
ただ、例えばデザインプロトタイプが Atomic Design のようなコンポーネント思考に乗っかっていなければ、フロントエンド開発はスムーズに行えず、フロントエンドエンジニアは苦しみます。
例えば Api のスキーマが存在しなければ、TypeScript を用いたエンドポイントの自動生成が行うことが出来ず、一から手で書かなければいけないわけで、やっぱりフロントエンドエンジニアは苦しみます。
これって結果的にフロントエンドエンジニアが苦しみ、プロジェクトの進行が遅れ、やらなくても良い作業を大量にやる必要が出てきて、果たして誰が得をしているのか。
いつも自問自答しつつフロントエンド開発を行っています。
で、これって結局何が一番良くなかったのかと考えてみると、自分がデファクトスタンダードを知ってしまったから良くなかったんですよね。
アジャイル開発やフロントエンド開発って基本的に、デファクトスタンダード、いわゆる正を知ってしまうと損をする傾向にあるなーと。
どこの現場も間違った開発手法を取り入れていて、それが正とされている以上、その手法を全面的に従うのが正しい日本のエンジニアです。
自分も過去何度も「気になることがあったらどんどん言ってくださいね!」と言われたがために、どんどん言ったせいで嫌な顔をされ、現場で干され、契約を解除された経験も何度かあります。
なので、デファクトスタンダードなんて知らないほうが絶対に得だよなぁと。
特にフロントエンドエンジニアは、アメリカや中国の開発手法を知ってしまうと、本当に絶望してしまうので、知らなきことは幸せかなの精神でいることがとても大切だと思います。
自分はフリーランスのフロントエンドエンジニアであったため、正しい開発手法を学ぶことが現場の利益であり、自身のレベルアップに繋がり、お金が沢山稼げると思い込んでいました。
でもそれは大きな大きな間違いで、現場に所属した以上は現場が正であって、それ以外は間違いだということがここ 1 年くらいで強く理解できてきました。
なので、多分自分はフロントエンドエンジニアが向いていないんだろうなーと、少なくとも日本ではそうなんだろうなと、色々とデファクトスタンダードを知りすぎました。
今、日本でフロントエンドエンジニアになるのであれば、自分は btrax か Goodpatch を勧めます。(ちなみに自分は Goodpatch の選考で落ちました^ ▽ ^)
Web サービスを作る上で一番重要なのはお客様ファーストであることだと思っているので、UI/UX、デザインに秀でた会社で働くのが一番良いと思っています。
日本の Web 開発の現場は恐ろしいほどデザイン性を軽視していて、デザインプロトタイプのレビューが行われている現場で働いたことは、少なくとも自分は一度もありません。
どこもバックエンドにやたら力を入れていて、Web デザインとフロントエンドを軽視している、それって多分表側の正が理解できていないからなんだろうなーとは思います。
Web デザインにもフロントエンドにも正はあります。
btrax の CEO である Brandon K. Hill さんは自分が唯一尊敬している方で、freshtraxという btrax のブログで常に日本の現場のデザインに対する意識の低さに警鐘を鳴らされています。
Brandon さんとはぜひ一度お話してみたいです、デザインとフロントエンドについて。
自分が特に感じるのは、日本で生まれた Web サービスで、海外で当たり前のように使われているサービスが、一体いくつ存在するのだろうと。
Google、Amazon、GitHub、Stack Overflow、Medium、Wikipedia、Slack、Twitter、Facebook、ぜーーーーーーーーーーーんぶ海外製!!
日本国内ですらまともに使われている Web サービスって、Qiita とか、Pixiv とか、Freee とか、あと何がありますかね…。
ここ 10 年以上日本の技術力が落ちた生産力が落ちたとしょっちゅうニュースになっていますが、Web 系に至っては勝負の舞台に立ったことすらない印象があります。
これって結局、各企業の上から下まで、Web に対する意識の低さのせいに他ならないと思うんですよね。
いつまで日本だけで戦うねんと、いつまで過去の技術を使い続けているねんと、いつまで現場を正だと勘違いし続けるんだよと。
今年で 31 を迎える自分にとって、今後のキャリアプランをどうすべきか、本当に最近強く考えています。
いかんせん独り身ではない立場になってしまったため、この 1 年がどうだったかはともかくとして、今後下手な一手は打てません。
少なくとも、理想のプロジェクト進行やフロントエンド開発を求め続けるのはやめました、金輪際考えません。
とはいえ本当にフロントエンドエンジニアを続けれるのか、むつかしーですね。
そんなこんなで、過去一で長文のエントリーになったかもしれない、今日このごろです。