10 programutvecklingsprognoser för 2018

Siddhartha Agarwal är vice president, produkthantering och strategi för Oracle Cloud Platform. 

Utvecklare borde brinna av spänning över möjligheterna inför 2018, med produkter och verktyg kring teknologier som blockchain, chatbots, serverlösa funktioner och maskininlärning som blir mogna nog för verkliga projekt. Samtidigt kommer många utvecklare att vara oroliga över att hålla sig mot trycket för att leverera kod och funktion snabbare utan att kompromissa med säkerhet eller prestanda. Men det finns också goda nyheter på den fronten.

För utvecklare kommer 2018 att definieras av denna spänning mellan att utnyttja transformativa nya möjligheter samtidigt som man hanterar trycket att göra mer, med högre kvalitet. Nedan följer tio förutsägelser relaterade till hur dessa krafter kommer att spela ut det kommande året.

1. B2B-transaktioner som utnyttjar blockchain går i produktion

Företag har börjat förstå den säkerhet, tillförlitlighet och effektivitet som kan uppnås genom blockchain-aktiverade transaktioner. Utvecklare kommer att implementera många blockchain-användningsfall i finansiella tjänster och tillverkningskedjor under det kommande året. Blockchain är en teknik som möjliggör effektiva, säkra, oföränderliga, betrodda transaktioner mellan organisationer som kanske inte helt litar på varandra, vilket eliminerar mellanhänder.

Överväg att ett företag beställer produkter från en offshore-tillverkare. Dessa produkter skickas via ett rederi, kommer genom tullen, genom ett annat rederi och slutligen till köparen. Idag sker verifiering och avstämning av varje steg oftast via e-post och kalkylark, med många människor och processer inblandade. Blockchain eliminerar manuella processer och avstämning genom att oåterkalleligt registrera uppdateringar till blockchain-huvudboken när ett minsta antal parter säger "Ja, den här delen av transaktionen hände."

Blockchain-molntjänster ger skalbarhet, flexibilitet, säkerhet och förbyggda integrationer med företagssystem, vilket gör det mycket lättare för utvecklare att fokusera på affärsanvändningsfallet i motsats till underliggande implementering av hyperledger-tyg.

2. Chatbots har rutinmässigt riktiga konversationer med kunder och anställda

Människor blir trötta på att behöva flera mobilappar för att göra samma jobb - som tre olika flygbolagsappar med olika sätt att checka in och få ett boardingkort. Ett bättre sätt är att tillhandahålla samma funktionalitet men via den mest populära appen på din telefon - meddelanden. Meddelanden har tre attraktiva element som är konsekventa över hela mediet: omedelbar, uttrycksfull och konversation - ingen utbildning behövs. Tack vare framsteg inom artificiell intelligens och bearbetning av naturligt språk kommer människor att använda Facebook Messenger, Slack, WeChat, WhatsApp eller en röstassistent som Amazon Alexa eller Google Home, för att ställa frågor och få svar från intelligenta bots.

Utvecklare som använder nya intelligenta molntjänster för bot-byggande kan snabbt skapa bots som förstår kundens avsikt, upprätthåller konversationstillstånd och svarar intelligent samtidigt som det är enkelt att integrera med back-end-system. Tänk dig att ta en bild av en klänning som du såg i en film och skicka bilden till din favoritklädbutiks bot, som använder bildigenkänning och AI för att rekommendera liknande klänningar. Anställda kan också vara stora mottagare av bots för uppgifter som att fråga hur många semesterdagar de har kvar, lämna in en helpdeskbiljett eller beställa en ersättningsdator, där systemet till och med vet vilka bärbara datorer den anställde är berättigad till och kan tillhandahålla statusuppdateringar på deras order. Med tanke på att det är mycket mer förlåtande att experimentera med din egen personalbas,utvecklare kan först utnyttja sina bot-byggkotletter för att bygga och testa anställda som vetter mot bots.

3. Knappen försvinner: AI blir appgränssnittet

