Estou trabalhando no meu próprio aplicativo e estou preso. Eu tenho que implementar um recurso, mas não consigo encontrar uma boa abordagem para implementar esse recurso. Eu estava pensando nisso por alguns dias, e nenhum pensamento bom veio. Pesquisando na Internet não me deu nenhuma inspiração.
Preciso seguir em frente, mas quero saber qual é o melhor:
- Pense mais, espere mais e continue procurando a melhor abordagem
- Pare de perder tempo e comece com um design ruim, cobrindo tudo com testes
O que você acha? Como eu disse antes, estou trabalhando no meu próprio aplicativo. Não tenho prazos, mas também quero terminar de codificar o aplicativo o mais rápido possível.
Respostas:
Além de conversar com as pessoas sobre o assunto (a pergunta sugere que você não tem colegas no projeto), geralmente considero uma boa abordagem focar nas coisas que posso fazer.
Geralmente, há uma parte do código que eu sei que devo escrever de qualquer maneira. As coisas que ainda não sei escrever são substituídas por stubs que retornam resultados ilegais ou usam uma aproximação que é boa o suficiente para testar o resto.
Isso mantém você produtivo. E quando você precisar implementar a peça que falta, você terá a interface. E você escreveu muito código em torno do problema, no mesmo domínio do problema, o que geralmente me ajuda a gerar idéias: você sabe mais exatamente o que é necessário produzir e quais outras entradas estão disponíveis se ajudar a resolver o problema . Além disso, muitas vezes a conclusão é que a peça que faltava não precisa ser tão abrangente quanto se pensava inicialmente.
fonte
Se a pesquisa falhar, você sempre pode implementar usando a primeira (não necessariamente a melhor) idéia que você teve e depois refatorá-la mais tarde quando encontrar a abordagem correta.
Essa é a abordagem correta, pois, mesmo que você encontre algo que pareça uma boa ideia, pode ser ruim posteriormente. Ou pode ser bom naquele momento, mas mais tarde você encontrará algo muito melhor. Então você ainda terá que refatorar.
Ao fazer isso, certifique-se de projetar e implementar de maneira que seja fácil refatorar. Se você fizer isso corretamente, precisará alterar apenas a parte problemática e não começar do início.
fonte
Que tal perguntar a outra pessoa? Por exemplo, você pode descrever seu problema aqui ou, se for mais um problema de implementação, no stackoverflow.com e pedir idéias. Às vezes, isso já o ajudará se você começar a escrever o problema, mesmo que não obtenha boas respostas.
fonte
Algumas idéias:
Escreva todas as idéias estúpidas que você tem (em papel ou quadro branco). Risque os que você tem certeza de que não funcionarão. Continue escrevendo. Inclua soluções para problemas do mundo real potencialmente relacionados. Por exemplo, misturar tinta, colocar uma unha na parede ou trocar o óleo resolve um símile do mundo real?
Google, pergunte aqui, pergunte aos seus amigos geeks, etc.
Você não pode resolver o problema, mas pode resolver um muito mais simples? Ou um igualmente complexo e relacionado? Faça isso. Em seguida, faça pequenas alterações individuais para aproximar sua solução da solução desejada.
independentemente de sua interface ser um serviço da Web, página da Web, formulário nativo, câmera, teclado, monitor ou qualquer outra coisa , existe uma interface. Escreva algumas linhas de código / pseudocódigo para fazer a interface funcionar. Use métodos mágicos que ainda não existem. Recursivamente, faça o mesmo para cada método mágico inexistente. Otimize mais tarde.
fonte
Não há nada de errado em seguir com a solução ruim. Muitas vezes, você simplesmente não sabe o suficiente sobre o domínio do problema naquele momento. Seguindo uma solução ruim, vamos seguir em frente e aprender mais sobre o problema. Então você ainda pode voltar e refatorar sua primeira solução.
fonte
Eu sempre tento vê-lo da perspectiva do usuário final. É muito fácil pensar em uma idéia "legal" como um desenvolvedor em que você pode passar anos trabalhando, o que na verdade adiciona muito pouco ao seu aplicativo.
Idealmente, você deseja mapear todos os recursos do seu aplicativo e priorizá-los de acordo com o benefício para o usuário final. Pessoalmente, eu uso o MOSCoW , embora contanto que você mantenha seu método de priorização da mesma maneira, ele pode ser tão simples quanto 1 - 5
Depois disso, se você ainda achar que esse recurso é uma parte essencial do seu aplicativo, como as pessoas já disseram, pergunte! Acho que nunca encontrei um problema que eventualmente não tenha sido resolvido por um colega ou por pessoas legais no Stackoverflow.
fonte
Minha opinião é: nunca escreva código que funcione! Deve ser muito difícil refatorar no futuro.
É uma abordagem muito comum para desenvolvedores (e, é claro, diretores ou chefes). Ouvi muito tempo "apenas fazê-lo funcionar" ou "vou consertar mais tarde" (mais tarde quando ??? nunca!), Mas acho que a qualidade não é algo que você não pode obter no meio do projeto.
Minha sugestão é: pare de pensar no seu problema por um tempo ... faça outra coisa e, às vezes, as soluções surgem ele mesmo.
Aliás, perguntar a um colega é absolutamente uma ótima maneira de resolver seu problema.
fonte