Organisasi aliran kerja dalam satu pasukan pada projek IT

Hello kawan-kawan. Agak kerap, terutamanya dalam penyumberan luar, saya melihat gambar yang sama. Kekurangan aliran kerja yang jelas dalam pasukan dalam pelbagai projek.

Perkara yang paling penting ialah pengaturcara tidak memahami cara berkomunikasi dengan pelanggan dan antara satu sama lain. Bagaimana untuk membina proses berterusan untuk membangunkan produk berkualiti. Bagaimana untuk merancang hari bekerja dan pecut anda.

Dan semua ini akhirnya mengakibatkan tarikh akhir yang rosak, lebih masa, pertengkaran berterusan tentang siapa yang harus dipersalahkan, dan ketidakpuasan hati pelanggan - di mana dan bagaimana semuanya bergerak. Selalunya, semua ini membawa kepada perubahan pengaturcara, dan juga seluruh pasukan. Kehilangan pelanggan, kemerosotan reputasi dan sebagainya.

Pada satu masa, saya baru sahaja mendapat projek sedemikian, di mana terdapat semua keseronokan ini.

Tiada siapa yang mahu bertanggungjawab untuk projek itu (pasaran perkhidmatan yang besar), perolehan sangat teruk, pelanggan hanya mengoyak dan melempar. Ketua Pegawai Eksekutif entah bagaimana mendekati saya dan berkata bahawa anda mempunyai pengalaman yang diperlukan, jadi anda mempunyai kad di tangan anda. Ambil projek untuk diri sendiri. Jika anda kacau, kami akan menutup projek dan menendang semua orang keluar. Ia akan berubah, ia akan menjadi sejuk, kemudian pimpin dan kembangkannya seperti yang anda lihat patut. Akibatnya, saya menjadi ketua pasukan dalam projek itu dan segala-galanya jatuh ke bahu saya.

Perkara pertama yang saya lakukan ialah mereka bentuk aliran kerja dari awal yang sepadan dengan penglihatan saya pada masa itu dan menulis huraian kerja untuk pasukan. Melaksanakannya bukanlah mudah. Tetapi di suatu tempat dalam masa sebulan semuanya telah diselesaikan, pembangun dan pelanggan membiasakannya, dan semuanya berjalan dengan senyap dan selesa. Untuk menunjukkan kepada pasukan bahawa ini bukan hanya ribut dalam gelas, tetapi jalan keluar sebenar dari situasi itu, saya mengambil tanggungjawab maksimum, membuang rutin yang tidak menyenangkan dari pasukan.

Satu setengah tahun telah berlalu, dan projek itu berkembang tanpa lebih masa, tanpa "perlumbaan tikus" dan segala macam tekanan. Seseorang dalam pasukan lama tidak mahu bekerja seperti ini dan pergi, sebaliknya, seseorang benar-benar memahami bahawa peraturan telus muncul. Tetapi akibatnya, semua orang dalam pasukan sangat bermotivasi dan mengetahui sepenuhnya projek besar itu, dengan kedua-dua bahagian hadapan dan bahagian belakang. Termasuk kedua-dua asas kod dan semua logik perniagaan. Malah telah sampai ke tahap bahawa kami bukan sekadar "pendayung", tetapi kami sendiri menghasilkan banyak proses perniagaan dan ciri baharu yang disukai oleh perniagaan.

Terima kasih kepada pendekatan ini di pihak kami, pelanggan memutuskan untuk memesan pasaran lain daripada syarikat kami, yang merupakan berita baik.

Memandangkan ini berfungsi pada projek saya, mungkin ia juga akan membantu seseorang. Jadi, proses itu sendiri, yang membantu kami menyimpan projek:

Proses kerja berpasukan pada projek "Projek kegemaran saya"

