Quais são os passos para iniciar um grande projeto, quando tudo o que tenho é uma grande ideia? [fechadas]

49

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

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

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

    
por 6 revs, 5 users 71%user12654 11.10.2015 / 22:46
fonte

20 respostas

63

Esqueça a codificação e configure um ambiente de desenvolvimento por um momento. Se você quer embarcar em um grande projeto, a primeira coisa que você precisa fazer é entender o propósito e o escopo do projeto.

O que eu recomendo é abrir um processador de texto e escrever um documento de 'objetivos do projeto'. Descreva de que se trata a ideia e o objetivo geral do software que você deseja escrever. Em seguida, liste as metas de funcionalidade do projeto. Não quero dizer como especificá-lo, mas descrever as diferentes funcionalidades que o produto acabado deve suportar. Então, se você estivesse escrevendo um software para administrar uma escola, você poderia listar 'gerenciamento de professores' como uma funcionalidade e, em seguida, descrever o que essa funcionalidade incluiria (rastrear informações de contato, agendamento de aulas, etc.).

Depois, a parte mais difícil: não é algo que você precisa fazer logo de cara, mas à medida que avança. Tão importante quanto os recursos de listagem que você deseja adicionar é revisar a funcionalidade descrita em seu documento de metas e observar os recursos que você pode viver sem na primeira versão do programa. Isso é fundamental para o gerenciamento do escopo.
Uma das principais razões pelas quais as pessoas falham em projetos maiores é que elas não sabem quando parar de trabalhar nela. Eles não sentem que estão "prontos" porque as ideias continuam chegando e nunca são liberadas. Eventualmente, eles perdem o interesse e você tem outra obra-prima incompleta. Então você quer ter certeza de que você tem um bom controle sobre a funcionalidade que é realmente importante para alcançar a parte básica de seu objetivo. Esse é seu primeiro alvo.

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

    
por 08.12.2011 / 16:47
fonte
40

Eu acho que Linus o colocou melhor

Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don't think about some big picture and fancy design. If it doesn't solve some fairly immediate need, it's almost certainly over-designed. And don't expect people to jump in and help you. That's not how these things work. You need to get something half-way useful first, and then others will say "hey, that almost works for me", and they'll get involved in the project. -- Linus Torvalds

    
por 28.08.2011 / 02:51
fonte
12

What should be my first step to reach my goal in more efficient and effective way?

Suponho que você já tenha feito projetos antes e que esteja em uma faculdade / universidade que não ensina controle de versão / origem. Se você quiser ver alguns projetos, você sempre pode ir para repositórios de código aberto, como o Github (usa o Git), Bitbucket (usa o Mercurial), Google Code (usa o Mercurial, o Git e o Subversion), < href="http://www.codeplex.com/"> CodePlex (Mercurial e Subversion / TFS), SourceForge (Muitos), etc e dê uma olhada na sua base de código. O que eles têm em comum é que eles estão usando software de controle de código-fonte.

Há muitas informações sobre como usá-las, então sugiro que você aprenda a usar isso, porque essa é uma prática padrão do setor. Aqui estão alguns guias visuais para você ir:

You know, when one project is came my mind, I don't know what I should do. Many times, I ignore it.

Há tanta coisa 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 quiser adicionar algo ao seu projeto pequeno. Com o tempo, ele se tornará grande e, se você quiser voltar, poderá reverter ou reverter as alterações feitas no sistema de controle de versão.

    
por 06.08.2011 / 00:39
fonte
5

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

Você tem um grande projeto em mente, que parece fantástico, mas quando você se senta à mesa tentando fazer alguma coisa, 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 que você sinta que nasceu.

Você pode não querer escrever código imediatamente. Você pode começar escrevendo o que seu projeto realmente deve fazer, ou você gostaria que ele fizesse. Pegue uma caneta e papel e comece a escrever. Você pode começar a partir dos detalhes ou de uma foto 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. Eu me sinto confortável com post-it, eles são divertidos e você pode mudá-los à medida que avança. Deixe-os seguir sua mente e idéias.

