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?
Respostas:
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.
fonte
Eu acho que Linus colocou melhor
fonte
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:
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.
fonte
É 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!
fonte
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.
fonte
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á ...
fonte
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:
Então você pode fazer duas coisas:
Espero que ajude.
fonte
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 ...
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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ê.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
repita o último passo até que o projeto esteja concluído; aceitar que pode levar anos e seguir em frente
fonte
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).
fonte
Lista de coisas a fazer ao iniciar um novo projeto:
fonte