a) Dalam proses pasukan (antara pembangun)

  • Semua tugas dibuat dalam sistem Jira
  • Setiap tugas hendaklah diterangkan sebanyak mungkin, dan melaksanakan satu tindakan dengan tegas.
  • Sebarang ciri, jika ia cukup kompleks, dipecahkan kepada banyak tugas kecil
  • Pasukan bekerja pada ciri sebagai satu tugas. Mula-mula, kami melakukan satu ciri bersama-sama, berikannya untuk ujian, kemudian ambil yang seterusnya.
  • Setiap tugasan dilabelkan untuk bahagian belakang atau bahagian hadapan
  • Terdapat jenis tugas dan pepijat. Anda perlu menentukannya dengan betul.
  • Selepas tugas selesai, ia dipindahkan ke status semakan kod (permintaan tarik dibuat untuk rakan sekerjanya)
  • Orang yang menyelesaikan tugas itu segera menjejaki masanya untuk tugas ini
  • Selepas menyemak kod, PR diluluskan dan selepas itu, orang yang melaksanakan tugas ini secara bebas menggabungkannya ke dalam cawangan induk, selepas itu ia menukar statusnya kepada sedia untuk digunakan ke pelayan dev.
  • Semua tugas yang sedia untuk digunakan ke pelayan dev digunakan oleh ketua pasukan (bidang tanggungjawabnya), kadangkala ahli pasukan, jika ada sesuatu yang mendesak. Selepas penggunaan, semua tugas daripada sedia untuk penggunaan kepada pembangun dipindahkan ke status - sedia untuk ujian pada pembangun
  • Semua tugas diuji oleh pelanggan
  • Apabila pelanggan telah menguji tugasan pada pembangun, dia memindahkannya ke status sedia untuk digunakan ke pengeluaran.
  • Untuk penempatan kepada pengeluaran, kami mempunyai cawangan berasingan di mana kami menggabungkan induk sejurus sebelum penempatan
  • Jika semasa ujian pelanggan menjumpai pepijat, maka dia mengembalikan tugasan untuk semakan, menetapkan statusnya dikembalikan untuk semakan. Beginilah cara kami memisahkan tugasan baharu daripada tugasan yang belum diuji.
  • Akibatnya, semua tugasan bermula dari penciptaan hingga selesai: Untuk Dilakukan β†’ Dalam Pembangunan β†’ Semakan Kod β†’ Sedia gunakan untuk pembangun β†’ QA pada pembangun β†’ (Kembali ke pembangun) β†’ Sedia gunakan untuk prod β†’ QA pada prod β†’ Selesai
  • Setiap pembangun menguji kodnya secara bebas, termasuk sebagai pengguna tapak. Ia tidak dibenarkan untuk menggabungkan cawangan dengan yang utama, melainkan diketahui dengan pasti bahawa kod tersebut berfungsi.
  • Setiap tugas ada keutamaan. Keutamaan ditetapkan sama ada oleh pelanggan atau ketua pasukan.
  • Pembangun melakukan tugas keutamaan terlebih dahulu.
  • Pembangun boleh menetapkan tugasan kepada satu sama lain jika pepijat yang berbeza ditemui dalam sistem atau satu tugas terdiri daripada kerja beberapa pakar.
  • Semua tugasan yang dibuat oleh pelanggan dihantar kepada ketua pasukan, yang menilai mereka dan sama ada meminta pelanggan menyelesaikannya atau menyerahkannya kepada salah seorang ahli pasukan.
  • Semua tugasan yang sedia untuk digunakan untuk pembangun atau prod juga sampai kepada ketua pasukan, yang secara bebas menentukan masa dan cara untuk digunakan. Selepas setiap penempatan, ketua pasukan (atau ahli pasukan) mesti memberitahu pelanggan tentang perkara ini. Dan juga menukar status untuk tugasan untuk bersedia untuk ujian pada dev / prod.
  • Setiap hari pada masa yang sama (kami ada pada pukul 12.00) kami mengadakan perhimpunan antara semua ahli pasukan
  • Semua orang di perhimpunan melaporkan, termasuk ketua pasukan, apa yang dia lakukan semalam, apa yang dia rancang untuk lakukan hari ini. Apa yang tidak berkesan dan mengapa. Oleh itu, seluruh pasukan sedar siapa yang melakukan apa dan pada peringkat mana projek itu. Ini memberi kami peluang untuk meramal dan menyesuaikan, jika perlu, anggaran dan tarikh akhir kami.
  • Pada mesyuarat itu, ketua pasukan juga mengumumkan semua perubahan dalam projek dan tahap pepijat semasa yang tidak ditemui oleh pelanggan. Semua pepijat diselesaikan dan diberikan kepada setiap ahli pasukan untuk menyelesaikannya.
  • Pada perhimpunan itu, ketua pasukan memberikan tugas untuk setiap satu, dengan mengambil kira beban kerja semasa pembangun, tahap latihan profesional mereka, dan juga mengambil kira kedekatan tugas tertentu dengan apa yang sedang dilakukan oleh pembangun.
  • Pada mesyuarat itu, ketua pasukan membangunkan strategi umum untuk seni bina dan logik perniagaan. Selepas itu, seluruh pasukan membincangkan perkara ini dan memutuskan sama ada untuk membuat pelarasan atau menggunakan strategi ini.
  • Setiap pembangun menulis kod dan membina algoritma secara bebas dalam satu seni bina dan logik perniagaan. Semua orang boleh menyatakan visi pelaksanaan mereka, tetapi tiada siapa yang memaksa sesiapa untuk melakukannya dengan cara ini dan bukan sebaliknya. Setiap keputusan adalah wajar. Sekiranya terdapat penyelesaian yang lebih baik, tetapi sekarang tidak ada masa untuk itu, maka tugas dibuat dalam lemak, untuk pemfaktoran semula bahagian tertentu kod pada masa hadapan.
  • Apabila pembangun menjalankan tugas, dia mengalihkannya ke status pembangunan. Semua komunikasi mengenai penjelasan tugas dengan pelanggan terletak di bahu pemaju. Soalan teknikal boleh diajukan kepada ketua pasukan atau rakan sekerja.
  • Jika pembangun tidak memahami intipati tugas itu, dan pelanggan tidak dapat menjelaskannya dengan bijak, maka dia meneruskan tugas seterusnya. Dan ketua pasukan mengambil yang terkini dan membincangkannya dengan pelanggan.
  • Setiap hari, pembangun harus menulis dalam sembang pelanggan tentang tugasan yang dia kerjakan semalam dan tugasan yang akan dia kerjakan hari ini
  • Aliran kerja adalah berdasarkan Scrum. Semuanya dibahagikan kepada pecut. Setiap pecut mengambil masa dua minggu.
  • Larian pecut dicipta, diisi dan ditutup oleh ketua pasukan.
  • Jika projek itu mempunyai tarikh akhir yang ketat, maka kami cuba menganggarkan secara kasar semua tugas. Dan kami mengumpul daripada mereka pecut. Jika pelanggan cuba menambah lebih banyak tugas pada pecut, maka kami menetapkan keutamaan dan memindahkan beberapa tugas lain ke pecut seterusnya.

