Quais são as etapas para iniciar um grande projeto, quando tudo o que tenho é uma grande idéia? [fechadas]

49

Eu sou estudante de engenharia da computação. Eu estive pensando sobre como eu posso lidar com um grande projeto. Qual deve ser o meu primeiro passo para alcançar meu objetivo de maneira mais eficiente e eficaz?

Quando crio um projeto, não sei como devo começar a trabalhar nele. Muitas vezes, eu simplesmente ignoro. No entanto, não quero mais ignorar minhas idéias de projetos.

Agora, estou perguntando a todos, alguém pode compartilhar suas experiências? Como devo iniciar um projeto quando tudo o que tenho é uma ideia?

usuário
fonte
11
Resposta: Primeiro passo, comece a usar o controle de versão . Veja como eles fazem isso em repositórios de código-fonte aberto, como github, bitbucket, codeplex, sourceforge etc.
Spoike
Qual é o significado de "controle de versão"? Você pode descrever mais?
Veja minha resposta abaixo.
Spoike 5/08/11
11
Eu sugeriria uma migração para [produtividade.se], mas provavelmente será fechado como NARQ lá. Isso realmente não tem muito a ver com programação ou programadores, é incrivelmente aberto e é vago (o que é um projeto "grande"? "Mais" eficiente / eficaz do que o que?).
Aaronaught
6
Não é realmente uma resposta para sua pergunta, mas: não tenha medo de falhar. Não dê ouvidos a pessoas que lhe dizem que não pode. As pessoas famosas sobre as quais você leu não são famosas porque eram inteligentes ou talentosas. Eles são famosos porque eram persistentes. Pessoas inteligentes e talentosas são um centavo uma dúzia. Pessoas persistentes estão longe e são poucas.
Charles Lambert

Respostas:

64

Esqueça a codificação e a configuração de um ambiente de desenvolvimento por um momento. Se você deseja embarcar em um grande projeto, a primeira coisa que precisa fazer é entender o objetivo e o escopo do projeto.

O que eu recomendo é abrir um processador de texto e escrever um documento de 'metas do projeto'. Descreva qual é o objetivo da idéia e o objetivo geral do software que você deseja escrever. Em seguida, liste os objetivos de funcionalidade do projeto. Não me refiro a especificação, mas descrevo as diferentes peças de funcionalidade que o produto final deve suportar. Portanto, se você estava escrevendo um software para administrar uma escola, pode listar 'gerenciamento de professores' como uma funcionalidade e depois descrever o que essa funcionalidade incluiria (rastrear informações de contato, horário de aula, etc.).

Depois, a parte mais difícil: não é algo que você precise fazer logo no início, mas à medida que avança. Tão importante quanto listar os recursos que você deseja adicionar está revisando a funcionalidade que você descreveu no documento de metas e observe os recursos que você pode viver sem na primeira versão do programa. Essa é a chave para gerenciar o escopo.
Uma das principais razões pelas quais as pessoas falham em projetos maiores é que não sabem quando parar de trabalhar nele. Eles não acham que está "pronto" porque as idéias continuam surgindo e nunca são divulgadas. Eventualmente, eles perdem o interesse, e você ainda tem outra obra-prima pela metade. Portanto, você quer ter uma boa noção da funcionalidade realmente importante para alcançar a parte básica de seu objetivo. Esse é o seu primeiro alvo.

É assim que inicio todos os projetos não triviais agora. Isso me ajuda a manter o foco e evita que o escopo e o objetivo 'evoluam' durante o desenvolvimento.

GrandmasterB
fonte
+1 para tudo o que você diz. Leia também este livro
treecoder
+1 - não é necessário adicionar nada.
temptar
Esta é uma ótima resposta. Além disso, se você tiver algum tipo de software de gerenciamento de projetos, comece com ele mais cedo. Existem alguns gratuitos por aí com limitações, é claro. Eu usei o CampFire ( campfirenow.com/signup , procure por "Também oferecemos um plano gratuito: 4 conversas com 10 MB de armazenamento.") Antes.
M4tt1mus
11
Prefiro recomendar mapas mentais em vez de processador de texto (não experiente + página em branco = o projeto nunca decola).
MaR
11
Processador de palavras? Use papel e caneta. :)
rightfold
41

