Att upprätthålla ett hobbyprojekt

Squeeds Julkalender | 2019-12-17 | Martin Malm Blomqvist
För mig, som utvecklare, har det alltid poppat upp idéer om tjänster, egna projekt, vars syfte har varit att förenkla, förgylla och/eller rädda världen. Tankarna går till krav, arkitektur och affärsmodell för att sedan sväva vidare mot specifika tekniker och integrationer. Jag insåg för ett par år sedan att dessa storslagna projekt ofta dör en sorgesam tidig död vilket fick mig att tänka om kring hobbyprojekt och vad de innebär för mig samt vad jag kan göra för att upprätthålla dem.

Redan under idé-fasen i huvudet kommer paranoian smygandes och befäster sig snabbt med övertygelsen om att detta är en så pass bra idé att någon kanske redan är på g. Det är nog bäst att hålla detta för sig själv i slutna repon och sällskap samt försöka hålla ett högt tempo genom att välja de tekniker som är bekvämast. De som man dagligen jobbar med. 

De som man dagligen jobbar med ja. Det är ju tanken att man ska göra detta utöver sin ordinarie arbetstid, dagliga sysslor och andra intressen. Det ska inte kosta någonting heller, åtminstone inte till en början. Tid och budget ingår vanligtvis inte i arbetsbeskrivningen.

Det börjar med ett fint gränssnitt som går mot mockad data. Man kommer in i ett flow och motivationen blomstrar. Det blir till en PoC som man visar för närstående, ointresserade av teknik (för säkerhets skull). Sen kommer backlog:en bestående av mer eller mindre realistiska krav. Det blir med dina egna, och nu omgivningens höga krav, snabbt ett berg av omständliga nödvändigheter. Tråkiga, roliga och/eller tidskrävande processer uppdagar sig inför fingrarna, motivationen tryter och väggen är oundviklig. Det krånglar och väggen är ett faktum. 

Jag har tappat räkningen på hur många projekt som har fastnat någonstans här ovan. Vissa dör redan i idéfasen för att man tänker för mycket. Vissa idéer har redan förverkligats av någon annan och andra är helt enkelt för tidskrävande att göra på egen hand. Nästan samtliga ligger begravda innan de får säga Hello World till andra än mig. 

För något år sedan började jag tänka om efter att ha blivit inspirerad av en pod som jag kände igen mig väldigt mycket i. How to Jumpstart Your Next App” av Coding Blocks handlade egentligen bara om att göra det så enkelt för sig själv som möjligt. Men jag tog det ett steg längre och började upprätta lite förhållningsregler åt mig själv. Dessa tänkte jag dela med mig av till er idag.

Ingen press!

För mig är målet aldrig (längre) slutprodukten. Syftet kan däremot så småningom leda fram till en slutprodukt men det är aldrig ett misslyckande om det inte blir så. Släpper du pressen på att det ska bli något världsomvälvande kan du istället tillåta dig själv att bli inspirerad (istället för blockerad) av andra med liknande idéer. Allt behöver inte nå den stora publiken.

Bestäm syftet

Är syftet att lära sig ny teknik så kan det vara en bra idé att göra det inom en domän man redan har kännedom om och är intresserad av. Så intressant är inte en todo-app. Något annat kan tända en låga vilket får dig att utforska tekniken ännu mer. Är syftet att lära sig en ny domän så kan det istället vara värt att göra det med tekniker som man är van att arbeta med. Bygg en konsol-app i ditt favoritramverk för att utforska vad man kan göra med ett bibliotek eller ett gäng API:er. Jag gjorde detta för att utforska Wikipedias resurser och lärde mig snabbt hur man kunde parsa deras artiklar, använda deras API och nyttja deras SPARQL-endpoint.

Prioriteringar

Kan vi strunta i. Gör alltid det som känns roligast för tillfället. Det finns ingen deadline eller intressenter att förhålla sig till, vilket är en del av charmen med ett hobbyprojekt. Detta behöver verkligen inte betyda att en backlog är ointressant men försök att se den mer som inspirationskälla än en kravlista. 

Använd tredjepartstjänster

Om det dyker upp saker som man inte vill lära sig eller av andra anledningar helt enkelt inte vill göra, men som är nödvändiga, så kan man titta på om det finns bibliotek eller tredjepartstjänster att använda sig av. Det finns tjänster som kan sköta processer som är nödvändiga men tidskrävande motivationsdödare. Till exempel så har jag använt mig av Okta flertalet gånger för att sköta min autentisering för att det går snabbt och smidigt att sätta upp. Tjänster som Azure och Firebase är också frekvent använda för att spara lite tid.

Små iterationer, isolerade aktiviteter

När man jobbar sporadiskt med något, som med ett hobbyprojekt, så förknippas det lätt med det senaste man har gjort. När man tänker på det efter några avlägsna dagar så ser man röran man lämnade det i, problemet man stötte på eller förhoppningsvis den nya fullt fungerande funktionaliteten som nu finns. Satsa alltid på att lämna projektet i ett tillstånd som tillåter en att välja nästa steg. 

Prata om det

Prata om dina kreationer. Både med de som är intresserade av det som finns under huven och de som inte är det. Om fokus alltid ligger på att lära sig så finns det ingenting att förlora utan bara en hel del att vinna. Nöj dig inte med att fråga vad någon tycker utan försök att vinkla frågorna baserat på åskådare och syfte.

"Hur skulle du lösa detta problem?" el. "Hur tolkar du detta gränssnitt?"

Sammanfattning

För mig handlar egentligen ett hobbyprojekt numera i grund och botten om att ha roligt medan man lär sig. För att upprätthålla ett sådant projekt handlar det mycket om momentum. Det ska finnas så få saker som möjligt att "ta sig igenom" innan man gör det man faktiskt känner för att göra. Det ska åtminstone finnas ett val. En söndagsmorgon kanske man vill sätta sig in i lite API-dokumentation till morgonkaffet, på en 4 timmars tågresa kanske man kan passa på att åta sig lite glädjelöst arbete i form av klient- och servervalidering och på en Squeed Hack Afternoon passar man på att bolla en ny lösning med en Squeeder. Det är ok att strunta i saker man i sin professionella roll inte skulle strunta i. Det viktigaste är att man själv bestämmer vad, när och hur mycket det är som ska göras. Dör ett projekt så får jag med detta förhållningssätt känslan av att det gör det av en anledning, sorglöst, på grund av att det inte längre är roligt, inte längre skänker någon ny kunskap eller vem vet säljs för miljoner.