Organisering av arbetsprocessen i teamet pÄ IT-projektet

Hej vÀnner. Jag ser ofta samma mönster, sÀrskilt inom outsourcing. Bristen pÄ en tydlig arbetsprocess i team pÄ olika projekt.

Det viktigaste Àr att programmerarna inte förstÄr hur man ska kommunicera med kunden och varandra. Hur man bygger en kontinuerlig utvecklingsprocess av kvalitetsprodukter. Hur man planerar sin arbetsdag och sina sprintar.

Allt detta leder i slutĂ€ndan till missade deadlines, övertid, stĂ€ndiga konflikter om vem som Ă€r skyldig och missnöje bland kunderna – vart och hur allt gĂ„r. Ganska ofta leder detta till att programmerare, och ibland hela team, byts ut. Förlust av kunder, sĂ€mre rykte och sĂ„ vidare.

Under en tid hamnade jag pÄ ett sÄdant projekt dÀr alla dessa problem fanns.

Ingen ville ta ansvar för projektet (ett stort tjÀnstmÀrkte marketplace), omsÀttningen var skrÀmmande, och kunden var vÀldigt otÄlig. CEOn kom över och sa till mig att jag hade rÀtt erfarenhet, sÄ nu har du chansen. Ta projektet om du vill. Misslyckas du, stÀnger vi projektet och sparkar alla. Lyckas du, sÄ blir det fantastiskt, och du fÄr leda och utveckla det som du anser nödvÀndigt. Tillslut blev jag teamledare för projektet och allt lÄg pÄ mina axlar.

Det första jag gjorde var att utveckla en arbetsprocess frÄn grunden, som motsvarade min vision dÄ, och jag skrev en arbetsbeskrivning för teamet. Att implementera detta var inte lÀtt. Men efter ungefÀr en mÄnad var allt pÄ plats, utvecklarna och kunden vÀnjde sig, och allt blev lugnt och bekvÀmt. För att visa teamet att detta inte bara var en "storm i ett vattenglas", utan en verklig lösning pÄ situationen, tog jag pÄ mig den största delen av ansvaret och avlastade teamet frÄn jobbiga rutiner.

Det har nu gÄtt ett och ett halvt Är, och projektet utvecklas utan övertid, utan "rÄttkapplöpning" och med minskad stress. NÄgon i det gamla teamet ville inte jobba sÄ hÀr och lÀmnade, medan andra verkligen uppskattade de transparenta reglerna. Men i slutÀndan Àr alla i teamet mycket motiverade och har full förstÄelse för det stora projektet, bÄde frontend och backend. Vi har en djup förstÄelse för hela kodbasen och all affÀrslogik. Vi har till och med kommit till den punkt dÀr vi inte bara Àr " paddlare", utan sjÀlva kommer pÄ mÄnga affÀrsprocesser och nya funktioner som verket verkligen uppskattat.

Tack vare vÄr metod har kunden valt att bestÀlla ytterligare en marknadsplats frÄn vÄrt företag, vilket glÀdjer oss.

Eftersom det fungerar för mitt projekt kan det kanske ocksÄ hjÀlpa nÄgon annan. SÄ hÀr sÄg processen ut som hjÀlpte oss att rÀdda projektet:

Teamets arbete i projektet 'Mitt favoritprojekt'