Eu acho que Linus colocou melhor

Ninguém deve começar a empreender um grande projeto. Você começa com um pequeno projeto trivial e nunca deve esperar que ele cresça. Se o fizer, você apenas projetará em excesso e geralmente pensará que é mais importante do que provavelmente é nesse estágio. Ou pior, você pode se assustar com o tamanho do trabalho que imagina. Portanto, comece pequeno e pense nos detalhes. Não pense em um quadro geral e design sofisticado. Se isso não resolver alguma necessidade imediata, é quase certo que tenha sido superprojetado. E não espere que as pessoas entrem e o ajudem. Não é assim que essas coisas funcionam. Você precisa obter algo parcialmente útil primeiro, e depois outros dirão "ei, isso quase funciona para mim", e eles se envolverão no projeto. -- Linus Torvalds

Torre
fonte
12

Qual deve ser o meu primeiro passo para alcançar meu objetivo de maneira mais eficiente e eficaz?

Suponho que você já tenha feito projetos antes e que esteja em uma faculdade / universidade que não ensina controle de versão / fonte. Se você deseja ver alguns projetos, sempre pode acessar repositórios de código aberto, como Github (usa Git), Bitbucket (usa Mercurial), Google Code (usa Mercurial, Git e Subversion), CodePlex (Mercurial e Subversion / TFS), SourceForge (Many), etc, e dê uma olhada em sua base de código. O que eles têm em comum é que estão usando um software de controle de origem.

Há muitas informações sobre como usá-los, por isso sugiro que você aprenda como usá-lo, porque essa é uma prática padrão da indústria. Aqui estão alguns guias visuais para você começar:

Você sabe, quando um projeto vem à minha mente, não sei o que devo fazer. Muitas vezes eu ignoro.

Há muito o que você pode fazer no seu tempo livre. Comece pequeno : crie um projeto do zero, coloque-o em um repositório de código-fonte. Confirme as alterações no seu repositório de código-fonte sempre que desejar adicionar algo ao seu pequeno projeto. Com o tempo, ele se tornará grande e, se você quiser voltar, sempre poderá reverter ou reverter as alterações feitas no sistema de controle de versão.

Spoike
fonte
9
+1 para começar pequeno, essa é a abordagem básica para projetos grandes: divida-o em pedaços menores e lide com eles um de cada vez.
Joel C
5

É perfeitamente normal ser atingido pela síndrome do "papel em branco".

Você tem um ótimo projeto em mente, que parece fantástico, mas quando você se senta à mesa tentando fazer algo, de repente você bloqueia e não consegue fazer nada. Então você abre o paciência e faz um novo registro.

Você realmente precisa começar a fazer algo relacionado ao projeto, para sentir que ele nasceu.

Você pode não querer escrever código imediatamente. Você pode começar escrevendo o que seu projeto realmente deve fazer, ou gostaria que ele fizesse. Pegue uma caneta e papel e comece a escrever. Você pode começar pelos detalhes ou por uma imagem maior. Experimente os dois, veja o que é melhor.

Você pode tentar definir as funcionalidades do projeto, as diferentes partes, como essas partes se comunicam entre elas. Sinto-me à vontade com o post-it, eles são divertidos e você pode alterá-los à medida que avança. Deixe-os seguir sua mente e suas idéias.

Ou talvez você possa iniciar o protótipo de alguma função ou classe. Você pode usar o idioma que preferir para isso, mesmo um que não exista e que você acabou de inventar.

Depois de algum tempo, você terá algo para trabalhar e seu projeto não estará apenas em sua mente. Você realmente fez alguma coisa.

Quando você se sentir confortável para realmente iniciar o processo de desenvolvimento, é hora de um planejamento cuidadoso, documentação, criação de protótipos, coleta de todas as tecnologias e softwares necessários e assim por diante.

Mas não comece até sentir que é a hora certa!

Jose Faeti
fonte
4

Projetos grandes são formados a partir de muitos projetos ou peças menores. Você pode ter uma grande ideia ou requisito de projeto - por exemplo, um aplicativo que gerencia contatos.

Quebre isso; pergunte a si mesmo: 'quais são os pedaços menores que preciso para fazer isso?'