AI blir användargränssnittet, vilket innebär att den synkrona modellen för begäran-svar för att använda appar och tjänster gradvis försvinner. Smartphones är fortfarande "låg IQ", eftersom du måste plocka upp dem, starta en applikation, be om att något ska göras och så småningom få svar. I en ny generation av intelligenta appar kommer appen att initiera interaktioner via push-aviseringar. Låt oss ta detta ett steg längre där en app, bot eller en virtuell personlig assistent som använder artificiell intelligens vet vad de ska göra när, varför, var och hur. Och gör det bara. Två exempel:

  • Utgiftsgodkännande-appen tittar på ditt mönster för godkännande av utgiftsrapporter, börjar automatiskt godkänna 99 procent av utgiftsrapporterna och visar bara den sällsynta rapporten som kräver din uppmärksamhet.
  • Analytics-appen förstår de underliggande uppgifterna, frågor som hittills ställts av företagsanvändaren, frågor som ställts av samma dataset av andra användare i företaget och varje dag ger en ny insikt som analytikern kanske inte har tänkt på. När organisationer samlar in mer data kan AI hjälpa oss att lära oss vilka frågor vi ska ställa om data.

Utvecklare måste ta reda på vilka data som är väldigt viktiga för deras affärsapplikation, hur man kan titta på och lära sig av transaktioner, vilka affärsbeslut som mest skulle dra nytta av denna typ av proaktiv AI, och börja experimentera. Inbäddad AI kan förutsäga vad du behöver, leverera information och funktionalitet via rätt medium vid rätt tidpunkt, inklusive innan du behöver det, och automatisera många uppgifter du gör manuellt idag.

4. Maskininlärning tar praktiska, domänspecifika användningsområden

Maskininlärning flyttar från området för obskär datavetenskap till vanlig applikationsutveckling, både på grund av den färdiga tillgängligheten av förbyggda moduler på populära plattformar, och för att det är så användbart när man hanterar analys över stora historiska datamängder. Med maskininlärning kommer den mest värdefulla insikten med sammanhang - vad du har gjort tidigare, vilka frågor du har ställt, vad andra människor gör, vad som är normalt kontra avvikande aktivitet.

Men för att vara effektiv måste maskininlärning anpassas och tränas i en domänspecifik miljö som innehåller både de datamängder som den kommer att analysera och de frågor den kommer att svara på. Till exempel kommer maskininlärningsapplikationer som är utformade för att identifiera avvikande användarbeteende för en säkerhetsanalytiker mycket annorlunda än maskininlärningsapplikationer som är utformade för att optimera fabriksrobotoperationer, vilket kan skilja sig mycket från de som är utformade för att göra beroendekartläggning av en mikrotjänstbaserad applikation.

Utvecklare måste bli mer kunniga om domänspecifika användningsfall för att förstå vilken data de ska samla in, vilka typer av maskininlärningsalgoritmer som ska tillämpas och vilka frågor man ska ställa. Utvecklare kommer också att behöva utvärdera om domänspecifika SaaS eller paketerade applikationer passar bra för ett visst projekt, med tanke på att det krävs stora mängder träningsdata.   

Med maskininlärning kan utvecklare bygga intelligenta applikationer för att generera rekommendationer, förutsäga resultat eller fatta automatiserade beslut. 

5. DevOps går mot NoOps

Vi är alla överens om att devops är mycket viktigt för att hjälpa utvecklare att bygga nya applikationer och funktioner snabbt, samtidigt som de bibehåller höga nivåer av kvalitet och prestanda. Problemet med devops är att utvecklare behöver spendera 60 procent av sin tid på opsidan av ekvationen, vilket minskar den tid som ägnas åt utveckling. Utvecklare måste integrera olika CICD-verktyg för kontinuerlig integration och kontinuerlig leverans, upprätthålla dessa integrationer och ständigt uppdatera CI / CD-verktygskedjan när ny teknik släpps. Alla gör CI, men inte alltför många gör CD. Utvecklare kommer att insistera på molntjänster för att hjälpa pendeln att svänga tillbaka till utvecklingssidan under 2018. Det kommer att kräva mer automatisering för riktig CICD.

Docker ger dig förpackning, bärbarhet och förmågan att göra smidiga distributioner. Du behöver CD för att vara en del av denna Docker-livscykel. Till exempel, om du använder behållare, så snart du begår en kodändring till Git, bör den ursprungliga artefakten vara en Docker-bild med den nya versionen av koden. Vidare ska bilden automatiskt tryckas in i ett Docker-register och en container distribueras från bilden till en dev-testmiljö. Efter QA-testning och distribution i produktion bör orkestrering, säkerhet och skalning av containrar tas om hand för dig. Företagsledare sätter press på utvecklare att leverera nya innovationer snabbare; devops-modellen måste frigöra mer tid för utvecklare att göra det möjligt.

6. Öppen källkod som en tjänst accelererar konsumtionen av öppen källkodsinnovation 