a) Inom teamprocessen (mellan utvecklarna)

  • Alla uppgifter skapas i Jira-systemet
  • Varje uppgift ska beskrivas sĂ„ utförligt som möjligt och utföra enbart en Ă„tgĂ€rd
  • Om en funktion Ă€r tillrĂ€ckligt komplex delas den upp i flera smĂ„ tasks
  • Teamet arbetar med funktionerna som en enda uppgift. Först gör vi tillsammans en funktion, skickar den för testning, och dĂ€refter tar vi nĂ€sta.
  • Varje uppgift mĂ€rks, antingen för backend eller frontend
  • Det finns olika typer av uppgifter och buggar. De mĂ„ste anges korrekt.
  • Efter att uppgiften har slutförts omvandlas den till statusen kodgranskning (samtidigt skapas en pull request till sin kollega)
  • Den som utförde uppgiften spĂ„rar omedelbart sin tid för denna uppgift
  • Efter kodgranskningen godkĂ€nns PR och dĂ€refter merges uppgiften av den som utförde det in i mastergrenen, och de Ă€ndrar statusen till redo för deployment pĂ„ dev server.
  • Alla uppgifter som Ă€r klara för deployment pĂ„ dev-servern deployas av teamledaren (hans ansvarsomrĂ„de), ibland av ett teammedlem om det Ă€r nĂ„got brĂ„dskande. Efter deployment övergĂ„r alla uppgifter frĂ„n redo för deployment pĂ„ dev till status - redo för testning pĂ„ dev
  • Alla uppgifter testas av kunden
  • NĂ€r kunden har testat uppgiften pĂ„ dev överförs den till statusen redo för deployment pĂ„ prod
  • För deployment pĂ„ prod har vi en separat gren dĂ€r vi merges master endast före deployment
  • Om kunden hittar buggar under testningen Ă„terför han uppgiften för revidering och sĂ€tter statusen Ă„terförd för revidering. PĂ„ sĂ„ sĂ€tt separerar vi nya uppgifter frĂ„n de som inte passerade testningen
  • I slutĂ€ndan passerar alla uppgifter frĂ„n skapande till avslut: To Do → In Development → Code Review → Ready deploy to dev → QA on dev → (Return to dev) → Ready deploy to prod → QA on prod → Done
  • Varje utvecklare testar sin egen kod sjĂ€lvstĂ€ndigt, inklusive som anvĂ€ndare av webbplatsen. Ingen merge av grenen med huvudgrenen tillĂ„ts om det inte Ă€r helt sĂ€kert att koden fungerar.
  • Varje uppgift har sina prioriteringar. Prioriteringarna faststĂ€lls antingen av bestĂ€llaren eller teamledaren.
  • Utvecklare utför först och frĂ€mst de prioriterade uppgifterna.
  • Utvecklare kan tilldela uppgifter till varandra om olika buggar har hittats i systemet eller om en uppgift bestĂ„r av arbete frĂ„n flera specialister.
  • Alla uppgifter som bestĂ€llaren skapar gĂ„r till teamledaren, som bedömer dem och antingen ber bestĂ€llaren att justera dem eller tilldelar dem till en av teammedlemmarna.
  • Alla uppgifter som Ă€r klara för deployment till dev eller prod gĂ„r Ă€ven till teamledaren, som sjĂ€lv avgör nĂ€r och hur deploy ska göras. Efter varje deployment mĂ„ste teamledaren (eller en teammedlem) informera bestĂ€llaren om detta. Dessutom mĂ„ste de Ă€ndra status för uppgifter till redo för testning pĂ„ dev/prod.
  • Varje dag pĂ„ samma tid (för oss Ă€r det kl. 12.00) hĂ„ller vi ett möte mellan alla teammedlemmar.
  • Var och en rapporterar pĂ„ mötet, inklusive teamledaren, vad han gjorde igĂ„r, vad han planerar att göra idag. Vad som inte fungerar och varför. PĂ„ sĂ„ sĂ€tt Ă€r hela teamet medvetet om vem som gör vad och i vilket skede projektet befinner sig. Detta ger oss möjlighet att förutsĂ€ga och justera vĂ„ra uppskattningar och deadlines om det behövs.
  • PĂ„ mötet meddelar teamledaren Ă€ven om alla förĂ€ndringar i projektet och nivĂ„n av aktuella buggar som inte har hittats av bestĂ€llaren. Alla buggar utreds och tilldelas varje teammedlem för att Ă„tgĂ€rdas.
  • PĂ„ mötet tilldelar teamledaren uppgifter till varje individ, med hĂ€nsyn till de nuvarande arbetsbelastningarna för utvecklarna, deras yrkesskicklighet samt med hĂ€nsyn till hur nĂ€ra en viss uppgift Ă€r det som utvecklaren för tillfĂ€llet arbetar med.
  • PĂ„ mötet utvecklar teamledaren en övergripande strategi för arkitektur och affĂ€rslogik. Efter detta diskuterar hela teamet det och fattar beslut om att göra justeringar eller godkĂ€nna den aktuella strategin.
  • Varje utvecklare skriver kod och bygger algoritmer sjĂ€lvstĂ€ndigt inom en gemensam arkitektur och affĂ€rslogik. Varje person kan uttrycka sin vision av genomförandet, men ingen tvingas att göra det pĂ„ ett visst sĂ€tt. Varje beslut motiveras. Om det finns en bĂ€ttre lösning men ingen tid för den just nu, skapas en uppgift i JIRA för framtida refaktorering av en specifik del av koden.
  • NĂ€r en utvecklare har tagit en uppgift i arbete, Ă€ndrar han dess status till 'Under utveckling'. All kommunikation kring att klargöra uppgiften med bestĂ€llaren ligger pĂ„ utvecklarens axlar. Tekniska frĂ„gor kan stĂ€llas till teamledaren eller kollegor.
  • Om utvecklaren inte förstĂ„r kĂ€rnan i uppgiften, och bestĂ€llaren inte lyckas förklara den tydligt, gĂ„r han vidare till nĂ€sta uppgift. Den aktuella uppgiften tas över av teamledaren som sedan diskuterar den med bestĂ€llaren.
  • Varje dag ska utvecklaren skriva i kundchatten om vilka uppgifter han arbetade med igĂ„r och vilka han kommer att arbeta med idag.
  • Arbetsprocessen följer Scrum. Allt Ă€r uppdelat i sprintar. Varje sprint varar i tvĂ„ veckor.
  • Sprintarna skapas, fylls med innehĂ„ll och stĂ€ngs av teamledaren.
  • Om projektet har strikta tidsfrister försöker vi estimera alla uppgifter. DĂ€rifrĂ„n skapar vi en sprint. Om bestĂ€llaren försöker lĂ€gga till fler uppgifter i sprinten sĂ€tter vi prioriteringar och flyttar vissa uppgifter till nĂ€sta sprint.

