
【バックエンドエンジニアがつらい理由】フロントの方が楽!解決するには?
はじめに
私は元々、Railsを中心としたバックエンド側のエンジニアを4年ほど経験した後に、Reactを中心としたフロント側の仕事をするようになったのですが
バックエンドよりフロントエンドの方が圧倒的に楽だとマジで思いました。
ちょっと誤解を生みかねないけど、様々な観点から議論できる問題だと思う。
なので、今回の記事では、僕が考えるフロントエンドの方が楽な理由を、詳しく解説していきます。
そして、今バックエンドで働いてる方で「バックエンド辛いな・・・」と思ってる方へ、華麗に解決法をご提示させて頂きます。
バックエンドエンジニアがつらい理由
バックエンドの方が辛いと切実に感じた出来事
一番最初にも書いた通り、私は元々Railsをメインとしてバックエンドエンジニアをやってました。
フリーランスでやってたので、様々な現場を渡り歩いてきたのですが、
Railsの現場は一個の現場で中々ハイパフォーマンスが出せても、
別の現場に行くと幾度となく詰まって地獄を味わうことが度々ありました。
そして重要なこととして、フロントエンドエンジニアになってからは、そういう地獄を受ける回数は極端に減りました。
プログラミングで一番辛いのは仕様を満たせないこと
私はこのブログでも常々言ってきているのですが、
プログラミングで一番辛いのって、
『定められた仕様を満たせない』ことだと思っています。
有り体に言えば、動くコード実装できねえ問題です。
参考 : 【辛いけど】新卒でプログラマー。大正解だと思う諦めないで
で、バックエンドとフロントエンドを比べたとき、
圧倒的にバックエンドの方が『動かねえ』ことが頻発します。
最近はReactなどの登場によって、
フロントエンド周りの覚えなきゃいけない知識が増えましたが、
結局はスクリーンの見た目やUXを作るだけ。
パフォーマンスの問題は突き詰めれば、
バックエンドもフロントエンドも難しいのかもしれないけど、
俺が今話してるのは、日銭を稼ぐために働く場合の話しです。
フロントエンドの方が楽だと思った理由
フロントエンドエンジニアの歴史
そもそもだが、フロントエンドエンジニアというのは、
最初は単純にhtmlとcssで画面を作るコーダーみたいな感じで捉えられてました。
率直に言ってしまえば、下に見られてた傾向があります。
プログラマーというよりかは、コーダー?デザイナー?
みたいな立ち位置だったと思う。
でも、最近では技術の進歩が追いついてきて、
より高度なUXを提供しようと発展したのが、
ReactやVueなどです。
フロントエンドは開発環境の構築も楽です
ReactなどのSPAなどが出始めてから、
バックエンドとフロントエンドの環境が独立しつつあります。
そうなると、我々フロントエンドエンジニアは、
バックエンドのことなど気にすることなく環境構築に入れます。
大概、フロントエンドの環境っていうのは、バージョン合わせて npmかyarnをstartさせれば動く。
でも、例えばこれがGoとかを考えてみたら末恐ろしい。
Go入れて、パスも通して、dbの設定して、
三回くらい環境に依存したようなコマンドうつことになる。
フロントエンドエンジニアは詰まりにくい
フロントエンドの仕事は、
デザインとUXを美しくすることですので、
ぶっちゃけて言ってしまえば、正解があやふやなことがあります。
『Aの実装をするのが難しいから、Bという実装でいいですか?こっちの方がユーザーのも使いやすいと思う』
みたいな議論が通りやすいんですね。
マネジメントする側も、最終的には『ユーザーが使い易ければoK』となります。
これは、エンジニアやってる人ならわかると思うんだけど、
こういう融通が効き始めると現場での仕事が格段に楽になります。
これはバックエンドも同じ。
が、バックエンドはこういう議論がしづらいのが正直なところです。
何故ならバックエンドは機能が出来るか否かにフォーカスされやすいからです。
- 『ユーザーがアイテムを消せる』
- 『ユーザーがアイテムを使う』
- 『HPがゼロになったらユーザーは死亡する』
みたいなタスクがあったとして、
『hpがゼロになっても死なないようにしませんか?』とは言えない。
(極端だけど)
つまり、バックエンドは必ず成し遂げなければいけないタスクに遭遇することが多い訳です。
バックエンドは本番環境でデプロイしたら動かない
僕は活でRailsをいじってたことがあるんですけど、
AWSでデプロイしたら、
何故か本番で動かないことがありました。
理由は様々なんだけど、
とにかくバックエンドはインフラやDBのことも考えないといけない。
フロントエンドみたいに
『使いにくい』とか『遅い』とか以上に大変な事態が頻発する。
例えば、
『サーバーが落ちる』とか『メモリリークする』とか『データが消える』とか。
それに比べてフロント側はapi叩くだけですから。w
フロントエンド開発の方が収入も高いです
SPAの登場で、
フロントエンドは大きく変わりました。
先ほども申し上げたように、
最初は『フロントエンドはHTMLとCSSで実装するプログラマーではない』
みたいな印象があったのですが、
reactの登場により立場が超激変しています。
それで、reactはfacebookが開発してるので、
お金も沢山あり、リッチなUXを作れるエンジニアの価値は急騰しています。
昔はバックエンドの方が価値が高かったですが、
今はどっちも同じくらいの年収が狙えます。
バックエンドエンジニアが辛い人が解決する方法
バックエンドエンジニアとして成長する
結局のところ、バックエンドエンジニアが辛い理由は、普通に仕事が上手く出来ないからなので、
究極、スキルアップすれば問題は即解決できる問題です。スキルアップするには、
自分が携わっているプログラミング言語を学ぶだけではなく、Web技術を網羅的に学ぶことがお勧めです。
Webやサーバー系の本をたくさん読む
Webやサーバー系の本をたくさん読んでみましょう。
エンジニアはググりながら勉強すれば本はあまり必要ないと言う人もいるけど、
読書量に比例し技術力の深さも増していくことは、歴然とした事実として、やっぱりあります。
殊更、バックエンドはフルスタック寄りな働き方を求められる現場もそこそこ多いので、
自分が学んでいる言語だけではなく、網羅的にWebやサーバーの知見を学んでおくと、詰まることが減ってくはずです。
例えば、ここら辺の本はバックエンドでやってくなら必読、この本をしっかり読み込むだけで、だいぶ人生変わると思う。
別のポジションに移動する
バックエンドエンジニアとしての仕事が辛ければ、ポジションを変えることをお勧めします。
この記事の中でも色々と書きましたが、バックエンドエンジニアは、フロントエンドよりも明らかに難しいです。
現場が変わるたびに難しいことに直面するので心身ともに疲弊します。
私自信、バックエンドからフロントエンドに移って凄く仕事が楽になりました。
エージェントや転職サイトを使う
未経験から他のポジションに移動できるの?と思われる方もいると思うのですが、余裕です。
例えば、Railsとかでバックエンド経験ある人は、普通にReact案件も未経験から取れるはずです。
やり方としてはシンプルで、転職サイトか、フリーランスエージェントを使いましょう。
エンジニア転職なら転職ドラフトがオススメだし、
フリーランス案件をお探しならフォスターフリーランスとかがオススメです。
まとめ
ここまで色々話してきましたが、
もちろん仕事の難易度は現場によって変わります。
先ほど言ったように、
『こっちでもいいすかね?』みたいな議論がすぐ通るのであれば、
難しい制約の中で実装しなくていいので、どんな仕事でも楽になるし、
例えフロントでも、TypeScriptとか使って、コード規約厳しく、
『お前そんな風に実装せずこうやれ!』みたいな感じで全然PR通らなければキツくなります。
まあ、ケースバイケースってことだよな。
でも、いずれにせよバックエンドは面倒くさいよ!