Programmering

Hvordan en moderne utviklingsorganisasjon ser ut

Jeg jobber for en oppstart i San Francisco. Det vi bruker i Silicon Valley, er ikke nødvendigvis et tegn på bransjen som helhet. Så jeg spurte uformelt noen få venner fordelt over hele bransjen hvilke verktøy de bruker, for å finne ut verktøyene en moderne (men ikke Silicon Valley) utviklingsorganisasjon bruker.

Gitt hvis du er i en grå kabinegård - eller, verre, en kabinett med beige kabinett - er du kanskje ikke på den blødende, ledende eller til og med kjedelige men upålitelige kanten av teknologien, slik at kjørelengden din kan variere. Hvis du bare spør Microsoft "hva skal vi kjøpe?" da kan kjørelengden din variere, men selv Microsoft innser at Git er konge og verden vår blir stadig mer mangfoldig, noe som gjør enhver enkelt leverandørs utviklingsverktøy vanskeligere å vie seg til. Det er en polyglotverden i dag når det gjelder utviklingsverktøy.

Hvis du prøver å se hvor du er i forhold til andre, vil denne artikkelen vise deg. Hvis du ønsker å opprette en ny butikk og lurer på "Hva gjør alle andre og hvor skal vi reise?" da vil det vise deg det også.

Det som er klart er at moderne utviklingsorganisasjoner - til og med de som kanskje synes de er litt old school - ikke ser ut som de som var for noen få år siden. I nær fremtid vil vi ha et veldig container / maskinlæringssted, og kanskje til og med være chatops-drevet. Tross alt var scrums og devops romfremmede begreper for ikke så lenge siden.

Det som er vanlig i moderne utviklingsorganisasjoner

Følgende ting er vanlig blant de fleste jeg snakket med. De representerer den ikke-ambisjonsrike tilstanden til programvareutvikling.

E-postadressen er død, Slakk er konge

Seriøst, ingenting har oppnådd bred aksept så raskt som Slack har gjort. Visst, noen steder bruker HipChat eller andre Slack-lignende ting, men Slack er hvordan organisasjoner fungerer i disse dager. De er pratsomme, og nå er chatten søkbar.

PCM og CVS er død; alle hagler Git og GitHub

Tilbake på dagen var kodeinnsjekking vanskelig og låser var pessimistiske. Jeg har jobbet med globale prosjekter der innsjekking over en transatlantisk kabel tok evigheter. Og la oss ikke snakke om kasser.

Nå distribueres revisjonskontroll, og Git - selv om det er betydelig vanskeligere å bruke enn tidligere verktøy - var et slikt fremskritt at Git har oppnådd fullstendig dominans. \

Alle har en Mac

Jeg er en motvillig Mac-bruker. Hvis det var opp til meg, ville jeg kjøre Ubuntu Linux på bedre maskinvare. Imidlertid er min datamaskin som er betalt for datamaskiner en Mac. Og jeg er ikke alene. MacOS er raskere, men mer oppblåst og tungvint, enn Windows, og jeg har alle mine kjente verktøy som SSH, men jeg savner fortsatt Linux.

Jira er fortsatt vår oppblåste konge

Jira kan eldes, og det kan være alternativer som BaseCamp og open source Open Project. Men Jiras styrke er at hvis du er på den, drar du ikke. Du er allerede kjent med det. Den har en markedsplass for utvidet funksjonalitet. Det plugges inn i det meste, og de fleste andre ting støtter det.

Jenkins serverer oss fortsatt

Det er oppstarts som Travis-CI og også-rans som Jira-skaperen Atlassian's Bamboo, men til slutt er Jenkins fortsatt på toppen og kjører vår kontinuerlige integrasjon og distribusjon til vårt testmiljø.

AWS er ​​der det er

Amazon Web Services er ikke den rimeligste skyplattformen. Det er ikke det enkleste å bruke. Men det er absolutt det mest fullverdige, og det er det folk flest er kjent med. Jeg har møtt folk som bruker Google Compute Engine eller Microsoft Azure. Jeg har brukt dem til prosjekter selv, men som standard er plattformen AWS.

Den interne plattformen er fremdeles VMware

For utviklere bak bedriftens brannmur der skyen bare er en drøm, de er fortsatt på VMware og gjør ting på VMware-måten. Avsetning er fortsatt ventetid, og SAN-ytelsen er fortsatt uforutsigbar.

Agil utvikling er mest scrum-ish

Alle gjør noe som scrums, men ikke scrums nøyaktig, og få er med rette overbevist om at de gjør smidig rett, eller at deres "smidige" virkelig er smidig - og ikke verken "lastekult agile" eller kaos med et annet navn.

Disiplin, prosjektledelse og produktadministrasjon er fremdeles underutviklet, underkompensert og underbelønnet.

Det som trender på tvers av moderne utviklingsorganisasjoner

Det er mange ledende praksis vi snakker om på - Devops, Docker-containere, Kubernetes-containere, Windows-containere, skyutviklingsplattformer (PaaS), utvikling av alle enheter, maskinlæring, nye språk som Kotlin og Google Go og så videre. har ikke oppnådd global adopsjon (ennå).

Beholdere

Enten det er Docker eller den mulige arvingen Kubernetes, bruker ikke alle containere.

For det første, hvis du er under belastning ganske mye hele tiden, er det overhead å kjøre den på AWS. Kostnadsfordelen din skjer bare hvis du faktisk kan dele ressurser.

For det andre gjør bruken av containere programvaren din mer vedlikeholdbar, men det gjør også bygg- og distribusjonsprosessen tregere og mer komplisert.

Maskinlæring

Å identifisere hvor du kan bruke maskinlæring (en delmengde av kunstig intelligens) og samle dataene i et format som lar deg bruke maskinlæring er den vanskelige delen.

Noen bruker det under dekslene i produkter de kjøper, men de har ikke datavitenskapelig ekspertise for å bevise at det er nyttig. Dessuten har mangel på kompetanse i markedet gjort adopsjon av maskinlæring mer dempet enn hypen skulle tilsi.

Chatops

Folk er interessert i chatops, men ingen jeg snakket med gjør det ennå.