b) Processen för arbete med bestÀllaren

  • Varje utvecklare kan och bör kommunicera med bestĂ€llaren.
  • Man fĂ„r inte lĂ„ta bestĂ€llaren pĂ„tvinga sina spelregler. Det Ă€r viktigt att pĂ„ ett artigt och vĂ€nligt sĂ€tt lĂ„ta bestĂ€llaren förstĂ„ att vi Ă€r specialister inom vĂ„rt omrĂ„de och det Ă€r bara vi som ska bygga upp arbetsprocesserna och involvera bestĂ€llaren i dem.
  • Det Ă€r lĂ€mpligt, innan man börjar implementera nĂ„gon funktionalitet, att skapa ett flödesschema för hela den logiska processen för funktionen (work flow). Det ska skickas för bekrĂ€ftelse till bestĂ€llaren. Detta gĂ€ller endast komplex och otydlig funktionalitet, till exempel betalningssystem, notificationssystem etc. Det kommer att göra det möjligt att tydligare förstĂ„ vad bestĂ€llaren verkligen behöver, bevara dokumentationen för funktionen och skydda sig mot att bestĂ€llaren i framtiden sĂ€ger att vi inte gjorde det som han bad om.
  • Vi sparar alla diagram/flödesscheman/logik osv. i Confluence/Jira, dĂ€r vi ber kunden bekrĂ€fta korrektheten av den framtida implementeringen i kommentarerna.
  • Vi försöker att inte överbelasta kunden med tekniska detaljer. Om vi behöver förstĂ„else för hur kunden vill ha det, ritar vi primitiva algoritmer i form av flödesscheman som kunden kan förstĂ„ och sjĂ€lv rĂ€tta/tweaka.
  • Om kunden hittar en bugg i projektet ber vi dem att noggrant beskriva den i Jira. Under vilka omstĂ€ndigheter den uppstod, nĂ€r, vilken Ă„tgĂ€rdssekvens kunden följde vid testning. Vi ber dem att bifoga skĂ€rmdumpar.
  • Vi försöker varje dag, max varannan dag, att göra en deploy till utvecklingsservern. Kunden börjar dĂ„ testa funktionaliteten och projektet stĂ„r inte stilla. Detta fungerar ocksĂ„ som en markör för kunden att projektet Ă€r under full utveckling och att ingen berĂ€ttar sagor.
  • Det hĂ€nder ofta att kunden inte riktigt förstĂ„r vad de överhuvudtaget behöver. Eftersom de skapar ett nytt företag med Ă€nnu inte etablerade processer. DĂ€rför Ă€r det en vanlig situation att vi kastar hela kodbitar i papperskorgen och omarbetar logiken i applikationen. DĂ€rav följer att man inte bör tĂ€cka allt med tester. Det Ă€r meningsfullt att tĂ€cka endast kritiskt viktig funktionalitet med tester, och det med vissa förbehĂ„ll.
  • Det finns situationer nĂ€r teamet inser att vi inte hĂ„ller vĂ„ra tidsfrister. DĂ„ gör vi en snabb granskning av uppgifterna och meddelar kunden om detta omedelbart. Som en lösning pĂ„ situationen föreslĂ„r vi att lansera den viktiga och kritiska funktionaliteten i tid, medan resten kan skjutas till efter release.
  • Om kunden börjar pĂ„hittar olika uppgifter frĂ„n huvudet, börjar fantisera och förklara med fingrarna, ber vi dem att ge oss en skiss pĂ„ sidan och flödet med logik som helt ska beskriva beteendet hos hela mallen och dess element.
  • Innan vi tar oss an nĂ„gon uppgift mĂ„ste vi sĂ€kerstĂ€lla att den hĂ€r funktionen ingick i vĂ„ra avtalsvillkor. Om det Ă€r en ny funktion som gĂ„r utöver vĂ„ra ursprungliga överenskommelser, sĂ„ mĂ„ste vi uppskatta denna funktion ((ungefĂ€rlig tidsram + 30%) x 2) och informera kunden om att det kommer att ta sĂ„ hĂ€r lĂ„ng tid, plus att deadline flyttas fram med tiden för uppskattningen multiplicerat med tvĂ„. Om vi kan göra uppgiften snabbare — fantastiskt, alla vinner pĂ„ det. Om inte, har vi haft en sĂ€kerhetsmarginal.

