Saya bekerja di sebuah perusahaan yang melakukan aplikasi web untuk berbagai bank dan beberapa toko elektronik kecil. Kami mempekerjakan sekitar 20 pengembang dan memiliki 4-5 proyek dalam pengembangan pada satu waktu. Tim pengembang kami tidak berinteraksi banyak dan banyak masalah yang sama dilakukan dengan berbagai cara (baik ke buruk).
Saya bertanya-tanya apakah itu akan menjadi ide yang baik bagi perusahaan untuk memiliki tim programmer yang melakukan penelitian pada kerangka kerja saat ini dan terus meningkatkan perpustakaan fungsi umum dan kerangka kerja umum untuk membangun proyek saat ini dan masa depan jauh lebih cepat dan lebih efisien.
Sebesar apa tim seperti ini?
Haruskah ia memiliki anggota tetap yang melatih orang lain atau haruskah merotasi orang?
Pembaruan: Saya sedang memikirkan proyek umum yang dapat dikerjakan orang untuk bersenang-senang yang mungkin memicu minat. Tampaknya ketika orang memiliki tekanan pekerjaan, solusi yang mereka buat bukanlah yang terbaik.
sumber
Jawaban:
Satu poin penting adalah bahwa tidak mungkin untuk mengembangkan kerangka kerja yang baik dalam isolasi total. Kerangka kerja yang baik tumbuh secara organik : ketika seorang programmer memperhatikan bahwa ia membutuhkan beberapa fungsi spesifik, ia menambahkannya ke kerangka kerja, dan kerangka kerja itu tumbuh sedikit demi sedikit - sebagai lawan dari merancang "kerangka kerja sempurna" di depan, yang tidak pernah berhasil, karena arsitek tidak dapat menyadari semua akhirnya memunculkan use case.
Tentu saja, kerangka kerja yang tumbuh secara organis memiliki kelemahan yaitu integritas internalnya mungkin tidak terlalu baik, dan itu berubah menjadi spageti. Jika tim Anda menjaga komunikasi internal yang baik, maka Anda mungkin dapat menggabungkan yang terbaik dari kedua dunia: tim arsitek yang terpisah menjaga integritas kerangka kerja, tetapi membangun untuk kebutuhan nyata pengguna akhir (pengembang).
sumber
Perasaan saya tidak.
Apa yang saya curigai akan Anda temukan jika Anda melakukan ini adalah bahwa alih-alih memiliki tim individual yang memproduksi perpustakaan yang tidak ada orang di luar tim yang digunakan, Anda akan memiliki tim khusus yang memproduksi perpustakaan yang tidak seorang pun di luar tim yang digunakan (dan melakukannya dengan biaya tambahan yang cukup besar).
Ada berbagai macam masalah dengan jenis tim yang Anda uraikan, tetapi bagi saya yang utama adalah bahwa itu tidak mengatasi masalah yang sebenarnya Anda miliki.
Masalah yang Anda miliki bukanlah siapa yang memproduksi perpustakaan (dengan suara hal-hal yang sudah Anda miliki banyak solusi untuk masalah ini jadi bagaimana satu lagi akan membantu?), Itu adalah bahwa tim tidak berbicara dan berinteraksi.
Ada alasan bagus mengapa tim tidak menggunakan kembali satu sama lain kode (misalnya bahwa masalah sementara dangkal serupa agak berbeda, atau bahwa waktu proyek tidak memungkinkan untuk ketergantungan tambahan mengembangkan sesuatu bersama-sama), tetapi Anda perlu lihat bagaimana Anda bisa membuat mereka berinteraksi jika memungkinkan.
Saya sarankan:
Saya kira, tim perpustakaan adalah overhead tanpa manfaat.
Dalam hal itu menjadi proyek umum yang dikerjakan pengembang untuk bersenang-senang - tidak ada perusahaan yang harus bergantung pada pemrogram yang mengerjakan hal-hal dalam waktu mereka sendiri. Itu hanya lembur yang tidak dibayar dan, dalam hal apa pun, tidak dapat diandalkan karena kemungkinan akan ada periode besar di mana tidak seorang pun ingin mengerjakan sesuatu.
Jika Anda mengatakan itu akan menjadi orang yang bekerja di waktu perusahaan di antara proyek maka mungkin itu bisa bekerja tetapi saya masih tidak berpikir itu masalah sebenarnya. Anda masih perlu mencari tahu bagaimana Anda akan membuat orang menggunakan perpustakaan. Seperti yang saya katakan, Anda sudah memiliki solusi untuk masalah ini yang sedang dikembangkan di setiap proyek, masalah Anda adalah mengapa mereka tidak dibagikan.
sumber
Itu adalah pekerjaan seorang arsitek .
Tanggung jawab utama seorang arsitek perangkat lunak meliputi:
Baca lebih lanjut tentang: - Arsitek perangkat lunak - Arsitek Solusi - Arsitek perusahaan .
sumber
Pepatah " Makan makanan anjing Anda sendiri " membahas masalah ini. Jika top-cool-rockstar-coder Anda melahirkan perpustakaan yang tidak pernah ia gunakan dalam praktik, bagaimana ia bisa mengatakan bahwa itu adalah perpustakaan yang bagus?
Alasan utama untuk mengembangkan fungsionalitas ke dalam kerangka kerja adalah
1.Hal ini berguna untuk pengembang
2.Ada beberapa kasus di mana telah berguna
3. Mungkin bermanfaat bagi orang lain
Saat Anda menekan 2, fungsionalitasnya sudah ada di sana, bagaimana Anda bisa meneruskannya ke orang lain?
sumber
Saya sedikit terlambat ke permainan tetapi saya merasa seperti tidak ada yang mengatasi ini:
Tim individual Anda yang memecahkan masalah yang berbeda dengan cara yang berbeda pasti akan mendapat manfaat dari fungsi bersama, dan ada berbagai cara untuk mendapatkannya dengan cara yang tidak mengabdikan satu tim untuk mengembangkannya, tetapi saya telah melihat banyak hal tempat yang dilakukan.
Dalam sebagian besar kasus, saya melihat ini disebut sebagai "inti" dari lini produk Anda, dan kadang-kadang ada tim yang bertugas merawatnya, dipimpin oleh (seperti yang disarankan Amir) seorang arsitek. Ini biasanya bagaimana Anda akan dapat menemukan cara untuk meningkatkan atau membuat kerangka kerja yang mengikuti standar ketat yang Anda tetapkan dalam organisasi Anda, tetapi hanya menyediakan fungsionalitas paling telanjang yang mungkin atau mungkin tidak perlu diperluas ke aplikasi lengkap. yang ditawarkan tim produk individual Anda. Ini memungkinkan Anda mendapatkan manfaat dari "dogfooding" kode inti Anda dengan mengimplementasikannya di setiap tempat yang Anda gunakan, dan kemudian juga bercabang ke berbagai produk yang mungkin memiliki implementasi yang sama sekali berbeda. Ini memungkinkan semua tim Anda untuk berkontribusi ke pustaka inti tetapi tidak merobohkannya dengan fungsionalitas yang hanya mereka butuhkan.
sumber
Saya pikir itu BUKAN BAIK IDE , karena untuk perpustakaan menjadi berguna mereka harus membantu Anda memecahkan masalah proyek nyata, dan Anda hanya mengenal mereka dengan, baik ... bekerja di proyek nyata.
Kalau tidak, Anda dapat mengakhiri dengan perpustakaan yang "secara teori" sangat bagus!
sumber
Di satu perusahaan tempat saya bekerja yang benar-benar memiliki hal serupa, sepertinya tidak bekerja dengan baik. Orang-orang di tim dalam akan datang dengan ide yang rapi dan datang dengan prototipe yang kebanyakan berhasil, kemudian melewati dinding dan kami diharapkan mengubahnya menjadi sebuah produk.
Apa yang saya harapkan terjadi adalah bahwa grup alat akan berakhir dengan program kecilnya sendiri, menghasilkan fungsi yang tidak terlalu berguna, tetapi yang mengacaukan API dan digunakan cukup sehingga mereka tidak dapat dengan mudah menjadi dihapus. Mereka tidak akan mendokumentasikan secara memadai.
Jika grup alat cukup di bawah arsitek sistem yang terus-menerus berhubungan dengan orang-orang yang benar-benar menggunakan alat, itu mungkin berhasil. Jika grup alat diputar sering (yang akan menghambat melakukan banyak penelitian eksterior) itu mungkin berhasil. Namun, saya takut kehilangan kontak dengan orang-orang yang melakukan pekerjaan pembayaran.
sumber
Berapa banyak waktu yang akan Anda habiskan untuk berdebat apakah menggunakan kerangka kerja akan menguntungkan dalam semua kasus? Apakah proyek tertunda dengan menunggu kerangka kerja ditingkatkan? Pada titik tertentu penggunaan kerangka kerja harus dibutuhkan untuk membenarkan keberadaannya.
sumber