Depois de definir suas partes menores, repita; você pode achar que algumas partes precisam ser mais detalhadas. A idéia é que você defina as metas mais gerenciáveis ​​para cada uma das partes menores. Aprenda a usar princípios disciplinados em design e desenvolvimento (como o Agile-TDD) e os objetivos menores e mais gerenciáveis ​​serão cumpridos.

IAbstract
fonte
3

Criar um esboço

Você tem uma grande ideia, mas não sabe como vai realizar sua tarefa. Crie um esboço do que você fará. Anote as etapas que você seguirá, o que precisará, quais idiomas usará, etc. Certifique-se de ter tudo organizado, ou o projeto será um desastre completo.

Programe suas etapas

Eu mencionei isso antes, mas é realmente importante. Se você tiver um tempo traçado, poderá ter uma data de término estimada de quando o projeto será concluído e quanto tempo levará para qualquer etapa do projeto. Esta é, novamente, organização e o manterá funcionando.

Encontre as ferramentas para o trabalho

Se você deseja iniciar um grande projeto, precisará de ajuda. Para organização do código e um bom sistema de controle de versão, o Git é ótimo porque mantém todo o seu código em um único repositório. Para mais informações sobre o Git, veja o link que eu lhe dei.

Você também precisará verificar se está usando idiomas que o ajudarão a fazer o que você está tentando fazer. Verifique se você é capaz de criar seu projeto antes de começar. Não estou dizendo que não aprenda nada de novo, mas aprenda antes de começar.

Obter ajuda

Grandes projetos geralmente não são feitos sozinhos. Entre em contato com colegas, pessoas da sua comunidade que podem programar e qualquer outra pessoa que você possa ajudá-lo antes de começar. Não tenha medo de perguntar.

Iniciar!

Não dê voltas, esperando que alguém inicie seu projeto e depois diga "Eu tive essa ideia!". Para sempre te assombrará ...

Dinâmico
fonte
1

Talvez esteja cheio de clichês, mas ... vou enviar.

Para poder lidar com um grande projeto, você precisa principalmente de uma coisa: experiência. A experiência oferece tudo o que você precisa:

  • Conhecimento: quanto mais tempo você gasta em projetos, mais conhecimentos gerais e específicos você ganha
  • Confiança: o gerenciamento de grandes projetos precisa de confiança, a confiança vem do conhecimento e geralmente do fato de que cada parte do trabalho é algo que você já fez antes ou que já viu pessoas fazendo isso
  • Rede profissional: se o projeto for realmente grande, você terá que perceber que não pode realizá-lo por conta própria; esteja preparado para saber quem você pode perguntar ou onde pode encontrar as principais informações que está procurando.

Então você pode fazer duas coisas:

  • Mergulhe e veja como vai. Provavelmente você cometerá muitos erros, mas a chave é aprender com eles.
  • Consiga um emprego em que você possa observar especificamente as pessoas com quem eles lidam com grandes projetos

Espero que ajude.

Aston
fonte
1

Minha definição de "grande projeto" é "um projeto em que o principal problema é a coordenação dos participantes e a comunicação entre eles" (um projeto médio é quando o gerenciamento é tão difícil quanto os problemas técnicos, um pequeno é quando os problemas técnicos são mais importantes que o gerenciamento; observe que um projeto de uma pessoa a longo prazo pode ser um grande projeto - coordenar e se comunicar com o seu futuro eu não é muito diferente de fazer o mesmo com outra pessoa).

O primeiro passo para conseguir (com um "papel de liderança") um grande projeto é participar de algum grande projeto sem ter um papel de liderança. O segundo passo é atingir o nível de papel principal enquanto é orientado por alguém que tenha experiência com ele.

Uma abordagem alternativa é aumentar progressivamente o tamanho dos projetos e aprender com a sua experiência ...

AProgrammer
fonte
1

Algumas idéias estão prontas para um engenheiro simplesmente entrar e começar a escrever código. Esses projetos podem ser grandes ou pequenos, mas o que todos eles têm uma coisa em comum: um problema bem definido para resolver. Comecei projetos como esse inúmeras vezes, e é apenas uma questão de criar uma disciplina em torno da escrita de boa documentação antecipadamente e seguir as melhores práticas em relação ao controle do código fonte, comunicação e colaboração.

