Quanto um programador pode fazer sozinho? [fechadas]

13

Com os produtos de software levando equipes inteiras de pessoas a se desenvolver, quanto um programador pode realizar sozinho? Em outras palavras, uma única pessoa poderia escrever Photoshop, MS Word, etc ...? E se não pudessem, o desenvolvimento web seria uma área em que um programador poderia fazer muito?

fender1901
fonte
2
Não tenho certeza do que está sendo perguntado aqui. Se você tem o mojo de desenvolver um software, certamente poderá realizá-lo sozinho - na Web ou não. Pode levar algum tempo, afinal o facebook não foi desenvolvido em um dia pela MZ.
coolbeans
Dê uma olhada no blitwise.com para um único trabalho de desenvolvedor.
Michael K
A produtividade do codificador varia muito amplamente. Algum código codificadores 10x + mais rápido do que outros ...
Denis de Bernardy
2
Se fosse um único edifício devloper, photoshop e ms word, eles teriam cerca de 1/100 do tamanho. Eu não considero isso uma coisa ruim.
Jeffo
1
Depende. :-)
richard

Respostas:

14

Comece pequeno

Atualmente, o Linux é muito maior do que suas primeiras iterações, mas o importante é que ele tenha material suficiente para ganhar tração.

Somente se vale a pena

Eu tenho a regra pessoal de que vale a pena fazer coisas grandes se for fundamentalmente diferente das demais. Caso contrário, você estará mergulhando em um oceano vermelho .

Bom para começar, mas nem sempre sustentável

Se o seu software for bom o suficiente, convém levar a sério. Tomemos, por exemplo, Markus "Notch" Persson, criador do Minecraft. No IIRC, ele começou o jogo sozinho e, quando ganhou força, começou a procurar colaboradores e até fundou uma empresa.

Embora seja gratificante conseguir algo sozinho, os grandes projetos cumprem seu potencial com a colaboração do desenvolvedor, e não um único gênio, o que me leva ao próximo ponto.

Um mito

Confira The Myth of the Genius Programmer , uma palestra de Ben Collins-Sussman e Brian Fitzpatrick no Google I / O 2009. Você deve ter todas as falsas expectativas lá. O ponto principal que quero destacar aqui é que, às vezes, um único desenvolvedor recebe o crédito pela coisa toda, enquanto havia mais pessoas por trás.

É definitivamente possível

Outro exemplo, além de Linus Torvalds, é John Carmack. Ele foi portador de Wolfenstein em apenas quatro dias, quando a EA estimou uma equipe completa por dois meses.

Não é a quantidade de código, é o conhecimento arquitetônico e técnico que permite obter grandes coisas com menos código do que você esperaria.

Dada a habilidade e o conhecimento (além do nível médio), você pode fazer muito trabalho parecer pouco.

dukeofgaming
fonte
7
+1 na IMO, Linus não tem nada a ver com Carmack. As coisas dele são lendas.
Steven Evers
1
quem é o material da lenda? Linus ou John. não recebi sua gíria de volta lá
Chani
1
@RYUZAKI: Eu acho que o comentário de SnOrfus é uma questão inteira para a stackexchange em inglês.
Spoike
1
@RYUZAKI - John tem o material da lenda, no comentário do SnOrfus.
Ocodo 07/07
1
Carmack recebeu o salário total de 2 meses da equipe por seus 4 dias de trabalho ou apenas um tapinha nas costas?
Tirou
5

Devido à natureza do trabalho que estou desenvolvendo, desenvolvi algumas aplicações bastante grandes por conta própria. Então, sim, é factível. Eu poderia continuar falando nisso por horas, mas não tenho muito tempo agora, então aqui estão alguns prós e contras da experiência pessoal.

Prós:

  • você está no controle total e não há equipe com a qual lutar, então você pode ir com o que acha / sabe que é melhor. Não há perda de tempo em discussões intermináveis ​​sobre um pequeno aspecto no código.
  • você tem toda a arquitetura em sua cabeça, sabe literalmente tudo sobre ela, o suporte ao cliente é muito fácil, pois você mesmo conhece todas as respostas
  • você aprende muito sobre todos os aspectos da programação. Interface de usuário de nível baixo, médio e alto, ...

Contras:

  • nenhuma equipe com a qual lutar, então, às vezes, você toma más decisões sem que ninguém lhe diga
  • é fácil se perder, não vendo mais o cenário geral. E não há ninguém que possa ajudá-lo. (exceto SO / SA e similares:])
  • gastando muito tempo com o suporte ao cliente que você prefere gastar em programação
