Apakah setiap anggota tim yang gesit perlu menjadi pengembang perangkat lunak?

8

Kami baru-baru ini mulai menggunakan metodologi tangkas di perusahaan saya. Karena saya cukup baru untuk gesit, saya bertanya-tanya apakah cara kami menerapkannya benar sesuai dengan prinsip-prinsip dasar tangkas.

Sebelumnya, kami memiliki peran seperti analis bisnis, penguji QA, dan pengembang perangkat lunak. Tetapi sekarang manajemen telah memutuskan bahwa peran ini harus dihapus dan semua orang akan bekerja sebagai pengembang perangkat lunak.

Dalam praktiknya, ini berarti bahwa satu pengembang perangkat lunak akan memiliki tanggung jawab yang sama dengan tiga peran terpisah sebelumnya (yaitu satu analis bisnis, satu tester QA dan satu pengembang perangkat lunak).

Mereka membenarkan perubahan dengan fakta bahwa ini gesit. Apakah ini cara perusahaan lain juga menerapkan gesit?

tsardine
sumber

Jawaban:

15

Tidak. Ini jelas tidak gesit. Itu juga bukan ide yang bagus.

Tim lintas fungsi, yaitu tim yang mencakup setiap peran (analis, admin server, admin basis data, perancang UX, penguji QA, penulis teknis, perancang grafis) yang diperlukan untuk berhasil memberikan perangkat lunak yang berfungsi, merupakan bahan pokok dari banyak metodologi lincah. Bahkan, dalam banyak metodologi, pelanggan itu sendiri juga dianggap sebagai bagian dari tim.

Sebenarnya, ini ortogonal untuk gesit. Tim lintas fungsi adalah ide yang bagus, terlepas dari apakah Anda gesit atau tidak.

Apa yang benar, bagaimanapun, adalah bahwa dengan peningkatan konstan pengujian otomatis, pengujian pengembang, pengembangan yang didorong oleh pengujian dan perilaku di satu sisi, dan infrastruktur yang ditentukan perangkat lunak, commissioning, konfigurasi, dan penyebaran yang sangat otomatis, DevOps, dan hosting awan, beberapa beban kerja mungkin telah bergeser dari admin ke insinyur DevOps, dan dari QA ke pengembangan. Namun, itu tidak berarti bahwa peran itu punah. Ini hanya berarti bahwa QA memiliki bug lebih menarik untuk dikejar karena semua yang sepele telah ditemukan oleh pengujian pengembang, dan admin lebih fokus pada memungkinkan DevOps untuk mengelola infrastruktur dengan alat otomatis daripada mengelola sendiri.

Ada tes mudah untuk memeriksa apakah sesuatu itu gesit: ketika seseorang mengatakan "Anda melakukan ini karena gesit", maka itu tidak tangkas. Agile adalah semua tentang tim yang mengatur diri sendiri yang secara konstan merefleksikan proses mereka dan menyesuaikannya. Setiap kali seseorang mengatakan "kamu melakukan ini", maka itu tidak tangkas. Itu hanya tangkas ketika tim mengatakan " kami melakukan ini, karena setelah merefleksikan pengalaman masa lalu kami, kami telah menentukan bahwa itu berhasil, dan kami akan terus merefleksikannya dan berhenti melakukannya segera setelah kami menentukan tidak."

Jörg W Mittag
sumber
5

Apakah ini cara perusahaan lain juga menerapkan gesit?

Sayangnya ya. Ada banyak perusahaan di mana Agile dipaksakan oleh manajemen, atau setidaknya apa yang mereka anggap Agile (yang tentu saja tidak).

Jika Anda melihat dalam panduan Scrum , yang mungkin berasal dari mana manajemen Anda mengambil ide tersebut, Anda akan menemukan ini:

Scrum tidak mengenali judul untuk anggota Tim Pengembangan selain Pengembang, terlepas dari pekerjaan yang dilakukan oleh orang tersebut

Tetapi gagasan bahwa setiap orang dalam tim menjadi "pengembang" adalah bahwa tanpa peran mereka (QA, programmer, desainer, dll), mereka semua berkontribusi pada pengembangan aplikasi, bersama-sama, dengan upaya yang sama, dan responsabilitas dan akuntabilitas yang sama. . Programmer tidak lebih penting daripada tester hanya karena dia menulis kode dan tester hanya mengujinya, perancang tidak membuat wireframes kemudian menghilang sementara pengembang front-end mengimplementasikannya. Setiap orang penting. Semua orang berkontribusi. Jadi semua orang sama dalam hal ini. Jabatan tidak penting. Jadi itu sebabnya semua orang adalah "pengembang".

