Saya pikir pertanyaannya salah.
Semua startup yang saya ikuti tidak memiliki arsitektur FE-BE saja.
Kebanyakan startup yang saya kenal memiliki:
- Core - produk aktual yang memperlihatkan antarmuka
- UI - BE dan FE. BE menggunakan API Inti.
API bersifat stateless dan mudah diejek - bahkan tanpa membutuhkan Pengembang Inti. Sial, jika saya harus memulai proyek dari awal, saya mungkin mulai dengan seluruh UI yang bekerja murni pada tiruan - yang akan bagus untuk presentasi. Sebagian besar umpan balik adalah karena UI. Pelanggan mencatat bahwa lebih banyak - (tergantung pada audiens target Anda.)
Misalnya - Google Search memiliki komponen Core yang merayapi web, mengindeksnya dll. Dan Google UI adalah dunia yang sama sekali berbeda. Inti ini dapat dengan mudah mendukung pencarian non WWW, sedangkan UI tidak bisa.
Dengan cara ini UI Anda "pluggable" dan Anda memiliki masalah yang terpisah.
Anda merujuk pada Pengetahuan pengembangan, namun Anda mengabaikan aspek manajemen proyek. Sementara tim inti mungkin membutuhkan durasi sprint 2 minggu, tim UI akan menggunakan CI - semuanya diunggah sepanjang waktu. Tim Inti akan membutuhkan kompatibilitas ke belakang sementara UI tidak akan.
Bahasa berbeda. Anda mungkin ingin pengembang C untuk komponen Core - dan Anda akan baik-baik saja jika berjalan pada satu OS, sedangkan UI akan ditulis dalam Bahasa Cross OS.
Tes berbeda. Dunia pengujian UI adalah salah satu yang paling kompleks yang saya tahu dalam pengembangan perangkat lunak. Sebagian besar startup mengabaikannya dan menyesali keputusan ini di kemudian hari. Anda tidak dapat memisahkan BE dan FE saat pengujian. Itu harus menjadi unit tunggal yang menanganinya.
Open Source UI - salah satu manfaat terbesar dari memisahkan keduanya adalah Anda dapat open source UI Anda. Proyek UI membutuhkan dukungan sumber terbuka.
Saya tidak dapat membayangkan pengembang UI yang tidak dapat memahami seluruh session
fitur. Anda tahu - tempat Anda masuk dan tetap masuk di antara berbagai permintaan. Benar mereka mungkin tahu PHP dan bukan Java .. tetapi konsep BE harus jelas (misalnya menggunakan cookie terenkripsi). Hambatan bahasa tertentu salah - setiap pengembang harus mau bekerja dalam bahasa apa pun. Siapa yang mengira mereka akan menulis BE dalam JavaScript beberapa tahun yang lalu?
Jika Anda terus memiliki 3 tim: Core, BE dan FE, itu adalah pemborosan sumber daya. Bagaimana dengan DB? Anda harus memiliki DBA? Mengapa pengembang BE mengetahui DB dan pengembang FE tidak tahu BE dan DB? Tidak ada batasan.
Jika Anda memerlukan ahli, dan Anda akan melakukannya, outsourcing mereka bekerja dengan cukup baik. Mereka biasanya memberikan kode kualitas dan mereka melakukannya dengan sangat cepat. Anda tidak perlu menginginkannya di rumah karena Anda akan tersesat jika mereka pergi. Selain itu Anda bisa mendapatkan saran hebat online hari ini. Barang-barang canggih mungkin memerlukan pendekatan yang berbeda.
Jadi hasilnya pada dasarnya adalah BE yang sangat tipis di UI yang dapat dikembangkan oleh setiap pengembang FE. Jika Anda memiliki BE yang tebal di UI Anda kemungkinan besar memiliki beberapa fungsionalitas API yang diperlukan dalam Core.
Selalu ada setidaknya satu pengembang yang menonjol dari yang lain. Mengingat FE yang tipis, ia dapat mengelola memberikan dukungan (tidak mengembangkan) pengembang lain dalam kode BE. Pendapat saya adalah bahwa pengembang ini berada dalam posisi yang sangat baik dan harus diberikan secara tepat (bukan dalam gaji, sesuatu yang lain). Saya juga percaya bahwa mereka akan dapat menangani proses pembangunan dan pembangunan dengan benar.
Model ini memberi Anda fleksibilitas besar terkait pengembangan BE. Dunia BE telah mengetahui beberapa perubahan haluan dalam beberapa tahun terakhir, jadi saya tidak merekomendasikan terlalu mengandalkan stabilitas BE. Inti adalah cerita yang berbeda.
Masih ada pertanyaan - haruskah FE dan BE menjadi proyek yang sama ? Anda harus perhatikan yang berikut ini
- Sumber daya statis paling baik dilayani dari server depan. Karena server Front-End (misalnya nginx) sangat kuat dan karena Anda dapat menggunakan Cache untuk sumber daya statis, Anda dapat mengelola dengan satu penyebaran sumber daya statis Anda (yang seharusnya semua konten HTML, JS, CSS, Gambar).
- Kode backend tidak memiliki kemewahan yang sama, jadi Anda harus memiliki sistem terdistribusi - yang juga dikelola oleh server-depan.
- Kode FE harus digunakan kembali dengan semua teknologi baru yang mendukung JavaScript. Anda sekarang dapat menulis aplikasi Desktop dan Mobile dengan JavaScript.
- Proses pembuatannya benar-benar berbeda - dan itu bahkan dapat mencakup pengiriman tambalan, peningkatan, pemasangan dll.
Saya dapat melanjutkan, tetapi saya harap jelas bahwa saya pikir BE dan FE harus tim yang sama, tetapi mungkin proyek yang berbeda.
if you have a startup, don't assign roles. Better hope that you assembled a good self organizing team. If everybody knows each other, everybody knows who does what the best.