stijn
fonte
3

Com alguma dedicação e habilidade, uma única pessoa pode definitivamente conseguir muito. No entanto, não é fácil, apenas ser um bom programador não é suficiente. Para um projeto bem-sucedido, você geralmente precisa pensar em casos de uso, design de interface do usuário, documentação, suporte e muito mais. Quando as coisas começarem a rolar e os números de usuários aumentarem, tudo sozinhos se tornará irrealista - esse é o ponto em que mais pessoas entrarão no projeto (através da participação da comunidade, contratação de pessoas ou outros) ou o projeto morrerá.

Wladimir Palant
fonte
1

Depende do software que ele / ela está tentando desenvolver, restrição de tempo e habilidades. Se ele / ela estiver desenvolvendo um aplicativo MIS simples, é muito possível que ele possa fazê-lo em pouco tempo. Tentando desenvolver um software tão complicado quanto Photoshop, MS Word, Blender, Flash e etc, é possível, mas leva muito tempo e possui a função mais básica e os recursos são simples.

Tom
fonte
1

Tudo depende da habilidade, do tempo gasto e da vontade de fazê-lo. Quanto mais conhecimento você tiver, menos tempo levará para realizar alguma coisa. Você obterá um conhecimento extremamente íntimo da base de código como o único desenvolvedor que também pode acelerar o processo de descobrir / refatorar / depurar.

Pessoalmente, estou trabalhando em um aplicativo de transferência de desktop para servidor. Eu codifiquei o aplicativo do servidor, o aplicativo de desktop e testei tudo sozinho. Eu escrevi o instalador para o aplicativo mesmo. Eu descobri uma maneira de permitir arrastar e soltar nos ícones da bandeja do sistema no Windows e até acabei escrevendo uma nova biblioteca Java do zero. Eu fiz isso ao longo de um ano e ainda está em desenvolvimento e teste.

Todo esse projeto foi uma provação principal. Todos os dias, depois da escola, eu trabalhava no projeto e nos fins de semana. É tão grande quanto o MS Word, Photoshop, etc? Não. O projeto ainda é grande e sempre em crescimento, e é possível alcançar muito.


fonte
Veja o que eu estava pensando ... pode levar mais tempo, mas como você saberia o que todo o código faz, provavelmente seria mais fácil depurar. E uma ótima experiência de aprendizado.
Fender1901
@ fender1901 Bem, a programação deve ser constantemente uma experiência de aprendizado; no dia em que não é, você conhece tudo ou precisa encontrar uma tarefa mais desafiadora.
1

Atualmente, estou trabalhando nesse projeto em meu tempo livre (é um aplicativo da Web, não um aplicativo de desktop, mas os princípios são os mesmos). Aqui está o que eu encontrei até agora:

1) Não reinvente a roda . Use bibliotecas / estruturas existentes, em vez de fazer tudo do zero. Uma ressalva aqui: preste atenção às licenças, pois elas se aplicam à sua distribuição / release / modelo desejado. Algumas licenças copyleft exigirão que você abra seu "trabalho derivado" de código-fonte aberto. Algumas licenças permitem apenas o uso não comercial. Acompanhe as bibliotecas / estruturas que você usa, para poder fornecer a atribuição apropriada na tela / área "Créditos" / qualquer outra coisa

2) Trabalhe iterativamente . Isso está relacionado ao que a dukeofgaming disse com "Start Small" . É muito mais provável que você fique com um projeto se conseguir ver resultados. Até que você possa ver algo funcionando, qualquer desenvolvimento que você fizer é equivalente a pintar no escuro.

3) Não tenha medo de pedir feedback / ajuda desde o início . As chances são de que você não seja bom em tudo. Se você é ótimo no nível básico da codificação, provavelmente é péssimo na interface do usuário. O inverso também se aplica. Nunca é demais receber conselhos daqueles que são melhores que você em uma determinada área. Muitas pessoas evitam isso porque estão preocupadas com alguém que rouba sua ideia. Não se preocupe com isso - se alguém tentar copiar você, isso significa que você gosta de algo que vale a pena. As idéias são baratas, a implementação é fundamental. A Apple não inventou o MP3 player, a Microsoft não inventou o sistema operacional, o Facebook não inventou a rede social e o Google não inventou o mecanismo de busca. O que eles fizeram foi torná-lo atraente para os usuários (e não ruim).

Daniel Kitchener
fonte