Ambiente interno contro lo sviluppo del software [chiuso]


13

Nel settore, esiste una distinzione tra un ambiente di "sviluppo interno" in cui gli sviluppatori di software stanno scrivendo codice che verrà utilizzato dalla società stessa e un ambiente di "sviluppo software" adeguato in cui il software è costruito per essere venduto / distribuito al pubblico.

Tra le altre, un'ovvia differenza tra i due è che un'azienda orientata allo sviluppo del software in genere aderirà a una sorta di ciclo di vita dello sviluppo del software come la scrittura di specifiche, i test, la costruzione ecc., Mentre il negozio orientato all'azienda di solito fare le cose in un modo più informale poiché loro stessi sono gli utenti finali e possono sempre risolvere qualcosa che non è stato fatto bene.

Come studente (come la maggior parte degli altri studenti), mi aspettavo di finire a lavorare in un ambiente di sviluppo software, ma alla fine ho ottenuto la mia prima posizione in un'azienda che opera in maniera più interna.

A volte, mi chiedo se mi sto perdendo l'esperienza di sviluppo software a tutti gli effetti. C'è una base per questa sensazione? Dovrei cercare di entrare in un ambiente di sviluppo software adeguato?


9
Penso che tu stia generalizzando troppo. Le metodologie utilizzate non hanno nulla a che fare con i prodotti interni rispetto ai progetti venduti commercialmente. Ho lavorato su un prodotto spedito che è stato sviluppato ad hoc, ignorando molte di quelle che sarebbero considerate le migliori pratiche. Ho anche lavorato a progetti interni che avevano specifiche dettagliate, suite di test e una pletora di pratiche di controllo della qualità.
Thomas Owens

Entrambe le domande che hai posto possono essere risolte solo da te.
Leo,

6
IMHO, il tuo problema non ha nulla a che fare con la perdita della compagnia interna o del software. Sembra che tu stia soffrendo di trovarsi in un ambiente di sviluppo non strutturato e di non avere un mentore forte che ti aiuti a seguire le migliori pratiche.
maple_shaft

1
Sia che il software sia sviluppato per la vendita o per uso interno, è tutto chiamato "sviluppo software". Commerciale potrebbe essere un termine migliore di quello che tu chiami "sviluppo software".
Caleb,

1
Stai combinando due dimensioni dello sviluppo del software: processo di sviluppo ad hoc vs strutturato e sviluppo interno vs prodotto. Il grado di ciascuno può variare indipendentemente.
Sean McMillan,

Risposte:


13

Nella mia esperienza, la distinzione che stai facendo tra "in house" e "prodotto distribuibile" è falsa.

Ci sono aziende che prendono sul serio il loro processo di sviluppo software e quelle che non lo fanno. Che si tratti di "in house" o "su misura" o "termoretraibile" tende a non entrare così tanto (anche se sono fornitori di "termoretraibile", se non hanno un processo probabilmente non saranno in affari per lungo).

Dovresti cercare un luogo che abbia gli standard di sviluppo che stai cercando: durante l'intervista devi porre queste domande per assicurarti che il posto sia di tuo gradimento in questo senso (così come altri).


Stavo scrivendo qualcosa di simile a questo quando hai pubblicato. +1 solo per l'ultima frase, sebbene siano tutti punti validi.
Thomas Owens

@ThomasOwens - Sì, ho visto il tuo commento alla domanda dopo aver pubblicato la mia risposta e mi aspettavo una risposta anche da te;)
Oded

10

Puoi leggere questo articolo

http://www.joelonsoftware.com/items/2007/12/04.html

di Joel Spolsky, che si occupa esattamente della tua domanda.

Sono in una posizione in cui ho dovuto lavorare su entrambi gli ultimi anni: un prodotto software di medie dimensioni venduto e alcuni software interni. Da quell'esperienza, posso dirti che ci sono differenze tra queste due piattaforme, ma la situazione non è poi così grave come l'ha descritta Joel.

Ad esempio, la maggior parte dei nostri software interni deve funzionare solo in un ambiente molto limitato. Tanti strumenti che funzionano solo con un determinato foglio di calcolo o versione del database, con un ambiente di rete specifico, con un numero limitato di utenti, nessuna routine di installazione necessaria ecc. Ciò rende molte cose più facili e veloci da sviluppare rispetto alle nuove funzionalità introdotte in il nostro prodotto di spedizione. D'altra parte, ciò non significa che il mio codice per i programmi "interni" abbia una qualità inferiore o sia scritto in un modo più "casuale".


6

Molto tempo fa, ho letto un libro su Agile Project Management (vorrei ricordare il titolo), in cui l'autore ha distinto i sistemi in base ai loro livelli di tolleranza per i difetti del sistema. La tolleranza per i difetti potrebbe variare da molto alta, ad esempio un'utilità utilizzata da altri sviluppatori (dove i bug sono solo un inconveniente), a molto bassa, ad esempio un sistema che esegue il supporto vitale per gli astronauti (dove un bug potrebbe essere in pericolo di vita).

Il punto dell'autore era che la metodologia (e la formalità) di sviluppo dovevano essere mirate alla tolleranza agli errori (o criticità) del sistema. Penso che questa distinzione sia la più importante, in contrapposizione alla distinzione tra sviluppo interno e software per la distribuzione generale.

Immagina un ospedale che ha sviluppatori interni che costruiscono sistemi di cartelle cliniche che potrebbero influire sulla qualità delle cure mediche. In questo caso, il negozio interno sarebbe probabilmente più rigoroso di una consulenza di siti Web, che sta costruendo prodotti Web che saranno utilizzati dal grande pubblico.


3

Ho lavorato per software house, agenzie di marketing, telefoni cellulari e banche, una cosa che dirò, è la cultura e l'industria dell'azienda che determina il livello dei processi applicati. L'ambiente più rigoroso, lento, restrittivo e testato che abbia mai visto è stato lo sviluppo interno di una banca. Il più informale era un'agenzia di marketing.

Consiglio di imparare da questa esperienza e di usarla per decidere la tua direzione futura per il tuo prossimo lavoro. L'industria dello sviluppo del software non è una scienza, la sua arte / scienza, quindi la variazione e le differenze da una società all'altra. È più importante che impari a fare le cose giuste per quanto riguarda il tuo codice. Sebbene sia utile annotare mentalmente i fallimenti o la mancanza di processi, quindi quando il tuo manager è in grado di implementare processi migliori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.