Grandes projetos para os quais tudo o que tenho é o germe de uma idéia exige um pouco mais de preparação na minha experiência. A primeira coisa que faço é começar a falar sobre minha ideia com outras pessoas para ver se alguém compartilha minha compreensão do problema que estou resolvendo e para validar minha abordagem planejada na solução do problema. Então leve um amigo ou dois para tomar uma cerveja ou convide-os para o seu dormitório em Cheetos. Mas divirta-se com esse processo, pois é através desse processo que você pode entender melhor o problema que está resolvendo, encontrar outras ótimas idéias que pode trazer para resolver o problema, praticar a venda da ideia para outras pessoas e talvez até começar a construir um equipe de pessoas para ajudá-lo a resolvê-lo.

Byrne Reese
fonte
1

Divida coisas grandes em coisas menores.

Você não pode trabalhar para "alcançar a paz mundial". Em vez disso, você trabalha para banir as armas de destruição em massa, incentiva a democracia, fornece ajuda ao desenvolvimento, incentiva o intercâmbio cultural e científico e assim por diante.

LennyProgrammers
fonte
1

Eu acho que algo que muitas dessas respostas não abordam é fazer algo tangível e forçar-se a fazê-lo.

Às vezes, você fica preso em uma "área pensante", onde sente que tudo o que resta é o tédio de digitar as coisas, mas na verdade começa com um pedaço do tamanho do seu projeto e a implementação é divertida e desafiadora.

Conheço muitas pessoas assim, inclusive eu, até que eu realmente vá em frente, não faço nada, não consigo pensar e planejar iniciar um projeto. Eu tenho que escolher uma peça que eu possa implementar prontamente, e chegar nela e então o fluxo começa.

Matthew Blanchard
fonte
1

não há razão para fazer algo sem um propósito. Você precisa de histórias de usuário que mostrem a necessidade do código que deseja escrever. Você deve enquadrar essas histórias de usuário no seguinte formato:

Como [X]
eu quero [Y]
para que [Z]

Isso pode parecer simplista, mas fornece a estrutura não apenas para definir o usuário, mas também para especificar a necessidade e qual é o resultado final em uma única frase. Você terá muitos destes. Você terá mais com o tempo. Depois de ter alguns, você pode começar o desenvolvimento do seu código. Quando você tem mais idéias ou descobre outras coisas. Você volta e escreve mais histórias de usuários para não esquecê-las. Esse é o melhor lugar para começar.

O Behavior Driven Development usa essa abordagem e o site no link tem vários exemplos de uso desse formato para expressar histórias de usuários.

Eu acho que será a maneira mais rápida e organizada de passar da ideia para o código.

Charles Lambert
fonte
1

Eu pegava uma pilha de adesivos amarelos e um marcador mágico e sentava em uma sala onde havia um grande quadro branco para que eu pudesse pensar.

Gostaria de começar a escrever frases simples que me vêm à mente, como Menu Principal, Relatórios, Banco de Dados, Autenticação, etc. Colo-as no quadro branco e apenas fico olhando e tendo mais idéias, por exemplo, como o menu principal deve ficar :

Abrir arquivo, Salvar arquivo, Salvar arquivo como, Imprimir etc e colá-los no quadro branco no menu principal.

À medida que as idéias surgem na sua cabeça, anote-as ... boas, más, estúpidas, seja o que for que seja ceativo. Cole-os no quadro. Ao olhar para o quadro, mais idéias surgirão e padrões surgirão. Em algum momento, você começará a ter uma ideia do que planeja desenvolver.

Os adesivos amarelos são ótimos, eles podem ser movidos rapidamente.

Quando as coisas começam a se reunir, você divide esses pensamentos em grupos. Em seguida, você pode fazer um brainstorm em um único nível de grupo. Eu tirava fotos do quadro branco em vários estágios, caso você queira ver como era vinte minutos atrás, antes que as coisas mudassem.

Eventualmente, você terá uma boa idéia dos principais pedaços de coisas que precisam ser concluídas. Você pode obter uma única pasta para cada um desses blocos e continuar lançando idéias neles quando chegarem a você.