Den öppna källkodsmodellen är fortfarande en av de bästa motorerna för innovation, men att implementera och upprätthålla den innovationen är ofta för komplex. Till exempel:

  • Du vill ha en streamingdata / händelsehanteringsplattform, så du vänder dig till Kafka. När du börjar använda Kafka i stor skala måste du ställa in ytterligare Kafka-noder och lastbalansera stora Kafka-kluster, uppdatera dessa kluster när nya versioner av Kafka kommer ut och sedan integrera den här tjänsten med resten av din miljö.
  • Du vill ha Kubernetes för orkestrering av containrar. Istället för att ta hand om uppgraderingar, säkerhetskopior, återställningar och korrigeringar för ditt Kubernetes-kluster, borde plattformen göra allt för dig. Kubernetes skickas var sjätte vecka, så plattformen bör ha rullande distributioner och självläkning.
  • Du vill ha Cassandra för NoSQL-databaser. Du bör vilja att säkerhetskopieringen (inkrementell eller full enligt schema), lappning, kluster, skalning och hög tillgänglighet för Cassandra-klustret ska hanteras av plattformen.

Utvecklare kommer i allt högre grad att leta efter molntjänster för att leverera all den höghastighetsinnovationen från öppen källkod samtidigt som de tar hand om operativa och hanteringsaspekter av dessa tekniker.

7. Serverlösa arkitekturer går stort i produktion

Överklagandet av serverlösa arkitekturer är tydligt: ​​När det finns krav på att min kod ska köras baserat på en viss händelse, instruktiveras infrastruktur, min kod distribueras och körs och jag debiteras endast för den tid min kod körs. Låt oss säga att du vill bygga en resebokningsfunktion för att boka / avboka flyg, hotell och hyrbilar. Var och en av dessa åtgärder kan byggas som en serverlös funktion skriven på olika språk som Java, Ruby, JavaScript och Python. Det finns ingen applikationsserver som kör med min kod på den. snarare instanseras funktionerna och körs endast på infrastruktur när det behövs.

För utvecklare skapar stringing av serverlösa funktioner tillsammans för att utföra komplexa transaktioner nya utmaningar: att beskriva hur dessa funktioner ska kedjas samman, felsöka distribuerade transaktioner och bestämma hur en funktion i en kedja misslyckas för att skapa kompenserande transaktioner för att avbryta olämpliga ändringar. Leta efter molntjänster och öppen källkodsverktyg, som FN-projektet, för att blomstra genom att hjälpa utvecklare att enkelt hantera programmering, komposition, felsökning och livscykelhantering av serverlösa funktioner och att distribuera och testa dem på en bärbar dator eller lokal server eller något moln. Nyckeln kommer att vara att välja en serverlös plattform som ger maximal portabilitet.

8. Den enda frågan om containrar blir "Varför inte?"

Behållare blir standard för dev / testarbete och vanligt för produktionsapplikationer. Förvänta dig fortsatt förbättringar av säkerhet, hanterbarhet, orkestrering, övervakning och felsökning, driven av öppen källkodsinnovationer och industristandarder. Behållare utgör byggstenarna för många av de trender som driver modern utveckling inklusive mikrotjänsterarkitekturer, molninbyggda appar, serverlösa funktioner och devops.

Behållare är inte meningsfulla överallt - till exempel när du behöver en mer förskrivningsbar molnplattform, till exempel en integrationspaaS eller en mobil PaaS - men dessa molntjänster på högre nivå körs själva på containrar och kommer att vara undantagen som bevisar att regel.

Dessutom måste programvarulicensieringsmodeller för värdefull, kommersiell, lokal programvara omfatta spridningen av antagande av containrar. Prissättningsmodeller för programvara måste stödja "slå på" och "stänga av" licensiering eftersom behållare instantieras, uppskalas och nedskalas.

9. Programvara och system blir självläkande, självjusterande och självhanterande

Utvecklare och produktionsgrupper drunknar i data från loggar, webb- / app- / databasprestandaövervakning och övervakning av användarupplevelse och konfiguration. Dessutom sänks dessa olika typer av data, så du måste ta med många människor i ett rum för att felsöka problem. Sedan är det frågan om kunskapsöverföring: Utvecklare spenderar mycket tid på att berätta produktionsöversikterna för sina applikationer, vilka trösklar som ska ställas in, vilka servertopologier som ska övervakas för en transaktion och så vidare.