ここでおすすめの本は『Web フルスタックエンジニアの自己修養』です。読んでいる間に自分も分析に入り込み、このノートを書きました。
「フルスタックエンジニアは IT 業界の新星となりつつあり、上場しているインターネット企業でもスタートアップでも、フルスタックエンジニアに対する需要が高まっています。本書の著者はテンセントの上級エンジニアで、フロントエンド、バックエンド、アプリ開発において豊富な経験を持ち、本書ではフルスタックエンジニアのスキルと要件、コア競争力、将来の発展方向、モバイル端末に対する考察を共有しています。さらに、本書では著者がゼロから始めた学びの心得も詳細に記録されています。本書の内容は包括的で客観的かつ実践的であり、インターネット業界の新人やプログラマー、技術転換を期待する従事者にとって参考になります。」
著者の余果は西安クリックテクノロジー大学ソフトウェア工学部を卒業し、かつてテンセントのソーシャルユーザーエクスペリエンスデザイン部の上級 UI エンジニア、フロントエンド開発責任者を務め、複数のプロジェクトの製品デザインを担当しました。自身の経験を元にこの本を書きました。
自身のことから始めると、技術と機械への愛情が彼をコンピュータ業界に導きました。本書では、彼が理性的思考と感性的思考を組み合わせてフルスタックエンジニアを深く分析していることがしばしば言及されています。
フルスタックエンジニアとは、データベース、サーバー、システムエンジニアリング、クライアントサイドのすべての作業を処理できるエンジニアを指します。プロジェクトによって、クライアントが必要とするのはモバイルスタック、Web スタック、またはネイティブアプリケーションスタックかもしれません。これが公式の定義です。私の現在のフロントエンドに関する考えを簡単に言えば、つまり一人がフロントエンドとバックエンドを担当し、データを処理してプロジェクトを維持し、デザインも自分で行うということです。
多くの人がフルスタックには多くの利点があると言います。多くの人が異なるタイミングで作業し、思考が一致しないことを心配する必要がなく、プロジェクトの成果物がそれぞれの考えと異なることがないからです。フルスタックは一人で全てのプロセスを担当し、すべてが自分の頭の中にあります。
私がこの業界に入ってまだ日が浅いせいか、フルスタックはあまり合理的な存在ではないと思います。例を挙げると、流れ作業がまだ存在しない時代、手作業の工房では基本的に一人がすべての製品制作を担当していました。原材料から制作、磨き、完成品まで、多くのステップを経るかもしれませんが、一人で完璧に作り上げることができました。これがフルスタックエンジニアのような存在です。
生産ラインはチームに似ており、製品、UI、フロントエンド、バックエンドテストなど、各自が相互に協力します。
フルスタックとチームを比べると、私個人としてはチームの利点が大きいと感じますが、経営者は一人で三人分の仕事をすることを好み、フルスタックを好む傾向があります。
フルスタックを育成するには、時間と労力が想像を超えるほどかかり、成功するかどうかも不確かですが、特定の技術分野に特化すれば、高級エンジニアになる確率はフルスタックよりもはるかに高いです。もちろん、これは私個人の推測であり、具体的なデータはありません。
本書でも言及されていますが、流れ作業のもう一つの利点は、特定のエンジニアに依存しないことです。たとえその従業員を失っても、他の人が仕事を引き継ぐことができます。
チーム化の利点について多く述べましたが、欠点がないわけではありません。確かにいくつかの欠点があります。本書でまとめられた点は以下の通りです:
- エンジニアの責任が不明確で効率が低下する
- エンジニアがオーナーシップを欠くため、製品の質が低下する
- エンジニアが全体的な視野を欠くことで個人の成長に影響を与える
- 役割が増えることでプロジェクトの効率が低下する
「各自が役割を果たす作業フローは効率が低く、コストが高いという欠点があるため、多くのスタートアップは完全な流れ作業を整備せず、より柔軟な方法でチームを構築することを望んでいます。そのため、フルスタックエンジニアは理想的な選択肢となっています。しかし、フルスタックエンジニアの台頭は、技術の進展と PaaS サービスを提供するプラットフォームの増加という二つの重要な要因からも離れられません。」
フルスタックエンジニアになるには多くの時間と労力を費やす必要がありますが、この考え方は私が好きです。例えば、a、b、c の三人がいて、それぞれ自分の専門分野に特化しています。ある日、彼らが共同で担当しているプロジェクトに小さな問題が発生しましたが、問題がどの分野にあるのかはまだわかりません。小さな問題ですが、各自が一度確認する必要があります。三つの分野があるため、二人の確認は無駄になる可能性があり、これが別の方向からプロジェクトの効率を低下させます。
その時、s というエンジニアがいます。彼はフルスタックエンジニアではなく、ただ多くの分野の技術を学ぶのが好きで、あまり高度ではない技術知識をいくつか習得しています。彼が一度確認したところ、すぐに問題の所在を見つけました。
彼一人の効率は三人分に相当します。実際、こう言うのは厳密ではありませんが、例えとして言っています。
突然思い出した言葉がありますが、正確かどうかはわかりません。
「フルスタックの職種は存在することが不合理ですが、フルスタックの思考は向上心のあるエンジニアにとって必須です。」