Michael Riley - também conhecido por Gunny
fonte
0

Desde que você é um estudante, eu vou assumir que você quer dizer aluno grande e não profissional grande. O último requer considerações adicionais de negócios e colaboração. Acabei de iniciar um novo projeto na semana passada, então o processo está fresco em minha mente.

A primeira coisa que faço é pesquisar soluções e bibliotecas existentes . Não gosto de reinventar a roda sempre que possível. Esta pesquisa também é um grande fator na escolha de um idioma para o projeto. Alguns idiomas têm um código existente melhor para determinadas tarefas.

A próxima coisa que faço é criar uma pasta e colocá-la sob controle de origem . Isso é tão simples quanto git init .hoje em dia.

Em seguida, recebo o "olá mundo" funcionando . Isso me permite saber que meu ambiente de desenvolvimento está configurado corretamente.

Em seguida, recebo "olá mundo" para bibliotecas de terceiros funcionando . Este é o mínimo necessário para mostrar que estou vinculando e usando a biblioteca corretamente. Para uma biblioteca de banco de dados, é conectar e executar uma consulta simples, por exemplo. Para um kit de ferramentas da GUI, ele exibe uma janela.

Em seguida, configurei scripts de construção e estruturas de teste . Isso é form ou makefiles ou o que for, e é muito mais fácil de configurar quando seu projeto ainda é pequeno.

Em seguida, crio estruturas de dados . Também chamada de camada "modelo". Essa é a parte que armazena tudo o que seu programa precisa lembrar para realizar seu trabalho. Eu faço muito design em papel e depois adiciono stubs. Essa parte do design geralmente é a mais fácil. Por exemplo, um programa de xadrez precisará de objetos para armazenar a grade do jogo, os jogadores, as peças, as seqüências de movimentos etc.

Neste ponto, eu tenho uma boa base para um programa e geralmente é bastante óbvio qual será o próximo passo para esse projeto em particular. Depois, dou apenas um pequeno passo de cada vez, com um código que funciona até certo ponto ao longo do caminho.

Karl Bielefeldt
fonte
0

Se tudo o que você tem é uma "Grande Idéia", você precisará de muitas coisas (que são muito bem descritas em outras respostas), e particularmente dessas 2: tempo e motivação .

A maior dificuldade quando você trabalha sozinho em um projeto pessoal é que, geralmente, você não tem muito tempo para gastá-lo toda semana e, portanto, não vê muito progresso e rapidamente começa a perder a motivação.

Então, como já foi dito, dê pequenos passos , essa é a chave.

Mas isso não é tudo, você precisa dar passos pequenos e gratificantes ! Ou seja, etapas que lhe trarão o maior valor e demonstrarão os principais conceitos de sua grande ideia.

Por exemplo, se você trabalha em um novo software de lista de super tarefas com ótimas interações do usuário . Não comece com o material de armazenamento e banco de dados até que você realmente precise. Comece com a inovadora interface do usuário: divertida e com valor. Isso fará com que você se orgulhe, mantenha sua motivação e permita que você verifique muito em breve se sua ideia é realmente boa.

David
fonte
0

A primeira coisa que você precisa fazer é sentar e descrever essa ideia por escrito. Ele não se tornará um projeto até então, e mesmo assim, você tem algum trabalho para evitar que seja algo tão efêmero quanto uma idéia, e algo tão tangível quanto um projeto.

Depois de chegar tão longe, você pode começar a transformá-lo em um projeto, identificando como você pode dividi-lo em etapas discretas que podem ser implementadas de maneira lógica.

Em seguida, esboce uma linha do tempo para implementar essas etapas. Revise o progresso em intervalos determinados para manter um pouco do controle desse processo - em vez de ter idéias assustadoras que você nunca pensou em primeiro lugar e adicioná-las à mistura.

Identifique uma linha de chegada inicial e almeje isso. Quanto menos você aderir a isso, maior será a probabilidade de o projeto afundar sob o peso de idéias adicionais, e mais desanimado você poderá concluí-lo, pois parece viver para sempre.

tentador
fonte
0