b) Proses bekerja dengan pelanggan

  • Setiap pembangun boleh dan harus berkomunikasi dengan pelanggan
  • Anda tidak boleh membenarkan pelanggan untuk mengenakan peraturan permainan mereka sendiri. Adalah perlu dengan cara yang sopan dan mesra untuk menjelaskan kepada pelanggan bahawa kami adalah pakar dalam bidang kami, dan hanya kami yang harus membina proses kerja dan melibatkan pelanggan di dalamnya.
  • Sebaik-baiknya, sebelum meneruskan pelaksanaan mana-mana fungsi, adalah perlu untuk mencipta carta alir keseluruhan proses logik untuk sesuatu ciri (aliran kerja). Dan hantar kepada pelanggan untuk pengesahan. Ini hanya terpakai pada fungsi yang kompleks dan tidak jelas, contohnya, sistem pembayaran, sistem pemberitahuan, dsb. Ini akan membolehkan anda memahami dengan lebih tepat apa sebenarnya yang diperlukan oleh pelanggan, menyimpan dokumentasi untuk ciri tersebut, dan juga menginsuranskan diri anda terhadap fakta bahawa pelanggan mungkin mengatakan pada masa hadapan bahawa kami tidak melakukan apa yang dia minta.
  • Semua rajah/carta alir/logik dsb. kami menyimpan dalam Confluence/Fat, di mana kami meminta pelanggan dalam komen untuk mengesahkan ketepatan pelaksanaan masa hadapan.
  • Kami cuba untuk tidak membebankan pelanggan dengan butiran teknikal. Jika kita memerlukan pemahaman tentang bagaimana pelanggan mahu, maka kita melukis algoritma primitif dalam bentuk carta alir yang pelanggan boleh memahami dan membetulkan / mengubah suai semuanya sendiri.
  • Jika pelanggan menjumpai pepijat dalam projek, maka kami meminta anda menerangkannya dengan terperinci dalam Fat. Dalam keadaan apakah ia berlaku, bila, apakah urutan tindakan yang telah dijalankan oleh pelanggan semasa ujian. Sila lampirkan tangkapan skrin.
  • Kami cuba setiap hari, maksimum setiap hari, untuk menggunakan pelayan pembangun. Pelanggan kemudian mula menguji kefungsian dan projek tidak terbiar. Pada masa yang sama, ini adalah penanda kepada pelanggan bahawa projek itu sedang dalam pembangunan sepenuhnya dan tiada siapa yang memberitahunya cerita dongeng.
  • Selalunya berlaku bahawa pelanggan tidak memahami sepenuhnya apa yang dia perlukan sama sekali. Sejak dia mencipta perniagaan baharu untuk dirinya sendiri, dengan proses yang masih belum dinyahpepijat. Oleh itu, situasi yang sangat biasa ialah apabila kita membuang keseluruhan kepingan kod ke dalam tong sampah dan membentuk semula logik aplikasi. Ia berikutan daripada ini bahawa tidak perlu untuk menutup segala-galanya dengan ujian. Adalah masuk akal untuk merangkumi hanya fungsi kritikal dengan ujian, dan kemudian dengan tempahan.
  • Terdapat situasi apabila pasukan menyedari bahawa kami tidak sesuai dengan tarikh akhir. Kemudian kami menjalankan audit pantas tugas, dan segera memaklumkan kepada pelanggan mengenainya. Sebagai jalan keluar daripada situasi ini, kami mencadangkan agar anda melancarkan fungsi penting dan kritikal tepat pada masanya, dan meninggalkan yang lain untuk pasca keluaran.
  • Jika pelanggan mula membuat tugasan yang berbeza dari kepalanya, mula berkhayal dan menerangkan pada jarinya, maka kami memintanya untuk memberikan kami susun atur halaman dan aliran dengan logik yang harus menerangkan sepenuhnya kelakuan keseluruhan susun atur dan elemen.
  • Sebelum kami mengambil sebarang tugas, kami mesti memastikan bahawa ciri ini disertakan dalam syarat perjanjian / kontrak kami. Jika ini ialah ciri baharu yang melangkaui perjanjian awal kami, maka kami mesti menganggarkan ciri ini ((anggaran masa utama + 30%) x 2) dan menunjukkan kepada pelanggan bahawa kami akan mengambil masa yang lama untuk menyelesaikannya, serta tarikh akhir dianjak untuk masa anggaran didarab dengan dua. Mari percepatkan tugasan - hebat, semua orang hanya akan mendapat manfaat daripada ini. Jika tidak, maka kami diinsuranskan.