Ou talvez você possa começar a prototipar algumas funções ou classes. Você pode usar qualquer idioma que preferir para isso, mesmo que não exista e 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, prototipagem, coleta de todas as tecnologias e softwares necessários e assim por diante.

Mas não comece até que você realmente sinta que é o momento certo!

    
por 25.08.2011 / 17:33
fonte
4

Grandes projetos são formados por vários projetos ou peças menores. Você pode ter uma grande ideia ou requisito de projeto - digamos, um aplicativo que gerencia contatos.

Divida-o; pergunte a si mesmo, 'quais são as peças menores que eu preciso para fazer isso?'

Depois de definir suas partes menores, repita; você pode achar que algumas partes precisam ser divididas ainda mais. A ideia é que você defina as metas mais gerenciáveis para cada uma das peças 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.

    
por 05.08.2011 / 17:51
fonte
2

Crie um esboço

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

Agende seus passos

Eu mencionei isso antes, mas é muito importante. Se você tiver tempo mapeado, você pode ter uma data de término estimada de quando o seu projeto será concluído, e quanto tempo as etapas do projeto serão necessárias. Esta é, novamente, a organização e irá mantê-lo funcionando.

Encontre as ferramentas para o trabalho

Se você for 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 lhe dei.

Você também precisará verificar se está usando idiomas que ajudarão você a fazer o que está tentando fazer. Certifique-se de que 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ê ache que possa ajudá-lo antes de começar. Não tenha medo de perguntar.

Primeiros passos!

Não fique brincando, esperando que alguém inicie seu projeto e diga "Eu tive essa ideia!". Sempre te assombrará ...

    
por 25.08.2011 / 17:30
fonte
1

Talvez seja cheio de clichês, mas ... eu vou enviar.

Para 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 conhecimento geral e específico você ganha
  • Confiança: gerenciar grandes projetos precisa de confiança, a confiança vem do conhecimento e, geralmente, do fato de que cada trabalho é algo que você já fez antes ou 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, então esteja preparado para saber quem pode perguntar ou onde encontrar as principais informações que está procurando

Então você pode fazer duas coisas:

  • Mergulhe e veja como funciona. Provavelmente você cometerá muitos erros, mas a chave é aprender com eles.
  • Arranje um emprego onde você pode observar especificamente pessoas com quem lidam com grandes projetos

Espero que ajude.

    
por 05.08.2011 / 12:40
fonte
1

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

O primeiro passo para ser capaz de lidar (com um "papel de liderança") é um grande projeto para participar de algum grande projeto sem ter um papel de liderança. O segundo passo é alcançar o papel de líder enquanto é orientado por alguém que tenha experiência com ele.

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

    
por 05.08.2011 / 13:59
fonte
1

Algumas ideias estão prontas para um engenheiro simplesmente começar a escrever código. Esses projetos podem ser grandes ou pequenos, mas o que todos eles têm em comum: um problema bem definido para resolver. Eu comecei projetos como este inúmeras vezes, e é apenas uma questão de construir uma disciplina em torno de escrever uma boa documentação e seguir as melhores práticas em relação ao controle de código-fonte, comunicação e colaboração.

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

    
por 05.08.2011 / 23:36
fonte
1

Divida as coisas grandes em coisas menores.

Você não pode trabalhar em "alcançar a paz mundial". Em vez disso, você trabalha na proibição de armas de destruição em massa, encoraja a democracia, fornece ajuda ao desenvolvimento, encoraja a troca cultural e científica e assim por diante.

    
por 25.08.2011 / 14:31
fonte
1

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

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

Eu conheço muitas pessoas que são assim, inclusive eu, até que eu realmente comecei a fazer nada, não consigo apenas pensar e planejar um projeto. Eu tenho que escolher uma peça que eu possa implementar prontamente, e chegar até ela e então o fluxo começa.

    
por 26.08.2011 / 12:03
fonte
1

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

Como um [X]
Eu quero [Y]
para que [Z]