v) Vad vi inte accepterar i teamet:

  • Brist pĂ„ ansvar, oorganiseradhet, glömska
  • Att "skjuta upp". Om du inte kan utföra uppgiften eller inte vet hur, mĂ„ste du omedelbart informera teamledaren istĂ€llet för att vĂ€nta till sista stund.
  • Skryter och överdrifter frĂ„n en person som inte har bevisat sina förmĂ„gor och professionalism med handlingar. Om de har bevisat det, gĂ„r det bra, inom rimliga grĂ€nser 🙂
  • BedrĂ€geri i alla dess former. Om uppgiften inte Ă€r klar, ska du inte Ă€ndra statusen till klar och skriva i kundens chatt att den Ă€r redo. Datorn kraschade, systemet föll bort, hunden tuggade pĂ„ bĂ€rbara datorn — allt detta Ă€r oacceptabelt. Om det verkligen Ă€r en force majeure, mĂ„ste teamledaren omedelbart informeras.
  • NĂ€r specialisten alltid Ă€r offline och svĂ„rt att nĂ„ under arbetstid.
  • Toxicitet i teamet accepteras inte! Om nĂ„gon Ă€r oense, samlas alla för ett möte och diskuterar och löser det.

Och ytterligare nÄgra frÄgor/teser som jag ibland stÀller till min kund för att undanröja alla missförstÄnd:

  1. Vilka Àr era kvalitetskriterier?
  2. Hur avgör ni om det finns problem i projektet eller inte?
  3. Om ni bryter mot alla vÄra rekommendationer och rÄd för förÀndringar/förbÀttringar, bÀr ni alla risker sjÀlva.
  4. Alla större Àndringar i projektet (t.ex. alla möjliga extra flöden) kan leda till möjliga buggar (som vi naturligtvis kommer att ÄtgÀrda)
  5. Det Àr omöjligt att förstÄ vilket problem som har intrÀffat i projektet pÄ bara nÄgra minuter, Àn mindre att lösa det direkt.
  6. Vi arbetar efter ett specifikt produktflöde (Uppgifter i Jira – Utveckling – Testning – Deployment). Det innebĂ€r att vi inte kan reagera pĂ„ hela flödet av förfrĂ„gningar och klagomĂ„l i chatt.
  7. Programmer Àr just programmerare och inte professionella testare, och de kan inte sÀkerstÀlla tillrÀcklig kvalitet pÄ projektets tester.
  8. Ansvarigheten för slutlig testning och godkÀnnande av uppgifter i produktion ligger helt pÄ er.
  9. Om vi redan har pÄbörjat en uppgift kan vi inte omedelbart byta till andra uppgifter förrÀn vi har slutfört den aktuella, annars leder det till Ànnu fler buggar och ökad utvecklingstid.
  10. Antalet personer i teamet har minskat (pÄ grund av semester eller sjukdom), men arbetsbördan har ökat och vi kan fysiskt inte hinna med allt ni vill.
  11. Er begÀran att göra deployment i produktion utan testade uppgifter i utveckling Àr endast ert risktagande, och inte utvecklarnas.
  12. NÀr ni stÀller oklara uppgifter, utan korrekt flöde, utan designskisser, krÀver det av oss mycket mer arbete och lÀngre implementationstid, eftersom vi istÀllet för er mÄste utföra ytterligare arbetskapacitet.
  13. Eventuella buggar, utan detaljerad beskrivning av deras uppkomst och skÀrmdumpar, ger oss ingen möjlighet att förstÄ vad som gÄtt fel och hur vi ska reproducera den buggen.
  14. Projektet krÀver stÀndig utveckling och förbÀttringar för att öka prestanda och sÀkerhet. DÀrför lÀgger teamet en del av sin tid pÄ dessa förbÀttringar.
  15. Eftersom vi ibland har övertid (akuta fixar) mÄste vi kompensera för det pÄ andra dagar.

