Metodologias / ferramentas para desenvolver por conta própria [fechado]

10

Suponha que você tenha que desenvolver um software de tamanho médio, totalmente por conta própria. Como se fosse um projeto pessoal que você deseja realizar.

Quais metodologias / ferramentas você usaria para definir o que precisa ser desenvolvido, aprendido e ter uma idéia global do que o sistema é também em seus detalhes?

Basicamente, para manter-se na pista e não se perder no caminho.

Cássio
fonte
3
Lápis, papel e meu cérebro. Ter um quadro branco ajuda. Sério, grande parte do meu trabalho de design acontece diretamente no IDE. Você tem uma pergunta específica, com base em um problema que está enfrentando atualmente? Isso nos ajudaria a responder à pergunta se soubéssemos especificamente que problema você está tentando resolver.
Robert Harvey
@RobertHarvey haha ​​É muito verdade. Bem, mais ou menos. Estou desenvolvendo uma ideia que tive, projeto pessoal. Acontece que o software é maior do que eu imaginava e ainda há coisas que ainda preciso aprender como funciona e só então descobrir como desenvolvê-lo.
Cassio
11
@RobertHarvey Os principais problemas provavelmente são a falta de brainstorming nos detalhes, mantendo o controle do que precisa ser feito e uma visão do sistema como um todo.
Cassio
2
Estou 99,9% certo de que temos isso coberto em outra ou duas perguntas, mas não consigo encontrá-las no momento.
Adam Lear
4
Eu sempre tento me perder no caminho. É um caminho rápido para aprender.
Joel Etherton 29/09

Respostas:

5

Normalmente, eu apenas uso o Mercurial, se eu quero um recurso, apenas o adiciono e, se não o quero mais, apenas o removo. Além disso, tento escrever bem meus comentários de commit para não me perder.

eiefai
fonte
Sim - Mercurial é uma daquelas ferramentas que parecem ter sido fabricadas pela Apple :) Simples, mas poderosa, bonita e útil ...
Rook
4

Pode crescer facilmente além do alcance de sua atenção. Não é a extensão , a largura .

É difícil considerar muitos elementos ao mesmo tempo .

E então ... torna-se uma montanha-russa de regressão .
Tudo o que você faz quebra as coisas anteriores, e reverter não ajuda.

Para evitar isso, você deve testar agressivamente a regressão .
Automaticamente. (Você não pode fazer isso de outra forma e manter a sanidade)

O teste adicionará uma tensão difícil às suas energias.

Se o projeto é sobre interface do usuário ... você provavelmente está brindando:

  • O teste da interface do usuário é difícil .
  • O teste automatizado da interface do usuário ainda é difícil .

Idéia não testada de última hora para projetos focados na interface do usuário
Registre um parente com tempo livre e gosto de clicar com o mouse como testador da interface do usuário.
Eu estou pensando "adolescente" aqui.

Outros problemas:

  • Vai demorar para sempre .
  • Você enfrentará o bloqueio de escritor .
    (Na verdade, não existe como uma condição, é um erro de etiqueta popular que as pessoas atribuem à falta de disciplina )

Se você está acostumado e adora algum tipo de controle de versão , use-o.
Começar a aprender um agora o distrairá .

Representar graficamente suas idéias, como já apontado, pode ajudar.

Eu usei Freemind , Cmaps , XMind , yed , graphviz , e ... outra coisa.

XMind é o menos inútil:

  • muito rápido para inserir os dados no
  • layouts automáticos
  • estritamente tentando fazer você ficar no tópico
  • muito bom para tomar notas durante uma aula (I assim gostaria de ter isso na faculdade )
  • ainda é difícil de usar enquanto decide algo que você não esclareceu.

Um lápis e um caderno ainda são muito bons no meu top 10:

  • I varredura muitas das minhas notas
  • Faço muitos pequenos desenhos explicativos.

    • (Se você pensa com imagens, talvez nunca encontre uma ferramenta de brainstorming satisfatória)

Como último recurso, você sempre pode preparar powerpoints para seu próprio consumo :)

ZJR
fonte
+1. No entanto, você tem alguma sugestão sobre a questão "decidir-se sobre algo que não está claro aí"?
Cassio
@ Cassio Eu alterno entre xmind e pencil + sketchbook, faço listas pontuais no libreoffice, escrevo exemplos e teste alguma implementação aproximada. É um processo bastante demorado, mas é preciso eliminar alguma linha de pensamento improdutiva para chegar a algo que pareça certo. (PS: amassar papel antes de jogá-lo é catártico)
ZJR 30/09
11
@ZJR De fato. Às vezes, eu só tinha medo de escrever coisas que não precisava e perder tempo, mas agora vejo que é assim que o processo funciona. Inicialmente, escrevemos algumas coisas inúteis, mas melhoramos com o tempo. :) Obrigado!
Cassio
3

Programação alfabetizada.

O praticante de programação alfabetizada pode ser considerado um ensaísta, cuja principal preocupação é com a exposição e a excelência do estilo. Esse autor, com o dicionário de sinônimos em mãos, escolhe cuidadosamente os nomes das variáveis ​​e explica o que cada variável significa. Ele ou ela se esforça para um programa que seja compreensível porque seus conceitos foram introduzidos em uma ordem que seja melhor para a compreensão humana, usando uma mistura de métodos formais e informais que se reforçam.

Se você está escrevendo um artigo (ou livro ou relatório ou documento) sobre o seu projeto, tende a permanecer na tarefa.

