Quanto può fare un programmatore da solo? [chiuso]


13

Con i prodotti software che richiedono lo sviluppo di interi team di persone, quanto può realizzare un programmatore da solo? In altre parole, una sola persona potrebbe scrivere Photoshop, MS word, ecc ...? E se non potessero, lo sviluppo web sarebbe un'area in cui un programmatore potrebbe fare molto?


2
Non sono sicuro di ciò che viene chiesto qui. Se hai il mojo per sviluppare un software, puoi sicuramente realizzarlo da solo - web o no. Potrebbe volerci del tempo, dopo tutto Facebook non è stato sviluppato in un giorno da MZ.
CoolBeans,

Dai un'occhiata a blitwise.com per il lavoro di singolo sviluppatore.
Michael K,

La produttività del programmatore varia molto. Alcuni programmatori codificano 10 volte più velocemente di altri ...
Denis de Bernardy,

2
Se fosse un singolo edificio per sviluppatori, photoshop e ms word, sarebbero circa 1/100 delle dimensioni. Non lo considero una cosa negativa.
JeffO,

1
Dipende. :-)
richard

Risposte:


14

Inizia in piccolo

Linux è attualmente molto più grande delle sue prime iterazioni, ma l'importante è che sia uscito con abbastanza materiale per guadagnare trazione.

Solo se ne vale la pena

Ho la regola personale che valga la pena fare cose grandi se fondamentalmente diverse dalle altre. Altrimenti ti stai tuffando in un oceano rosso .

Buon inizio, ma non sempre sostenibile

Se il tuo software è abbastanza buono, ti consigliamo di prenderlo sul serio. Prendiamo ad esempio Markus "Notch" Persson, creatore di Minecraft. IIRC ha iniziato il gioco da solo, e quando il gioco ha preso piede ha iniziato a cercare collaboratori e ha persino creato un'azienda.

Mentre sono gratificanti per ottenere qualcosa da soli, i grandi progetti realizzano il loro potenziale grazie alla collaborazione degli sviluppatori, non a un singolo genio, che mi porta al punto successivo.

Un mito

Dai un'occhiata a The Myth of the Genius Programmer , un discorso di Ben Collins-Sussman e Brian Fitzpatrick a Google I / O 2009. Dovresti avere tutte le false aspettative lì. Il punto principale che voglio sottolineare qui è che a volte un singolo sviluppatore ottiene il merito di tutto, mentre c'erano più persone dietro.

È sicuramente possibile

Un altro esempio, a parte Linus Torvalds, è John Carmack. Ha portato Wolfenstein in soli quattro giorni quando EA aveva stimato una squadra completa per due mesi.

Non è la quantità di codice, è la conoscenza architettonica e tecnica che ti consente di ottenere grandi cose con meno codice di quanto ti aspetteresti.

Data l'abilità e la conoscenza (oltre il livello medio), puoi fare in modo che un sacco di lavoro sembri poco.


7
+1 IMO, Linus non ha merda su Carmack. La sua roba è roba da leggenda.
Steven Evers,

1
chi è roba leggenda? Linus o Giovanni. non hai ripreso il tuo gergo lì
Chani il

1
@RYUZAKI: Suppongo che il commento di SnOrfus sia un'intera domanda per lo scambio di stack in inglese.
Spoike,

1
@RYUZAKI - John ha la stoffa della leggenda, nel commento di SnOrfus.
ottobre

1
Carmack ha ricevuto lo stipendio completo di 2 mesi per i suoi 4 giorni di lavoro o solo una pacca sulla spalla?
Estratto l'

5

A causa della natura del lavoro che sto svolgendo, ho sviluppato da solo un paio di applicazioni piuttosto grandi. Quindi sì, è fattibile. Potrei andare avanti per ore ma non ho molto tempo, quindi ecco alcuni pro e contro per esperienza personale.

Professionisti:

  • sei in pieno controllo e non c'è squadra con cui combattere, quindi puoi andare con quello che pensi / sai che è meglio. Non perdere tempo in discussioni infinite su un piccolo aspetto del codice.
  • hai tutta l'architettura nella tua testa, sai letteralmente tutto a riguardo, l'assistenza clienti è un gioco da ragazzi dal momento che conosci tu stesso tutte le risposte
  • impari molto su tutti gli aspetti della programmazione. Interfaccia utente di basso livello, medio livello, alto livello, ...

Contro:

  • nessuna squadra con cui combattere, quindi a volte prendi decisioni sbagliate senza che nessuno te lo dica
  • è facile perdersi in esso, non vedere più il quadro generale. E non c'è nessuno che possa aiutarti. (tranne SO / SA e simili:])
  • dedicando molto tempo all'assistenza clienti che preferiresti dedicare alla programmazione