Isto pode parecer simplista, mas dá a você a estrutura para não apenas definir o usuário, mas também especificar a necessidade e o resultado final em uma única sentença. Você terá muitos deles. Você surgirá com mais tempo à medida que avança. Depois de ter alguns, você pode começar o desenvolvimento em seu código. Quando você tem mais ideias ou descobre outras coisas. Você volta e escreve mais histórias de usuários para que você não as esqueça. Esse é o melhor lugar para começar.

O Desenvolvimento Orientado pelo Comportamento usa essa abordagem e o site no link tem vários exemplos de uso desse formato para expressar as histórias do usuário.

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

    
por 28.08.2011 / 04:23
fonte
1

Eu pegava uma pilha de stickies amarelos e um marcador de magia e me sento em uma sala onde há um grande quadro branco para que eu possa fazer um brainstorming.

Eu apenas começaria a escrever frases simples que me vieram à mente, como Menu Principal, Relatórios, Banco de Dados, Autenticação, etc. Eu colocaria essas informações no quadro branco e apenas ficaria olhando mais ideias, por exemplo, como o principal menu deve olhar:

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

Quando as idéias surgirem em sua cabeça, anote-as ... bom, ruim, estúpido, seja o que for que seja. Cole-os no quadro. Quando você 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.

Stickies amarelos são ótimos e podem ser movidos rapidamente.

Uma vez que as coisas começam a se unir, você divide esses pensamentos em grupos. Então você pode debater em um único nível de grupo. Eu tiraria fotos do quadro branco em vários estágios, no caso de você querer ver o que parecia vinte minutos antes de as coisas mudarem de lugar.

Eventualmente, você terá uma boa idéia dos principais pedaços de coisas que precisam ser feitas. Você pode obter uma única pasta para cada um desses blocos e continuar jogando idéias neles conforme eles chegam até você.

    
por 10.09.2011 / 03:35
fonte
0

Desde que você é um estudante eu vou assumir que você quer dizer aluno-grande e não profissional-grande. Este último requer considerações adicionais de negócios e colaboração. Acabei de começar 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 . Eu não gosto de reinventar a roda sempre que possível. Esta pesquisa também é um grande fator na escolha de uma linguagem para o projeto. Algumas linguagens têm melhor código existente para determinadas tarefas.

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

Em seguida, recebo "hello world" trabalhando . Isso permite que eu saiba que meu ambiente de desenvolvimento está configurado corretamente.

Em seguida, recebo "hello world" para bibliotecas de terceiros que funcionam . Este é o mínimo necessário para mostrar que estou vinculando e usando a biblioteca corretamente. Para uma biblioteca de banco de dados, está conectando e executando uma consulta simples, por exemplo. Para um kit de ferramentas GUI, ele está exibindo uma janela.

Em seguida, configurei os scripts de criação e as estruturas de teste . Isso é formiga ou makefiles ou qualquer outra coisa, e é muito mais fácil de configurar quando seu projeto ainda é pequeno.

Em seguida, crie estruturas de dados . Também chamado de camada "modelo". Esta é a parte que armazena tudo o que seu programa precisa lembrar para fazer seu trabalho. Eu faço muito design no papel, depois apenas adiciono stubs. Essa parte do design é geralmente a mais fácil. Por exemplo, um programa de xadrez vai precisar de objetos para armazenar a grade do jogo, os jogadores, as peças, sequências de movimentos, etc.

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

    
por 25.08.2011 / 17:19
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 essas 2: tempo e motivação .

A maior dificuldade quando se 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.

Como já foi dito, dê pequenos passos , essa é a chave.

Mas isso não é tudo, você tem que dar passos pequenos e recompensadores ! Isto é, passos que lhe trarão o maior valor e demonstrarão os principais conceitos da sua grande ideia.

Por exemplo, se você trabalha em um novo software super lista com excelentes interações do usuário . Não comece com o armazenamento e o banco de dados até que você realmente precise dele. Comece com a inovadora interface de usuário: isso é divertido e tem valor. Isso te deixará orgulhoso, te manterá motivado e permitirá que você verifique muito em breve se a sua ideia é realmente boa.

    
por 25.08.2011 / 18:19
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 levá-lo de algo tão efêmero quanto uma ideia para algo tão tangível quanto um projeto.

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