Comece com um resumo do que você está fazendo: visão geral do caso de uso, release 1, release 2, release n. Anote um resumo dos casos de uso. Priorize-os. Coloque-os em sprints e lançamentos.

Cada release possui uma visão de caso de uso, lógica, de processamento, de componente e de implementação. Para o sprint, detalhe os casos de uso. Publique o documento HTML para mostrar o que você fará. Depois de detalhar os casos de uso do sprint, escreva o modelo lógico. Escreva um código para suportar isso. Escreva a documentação de processamento. Escreva um código para apoiá-lo. Crie módulos. Escreva a documentação da visualização do componente. Escreva os testes e a documentação de suporte. Publique os resultados da sprint como um documento HTML.

Repita para cada sprint. Revise e edite seu documento periodicamente.

Existem muitas e muitas ferramentas de programação alfabetizadas. Eles podem ajudá-lo a produzir uma fonte que cria a documentação e o código, a partir de um único texto.

Eu uso sphinx e PyLit, mas isso é porque eu sou um programador Python.

S.Lott
fonte
É bom extrair um artigo da universidade e depois esquecê-lo, ruim se planejar liberar ou manter o produto posteriormente. Todo mundo em qualquer lugar deve usar doxygen , mesmo em python. Mas isso é só porque eu sou um fã :)
ZJR
2

Se você quiser anotar suas idéias, poderá usar uma ferramenta de mapeamento mental, como o XMind ou o FreeMind . Ambas as ferramentas são gratuitas (para indivíduos do XMind) e são ótimas para fazer brainstorming e organizar suas idéias. A coisa sobre essas ferramentas é que você tem menos chances de esquecer alguma coisa.

Eu pessoalmente usei o Freemind antes de iniciar meu último projeto pessoal. Eu não tinha uma metodologia específica em si . Apenas expus minhas idéias durante sessões de uma hora uma vez a cada dois dias. Acho que espaçar as sessões de brainstorming me ajudou a ver melhor o que estava errado, o que não era essencial, mas poderia ser útil nas versões subseqüentes etc.

No meu primeiro commit de código, também salvei o arquivo de brainstorming no repositório de código-fonte (usei o bitbucket ) e o atualizei com as minhas idéias mais recentes.

Jalayn
fonte
Muito bom. Eu já estou testando tudo isso. Obrigado!
Cassio
2

Trate-o como um projeto de software real (porque é um). Há apenas algumas coisas que mudam porque o número de desenvolvedores é um. Você ainda precisa de controle de origem. Você ainda precisa de uma maneira de organizar os recursos para adicionar bugs para corrigir. Você ainda precisa de teste automatizado para verificar se não cria regressões no código. Você também deve ter uma maneira automática de compilar o código (se necessário), executar os testes e visualizar os relatórios.

Estou trabalhando em um projeto pessoal, como você descreveu. Estou usando Git, Redmine, JUnit e Jenkins para satisfazer todas as categorias que descrevi. Meu fluxo de trabalho é:

  • Escolha um ticket para trabalhar
  • Ramificar a base de código
  • Desenvolver código e testes para a tarefa (confirmar alterações na ramificação em bons pontos de salvamento)
  • Mesclar ramificação de volta ao tronco
  • Verifique se a compilação foi bem-sucedida, se os testes foram aprovados e se não havia outros problemas.
  • Repetir

Manter tudo gerenciado e organizado é tão importante quanto quando existem muitos desenvolvedores. Com muitos desenvolvedores, você precisa organizar para que as informações sejam difundidas para todos. Quando é apenas você, você já tem todas as informações, mas é difícil lembrar de todas as partes do sistema. Um sistema gerenciado facilita as tarefas e você pode se concentrar na tarefa em questão.

unholysampler
fonte
2

Ferramentas:

  • Sistema de Controle de Versão (mesmo se você for o único desenvolvedor em sua garagem ou PC pessoal em casa): GIT, Mercurial, Tourtoise

  • Editor com destaque do código-fonte, mesmo se você tiver um IDE (Scintilla, Vim, Bloco de Notas)

  • Quadro-negro do mundo real, quadro branco, algumas coisas simplesmente não se encaixam no seu Aplicativo de Ferramentas de Designer.

  • Ferramenta de design: Rational Rose, Umbrello, (UML, ER,) Visio ou "Ferramentas de Designer de Pobres Desenvolvedor", como Power Point, Corel Draw, Open Office Draw

  • Texto / Código Fonte Ferramenta de comparação de texto, por exemplo, WinMerge

umlcat
fonte
Muito útil! Estou colocando tudo isso em prática. Obrigado.
Cassio
1

Depende de como você pode distinguir e lidar com tarefas diferentes, porque precisará dar uma olhada em cada etapa do processo de desenvolvimento.

Eu acho que as ferramentas são úteis apenas se você já sabe como usá-las e um dos piores erros é aprender como uma ferramenta funciona, em vez de aprender o que fazer com ela.

Primeiro, na minha opinião, você deve anotar o que espera que o software faça e, principalmente, o que não fará. Esse é um ponto crucial. O próximo passo é dividir o sistema final em subsistemas inferiores, facilitando o processo de construção. E por último, mas não menos importante, você precisará escolher suas ferramentas. Basicamente, um bom IDE, um VCS e um modelador de dados. Você pode adicionar muitas outras ferramentas para ajudar, mas tome cuidado para não começar no caminho errado.

Bem, o começo não parece tão atraente, mas o processo se tornará divertido ao longo do tempo.

Lucas Maus
fonte
sim! Lembre-se de que o código é - se o projeto foi bem projetado - uma pequena parte do todo.
Lucas Maus