Alla våra medarbetare har unika behov och därför driver vi på Cygni kompetensutveckling på det sätt som passar varje enskild konsult bäst. Konsulterna tar själva fram en gedigen kompetensutvecklingsplan tillsammans med sin chef under det årliga utvecklingssamtalet. Baserat på den planen tar vi sedan fram olika kompetensutveckingsspår där vi tillsammans lär oss så mycket som möjligt.

Vår senaste satsning består av en serie föreläsningar/workshops med fokus på asynkron programmering och trådning.

Upplägget som vi kör denna gång går (som vanligt) ut på att blanda teori med en mängd praktiska sessioner vilket för många är det överlägset bästa sättet att lära sig på.

Vi inledde det hela med en föreläsning på ett av våra konsultmöten där Jon Edvardsson berättade om hur man bygger trådsäkra program, vilka problem som kan uppstå om ett program inte är trådsäkert samt hur programmeringsmodellen för detta ser ut i Java. Sen fick vi vidare höra mer om hur man jobbar med detta på andra plattformar (.NET och Node.js).

Några veckor senare var det dags för nästa session där Jon återigen höll i taktpinnen. Denna gång var det mer “hands on” och vi kodade oss igenom en rad trådningsproblem tillsammans. Vi använde oss av standardbiblioteken i Java/.NET/Node.js och skippade de olika ramverk som är heta just nu, dessa kommer senare.

Rx

En månad senare var det återigen dags för en praktisk session. Denna gång undervisade Alexander Torstling om Reactive Extensions (Rx) följt av en mängd praktiska övningar. Mycket intressant, så pass intressant att vi kommer att slänga in ytterligare en bonussession med Rx-tema inom kort. Rx är något som många av våra konsulter redan använder i sina uppdrag och därför är det extra intressant att höra om de fördelar och problem som kan komma med denna typ av programmeringsmodell. Rx handlar ju till stor del om att hantera asynkrona strömmar med hjälp av så kallade Observables vilket i grunden är ett ganska enkelt mönster, dock finns det en hel del klurigheter att ta hänsyn till och om man inte håller tungan rätt i munnen kan det ganska snabbt bli väldigt komplext.

Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs by using observable sequences.

Härnäst kommer vi att avsluta det asynkrona kompetensutvecklingsspåret med två sessioner som fokuserar på andra högintressanta teknologier inom asynkron programmering.

Först kommer Jakob Leczinsky att köra en workshop med fokus på Akka.

Akka

Jakob kommer att blanda teori och praktik samt även berätta om sitt nuvarande uppdrag där man ersätter ett komplicerat system byggt på Camel med en enklare och mer feltolerant programmeringsmodell i Akka. Akka finns för ett flertal plattformar och baseras på så kallade Actors. Det hela är kraftigt inspirerat från programmeringsspråket Erlang.

Akka is an open-source toolkit and runtime simplifying the construction of concurrent and distributed applications.

Avslutningsvis kommer Henrik Lundgren att hålla låda. Han har drivit flera kompetensutvecklingsövningar på Cygni och kommer denna gång att drilla konsulterna i en kombination av Rx och Vert.x.

Vert.x

Vert.x är en spännande teknik som vi kör skarpt hos flera av våra kunder, plattformen är polyglot och erbjuder en enkel programmeringsmodell för att hantera asynkronitet (ironiskt nog med hjälp av singeltrådade komponenter). Dessutom erbjuds en distribuerad event bus som fungerar fint på både klient- och serversidan.

Vert.x is event driven and non blocking. This means your app can handle a lot of concurrency using a small number of kernel threads. Vert.x lets your app scale with minimal hardware.

Cygnis ambition har alltid varit att vara den bästa arbetsgivaren för en skicklig systemutvecklare eller systemarkitekt. För oss på Cygni är det en självklarhet att sprida kunskap, att dela med sig och att samarbeta. Kompetensutveckling är ständigt i fokus och det är våra konsulter som sätter riktningen.