Som regel förstÄr kunden omgÄende att det inte Àr sÄ enkelt med mjukvaruutveckling, och bara vilja Àr uppenbarligen inte tillrÀckligt.

Detta Àr det hela. Jag lÀmnar kvar mÄnga förhandlingar och den initiala justeringen av alla processer bakom kulisserna, men i slutÀndan har allt ordnat sig. Jag kan sÀga att den hÀr processen blivit nÄgon slags "Silverkula" för oss. Nya personer som kom till projektet kunde omedelbart delta i arbetet frÄn första dagen, eftersom alla processer Àr dokumenterade, och dokumentationen samt arkitekturen i diagramform gav en tydlig bild av vad vi alla gör hÀr.

P. S. Jag vill ŃƒŃ‚ĐŸŃ‡ĐœĐžŃ‚ŃŒ, Ń‡Ń‚ĐŸ у ĐœĐ°Ń ĐœĐ”Ń‚ ĐŒĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€Đ° ĐżŃ€ĐŸĐ”Đșта. ĐžĐœ Đ”ŃŃ‚ŃŒ с ŃŃ‚ĐŸŃ€ĐŸĐœŃ‹ заĐșазчОĐșа. ĐĄĐŸĐČŃĐ”ĐŒ ĐœĐ” Ń‚Đ”Ń…ĐœĐ°Ń€ŃŒ. ĐŸŃ€ĐŸĐ”Đșт Đ”ĐČŃ€ĐŸĐżĐ”ĐčсĐșĐžĐč. Вся ĐșĐŸĐŒĐŒŃƒĐœĐžĐșацоя Ń‚ĐŸĐ»ŃŒĐșĐŸ ĐœĐ° Đ°ĐœĐłĐ»ĐžĐčсĐșĐŸĐŒ.

Lycka till med projekten. BrÀnn inte ut er och försök förbÀttra era processer.

KĂ€llan finns i min blogg.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster