Inlägg om Programmering

Publicerat Personligt
Mikael Johansson, Systemutvecklare
Mikael Johansson, Systemutvecklare

Mikael om att vara systemutvecklare på Spinit

Mikael Johansson är en av våra duktiga system­utvecklare, och sedan han började på Spinit i början av 2016 har han blivit en viktig kugge i vårt maskin­eri. Jag pratade med Mikael om hur han ser på sitt jobb.

Vad är det du gör här på Spinit?

– Jag är system­utvecklare vilket innebär att jag både utvecklar och förvaltar IT-system. Just nu så jobbar jag med flera olika affärs­system för en kund. Det är system som hjälper före­taget med sin faktur­ering och egentligen allt som har med deras kunder och affärer att göra. I de skräddar­sydda affärs­systemen så finns hela företagets organ­isa­tion samt kund­stock och utan dessa så skulle de t.ex. inte kunna fakturera sina kunder.

Hur kom det sig att du började på Spinit?

– Jag var på en intervju hos en rekryt­erare för ett annat jobb och efter intervjun så present­erade hon Spinit för mig. Det lät intressant och så var jag på inter­vju dagen efter och började två veckor senare. Det gick snabbt.

Hur var det när du började här? Hur såg din introduktion ut?

– Jag blev direkt inkastad i ett projekt med en av våra kunder tillsammans med tre andra ut­veck­lare. Vi höll på att bygga ett nytt affärs­system som, för­hoppnings­vis, på sikt ska helt ersätta de gamla.

De bygger alltså sitt eget affärs­system. Kunde de inte köpt ett färdigt system?

Publicerat Nyheter

.Netare som vill vidare?

Vi söker dig som är .Netare och som är sugen på att flytta på dig. Kanske har du kört fast där du jobbar idag och vill förnya dig. Vi på Spinit är ett gäng riktigt duktiga system­utvecklare som strävar efter hög­kvalitativ utveck­ling och skapande med moderna tekniker.

På Spinit kan du ut­vecklas i den rikt­ning du vill och kan antingen få uppdrag i inhouse­projekt eller som konsult hos något spännande företag. Projekten vi jobbar med är oftast av entre­prenör­iell karaktär.

I första hand söker vi dig som har jobbat några år. Utöver .Net C# rör vi oss inom tekniker som React, AngularJS, HTML5, LESS, SASS, NServiceBus, ElasticSearch, TDD, nHibernate, Entity Framework, Node.js, Dapper, Simple.Data, RavenDB, MongoDB, Azure.

För att se vad vi gör och hur vi har det så kom gärna förbi på en kopp kaffe så berättar vi mer. Skicka ett mail till jobb@spinit.se

Vi på Spinit är ett företag med kontor i Askim och centrala Göteborg. Vi utvecklar system för kunder som vill använda teknik för att bli kon­kurrens­kraftiga. Spinit är snart 30 anställda och omsatte 2016 23 Mkr. Under 2017 planerar vi att anställa flera duktiga utvecklare som kan vara med på vår fortsatt roliga till­växt­resa.

Publicerat Nyheter

Vill du jobba med REST, Gulp, Dapper eller kanske AngularJS?

ASP.NET, C#, TDD, nHibernate, Entity Frame­work, ElasticSearch, REST, Node.js, Bourbon, AngularJS, Gulp, Bower, Micro ORMs, Dapper, Simple.Data, RavenDB, MongoDB, HTML5, CSS, SASS, Ajax, SCRUM

Känner du igen några av ovanstående begrepp då förstår du nog ungefär vad vi jobbar med. Vi söker kontinuerligt kompetenta, öppensinniga och glada människor som vill jobba med likasinnade i en lärorik och utmanande miljö.

Läs gärna mer om de profiler vi söker här på vår karriärsida.

Publicerat Tech
Illustration: Nhan Ngo
"Continous Delivery" by Nhan Ngo is licensed under CC BY SA

Vägen till Continuous Delivery

Continuous delivery är ett begrepp som används inom system­­utveckling och betyder kontinu­erlig leverans. Syftet är att snabbt kunna leverera ny mjuk­vara till kunden. Behovet av Continuous delivery kommer från agila utveck­lings­prin­ciper där man jobbar i korta, fokuserade perioder där man efter varje period levererar ny funktion­alitet till kunden som kan testa av och ge feed­back inför nästa period.

Continuous integration

Continuous delivery är någonting som är tätt relaterat till Continuous inte­gration som är en process som knyter an till käll­kods­hantering. Det normala är att när kod checkas in i käll­kods­hantering så finns det en process som hämtar ut koden, kompil­erar den, kör tester, valid­erar och lagrar arti­fakter (kompilerad kod). På så sätt kan man i slutet av processen få en kvittens på att allt fungerar som det skall.

Continuous delivery kan ta vid där Continuous inte­gration slutar och använda de arti­fakter från varje bygge till att leverera koden i kompil­erad form till en miljö där den kan testas. Det kan vara en intern ut­veck­lings­miljö, en demo-server eller till och med en server i kundens egen server­miljö.

Historiska leverans­processer

Mjuk­varu­leveranser har tradition­ellt varit en manuell process och kan ha bestått i att klippa och klistra filer, använda verktyg som kan synka över filer, jämföra xml-filer rad för rad, jämföra data­baser och generera script som skall köras i en magisk ordning eller batch-script som gör delar av ovan nämnda jobb mer eller mindre till­för­lit­ligt. Till sist hänger dock ändå allt på att personen som gör lever­ansen förstår och kommer ihåg hur allt hänger ihop och inte glömmer något vilket är lättare sagt än gjort, speciellt om det är ett större system med många olika kompon­enter.
Ett annat problem är att veta vilken version av filer som släppts. Utan att ha en process för versions­hantering är det svårt att veta vilken version av källkoden som hör ihop med de filer som ligger lever­erade på en server och därmed också smått omöjligt att göra hotfixar utan att även leverera all ny kod på en gång.

Git flow

Git-flow versionhantering

Publicerat Nyheter, Tech

Spinit goes open source med Web Anchor

I ett projekt för en av våra kunder har vi använt biblioteket Refit för att från .Net enkelt kunna använda webbresurser på ett mysigt sätt. Vi tyckte dock inte om den kod-genererande vändningen Refit tog vid version 2.0, samtidigt som tidigare versioner fortfarande gjorde det komplicerat att formatera datum och listor på det sätt vi ville i bland annat querystring-parametrar. Vi började med att gaffla (‘forkade’, ni vet vad jag menar) en tidigare version av Refit men vi kände samtidigt att vi kunde göra något bättre själva.

Som utvecklare på Spinit har du turen att du får spendera en del av din arbetstid på att göra vad du vill, med det enda kravet att det tillför till företagets eller din egen professionella utveckling. Några av oss valde att använda detta privilegiet till att bygga ett eget ”Refit”. Resultatet blev Web Anchor. Web Anchor har nu nått version 1.0 och har redan ersatt Refit i orginalprojektet, men har också smugit sig in på andra platser.

Hur man använder Web Anchor

Som en kort introduktion är detta vad Web Anchor är, och hur det kan använda SWAPI för att hämta information om planeter i Starwars-världen.

Först måste vi skapa en typ som representerar resultatet vi förväntas oss från http://swapi.co/api/planets/1.

public class Planet
{
    public string Name { get; set; }
    public string Climate { get; set; }
    public int Diameter { get; set; }
}

För att kunna anropa apiet behöver vi definiera det med ett Interface.

public interface SWAPI
{
    [Get("planets/{id}")]
    Task<Planet> Planet(int id);
}

Vi kan därefter anropa apiet så här

var api = Api.For<SWAPI>("http://swapi.co/api/");
var planet = await customerApi.Planet(1);

// => HTTP GET http://swapi.co/api/planets/1

Web Anchor har stöd för ”de vanliga” HTTP-verben (GET/POST/PUT/DELETE) och det finns många så kallade extension points som du kan använda för att förändra och utöka Web Anchors beteende.