Em seguida, delineie um cronograma para implementar essas etapas. Revisite o progresso em intervalos de tempo para que você mantenha algum controle sobre esse processo - em vez de ter ideias rasteiras que você nunca imaginou em primeiro lugar e adicioná-las à mistura.

Identifique uma linha de chegada inicial e aponte para isso. Quanto menos você aderir a isso, mais o projeto provavelmente afundará sob o peso de idéias adicionais, e mais desanimado você poderá chegar ao completá-lo como parece viver para sempre.

    
por 26.08.2011 / 12:11
fonte
0

O esforço de código normalmente é de cerca de 20% (+ -10%) do orçamento de um projeto. Concentrar-se em obter 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 você com apenas 20 dos trabalhos realizados.

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 ideia, e se tornar o próximo Facebook?

Veja os seguintes problemas de ciclo de vida do projeto padrão Requisitos, Design, Código, Teste, Integração, Implantação, Rastreamento e correção de defeitos, gerenciamento de mudanças de requisitos (solicitações de melhoria). Planos de liberação, alocação de recursos (quantas horas você está planejando para o dia e você realmente fará no projeto), Legal (Freedon para operar) etc.

Se todos os itens acima estiverem em vigor, até mesmo um código muito ruim será bem-sucedido. Se nenhuma das opções acima estiver em vigor, o melhor código falhará.

Eu não sou um apostador, mas colocaria dinheiro nisso, seu primeiro projeto "grande" falhará, de muitas e variadas maneiras que você não pode imaginar. Não se preocupe, vá em frente e falhe, aprenda com isso e faça o seguinte. Não começar seria o verdadeiro crime. Se você tiver sucesso na primeira vez, terá uma sólida carreira em gerenciamento de negócios, não em programação.

Então, para responder à pergunta, guarde as ferramentas de software e retire suas ferramentas de "planejamento de negócios". 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). Anote isso em um "plano de negócios" e construa a partir de seus.

    
por 28.08.2011 / 02:49
fonte
0
  1. como é o sucesso?
  2. quais são os desconhecidos no projeto?
  3. quais são os conhecidos no projeto?
  4. o que você pode fazer para eliminar / descobrir os desconhecidos, convertê-los em conhecidos?
  5. o que você pode fazer para reunir os conhecidos para alcançar o sucesso?
  6. qual é o próximo passo concreto a ser dado para levar o projeto adiante?

repita o último passo até que o projeto esteja concluído; aceite que pode demorar anos e continue avançando

    
por 12.09.2011 / 05:44
fonte
0

Todas as respostas aqui são legais e tudo, mas honestamente, não importa o quanto de controle de versão, git, fluxograma e mark-ups você faz, tudo o que importa é que você tem um aplicativo funcional, uma aplicação funcional é definida como aquela que resolve o problema para o qual foi concebida, todas as outras coisas são praticamente irrelevantes.

Inicie a codificação, codifique-a em uma fase funcional, execute alguns testes, depure, execute e re-iterate com novos recursos e funcionalidades (se você achar necessário), muito no caminho de uma startup lean - que é ágil método de gerenciamento e desenvolvimento para criar menos desperdício (ou como alguém definiu: obras-primas semi-acabadas).

    
por 15.01.2012 / 17:12
fonte
-1

Lista de coisas para fazer ao iniciar um novo projeto:

  1. crie um novo diretório
  2. crie o makefile copiando alguns gabaritos existentes do makefile
  3. crie alguns arquivos de cabeçalho e de implementação
  4. verifique se ele compila
  5. começar a usar o controle de versão
  6. decide a 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 que cada função de membro seja independente de outras funções de membro
  9. crie vários objetos criando funções como main ()
  10. repita as etapas de 7 a 10 até que seu programa esteja pronto
  11. compilá-lo
  12. enviá-lo para os usuários finais
por 30.08.2011 / 23:15
fonte