O esforço do código é tipicamente cerca de 20% (+ -10%) do orçamento do projeto. O foco em obter o código correto é inútil; há 80% do esforço que você não abordou; portanto, obter um gerenciamento de código perfeito ainda deixa apenas 20 do trabalho realizado.

E se o seu projeto não tiver usuários? E se for perfeito, mas publicado uma semana após o arquivo "Acme Patent Trolls" para uma patente sobre a idéia, e se tornar o próximo Facebook?

Observe os seguintes problemas padrão do ciclo de vida do projeto Requisitos, design, código, teste, integração, implantação, rastreamento e correção de defeitos, gerenciamento de alterações de requisitos (solicitações de aprimoramento). Planos de liberação, alocação de recursos (em quantas horas você está planejando o dia) e o que realmente fará no projeto), Jurídico (Freedon para operar) etc.

Se todas as opções acima estiverem em vigor, até códigos muito ruins serão bem-sucedidos. Se nenhuma das opções acima estiver em vigor, o melhor código falhará.

Eu não sou um apostador, mas apostaria nele seu primeiro "grande" projeto falhará, de muitas e variadas maneiras que você não pode imaginar. Não se preocupe, vá em frente e falhe, aprenda com ele e faça o próximo. Não começar seria o crime real. Se você obtiver sucesso pela primeira vez, terá uma sólida carreira em gerenciamento de negócios, não em programação.

Portanto, para responder à sua pergunta, guarde as ferramentas de software e retire suas ferramentas de "planejamento de negócios". Descubra POR QUE você está fazendo isso, para QUEM então POR QUE e QUANDO eles querem. (Você pode ser seu próprio cliente, mas faça o exercício de qualquer maneira). Escreva isso em um "plano de negócios" e crie a partir deles.

mattnz
fonte
0
  1. como é o sucesso?
  2. quais são as incógnitas no projeto?
  3. quais são os conhecidos no projeto?
  4. o que você pode fazer para eliminar / descobrir o desconhecido, convertê-lo em conhecido?
  5. o que você pode fazer para reunir os conhecidos para alcançar o sucesso?
  6. Qual é o próximo passo concreto a seguir que leva o projeto adiante?

repita o último passo até que o projeto esteja concluído; aceitar que pode levar anos e seguir em frente

Steven A. Lowe
fonte
0

Todas as respostas aqui são legais e todas, mas com toda a honestidade, não importa quanto controle de versão, gitting, fluxograma e marcações você faz, tudo o que importa é que você tenha um aplicativo funcional, um aplicativo funcional é definido como aquele que resolve o problema para o qual foi concedida, todas as outras coisas são praticamente irrelevantes.

Comece a codificar, codifique-o para uma fase funcional, execute alguns testes, depure, inicie e re-itere com novos recursos e funcionalidades (se você considerar necessário), muito parecidos com uma inicialização enxuta - que é um método ágil de gerenciamento e desenvolvimento para criar menos desperdício (ou como alguém definiu: obras-primas semi-acabadas).

Itai Sagi
fonte
-1

Lista de coisas a fazer ao iniciar um novo projeto:

  1. criar novo diretório
  2. criar makefile copiando algum modelo de makefile existente
  3. crie alguns arquivos de cabeçalho e implementação
  4. certifique-se de compilar
  5. comece a usar o controle de versão
  6. decidir convenção de nomenclatura para classes, funções, membros de dados, variáveis
  7. escreva sua primeira aula
  8. certifique-se de que sua classe seja independente e todas as funções-membro sejam independentes de outras funções-membro
  9. crie vários objetos criando funções como main ()
  10. repita as etapas 7 a 10 até que seu programa esteja pronto
  11. compile
  12. envie para os usuários finais
tp1
fonte
Trata-se de codificação, mas não é de engenharia e não funciona além de uma certa escala. Em vez disso, você precisa fazer algo a partir de histórias ou requisitos do usuário ou algum tipo de especificação; isso ajudará você a escolher sua tecnologia de implementação para começar. 'escreva algumas histórias', 'encomende suas histórias' são os dois primeiros passos, o controle de versão vem antes de qualquer código e a primeira história é sempre 'tecnologias de implementação de pesquisa' (que é muito mais do que 'escolher um idioma').
Andrew McGregor