c) Perkara yang tidak kami terima dalam pasukan:

  • Ketidakkonsistenan, ketidakselarasan, kealpaan
  • "Makan Sarapan". Jika anda tidak dapat menyelesaikan tugas, anda tidak tahu bagaimana, maka anda perlu segera memberitahu ketua pasukan tentang perkara ini, dan tidak menunggu sehingga yang terakhir.
  • Brovada dan bermegah-megah daripada orang yang masih belum membuktikan keupayaan dan profesionalismenya dengan perbuatan. Jika terbukti, maka boleh jadi, dalam batas kesopanan πŸ™‚
  • Penipuan dalam semua manifestasinya. Jika tugas itu tidak selesai, maka anda tidak sepatutnya menukar statusnya kepada selesai dan tulis dalam sembang pelanggan bahawa ia sudah sedia. Komputer terhempas, sistem terhempas, anjing itu mengunyah komputer riba - semua ini tidak boleh diterima. Jika force majeure sebenar berlaku, maka ketua pasukan hendaklah segera dimaklumkan.
  • Apabila pakar berada di luar talian sepanjang masa dan sukar untuk menghubunginya semasa waktu bekerja.
  • Ketoksikan dalam pasukan tidak dibenarkan! Jika seseorang tidak bersetuju dengan sesuatu, maka semua orang berkumpul untuk perhimpunan dan berbincang dan membuat keputusan.

