Agile Gedanken vs Agile Mechanismen

https://flic.kr/p/bkcj5q

Ech fannen ëmmer erëm datt Softwareteams ze vill op Mechanismen fokusséieren an de Grondprinzip ausgesinn. Dëst ass virun allem wouer vun Agile Methodologien. Methoden wéi Scrum hunn sou vill Mechanismen, datt déi nei agierklech komplett verluer goen. Ech hunn dëst ursprénglech als E-Mail un meng Equipe geschriwwen fir ze klären wat meng Vue op Agile war, awer ech hunn et esou vill Leit elo geschéckt, datt ech dem Scott Hanselman seng Berodung huelen, ech verwandelen et an e Blog Post.

Ech betruecht mech selwer e bësse qualifizéiert dës Abléck ze bidden. Ech sinn e schnelle Praktiker aus den Deeg wou d'Agile Entwécklung mat engem Schrauwendréier involvéiert war - Är eege Würfelen ze demontéieren an en oppene Sëtzplang ze kreéieren!

Ufanks a menger Carrière hunn ech mat enger medizinescher Softwarefirma geschafft. Mir hunn Desktop Software fir Image Review gebaut déi op Dokter's Desktop an de Spideeler installéiert gouf. Deployment Prozess involvéiert Rees mat CDen an eng aner Stad an d'Installatioun vun den Desktops, an d'Bildservere. Mir waren ënner anerem duerch FDA-Genehmegung, also musse mir op Spezifikatioune bauen, déi duerch FDA-Genehmegung gewiescht sinn. Dëst huet en ideale Ëmfeld fir Top-Down, Waasserfall Methodologie erstallt. All Spezifikatioune goufe opgeschriwwen, guttgeheescht, ënnerschriwwen a mir hunn op dës Spezifikatioune gebaut an dës Spezifikatioune just. Et war net bis den Dev Team ugefaang ass mat der Installatiounsteam ze reesen, a kuckt datt d'Dokteren eis Software benotzen, datt mer realiséiert hunn datt mir sou vill besser kéinte maachen nëmme wa mir fréiere mam Zyklus mam Client kéinte schwätzen. Mir hu genau Spezifikatioune codéiert, an awer eppes geliwwert wat net sou nëtzlech war wéi et hätt kënnen sinn. Dës Grafik weist e puer vu menger Erfahrung.

Wéi Software Entwécklung ka schief goen vun https://blogs.perficient.com/perficientdigital/2011/07/22/how-to-build-a-tire-swing-a-case-for-agile-development/

Ëm dës Zäit huet mäi Team héieren vun eppes wat d'Agile Manifest genannt gëtt an eng Praxis genannt Extreme Programming. Virausgesat datt et vun Industrie-Veteranen ënnerschriwwen gouf, deenen hir Bicher mir aktiv gelies hunn, hunn d'Leit wéi de Martin Fowler an de Kent Beck d'Praxis vill Legitimitéit ausgeléint. Meng Equipe vu fënnef huet eis Kabinen ofgebaut, an eisem PM (Proxy fir eise Client) gezunn fir nieft eis ze sëtzen, e Board mat Indexkaarte opzestellen an ass geschafft ginn, XP erstellen wéi mer weidergaange sinn. Mir haten e wöchentlechen Zyklus vu Planung an Demos, vill Pairing an Diskussioun. Ech hunn a verschidden Iteratiounen an Variatioune vun dësem, a verschiddene Firme fir ongeféier 15 Joer geschafft. Een Team schengt iwwerhaapt keng Methodologie ze verfollegen, awer et war well all Teammemberen aus engem déif agile Hannergrond waren, Iteration an Zesummenaarbecht war hiren Standardstaat vun der Operatioun a si brauche keen imposéierte Prozess.

Also ass Agile iwwer oppe Buedempläng oder vill ze schwätzen? Wann Dir Stand-ups a Retros hutt, kënnt Dir ufroen datt Dir Agile sidd? Wou passt Scrum oder TDD an? Dacks kréien d'Leit ze Spezifizitéiten vum Prozess opgefaang - Scrum oder Kanban? Zwee Wochen oder eng Woch Sprint? Wann Dir kee Réckbléck ugeet, sidd Dir wierklech Agile? Opgewuess ass déi aktiv Entwécklung mat Agile Methoden gemaach huet, mat aneren Entwéckler, déi gläich engagéiert sinn, entwéckelen an upassen Praktiken, huet mir e gudden Abléck ginn an dëst Post ass déi Basisprinzipien ze identifizéieren.

Agile ass fäeg sinn d'Bedierfnesser vun de Clienten séier z'erreechen. Heescht dat datt mir méi séier e Code schreiwen? Neen. Mir kënnen d'Physikgesetzer net schloen, an eng zolidd multi-funktionell Uwendung brauch Zäit ze bauen.

Wat mir musse maachen ass

  1. Identifizéiert déi wesentlech Geschäftsprobleemer déi mir mam Code léisen wëllen
  2. Liwwert eng theoretesch Léisung séier fir d'Hypothese ze testen
  3. Iterate an upassen wann d'Bedierfnesser änneren, oder mir léiere méi
  4. Maachen et an Zesummenaarbecht, mam Client en engagéierten Deel vum Team

