Haruskah perusahaan perangkat lunak memiliki tim khusus untuk perpustakaan penelitian dan / atau utilitas?

15

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.

Liviu T.
sumber
Beberapa perusahaan tempat saya bekerja, memiliki sedikit orang yang bertanggung jawab mengelola perpustakaan utilitas, di mana setiap pengembang dapat menyarankan kontribusi. Sebagian besar manajer tempat bekerja paruh waktu.
umlcat

Jawaban:

19

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).

Joonas Pulakka
sumber
2
+1 untuk ditanam secara organik. Hal-hal ini sangat sulit untuk diterapkan pada tim.
Jon Hopkins
Saya setuju dengan kerangka kerja organik, itulah yang sebenarnya saya pikirkan :) terima kasih telah mengartikulasikannya.
Liviu T.
+1. Anda selalu dapat memperbaiki kerangka, tetapi mendesainnya di muka juga dapat menyebabkan hal-hal yang digunakan karena mereka ada di sana bahkan jika bukan alat yang tepat untuk pekerjaan itu.
Larry Coleman
Bangun kerangka kerja untuk kebutuhan nyata, bukan yang palsu.
Tulains Córdova
9

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:

  • putar tim antar proyek
  • mengadakan makan siang antar tim dan kelompok diskusi
  • memposting ulasan proyek yang membahas bagaimana masalah diselesaikan (dihadiri oleh tim lain)
  • mengatur area kode wiki yang mungkin dapat digunakan kembali (dan siapa yang harus diajak bicara)
  • Pikirkan tentang memberi insentif penggunaan ulang yang baik - benar-benar membayar orang ekstra untuk melakukannya. Jika menggunakan kembali komponen menghemat 5 hari dan $ 2.000 dalam biaya, mengapa tidak memberikan $ 200 dari apa yang sekarang merupakan keuntungan ekstra untuk tim pada malam hari di akhir proyek (ketika Anda telah memvalidasi bahwa penghematan itu asli)

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.

Jon Hopkins
sumber
3

Itu adalah pekerjaan seorang arsitek .

Tanggung jawab utama seorang arsitek perangkat lunak meliputi:

  • Membatasi pilihan yang tersedia selama pengembangan dengan memilih cara standar untuk mengejar pengembangan aplikasi
  • membuat, mendefinisikan, atau memilih kerangka kerja aplikasi untuk aplikasi tersebut
  • Mengenali potensi penggunaan kembali dalam organisasi atau dalam aplikasi dengan Mengamati dan memahami lingkungan sistem yang lebih luas
  • Membuat desain komponen Memiliki pengetahuan tentang aplikasi lain dalam organisasi

Baca lebih lanjut tentang: - Arsitek perangkat lunak - Arsitek Solusi - Arsitek perusahaan .

Amir Rezaei
sumber
haruskah ada arsitek perangkat lunak untuk setiap proyek, hanya pasangan yang menangani beberapa proyek atau satu per perusahaan?
Liviu T.
Itu tergantung pada seberapa besar proyek tersebut. Mulailah dengan satu Arsitek Perusahaan jika dia membutuhkan lebih banyak bantuan, sewakan lebih banyak. Arsitek Perusahaan memiliki Pemikiran Strategis di seluruh proyek. Baca lebih lanjut tentang jenis Arsitek. Anda mungkin perlu campuran arsitek. en.wikipedia.org/wiki/Software_architect
Amir Rezaei
3

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?

Eric
sumber
3

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.

NateDSaint
sumber
2

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!

Miguel Veloso
sumber
1

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.

David Thornley
sumber
Saya pikir pendekatan yang ideal adalah agar tim perpustakaan / alat menjadi reaktif dan menanggapi permintaan alat dari tim; atau untuk proaktif dalam menanyakan apa yang dibutuhkan tim lain. mereka tidak dapat membuat alat / perpustakaan baru secara terpisah tanpa umpan balik pengguna (tim pengembang lain)
Rudolf Olah
0

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.

JeffO
sumber