Trendspaning på Øredev

Øredev är en konferens för utvecklare som hålls på Slagthuset i Malmö i början av november varje år. I år var vi fyra utvecklare från Meridium och Meriworks som åkte ner för att lyssna på intressanta föreläsningar och träffa andra utvecklare.

Detta är en sammanfattning av vad jag upplevde som de intressantaste trenderna inom de områden som jag fokuserade på när jag valde vilka sessioner jag skulle gå på: agilt arbetssätt, microservices och funktionell programmering

För varje område finns det tips på videor från de sessioner jag tyckte var bäst.

Agilt arbetssätt

Att arbeta agilt börjar bli normen inom branchen idag. Men många upplever att man inte blir så lättrörlig som man hade hoppats. En tydlig trend som jag tycker mig se är att man i allt större utsträckning börjar gå tillbaka till grunderna i form av det agila manifestet och extreme programming och fråga sig om man verkligen arbetar efter dessa principer. Ett exempel är #NoEstimates-rörelsen som ifrågasätter värdet i att ägna massor av tida åt att detaljerat försöka uppskatta en produkt-backlog.


Scaled agile @ Spotify - Joakim Sundén

Spotify ses av många som en ledstjärna när det gäller agilt arbetssätt och deras agila coacher åker jorden runt och ger presentationer om hur man arbetar. I den här presentationen berättar Sundén om hur man har organiserat sig för att kunna forsätta vara agila när man vuxit från 30 till 500 utvecklare.


How to improve estimates for software projects, the #NoEstimates view - Vasco Duarte

#NoEstimates unplugged - Vasco Duarte och Woody Zuill

NoEstimates är en rörelse inom fått en hel del uppmärksamhet de senaste åren. Den utgår från premissen att man inte behöver uppskatta jobbet som ska göras för att kunna leverera högkvalitativ mjukvara. Genom att dela upp arbetet som ska göras i små "snitt" av funktionalitet, leverera ofta och hela tiden mäta t.ex. cykel- och ledtid kan man förutspå när en viss funktion kan levereras. 


Continuous discovery, the power of pure agile - Woody Zuill

Genom att gå tillbaka till de värden och principer som tas upp i det agila manifestet beskriver Zuill hur han och hans team arbetar för att ständigt förbättra hur man arbetar genom att prova sig fram och upptäcka nya metoder.


Enabling emergent technologies - Fred George

Fred George pratar om hur man behöver arbeta för att kunna använda och ta till sig nya tekniker. Vilka hinder som brukar finnas och hur de kan undanröjas.


Coding culture - Sven Peters

Hur man arbetar på Atlassian och hur man främjar en god företagskultur där utvecklare har utrymme att vara innovativa och trivas.

Microservices

Microservices är benämningen på en arkitektur som består av en mängd olika små tjänster, där varje enskild tjänst har ett avgränsat ansvarsområde. Alla dessa tjänster kommunicerar med varandra, antingen synkront via t.ex. REST-api:er eller asynkront via meddelandeköer. Ledande i branchen är kanske Netflix vars tjänst består av hundratals olika små tjänstar som samarbetar.

Fördelar med microservicar är att 

  • de är små, ibland så små som 15-20 rader kod vilket gör att de är lätta att underhålla.  
  • de är helt fristående och kan utvecklas oberoende av varandra av olika team, i olika programmeringsspråk
  • om en tjänst går ner kan ofta resten av tjänsten fungera utan att gå ner, detta gäller särskilt asynkrona tjänster

Utmaningar med en microservice-arktektur

  • kräver en stark DevOps-kultur för att underhålla
  • testning av hela applikationen kräver att hela ekosystemet är på plats
  • ställer stora krav på nätverket att hantera stora trafikmängder

Introduction to Docker: containerization is the new virtualization - James Turnbull 

Docker är en plattform för att hantera distribuerade system, och lämpar sig extra väl för att hantera microservices. Varje applikation hanteras som en container. Containern innehåller allt som applikationen behöver. Detta gör att samma container kan köras på utvecklarens maskin som på produktionsservern och bete sig exakt likadant.


Microservices: lessons from 3 companies - Fred George

I presentationen visar George hur man implementerat microservices på tre företag han jobbat med. Exempel på vilka teknologier som används och ett typiskt flöde för ett specifikt use case som involverar ett tiotal servicar presenteras också.  

Funktionell och reaktiv programmering

Funktionella programmeringsspråk har tidigare främst använts i väldigt nischade domäner och inom den akademiska världen. men under de senaste åren har de dock blivit alltmer mainstream med språk som Clojure, Scala, F# och Elixir. Egenskaper som att värden alltid är konstanta och avsaknaden av sidoeffekter medför att de är särskilt väl lämpade för asynkrona distribuerade system med en hög grad av parallellism. 

De flesta moderna programmeringsspråk har stöd för funktionell programmering, t.o.m. Java från och med version 8.

Reaktiv programmering innebär att man har ett system som reagerar på händelser i sin omgivning. Det kan t.ex. vara musklick i ett användargränsnitt, inkommande nätverkstrafik eller förändringar i filsystemet. Ramverken som finns gör det väldigt smidigt att hantera händelser och koden blir betydligt lättare att resonera kring och underhålla än motsvarande imperativa kod. 


 

Functional thinking - Neal Ford

Presentationen handlar om hur man som programmerare van vid imperativa språk som Java och C# ska lära sig tänka när man går över till funktionell programmering. 


Functional reactive programming with bacon.js - Juha Paananen

Bacon.js är ett litet Javascript-bibliotek för funktionell reaktiv programmering influerat av RxJS. I presentationen visas exempel på hur man använder bacon.js tillsammans med jQuery för att hantera händelser från mus och tangentbord.