Dan beberapa soalan / tesis yang kadangkala saya ajukan kepada pelanggan saya untuk menghapuskan semua salah faham:

  1. Apakah kriteria kualiti anda?
  2. Bagaimanakah anda menentukan sama ada projek mempunyai masalah atau tidak?
  3. Melanggar semua cadangan dan nasihat kami tentang menukar/memperbaiki sistem, hanya anda yang menanggung semua risiko
  4. Sebarang perubahan projek utama (contohnya, semua jenis aliran tambahan) akan membawa kepada kemungkinan penampilan pepijat (yang kami akan, sudah tentu, betulkan)
  5. Adalah mustahil untuk memahami dalam beberapa minit jenis masalah yang berlaku pada projek itu, dan lebih-lebih lagi untuk membetulkannya di sana.
  6. Kami mengusahakan aliran produk tertentu (Tugas dalam Zhira - Pembangunan - Pengujian - Gunakan). Ini bermakna kami tidak dapat membalas keseluruhan aliran permintaan dan aduan dalam sembang.
  7. Pengaturcara hanyalah pengaturcara, bukan penguji profesional, dan tidak dapat memastikan kualiti ujian projek yang betul
  8. Tanggungjawab untuk ujian akhir dan penerimaan tugasan pada jualan terletak sepenuhnya kepada anda
  9. Jika kami telah menjalankan tugas, maka kami tidak boleh beralih kepada orang lain dengan segera sehingga kami menyelesaikan tugasan semasa (jika tidak, ini membawa kepada lebih banyak pepijat dan peningkatan masa pembangunan)
  10. Terdapat lebih sedikit orang dalam pasukan (kerana percutian atau penyakit), dan terdapat lebih banyak kerja dan kami tidak akan mempunyai masa secara fizikal untuk membalas semua yang anda inginkan
  11. Meminta anda untuk menggunakan ke pengeluaran tanpa tugasan yang diuji pada pembangun hanyalah risiko anda, bukan pembangun
  12. Apabila anda menetapkan tugasan kabur, tanpa aliran yang betul, tanpa reka letak reka bentuk, ini memerlukan lebih banyak usaha dan masa pelaksanaan daripada kami, kerana kami perlu melakukan lebih banyak kerja dan bukannya anda
  13. Sebarang tugasan pada pepijat, tanpa penerangan terperinci tentang kejadian dan tangkapan skrinnya, tidak memberi kami peluang untuk memahami perkara yang salah dan bagaimana kami boleh mengeluarkan pepijat ini
  14. Projek ini memerlukan penambahbaikan dan penambahbaikan berterusan untuk meningkatkan prestasi dan keselamatan. Oleh itu, pasukan meluangkan sedikit masa untuk penambahbaikan ini.
  15. Oleh kerana kami mempunyai waktu lebih masa (pembetulan segera), kami mesti membayar pampasan untuknya pada hari-hari lain

Sebagai peraturan, pelanggan segera memahami bahawa segala-galanya tidak begitu mudah dalam pembangunan perisian, dan keinginan sahaja jelas tidak mencukupi.

Secara umum, ini sahaja. Di sebalik tabir, saya meninggalkan banyak rundingan dan penyahpepijatan awal semua proses, tetapi hasilnya, semuanya berjaya. Saya boleh mengatakan bahawa proses ini telah menjadi sejenis "Peluru Perak" untuk kami. Orang baru yang datang ke projek itu sudah boleh segera memanfaatkan diri mereka untuk bekerja dari hari pertama, kerana semua proses diterangkan, dan dokumentasi dan seni bina dalam bentuk rajah serta-merta memberikan gambaran tentang apa yang kita semua lakukan. di sini.

PS Saya ingin menjelaskan bahawa tiada pengurus projek di pihak kami. Ia berada di pihak pelanggan. Bukan juruteknik sama sekali. projek Eropah. Semua komunikasi adalah dalam bahasa Inggeris sahaja.

Semoga berjaya kepada semua orang dalam projek anda. Jangan keletihan dan cuba perbaiki proses anda.

sumber dalam saya post blog.

Sumber: www.habr.com