Hur en modern utvecklingsorganisation ser ut

Jag jobbar för en start i San Francisco. Vad vi använder i Silicon Valley är inte nödvändigtvis ett tecken på industrin som helhet. Så jag frågade informellt några vänner distribuerade över hela branschen vilka verktyg de använder för att räkna ut verktygen som en modern (men inte Silicon Valley) utvecklingsorganisation använder.

Beviljas om du befinner dig i en grå båsgård - eller, ännu värre, en beige båsgård - kanske du inte befinner dig på den blödande, ledande eller till och med tråkiga men otillförlitliga teknologin så att din körsträcka kan variera. Om du bara frågar Microsoft "vad ska vi köpa?" då kan din körsträcka variera, men även Microsoft inser att Git är kung och vår värld blir alltmer diversifierad, vilket gör varje enskild leverantörs utvecklingsverktygsstack svårare att ägna sig åt. Det är en polyglotvärld idag när det gäller utvecklingsverktyg.

Om du försöker se var du är i förhållande till andra visar den här artikeln dig. Om du vill skapa en ny butik och undrar "Vad gör alla andra och vart ska vi åka?" då kommer det att visa dig det också.

Det som är klart är att moderna utvecklingsorganisationer - även de som kanske tycker att de är lite gamla skolor - inte ser ut som de för några år sedan. Inom en snar framtid kommer vi att ha en mycket container / maskininlärningsplats, och kanske till och med vara chatops-driven. Trots allt var scrums och devops rymdfrämmande begrepp för inte så länge sedan.

Vad är vanligt i moderna utvecklingsorganisationer

Följande saker är vanliga bland de flesta jag pratade med. De representerar det icke-ambitionella tillståndet för programvaruutveckling.

E-post är död, Slack är kung

På allvar har ingenting uppnått bred acceptans så snabbt som Slack har gjort. Visst, vissa platser använder HipChat eller andra Slack-liknande saker, men Slack är hur organisationer arbetar idag. De är pratsamma, och nu är chatten sökbar.

PCM och CVS är döda; alla haglar Git och GitHub

Tillbaka på dagen var kodincheckningar hårda och lås var pessimistiska. Jag har arbetat med globala projekt där checkins över en transatlantisk kabel tog evigt. Och låt oss inte prata om kassor.

Nu distribueras revisionskontroll och Git - även om det är betydligt svårare att använda än tidigare verktyg - var ett sådant steg framåt att Git har uppnått fullständig dominans. \

Alla har en Mac

Jag är en motvillig Mac-användare. Om det var upp till mig skulle jag köra Ubuntu Linux på bättre hårdvara. Men min företagsbetalda dator är en Mac. Och jag är inte ensam. MacOS är snabbare, men mer uppsvällt och besvärligt, än Windows, och jag har alla mina bekanta verktyg som SSH, men jag saknar fortfarande Linux.

Jira är fortfarande vår uppblåsta kung

Jira kan åldras, och det kan finnas alternativ som BaseCamp och Open Project Open Source. Men Jiras styrka är att om du är på den, lämnar du inte. Du är redan bekant med det. Det har en marknadsplats för utökad funktionalitet. Det ansluts till de flesta saker, och de flesta andra saker stöder det.

Jenkins tjänar fortfarande oss

Det finns uppgångar som Travis-CI och även-rans som Jira-skaparen Atlassian's Bamboo, men i slutändan är Jenkins fortfarande på topp och driver vår kontinuerliga integration och distribuerar till vår testmiljö.

AWS är där det är

Amazon Web Services är inte den mest prisvärda molnplattformen. Det är inte det enklaste att använda. Men det är verkligen den mest fullfjädrade, och det är vad de flesta känner till. Jag har träffat människor som använder Google Compute Engine eller Microsoft Azure. Jag har använt dem för projekt själv, men som standard är plattformen som AWS använder.

Den interna plattformen är fortfarande VMware

För utvecklare bakom företagets brandvägg där molnet bara är en dröm, de är fortfarande på VMware och gör saker på VMware-sättet. Provisionering är fortfarande en väntan, och SAN-prestanda är fortfarande oförutsägbar.

Agil utveckling är mestadels scrum-ish

Alla gör något som scrums men inte scrums exakt och få är med rätta övertygade om att de gör smidig rätt eller att deras "agile" verkligen är smidig - och inte "last-kult agile" eller kaos med ett annat namn.

Disciplin, projektledning och produkthantering är fortfarande underutbildade, underkompenserade och underbelönade.

Vad som trender i moderna utvecklingsorganisationer

Det finns många ledande metoder som vi pratar om på - devops, Docker-containrar, Kubernetes-containrar, Windows-containrar, molnutvecklingsplattformar (PaaS), utveckling av allenhetsenheter, maskininlärning, nya språk som Kotlin och Google Go och så vidare - den tillflyktsorten har inte uppnått global antagande (ännu).

Behållare

Oavsett om det är Docker eller dess möjliga arvtagare Kubernetes, använder inte alla containrar.

För det första, om du är under belastning ganska mycket hela tiden, finns det overhead att köra det på AWS. Din kostnadsfördel händer bara om du faktiskt kan dela resurser.

För det andra gör användningen av containrar din programvara mer underhållbar, men det gör också din bygg- och distributionsprocess långsammare och mer komplicerad.

Maskininlärning

Att identifiera var du kan använda maskininlärning (en delmängd av artificiell intelligens) och samla in data i ett format som gör att du kan använda maskininlärning är den svåraste delen.

Vissa människor använder det under omslaget i produkter de köper, men de har inte datavetenskaplig expertis för att bevisa dess användbarhet. Dessutom har brist på kompetens på marknaden gjort att maskininlärning är mer dämpad än vad hype skulle indikera.

Chatops

Människor är intresserade av chatops, men ingen jag pratade med gör det än.