3

Con un po 'di dedizione e abilità, una sola persona può sicuramente ottenere molto. Tuttavia, non è facile, solo essere un buon programmatore non è abbastanza. Per un progetto di successo devi spesso pensare a casi d'uso, progettazione dell'interfaccia utente, documentazione, supporto e molto altro. Una volta che le cose cambiano e il numero degli utenti cresce facendo tutto da solo diventerà sempre più irrealistico - questo è il punto in cui o più persone entrano nel progetto (attraverso la partecipazione della comunità, assumendo persone o altro) o il progetto muore.


1

Dipende dal software che sta cercando di sviluppare, dal limite di tempo e dalle competenze. Se sta sviluppando una semplice applicazione MIS, è molto probabile che possa farlo in breve tempo. Cercare di sviluppare un software complicato come Photoshop, MS Word, Blender, Flash, ecc. È possibile ma richiede molto tempo e ha la funzione più semplice e le funzionalità sono semplici.


1

Dipende tutto dall'abilità, dal tempo speso e dalla volontà di farlo. Più conoscenza hai, meno tempo ci vorrà per realizzare qualcosa. Avrai una conoscenza estremamente intima della base di codice come unico sviluppatore che può anche accelerare il processo di capire / refactoring / debugging.

Ho lavorato personalmente su un'applicazione di trasferimento da desktop a server. Ho codificato l'applicazione server, l'applicazione desktop e l'ho testato tutto da solo. Ho anche scritto il programma di installazione per l'applicazione. Ho escogitato un modo per consentire il trascinamento delle icone sulla barra delle applicazioni in Windows e ho persino finito di scrivere una nuova libreria Java da zero. L'ho fatto nel corso di un anno ed è ancora in fase di sviluppo e test.

L'intero progetto è stato una prova principale. Ogni giorno dopo la scuola ho lavorato al progetto e nei fine settimana. È massiccio come MS Word, Photoshop, ecc.? No. Il progetto è ancora ampio e in continua crescita ed è possibile ottenere molto.


Vedi che è quello che mi chiedevo ... potrebbe richiedere più tempo, ma dal momento che sapresti cosa fa tutto il codice probabilmente sarebbe più facile eseguire il debug. E un'ottima esperienza di apprendimento.
fender1901

@ fender1901 Beh, la programmazione dovrebbe essere costantemente un'esperienza di apprendimento, il giorno in cui non lo è quando o sai tutto o hai bisogno di trovare un compito più impegnativo.

1

Attualmente sto lavorando a un progetto del genere nel mio tempo libero (è un'applicazione web, non un'applicazione desktop, ma i principi sono gli stessi). Ecco cosa ho trovato finora:

1) Non reinventare la ruota . Usa librerie / framework esistenti, piuttosto che fare tutto da zero. Un avvertimento qui: assicurati di prestare attenzione alle licenze in quanto si applicano alla distribuzione / versione desiderata / qualunque modello. Alcune licenze copyleft richiedono che tu apra il tuo "lavoro derivato". Alcune licenze consentono solo l'uso non commerciale. Tieni traccia delle librerie / framework che utilizzi in modo da poter fornire l'attribuzione appropriata nella schermata / area "Crediti" / qualunque cosa

2) Lavora iterativamente . Questo si lega a ciò che ha detto Dukeofgaming con "Start Small" . È molto più probabile che rimani con un progetto se riesci a vedere i risultati. Fino a quando non vedi qualcosa che funziona, ogni sviluppo che fai è l'equivalente di dipingere al buio.

3) Non abbiate paura di chiedere feedback / aiuto in anticipo . Le probabilità sono che non sei bravo in tutto. Se sei bravo con il grintoso livello di codifica di livello inferiore, probabilmente fai schifo all'interfaccia utente. Si applica anche il contrario. Non fa mai male ricevere consigli da coloro che sono migliori di te in una determinata area. Molte persone lo eviteranno perché sono preoccupati per qualcuno che ruba la loro idea. Non preoccuparti di questo - se qualcuno cerca di copiarti, significa che sei su qualcosa di utile. Le idee sono economiche, l'implementazione è la chiave. Apple non ha inventato il lettore MP3, Microsoft non ha inventato il sistema operativo, Facebook non ha inventato il social network e Google non ha inventato il motore di ricerca. Quello che hanno fatto è stato renderlo avvincente per gli utenti (e non succhiare).

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.