見出し画像

美学が見えないフロントエンドエンジニアがちょっと苦手な話

「美学」ってありますか?
ポリシーとか、プライドとか、そんなものに近いんだと思います。

(私の言語化が下手なところがめっちゃ出てます。筋さえ通ってるか怪しいので、お手柔らかに…)


私の「美学」

フロントエンドの実装を行っている時、私の美学が全面に出ます。

  • デザイナーがデザインしたものを限りなく再現する

  • できうる限りテストのカバレッジを高める

  • 関心を分類する

この3点が私の美学だと自負しています。
これが満たせたコードをかけた時のムフフ感は、最高に気持ちいいです。
(きっとこの瞬間、私は気持ちわるい顔をしている)
私はそのために、デザインを理解しようとするし、一生懸命物事を考えながら実装しているつもりです。

私の「美学」の良いところ

もちろん、良いところがあると思って、この美学を掲げています。

デザイナーがデザインしたものを限りなく再現する

「使い勝手」の責任をデザイナーに押し付けることができます。
そもそも私はデザイナーではないので、デザインに責任を持つことができません。
さらに、「使い勝手」が良いかどうか検証するにしても、それはデザイナーがデザインしたUIが前提条件であり、ど素人のエンジニアが作ったものでは、検証に入ることさえできません。
UXの検証が正しくできること、デザイナーが持つべき責任をデザイナーが正しく持てること。
これが再現に対するフロントエンドエンジニアの責任だと私は思っています。

できうる限りテストのカバレッジを高める

弱小エンジニアこそ、テストを書きましょう。
私自身も自分のコードを信用していないのに、レビュワーが私のコードを無条件に信頼できるはずがありません。
しかし、テストがあれば私のコードの説得力を向上させることができます。
正しく動作していること、意図通りのコードであること、これらが再現性を持って保証されるテストは自分を守る防具以外の何者でもありません。
何かが起こった時、私を守ってくれるのはテストだけです。

関心を分類する

テストと似ているかもしれません。  
むしろ、防具を作りやすくするための手段でしかないかもしれません。
関心ごとがきちんと分類できたコードは、テストも書きやすく、保守もしやすい。
コードレビューの品質も上がるので、より不具合を産まないコードになります。

私の「美学」の悪いところ

基本的にしっかり考えること・自ら動くことを求めるので、時間がかかります。
デザイナーとのコミュニケーションコスト、テストに関するキャッチアップの時間、設計を考える時間と実現までの試行錯誤…
慣れるまでは最終的なアウトプットまでに乗り越えないといけないハードルがあります。
これらに価値を見出せないと、なかなかしんどいハードル走になるでしょう。

「美学」が見えないコードが苦手

私は普段Reactを書いているので、React前提で話を進めます。
コードレビューを行っていると、プロダクトごとや文化ごとに全然違うことが見えてきます。
設計や思想が決まっていないプロダクトのコードは、componentの中に副作用がかなり含まれてしまっているため、テストができずに不具合の温床になっています。
また、正しく動いていると言われているコードもそんな状態なので、後から手を加えるのが怖く、似たコードが量産されていき、混沌とした世界が生まれています。
そんな状態のコードをレビューするのは、めちゃめちゃ苦痛です。。。
そもそもこんな状態を放置するぐらいですから、エンジニアにプライドも何もないのかと、不安になります。
(この状態が嫌だというエンジニアは早々に退職していく)

「美学」が見えない現場

大体は次の2つのような特徴があると思います。

  • "現実"ベースで話が進む

  • ひたすら前に進むことばかり求められる

"現実"ベースで話が進む

私の美学は
「現実として、タスクが山積みで時間がない」
「適切なスキルを持った人材がいない」
などの、今の状態に対しては膝をつくしかないのです。
時間とスキルをある程度要することなので、「そんなことやってる暇はない」と言われてしまうとどうにも動けなくなってしまいます。

ひたすら前に進むことばかり求められる

前に進むことを求められる現場では、「どれだけ新しいものを作ったのか」ということばかり評価され、保守的なタスクや質については評価されない傾向にあります。
誰も評価されないことに時間を使いたくはないので、「美学」など後回しになってしまいます。

どうすればいいんだろう

私自身は、私の美学は長期的に見ると間違っていないと思いながら、実装を行っています。
しかし、他の人から見たときに、私が誤って見えている可能性も否定はできません。
私が諦めるしかないのだろうか?
それとも根気強く広めていくべき何だろうか?
日々悶々としています。

残念ながら答えは出ていません。
あと数ヶ月は頑張ってみようと思いますが、答えが出るのはきっともっと先のことなんだと思います。

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