Satura rādītājs:
Būt veiklai programmatūras izstrādes komandai dažādiem cilvēkiem noteikti nozīmē dažādas lietas. Ir pieņemšanas pakāpes ļoti plašā spektrā, un acīmredzot ļoti maz organizāciju domā, ka to dara labi. Saskaņā ar VersionOne's State of Agile Survey (publicēts 2017. gada aprīlī), 80% viņu respondentu apgalvo, ka viņi ir “vēl nobriedušā līmenī vai zemāk”. Diemžēl attīstības komandas bieži nepieliek daudz pūļu iterācijas “iemācīties” daļai. Mēs vēlamies pasteigties un pabeigt Scrum ceremonijas, lai mēs varētu atgriezties pie koda rakstīšanas. Galu galā ir tik daudz darba! Bet vai tiešām problēma ir nepietiekams kodēšanas laiks?
Daudziem no mums ugunsgrēka dzēšana arī varētu būt īpaši norādīta mūsu darba aprakstā. Mēs katru dienu dodamies uz darbu, zinot, ka mums ir jābūt gataviem ar brīdi slīdēt pa stabu, paķert cepures un lēkt uz kravas automašīnas. Mēs to pieņemam tikai tā, kā lietas ir, un mēs pieņemam, ka mēs neko nevaram darīt. Bet, ja mūsu cīņu galvenais cēlonis ir nopietns efektivitātes trūkums? Ikviens zina, cik svarīgi to darīt labāk nekā tas cits uzņēmums. Šķiet, ka mēs vienkārši nevaram tur nokļūt - šķiet, ka mums nav joslas platuma. Vadītāji pievieno vairāk cilvēku un palielina savu organizāciju lielumu, un viņiem joprojām ir tādas pašas cīņas. Šķiet, ka jūs nevarat tikt pāri kuprim, jo jūsu komandas efektīvi neattīsta programmatūru (un jūs neesat viens).
Efektīvas attīstības principi
Pixabay
Kas tad liek mums būt neefektīviem? Lielākajai daļai no mums pirmais, kas ienāk prātā, ir automatizācijas trūkums (automatizētas būvēšanas, izvietošanas, testēšanas). "Kad mums būs pietiekami daudz automatizācijas, dzīve kļūs labāka." Diemžēl tā ir tikai daļa no risinājuma. Apsveriet pārstrādes ietekmi uz savu projektu. Visefektīvākais veids, kā izveidot objektu, ir to pareizi izveidot vienreiz un nekad vairs neatgriezties un vairs to nepieskarties. Kļūdas, refaktorēšana un citas līdzīgas darbības pacientam pēc būtības tiek atkārtoti atvērtas pēc tam, kad viņš ir izgājis no operāciju zāles, un ar to ir saistīts risks. Mēs nevaram novērst pārstrādāšanu, taču mums noteikti vajadzētu censties to samazināt.
"Bet vai veikls neattiecas uz pārstrādi (piem., Refaktorēšanu)?" Tas faktiski notiek savā ziņā, jo veiklu radītāji saprata, ka divi galvenie pārstrādes cēloņi ir neparedzēti apstākļi un mainīgas biznesa prasības. Izrādās, ka cilvēki ir briesmīgi prognozēt nākotni. Izveicīgi radītāji arī saprata, ka milzīgs neefektivitātes faktors ir tas, ko izstrādātāji dēvē par „zelta pārklājumu” - iesaiņošana funkcionalitātē, ko, mūsuprāt, kāds izmantos, kaut arī tiešie lietotāji to nekad nav lūguši. Tas ir kā cūkgaļa jūsu programmatūras produktam - pilnīga laika izšķiešana. "Neveidojiet kosmosa staciju, ja viss, ko viņi prasa, ir" Volvo "." Tātad uzņēmumi saprātīgi sāka atstāt cūkgaļu un tā vietā izmantot atjaunošanu, pievienojot funkcionalitāti tikai tad, kad ir nepārprotama vajadzība. Bet dzīves neparedzamība nav vienīgais virzītājspēks pārstrādei, vai ne?
Izlaistās detaļas jebkurā funkciju izstrādes posmā galu galā tērēs laiku un naudu. Efektīva sadarbība laika gaitā ļaus ietaupīt daudz pārstrādes darbu (risināt neatbildētās prasības, tuvredzīgu dizainu utt.). Mums visiem ir aklās zonas, un mums visiem ir nepieciešami papildu acu komplekti. Daudzas izstrādātāju komandas to pārskata koda pārskatīšanas laikā, taču iegulda daudz mazāk enerģijas sadarbībai agri, kad problēmas var atrisināt lēti un pēc minimāliem ieguldījumiem.
Cik reizes jūs esat ieviesis kādu funkciju un tuvu beigām atradis būtiskus trūkumus, kurus vajadzēja noķert prasību / dizaina diskusiju laikā? Tas ir tāpat kā mēģināt braukt no Atlantas uz Montgomeriju un vairākas stundas ilgajā ceļojumā saprast, ka tā vietā nejauši esat aizbraucis uz Birmingemu. Cik daudz laika tika pavadīts, mēģinot iegūt kodu tikai pareizi, lai vēlāk atkal atvērtu pacientu, jo netika ievērotas būtiskas prasības? Kolektīvās izlūkošanas izmantošana absolūti ļautu ietaupīt laiku un naudu, taču izstrādātāji bieži strādā pie funkcijām atsevišķi.
Tradicionālā spiešanās
Pixabay
Tradicionālā spiešana nozīmē, ka komanda sadarbojas ar stāstiem ar vairākiem cilvēkiem, kuri vienlaikus strādā pie mazas funkcijas, saīsinot atgriezeniskās saites ciklu un samazinot objekta kopējo izpildes laiku (ti, sadaliet un iekarojiet). Tas būtībā plūst katrā disciplīnā (aizmugures izstrādātāji, lietotāja saskarnes izstrādātāji utt.). Pirms izstrādes sākuma UI izstrādātāji strādā, lai identificētu neatkarīgus uzdevumus, kurus var veikt vienlaikus. Viņi apspriež saskarnes punktus, lai katrs cilvēks zinātu, kā viņa darbs iekļaujas kopumā. Pēc tam komandas locekļi var veikt savus uzticētos uzdevumus un integrācijas laikā visu apvienot. Biežas saistības un periodiska kodu pārskatīšana palīdz nodrošināt, ka viss paliek uz sliedēm. Šī pieeja prasa sadarbību starp izstrādātājiem,kas tik un tā palīdz sasniegt labāku gala rezultātu. Mēs bieži piešķiram prioritāti koda (jebkura koda) rakstīšanai pavadītajam laikam, salīdzinot ar pavadīto laiku, lai pārliecinātos, ka nerakstām nepareizu kodu. Apsverot potenciāli ietaupīto laiku, vērtība kļūst skaidra.
Notiek atbloķēšana
Pixabay
Vēl viena vērtīga pieeja spietošanai ir koncentrēt komandu agri uz atkarības mazināšanu, lai veicinātu vienlaicīgu attīstību visās disciplīnās. Apsveriet lietotāja funkcijas dabiskās attīstības plūsmu. Automatizācijas testētāji (SDET) ir atkarīgi no darbojošās lietotāja saskarnes, pret kuru pārbaudīt, lietotāja saskarnes izstrādātāji ir atkarīgi no darbojošās aizmugures API, bet aizmugures izstrādātāji ir atkarīgi no konfigurācijas, datu bāzes atjauninājumiem un automatizētām būvēm / izvietojumiem. Tāpēc lietotāja saskarnes izstrādātāji, iespējams, nesāks darbu, kamēr API nav pabeigti, un SDET, iespējams, nesāks darbu, kamēr funkcija nav pabeigta. Katra disciplīna darbojas atsevišķi, kas kavē sadarbību, jo cilvēki, ar kuriem jums jāsazinās, ir aizņemti, strādājot pie citām lietām.Bet kā būtu, ja jūs varētu mazināt atkarības agrāk un ļautu visām disciplīnām vienlaikus strādāt ar vienu un to pašu funkciju?
Šeit ir daži piemēri:
1. Izvietots funkcionāls lietotāja interfeiss ar celmiem
Lai atbloķētu SDET, UI izstrādātāji var viņiem piešķirt funkcionējošu lietotāja saskarni, kas darbojas tieši tik daudz, lai ļautu viņiem rakstīt testus. Aizmugures API integrācija un CSS stili joprojām var gaidīt, jo tādām automatizētām testēšanas sistēmām kā Selenium būs vienalga, ja šīs lietas nebūs pabeigtas. Tas viss var būt dūmi un spoguļi. Kaut arī var notikt izmaiņas, kas rada zināmu pārstrukturēšanu, ieguvums no testu agrīnas uzsākšanas atsver šo risku.
2. Izvietotās aizmugurējās saskarnes API (stingri kodēti dati)
Nodrošinot aizmugurējās saskarnes API, pret kurām lietotāja interfeisa izstrādātāji var pārbaudīt, ļauj savlaicīgi atklāt integrācijas problēmas starp priekšējo daļu un API (-iem). Dažreiz jūs uzzināt, ka sniegtā API neatbilst priekšgala izstrādātāju vajadzībām. Iespējams, ka trūkst visu zvanu, nepareizs paraksts vai problēmas ar datu struktūru. Ja ir atvienošana, jūs varētu arī uzzināt par to agri, pirms kaut kas ir sacietējis.
3. Izveidojiet jauno programmu un pakalpojumu HelloWorld versiju.
Ja nepieciešams jauns pakalpojums (piemēram, mikropakalpojums), izveidojiet repo un izveidojiet pakalpojuma “sveika pasaule” versiju. Tas ļauj dev-ops resursiem sākt darboties Jenkins darbos un izvietošanas skriptos, pirms pakalpojums tiek faktiski izstrādāts.
Šīs optimizācijas atvieglo agrīnu atgriezenisko saiti, kur kāds var pateikt “Man vajag kaut ko citu”, pirms tiek pabeigta sastāvdaļa, kurai nepieciešamas izmaiņas.
Iesaiņojot to
Ir ārkārtīgi svarīgi, lai mēs izdomātu, kā saīsināt laiku, līdz tiek tirgotas funkcijas, ar kurām mēs strādājam. Uzņēmumam nav vērtības, jo tajā ir virkne funkciju, kas atrodas procesā, un izstrādātājiem ir ļoti nepieciešams, lai funkcijas tiktu ātri ieviestas, lai defektus varētu novērst pēc iespējas tuvāk injekcijas vietai. Izstrādātājiem arī ļoti nepieciešams mijiedarboties savā starpā, kaut arī viss, ko viņi patiešām vēlas darīt, ir uzrakstīt kodu. Tas ir labāk visiem iesaistītajiem, ieskaitot gala lietotāju, kurš vienkārši vēlas labāku produktu. Ja jūs viņiem to nedosiet, viņi dosies kaut kur citur, lai to atrastu.
Spiešana ir ārkārtīgi vērtīgs rīks jūsu organizācijas rīkjoslā, ja cilvēki velta laiku, lai uzzinātu, kā to izdarīt. Tas nav ietvars vai pat darbība - tas ir domāšanas veids. Katram lietotāja stāstam komandas dalībnieki uzdod sev divus jautājumus:
- Kā mēs organizējam šī stāsta uzdevumus, lai vienlaikus iesaistītos vairāki cilvēki?
- Kāds ir minimums, kas man jādara, lai atbloķētu kādu, kurš mani gaida?
Ko darīt, ja jūsu komanda ātri izveido funkcijas kopā, nevis lēnām patstāvīgi izveido virkni funkciju? Viņi faktiski varētu reaģēt uz mainīgajām uzņēmējdarbības prasībām un apmierināt biznesa vajadzības, kad biznesam ir vajadzīgas to izpildes. Konkurenti no jums baidītos - klienti jūs mīlētu. Tā ir veiksmīga biznesa recepte.
© 2017 Maiks Shoemake