Obsah:
Být agilním vývojovým týmem softwaru pro různé lidi určitě znamená různé věci. Existují stupně adopce napříč velmi širokým spektrem, přičemž zjevně málo organizací si myslí, že to dělají dobře. Podle průzkumu stavu agilní verze VersionOne (vydaného v dubnu 2017) 80% jejich respondentů uvedlo, že jsou „na nebo pod stále dospělou úrovní“. Vývojové týmy bohužel často nevynakládají velké úsilí na „naučenou“ část iterace. Chceme si pospíšit a obejít Scrum obřady, abychom se mohli vrátit k psaní kódu. Koneckonců, je toho tolik práce! Je však skutečně problém nedostatečný čas kódování?
Pro mnoho z nás může být hašení požáru také konkrétně uvedeno v našem popisu práce. Každý den chodíme do práce s vědomím, že musíme být připraveni okamžitě sklouznout ze sloupu, popadnout klobouky a skočit na nákladní auto. Přijímáme to tak, jak to je, a předpokládáme, že s tím nemůžeme nic dělat. Ale co když hlavní příčinou našich bojů je vážný nedostatek efektivity? Každý ví, jak důležité je dělat to lépe než ta jiná společnost tam. Zdá se, že se tam nedostaneme - nezdá se, že bychom měli šířku pásma. Manažeři přidávají další lidi a zvyšují velikost jejich organizací a stále mají stejné boje. Zdá se, že se nedostanete přes hrb, protože vaše týmy nevyvíjejí software efektivně (a nejste sami).
Zásady efektivního rozvoje
Pixabay
Co tedy způsobuje, že jsme neefektivní? Pro většinu z nás první věc, která mě napadne, je nedostatek automatizace (automatizované sestavení, nasazení, testování). "Jakmile budeme mít dostatek automatizace, život se zlepší." To je bohužel jen část řešení. Zvažte vliv přepracování na váš projekt. Nejúčinnějším způsobem, jak vytvořit funkci, je vytvořit ji jednou správně a nikdy se nevrátit a znovu se jí dotknout. Chyby, refaktorování a další podobné činnosti v zásadě znovuotevřou pacienta poté, co opustil operační sál, as tím souvisí i inherentní riziko. Nemůžeme eliminovat přepracování, ale určitě bychom se měli snažit to minimalizovat.
"Ale ne agilní objetí přepracování (např. Refaktorování)?" Ve skutečnosti to dělá svým způsobem, protože tvůrci agile pochopili, že dvě klíčové příčiny přepracování jsou nepředvídané okolnosti a měnící se obchodní požadavky. Ukazuje se, že lidé jsou hrozní při předpovídání budoucnosti. Agilní tvůrci také pochopili, že významným přispěvatelem k neefektivnosti je to, co vývojáři nazývají „pozlacování“ - balení funkcí, o kterých si myslíme, že je někdo použije, přestože o to koncoví uživatelé nikdy nepožádali. Je to jako vepřové maso pro váš softwarový produkt - úplná ztráta času. „Nestavejte vesmírnou stanici, když vše, co žádají, je Volvo.“ Společnosti tedy moudře začaly opouštět vepřové maso a místo toho přijaly refaktorování, pouze přidaly funkčnost, když je to zjevně potřeba. Životní nepředvídatelnost však není jediným motorem pro přepracování, že?
Zmeškané podrobnosti v jakékoli fázi vývoje funkcí nakonec ztratí čas a peníze. Efektivní spolupráce předem vám v průběhu času ušetří spoustu přepracování (řešení nesplněných požadavků, krátkozraký design atd.). Všichni máme slepá místa a všichni potřebujeme další oči. Mnoho vývojových týmů to při kontrole kódu přijalo na zadní straně, ale vynaložilo mnohem méně energie na včasnou spolupráci, když lze problémy vyřešit levně a po minimálních investicích.
Kolikrát jste implementovali funkci a našli jste na konci významné nedostatky, které by měly být zachyceny během diskusí o požadavcích / designu? Je to jako zkoušet jet z Atlanty do Montgomery a uvědomit si několik hodin cesty, že jste místo toho omylem jeli do Birminghamu. Kolik času strávil pokusem o správné nastavení kódu, aby se pacient později znovu otevřel, protože chyběly významné požadavky? Absolutní využití kolektivní inteligence by ušetřilo čas a peníze, ale místo toho vývojáři často pracují na funkcích izolovaně.
Tradiční rojení
Pixabay
Tradiční rojení znamená, že tým spolupracuje na příbězích s několika lidmi, kteří pracují na malém prvku současně, zkracují smyčku zpětné vazby a zkracují celkovou dobu dokončení prvku (tj. Rozděl a panuj). To je v podstatě rojení v rámci každé disciplíny (vývojáři backendu, vývojáři uživatelského rozhraní atd.). Před zahájením vývoje vývojáři uživatelského rozhraní pracují na identifikaci nezávislých úkolů, které lze provádět souběžně. Diskutují o bodech rozhraní, takže každý člověk ví, jak jejich dílo zapadá do celku. Členové týmu pak mohou pokračovat v dokončení svých přidělených úkolů a na konci během integrace vše spojit. Časté závazky a pravidelné kontroly kódu pomáhají zajistit, aby vše zůstalo na kolejích. Tento přístup vyžaduje spolupráci mezi vývojáři,což stejně pomáhá dosáhnout lepšího konečného výsledku. Často upřednostňujeme čas strávený psaním kódu (jakýkoli kód) před časem stráveným, abychom se ujistili, že nepíšeme nesprávný kód. Když vezmete v úvahu potenciálně ušetřený čas, hodnota bude jasná.
Odblokování
Pixabay
Dalším cenným přístupem k rojení je soustředit tým v rané fázi na zmírňování závislostí, aby se usnadnil souběžný rozvoj napříč obory. Zvažte přirozený vývojový tok funkce uživatelského rozhraní. Automatizační testeři (SDET) jsou závislí na fungujícím uživatelském rozhraní, proti kterému se testují, vývojáři uživatelského rozhraní jsou závislí na fungujícím back-end API a vývojáři back-endu jsou závislí na konfiguraci, aktualizacích databází a automatizovaných sestavení / nasazení. Takže vývojáři uživatelského rozhraní nemusí zahájit svou práci, dokud nebudou hotová rozhraní API a SDET nemusí zahájit svou práci, dokud nebude funkce dokončena. Každá disciplína pracuje izolovaně, což brání spolupráci, protože lidé, se kterými potřebujete komunikovat, mají plné ruce práce s jinými věcmi.Ale co kdybyste mohli dříve zmírnit závislosti a umožnit všem disciplínám pracovat současně na stejné funkci?
Zde jsou nějaké příklady:
1. Nasazené funkční uživatelské rozhraní se stuby
Aby mohli odblokovat SDET, vývojáři uživatelského rozhraní jim mohou dát funkční uživatelské rozhraní, které funguje jen natolik, aby jim umožnilo psát testy. Integrace backendového rozhraní API a styly CSS mohou stále čekat, protože automatizované testovací rámce, jako je Selenium, se nestarají, pokud jsou tyto věci nedokončené. Může to být kouř a zrcadla. I když mohou nastat změny, které způsobí nějaké přepracování, výhoda včasného zahájení testů převáží toto riziko.
2. Nasazené back-endové API (stubbed, pevně zakódovaná data)
Poskytování back-end API, které mohou vývojáři uživatelského rozhraní otestovat, umožňuje včasnou detekci problémů s integrací mezi frontendem a API. Někdy zjistíte, že poskytované API nesplňuje potřeby frontendových vývojářů. Mohla by chybět celá volání, podpis by mohl být špatný nebo by mohla mít problémy struktura dat. Pokud dojde k odpojení, můžete se o něm dozvědět dříve, než se něco ztuhne.
3. Vytvořte verzi nových aplikací a služeb HelloWorld.
Pokud je potřeba nová služba (např. Mikroslužba), vytvořte repo a vytvořte verzi služby „hello world“. To umožňuje vývojovým prostředkům začít s úlohami Jenkins a skripty nasazení, než je služba skutečně vyvinuta.
Tyto optimalizace usnadňují smyčku časné zpětné vazby, kde někdo může říci „Potřebuji něco jiného“ před dokončením vývoje komponenty, která vyžaduje změnu.
Zabalit to
Je neuvěřitelně důležité, abychom zjistili, jak zkrátit dobu uvedení na trh u funkcí, na kterých pracujeme. Obchod nemá žádnou hodnotu z toho, že má spoustu funkcí, které právě probíhají, a vývojáři zoufale potřebují, aby byly funkce implementovány rychle, aby mohly být vady vyřešeny co nejblíže bodu injekce. Vývojáři také zoufale potřebují vzájemně komunikovat, i když vše, co opravdu chtějí, je psát kód. Je to lepší pro všechny zúčastněné, včetně koncového uživatele, který chce jen lepší produkt. Pokud jim je nedáte, půjdou hledat jinam.
Rojení je nesmírně cenným nástrojem v sadě nástrojů vaší organizace, pokud si lidé najdou čas a naučí se, jak to udělat. Není to rámec nebo dokonce činnost - je to myšlení. U každého příběhu uživatele si členové týmu kladou dvě otázky:
- Jak uspořádáme úkoly pro tento příběh, abychom přiměli několik lidí přispívat najednou?
- Jaké minimum musím udělat, abych odblokoval někoho, kdo na mě čeká?
Co když váš tým rychle vytvořil funkce dohromady, než aby pomalu vytvářel spoustu funkcí samostatně? Mohli skutečně reagovat na měnící se obchodní požadavky a uspokojit potřeby podniku, když je potřebuje, aby byly splněny. Konkurenti by se vás báli - zákazníci by vás milovali. To je recept na úspěšné podnikání.
© 2017 Mike Shoemake