Isi kandungan:
Menjadi pasukan pengembangan perisian yang tangkas tentunya bermaksud perkara yang berbeza bagi orang yang berbeza. Terdapat tahap pengadopsian di spektrum yang sangat luas, dengan organisasi yang nampaknya sangat sedikit yang menganggap mereka melakukannya dengan baik. Menurut State of Agile Survey VersionOne (dikeluarkan pada bulan April 2017), 80% responden mereka mengatakan bahawa mereka "berada di bawah tahap yang masih matang." Malangnya, pasukan pembangunan sering tidak berusaha keras untuk bahagian "belajar" dari lelaran. Kami ingin bergegas dan menyelesaikan upacara Scrum agar kami dapat kembali menulis kod. Lagipun, ada banyak kerja yang perlu dilakukan! Tetapi adakah masa pengekodan yang mencukupi tidak menjadi masalah?
Bagi kebanyakan daripada kita, pemadaman kebakaran mungkin disenaraikan secara khusus dalam keterangan pekerjaan kita. Kami pergi bekerja setiap hari dengan mengetahui bahawa kami perlu bersedia untuk meluncur di tiang seketika, mengambil topi kami, dan melompat ke atas trak. Kami menerimanya sebagaimana adanya, dan kami menganggap tidak ada yang dapat kami lakukan mengenainya. Tetapi, bagaimana jika punca perjuangan kita adalah kekurangan kecekapan yang teruk? Semua orang tahu betapa pentingnya melakukannya dengan lebih baik daripada syarikat lain di sana. Nampaknya kita tidak sampai di sana — sepertinya kita tidak mempunyai lebar jalur. Pengurus menambah lebih banyak orang dan meningkatkan ukuran organisasi mereka dan masih mempunyai perjuangan yang sama. Anda nampaknya tidak dapat mengatasi masalah kerana pasukan anda tidak mengembangkan perisian dengan cekap (dan anda tidak sendirian).
Prinsip dalam Pembangunan yang Cekap
Pixabay
Jadi apa yang menyebabkan kita tidak cekap? Bagi kebanyakan kita, perkara pertama yang terlintas dalam fikiran adalah kekurangan automasi (binaan automatik, penyebaran, pengujian). "Setelah kita mempunyai automasi yang cukup, hidup akan menjadi lebih baik." Malangnya itu hanya sebahagian daripada penyelesaiannya. Pertimbangkan kesan kerja semula pada projek anda. Kaedah yang paling cekap untuk membina ciri adalah membinanya sekali dengan betul dan tidak pernah kembali dan menyentuhnya lagi. Bug, refactoring, dan aktiviti serupa lainnya pada dasarnya membuka semula pesakit setelah dia keluar dari bilik operasi dan ada risiko yang berkaitan dengannya. Kita tidak dapat menghilangkan pengerjaan semula, tetapi kita mesti berusaha untuk mengurangkannya.
"Tetapi tidak merangkul tangkas mengolah semula (mis. Refactoring)?" Ini benar-benar berlaku, kerana pencipta tangkas memahami bahawa dua penyebab utama kerja semula adalah keadaan yang tidak dijangka dan perubahan keperluan perniagaan. Ternyata manusia dahsyat dalam meramal masa depan. Pencipta yang tangkas juga memahami bahawa penyumbang ketidakcekapan yang besar adalah apa yang disebut oleh pemaju "penyaduran emas" - pembungkusan dalam fungsi yang kami rasa seseorang akan gunakan walaupun pengguna akhir tidak pernah benar-benar memintanya. Ini seperti daging babi untuk produk perisian anda - membuang masa sepenuhnya. "Jangan membina stesen angkasa ketika semua yang mereka minta adalah Volvo." Oleh itu, syarikat dengan bijak mula meninggalkan daging babi dan menggunakan refactoring sebaliknya, hanya menambah fungsi apabila ada keperluan yang jelas. Tetapi ketidakpastian hidup bukan satu-satunya pemacu untuk kerja semula, bukan?
Maklumat terperinci yang hilang pada tahap pembangunan ciri akhirnya akan membuang masa dan wang. Bekerjasama dengan berkesan di muka akan, seiring berjalannya waktu, menjimatkan banyak kerja semula (menangani keperluan yang tidak dijawab, reka bentuk yang rabun, dll.) Kita semua mempunyai titik buta, dan kita semua memerlukan set mata tambahan. Banyak pasukan pembangunan menerapkannya di bahagian belakang semasa tinjauan kod, tetapi menggunakan lebih sedikit tenaga untuk berkolaborasi lebih awal apabila masalah dapat diselesaikan dengan murah dan setelah pelaburan minimum.
Berapa kali anda melaksanakan satu ciri dan menemui kekurangan yang ketara yang seharusnya dapat dilihat semasa perbincangan keperluan / reka bentuk? Ia seperti cuba memandu dari Atlanta ke Montgomery dan menyedari beberapa jam perjalanan yang anda lalui secara tidak sengaja ke Birmingham. Berapa banyak masa yang dihabiskan untuk mendapatkan kod yang tepat hanya untuk membuka pesakit lagi kemudian kerana keperluan penting telah dilewatkan? Memanfaatkan kepintaran kolektif benar-benar akan menjimatkan masa dan wang, tetapi sebaliknya, pembangun sering menggunakan ciri secara terpisah.
Pengumpulan Tradisional
Pixabay
Penggabungan tradisional bermaksud bahawa pasukan bekerja secara kolaboratif untuk bercerita dengan beberapa orang mengusahakan fitur kecil pada masa yang sama, memendekkan gelung maklum balas dan mengurangkan masa penyelesaian keseluruhan untuk fitur tersebut (iaitu membelah dan menaklukkan). Ini pada dasarnya meluas dalam setiap disiplin (pembangun backend, pembangun UI, dll.). Sebelum pembangunan bermula, pembangun UI berusaha untuk mengenal pasti tugas bebas yang dapat dilakukan secara serentak. Mereka membincangkan titik antara muka sehingga setiap orang tahu bagaimana bahagiannya sesuai dengan keseluruhannya. Anggota pasukan kemudian dapat menyelesaikan tugas yang diberikan dan menyatukan semuanya pada akhir semasa penyatuan. Komitmen yang kerap dan tinjauan kod berkala membantu memastikan bahawa semuanya tetap berada di landasan kereta api. Pendekatan ini memerlukan kerjasama antara pembangun,yang membantu menghasilkan hasil akhir yang lebih baik. Kami sering mengutamakan menghabiskan masa menulis kod (kod apa pun) dari masa yang dihabiskan untuk memastikan kami tidak menulis kod yang salah. Apabila anda mempertimbangkan masa yang berpotensi dijimatkan, nilainya menjadi jelas.
Tidak dapat disekat
Pixabay
Pendekatan lain yang berharga untuk mengerumuni adalah memfokuskan pasukan pada awal melakukan pengurangan ketergantungan untuk memfasilitasi pengembangan bersamaan di seluruh disiplin ilmu. Pertimbangkan aliran pengembangan semula jadi ciri UI. Penguji automasi (SDET) bergantung pada UI yang berfungsi untuk diuji, pembangun UI bergantung pada API backend yang berfungsi, dan pembangun backend bergantung pada konfigurasi, kemas kini pangkalan data, dan build / penyebaran automatik. Oleh itu, pembangun UI mungkin tidak akan memulakan kerja mereka sehingga API selesai dan SDET mungkin tidak akan memulakan kerja mereka sehingga ciri itu lengkap. Setiap disiplin bekerja secara terpisah, yang menghalang kerjasama kerana orang yang anda perlukan untuk berinteraksi sibuk bekerja dengan perkara lain.Tetapi bagaimana jika anda dapat mengurangkan kebergantungan lebih awal dan membiarkan disiplin semua berfungsi secara serentak pada ciri yang sama?
Berikut adalah beberapa contoh:
1. UI Fungsional yang Digunakan dengan Stub
Untuk menyahsekat SDET, pembangun UI dapat memberi mereka UI berfungsi yang berfungsi cukup untuk membiarkan mereka menulis ujian. Integrasi API Backend dan gaya CSS masih belum selesai, kerana kerangka ujian automatik seperti Selenium tidak akan peduli jika perkara itu belum selesai. Semuanya boleh menjadi asap dan cermin. Walaupun perubahan mungkin berlaku yang menyebabkan beberapa pengerjaan semula, manfaat untuk memulakan ujian lebih awal melebihi risiko itu.
2. API Backend yang disebarkan (data yang dikodkan dengan keras)
Menyediakan API backend yang dapat diuji oleh pembangun UI memungkinkan pengesanan awal masalah integrasi antara front end dan API. Kadang-kadang anda mendapat tahu bahawa API yang disediakan tidak memenuhi keperluan pemaju front-end. Keseluruhan panggilan mungkin hilang, tandatangan mungkin salah, atau struktur data mungkin mengalami masalah. Sekiranya terdapat putus hubungan, anda mungkin juga akan mengetahuinya lebih awal sebelum sesuatu mengeras.
3. Buat aplikasi dan perkhidmatan baru versi HelloWorld.
Sekiranya perkhidmatan baru diperlukan (mis. Perkhidmatan mikro), buat repo dan bina versi perkhidmatan "hello world". Ini membolehkan sumber daya dev-ops untuk memulakan pekerjaan dan skrip penyebaran Jenkins sebelum perkhidmatan ini benar-benar dikembangkan.
Pengoptimuman ini memudahkan gelung maklum balas awal di mana seseorang dapat mengatakan "Saya memerlukan sesuatu yang berbeza" sebelum pengembangan selesai pada komponen yang memerlukan perubahan.
Mengemasnya
Sangat penting untuk kita memikirkan cara memendekkan masa untuk memasarkan ciri yang sedang kita kerjakan. Perniagaan tidak mendapat nilai daripada memiliki banyak ciri yang sedang berjalan, dan pembangun sangat memerlukan fitur yang dapat dilaksanakan dengan cepat sehingga kecacatan dapat diselesaikan sedekat mungkin dengan titik suntikan. Pembangun juga sangat memerlukan untuk berinteraksi antara satu sama lain walaupun yang sebenarnya mereka mahu lakukan adalah menulis kod. Lebih baik bagi semua orang yang terlibat, termasuk pengguna akhir yang hanya mahukan produk yang lebih baik. Sekiranya anda tidak memberikannya, mereka akan pergi ke tempat lain untuk mencarinya.
Berkumpul adalah alat yang sangat berharga di kotak alat organisasi anda, jika orang meluangkan masa untuk belajar bagaimana melakukannya. Ini bukan kerangka kerja atau bahkan aktiviti - ini adalah pemikiran. Untuk setiap kisah pengguna, ahli pasukan bertanya kepada mereka dua soalan:
- Bagaimana kita mengatur tugas untuk cerita ini untuk membuat beberapa orang menyumbang sekaligus?
- Berapakah minimum yang perlu saya lakukan untuk membebaskan seseorang yang sedang menunggu saya?
Bagaimana jika pasukan anda membina ciri dengan cepat dan bukannya membina sekumpulan ciri secara perlahan? Mereka benar-benar dapat merespon perubahan keperluan perniagaan dan memenuhi keperluan perniagaan ketika perniagaan memerlukannya dipenuhi. Pesaing akan takut kepada anda - pelanggan akan menyukai anda. Itu adalah resipi untuk perniagaan yang berjaya.
© 2017 Mike Shoemake