Alles wat mir maachen ass 2 an 3 uewen manner schmerzhaf ze maachen - fir ze wëssen ob mir d'Bedierf sou séier wéi méiglech begéinen a wann net fäeg sinn séier ze änneren. Wann Dir beschloss hutt ze bauen (vs Buy), schreift Dir Custom Software. Dëst bedeit datt et spezialiséiert Ufuerderungen an Ëmfeld huet.

Gitt eppes siichtbar, och wann et e klengen Ënnerdeel vun der Funktionalitéit ass, virum Client sou séier wéi méiglech erlaabt eis méi séier Feedback ze kréien. Duerfir plädéiere ech ëmmer fir e klengen Deel vun der Feature ze bauen, vun Enn bis Enn, an datt ech de ganze Wee bis an d'Produktioun kommen. Sot, Dir baut eng Säit fir Är Support Agenten fir all d'Daten iwwer e Client ze gesinn. Amplaz vill Zäit ze verbréngen fir d'Datenquellen fir d'ganz Säit ze fuerschen an all d'APIs ze schreiwen fir d'éischt, probéiert e Subset vun Donnéeën op der Säit ze kréien bis de ganze Wee fir d'Produktioun ass. Dir kënnt Är Integratiouns- an Ofbaumechanismen ausüben, Dir kënnt e Feedback kréien op den UI Kader, wéi dës Säit mat dem Rescht vun Ärer Uwendung passt etc. Dës Saache si méi einfach ze ajustéieren wann Dir e klenge Betrag Code hutt, am Géigesaz bis wann Dir e ganze API Kader gebaut hutt.

Hei sinn e puer vun den anere Mechanismen déi essentiell fir Beweeglechkeet sinn

Sprints: D'Entwécklung vun Zäitkëschtzyklen, erlaabt eis z'inspektéieren an z'adaptéieren an nei Daten mat reegelméissegen Intervaller z'integréieren fir ze garantéieren datt mir nach ëmmer un relevante Featuren schaffen. Software ass eng Haftung. Mir sollten nëmmen dat bauen wat mir brauchen, a fäeg sinn, wat néideg ass, wann et néideg ass. Dofir ass et essentiell regelméisseg ze kucken wat mir bis elo gebaut hunn a wou mir nächst wëlle goen. Dëst féiert zum zweete Punkt.

Virausgesat datt mir dauernd plangen ze bewäerten an ze änneren, soll eis Software einfach änneren. Wat wier wann, nodeems e Client d'Applikatioun ugefaang huet, se wëllen e puer Donnéeën anescht weisen wéi ursprünglech entworf? Kënne mir dat maachen ouni alles op der Säit ze beréieren? Oder musse mir eng aner API nennen fir Daten ze kréien - kéinte mir dës Ännerung sécher maachen? Dëst ass wou gutt Entwécklungspraktiken a Mechanismen erakommen

Eenheetsprüfung: Mir hunn automatiséiert Testen op verschiddene Niveauen sou datt et e Sécherheetsnetz fir Ännerunge gëtt. Et ass och kritesch fir opmierksam ze sinn wat d'Eenheet Tester tatsächlech testen. Eenheetstester solle Logik testen. Wann Dir déi uewe genannte Beispill benotzt, eng aner API benotzt fir Daten ze kréien, sollt idealerweis keng Ännerung vun den Unitéiten Tester fir eis API erfuerderen déi Daten un den UI servéiert. Eenheetsprüfunge existéiere fir Iech d'Vertrauen ze ginn fir de Code ze refactor, wat ofwiesselnd Iech d'Fräiheet huet nëmmen ze schreiwen wat Dir elo braucht, a Rou méi spéit, fir net 100% Ofdeckungsmetrik ze produzéieren egal wéi Dir kënnt.

CI / CD: Dëst erlaabt eis d'Distanz tëscht Engagement a Liwwerung ze verkierzen. Dëst ass essentiell fir Beweeglechkeet. Wann d'Barrièren fir den Ofbau ewechgeholl ginn, a mir kënne kleng Ännerunge vun der Produktioun drécken, da gëtt d'Risiko duerch Ännerung staark erofgesat. Wann Détachementer tedious sinn, da si se manner dacks. Manner dacks Usetzungen drängen eng Tonne Ännerung, beréieren eng grouss Uewerfläch an sinn doduerch méi geféierlech. Wann Dir méi iwwer léiert firwat Software Liwwerung Leeschtung zielt, a wéi eng Metrik fir se ze optimiséieren, da recommandéieren ech dëst Buch vum Nicole Forsgren.

Trennung vu Bedenken: Eng locker gekoppelter Architektur ass wesentlech fir eng Software déi einfach ze änneren ass. Et reduzéiert d'Uewerfläch vun enger Verännerung. Mikroservicer a Container sinn e puer vun de Mechanismen déi benotzt ginn fir d'Trennung vun de Bedenken ze maachen. Et ass wichteg dëst ze erënneren, a gitt sécher d'Trennung vu Bedenken am Kapp ze halen, wann Dir APIen, Komponenten an Uwendungen opbauen.

Denkt drun
Gutt Code kann einfach geännert ginn

Besser Code kann einfach geläscht ginn

Beschte Code ass dee wat guer net geschriwwe gouf

Et ass essentiell datt déi Stécker, déi Dir erstallt, déi reell Welt sou séier wéi méiglech treffen, sou datt Dir wësst wat Är nei Stécker ausgesinn ausgesinn an Dir hutt keng Zäit verschwenden onnéideg Stécker ze maachen.