Distribuerad utveckling

Ett distribuerat utvecklingsprojekt är ett forsknings- och utvecklingsprojekt (FoU) som görs på flera arbetsplatser eller platser. Det är en form av FoU där projektmedlemmarna kanske inte ser varandra ansikte mot ansikte, men de arbetar alla tillsammans mot projektets resultat. Ofta görs detta via e-post , Internet och andra former av snabb långdistanskommunikation . Distribuerad utveckling var till stor del banbrytande av mjukvarugemenskapen med öppen källkod .

Det skiljer sig från outsourcing eftersom alla organisationer arbetar tillsammans på samma nivå, istället för att en organisation lägger ut arbetet på en annan. Det liknar ett virtuellt team men med ett forskningselement.


Egenskaper för distribuerad utveckling

Utvecklare är fördelade på flera platser och arbetar med samma projekt eller produkt. Orsakerna till distributionerna spelar ingen roll, de kan inkludera tillgången på resurser på olika platser, närhet till vissa kluster, närhet till kunder eller kostnadsfördelar.

Människor kanske specialiserar sig på en distribuerad utvecklingsmiljö, men de samarbetar aktivt för att uppnå det gemensamma målet. Det måste finnas en programledare eller projektledare någonstans i projektledningsmixen. I en distribuerad miljö delar projektmedlemmarna idéer, information och resurser. Ett centralt krav är att all kommunikation ska vara öppen för alla inblandade och inte begränsat till dem i samma kontorsbyggnad. Detta uppnås vanligtvis genom att använda internetbaserat samarbete. Kommunikationsverktyg som ofta används inkluderar GitHub och wikis .

Distribuerad utveckling är en av de högsta formerna av samarbete i någon teknisk eller vetenskaplig FoU- miljö. Det är vanligtvis inte ett hinder för affärsframgång, men det kan variera från att vara något av en börda till svårt att uppnå, eftersom det kräver hög ledningsförmåga, en utmärkt kommunikationsmiljö, en politiskt fri miljö, en mycket effektiv infrastruktur, en väl- utvecklat organisationsschema och frekvent interaktion. Det viktigaste är att ledningen måste tro på upplägget och vidta åtgärder för att belöna efterlevnad, samt vara mycket strikt mot dem som inte följer efterlevnaden. Enligt entreprenören Mitch Kapor gör många företag distribuerad utveckling framgångsrikt.

Framgångsfaktorer

Det finns flera nackdelar med distribuerad utveckling. Studier har visat att anställda som alla arbetar på samma kontor är bättre på att samordna sitt arbete och mer produktiva. På samma sätt kan mjukvaruapplikationer som är tätt integrerade vara mycket svåra att utveckla med hjälp av distribuerad utveckling. Av dessa skäl kräver många stora företag, inklusive Facebook, att alla anställda arbetar på samma kontor.

Trots detta finns det flera fördelar med distribuerad utveckling för ett företag. Det gör det möjligt för företag att anställa en mer varierad arbetsstyrka, inklusive anställda som vill arbeta hemma eller inte vill flytta långa sträckor. Det tillåter företag att anställa kvalitetsarbetare till en lägre kostnad, i motsats till de mycket höga lönerna i Silicon Valley. Distribuerad utveckling är ofta mer lämplig för modulär mjukvara, där olika delar av programmet kan utvecklas separat.

Det finns tre huvudsakliga framgångsfaktorer för ett distribuerat utvecklingsprojekt:

  1. Välj ut och/eller rekrytera bra, starka och mycket kompetenta personer.
  2. Spendera lite pengar för möten ansikte mot ansikte, särskilt i början av varje större projekt.
  3. Bygg en organisationsdesign som stödjer arbetet i en distribuerad utveckling, inklusive rätt incitamentssystem.

Genom att göra dessa tre åtgärder kan man få fördelar utöver ren outsourcing eller offshoring , nämligen mycket högre motiverade medarbetare i alla delar av det distribuerade nätverket, högre retention och säkerligen vinner man på mångfalden i nätverket.

Ansökningar

Globalt distribuerad mjukvaruteknik

Global Distributed Software Engineering (GDSE) är företagsapplikationen för en distribuerad utvecklingsprocess. Företag kan arbeta i en distribuerad miljö på grund av att team arbetar på olika platser, eller på grund av Outsourcing eller Offshoring . En populär metod för distribuerad mjukvaruutveckling är Distributed Agile Software Development .

Tidigare utfördes nästan all mjukvaruutveckling av team där alla medlemmar: teamledaren, designers, utvecklare och testare, arbetade tillsammans i nära fysisk närhet. Under åren började företagen växa i storlek och komplexitet, vilket tvingade dem att utveckla mjukvara globalt. Dessutom hade andra krafter sin inverkan också, till exempel började ekonomiska krafter och globalisering göra nationella marknader till globala marknader, vilket också medförde mer konkurrens.

Som förklarats tidigare om framgångsfaktorer ger utveckling av mjukvara i en distribuerad miljö flera fördelar, vilket också är en faktor för företag som börjar utveckla mjukvara globalt, till exempel:

  • Lägre utvecklingskostnader på grund av till exempel lägre löner i andra regioner i världen
  • Tidseffektivitet, öka antalet dagliga arbetstimmar
  • Tillgång till en större kvalificerad arbetskraftspool
  • Närhet till ett företags marknad och kunder

Globalt distribuerad mjukvaruteknik har många utmaningar när det gäller kommunikation. Studieområdet kommunikation inom distribuerad mjukvaruutveckling tar upp dessa utmaningar och fokuserar på att hjälpa företag att ha pålitliga kommunikationskanaler utan missförstånd.