Tapi itu tidak berarti tiba-tiba perancang mulai melakukan arsitektur aplikasi atau menulis kode. Dan dengan pemikiran yang sama, hanya karena Anda sekarang semua "pengembang" karena manajemen mengatakan demikian, itu tidak berarti Anda melakukan Agile.

Bogdan
sumber
3

Apa yang mereka lakukan adalah omong kosong. Misalnya, jika Anda membuat pengembang perangkat lunak mengambil peran QA:

Pertama, pengembang perangkat lunak tidak memiliki pengalaman yang diperlukan. Itu semua hal yang bisa dipelajari, tetapi saya pribadi akan mulai sebagai insinyur QA junior, yang jauh kurang efektif daripada melakukan pekerjaan pengembangan perangkat lunak.

Dua, orang memiliki bakat yang berbeda dan pergi ke posisi di mana bakat mereka diperhitungkan. Orang menjadi pengembang perangkat lunak karena mereka memiliki bakat untuk itu, dan orang lain menjadi insinyur QA karena mereka memiliki bakat untuk itu. Dan keduanya akan kurang baik dalam pekerjaan lainnya.

Ketiga, jika orang yang sama melakukan pengembangan perangkat lunak dan QA, mereka berada dalam konflik. QA menemukan masalah yang menyebabkan pengembang perangkat lunak bekerja lebih banyak. Pengembang perangkat lunak, seperti semua orang, tidak menyukai lebih banyak pekerjaan. Jadi apa yang Anda harapkan dilakukan oleh pengembang perangkat lunak yang bekerja sebagai QA?

gnasher729
sumber
3

Meskipun asal-usul Agile berada di ranah pengembangan perangkat lunak, pendekatan iteratif terhadap pengembangan telah ada sejak akhir 50-an dan digunakan pada masa awal NASA (lihat https://en.wikipedia.org/wiki/Iterative_and_incremental_development ). Tim-tim ini jelas hanya insinyur perangkat lunak.

Kami telah berhasil menggunakan berbagai pendekatan Agile di perusahaan saya dan untuk mentor tim robotika. Konsep sprint, paku, dan desain berulang dengan epos menyeluruh telah terbukti sangat sukses di seluruh tim - perangkat lunak, perangkat keras, CAD, pemasaran, dll. Untuk ini kami tidak memiliki infrastruktur "DevOps", yang dilakukan anak-anak prototyping dan demonstrasi pembelajaran mereka pada sprint dua minggu. Keputusan tentang bagaimana melanjutkan dibuat dari sana, tetapi pada intinya adalah robot yang secara bertahap lebih baik setiap sprint. Dari segi peran, ini terdiri dari "pengembang perangkat lunak", "CAD pria", "pembangun" dan "penjangkauan". Mayoritas tim ini TIDAK terlibat langsung dalam perangkat lunak pengkodean.

Untuk perusahaan perangkat lunak saya, tim biasanya terdiri dari pengembang, penguji, devops, desainer, dan dukungan.

Secara umum, Agile bukanlah satu hal dan ada banyak pendekatan untuk menerapkan filosofi. Tapi intinya adalah ide pengembangan berulang, memecah pekerjaan menjadi tugas-tugas pendek, dan evaluasi ulang terus menerus. Hal-hal seperti rapat scrum harian, jaminan simpanan, cerita pengguna, dll sering digunakan tetapi tidak dengan cara apa pun diperlukan untuk menjadi "Agile". Agile adalah tentang beradaptasi terus-menerus, dan itu termasuk cara tim tertentu mengimplementasikan Agile sendiri.

Jadi, jawaban singkat - tim manajemen Anda entah tidak mengerti Agile atau menggunakan ini sebagai semacam pembenaran untuk menghilangkan hal-hal yang mereka rasa hanya buang-buang uang. Mungkin dibenarkan untuk membuat perubahan, tetapi itu bukan karena Agile hanya untuk programmer.

Steve
sumber