Eu posso escrever código… mas não consigo criar bem. Alguma sugestão? [fechadas]

83

Eu sinto que sou bom em escrever código em partes e partes, mas meus designs são realmente ruins. A questão é, como eu melhoro meus projetos - e, por sua vez, me torno um designer melhor?

Eu acho que as escolas e faculdades fazem um bom trabalho ensinando as pessoas a se tornarem boas em resolver problemas matemáticos, mas vamos admitir o fato de que a maioria das aplicações criadas na escola tem em torno de 1.000 a 2.000 linhas, o que significa que é principalmente um exercício acadêmico que não reflete a complexidade do software do mundo real - da ordem de algumas centenas de milhares a milhões de linhas de código.

É aqui que acredito que mesmo projetos como topcoder / project euler também não serão de muita ajuda, eles podem aguçar sua capacidade de resolver problemas matemáticos - mas você pode se tornar um programador acadêmico; Alguém que está mais interessado em coisas boas e limpas, que não tem o menor interesse no dia-a-dia das coisas mundanas e pilosas com as quais a maioria dos programadores de aplicativos lidam.

Então, minha pergunta é como melhorar minhas habilidades de design? Ou seja, a capacidade de projetar aplicativos de pequena / média escala que irão para alguns milhares de linhas de código? Como posso aprender habilidades de design que me ajudarão a construir um kit de editor de html melhor, ou algum programa gráfico como o gimp?

    
por user396089 24.05.2012 / 07:16
fonte

9 respostas

87
A única maneira de se tornar realmente bom em alguma coisa é tentar, falhar espetacularmente, tentar novamente, falhar novamente um pouco menos do que antes e, com o tempo, desenvolver a experiência para reconhecer o que causa suas falhas, para que você possa gerenciar possíveis situações de falha mais tarde. Isso é tão verdadeiro quanto aprender a tocar um instrumento musical, dirigir um carro ou ganhar uma idade PWN séria no seu jogo de tiro em primeira pessoa favorito, assim como aprender qualquer aspecto do desenvolvimento de software.

Não há atalhos reais, mas há coisas que você pode fazer para evitar problemas fora do controle enquanto estiver adquirindo experiência.

  • Identifique um bom mentor . Não há nada melhor do que poder falar sobre seus problemas com alguém que já pagou suas dívidas. A orientação é uma ótima maneira de ajudar a acelerar o aprendizado.
  • Leia , leia mais, pratique o que você leu e repita por toda a vida útil de sua carreira. Eu venho fazendo essas coisas há mais de 20 anos, e eu ainda me divirto aprendendo algo novo todos os dias. Aprenda não apenas sobre design avançado, mas também design, testes, melhores práticas, processos e metodologias emergentes. Todos têm diferentes graus de impacto em como seus projetos vão surgir, tomar forma e, mais importante, como eles duram ao longo do tempo.
  • Encontre tempo para o funileiro . Envolva-se com um projeto de skunkwork em seu local de trabalho ou pratique em seu próprio tempo. Isso vai de mãos dadas com a sua leitura, colocando seu novo conhecimento em prática e vendo como essas coisas funcionarão. Este é também o material que contribui para uma boa discussão com o seu mentor.
  • Envolva-se com algo técnico fora do seu local de trabalho. Isso pode ser um projeto ou um fórum. Algo que lhe permitirá testar suas teorias e idéias fora de seu círculo imediato de colegas, a fim de manter uma nova perspectiva sobre as coisas.
  • Seja paciente . Reconheça que ganhar experiência leva tempo e aprenda a aceitar que precisa recuar um pouco para aprender por que e onde você falhou.
  • Mantenha um diário ou um blog de suas tarefas, seus pensamentos, seus fracassos e seus sucessos. Isto não é estritamente necessário, no entanto, descobri que pode ser de grande benefício para você ver como você se desenvolveu com o tempo, como suas habilidades cresceram e seus pensamentos mudaram. Eu volto aos meus próprios periódicos a cada poucos meses e vejo as coisas que eu escrevi há 4-5 anos atrás. É realmente revelador o quanto eu aprendi naquele tempo. É também um lembrete de que eu entendi errado de tempos em tempos. É um lembrete saudável que me ajuda a melhorar.
por 24.05.2012 / 07:52
fonte
16
Bem, não há nenhuma maçã de ouro para esse tipo de pergunta, e acho que talvez seja para cada programador encontrar o que é certo para ele. Aqui está a minha opinião, de qualquer maneira.

Você poderia ler livros sobre o assunto. Grandes livros. Livros fantásticos. Mas acho que esses livros só ajudam quando você tenta criar e projetar um aplicativo - e falhou.

Para mim, é tudo sobre experiência. Quando comecei como novato, li livros sobre como projetar. Eu não entendi muito do conteúdo naquela época. Quando comecei a trabalhar e tive que criar aplicativos por conta própria, fiz aplicativos muito confusos. Eles trabalhavam, mas eram uma dor para manter. Então eu li esses livros novamente - e desta vez eu os entendi melhor.

Agora, continuo cometendo novos erros e aprendendo com os antigos.

    
por 24.05.2012 / 07:28
fonte
11

Pare de projetar e aprenda a refatorar o código. O desenvolvimento incremental com refatoração contínua e agressiva resultará em um produto final muito mais limpo do que qualquer projeto inicial.

    
por 28.05.2012 / 08:12
fonte
7

Leia sobre os padrões, claro, mas antes de mais nada leia sobre os antipadrões. Reconhecer antipadrões é importante, e é mais fácil entender por que algo não deveria ser feito dessa maneira do que por isso.

Veja link por exemplo.

Escreva o código para que ele possa ser ajustado rapidamente se os requisitos forem alterados (o que é muito comum no ambiente de produção).

Seja super-cético sobre adicionar "apenas mais um pequeno hack". Mais um aqui, mais um ali, e o código se torna inatingível.

Valor o princípio de abertura / fechamento .

Escreva testes (como em TDD). Eles forçam você a pensar em seu design antes mesmo de implementá-lo.

Navegue pelo código de projetos de código aberto (de tamanho razoável, isto é). Eu costumava ficar surpreso com - geralmente - ver tantos níveis de abstração. Agora eu entendo que não é arte pela arte, há uma razão pela qual isso é feito dessa maneira.

    
por 24.05.2012 / 11:21
fonte
4

Um princípio que considero muito importante para um bom design é a decomposição: se uma classe for muito grande (mais do que, digamos, 300-400 linhas de código), divida-a em classes menores; se um método for muito grande (digamos, mais de 50 linhas de código), decomponha-o; se um projeto contiver mais de 50 classes, decompõe-se.

A chave é estimar o tamanho do seu sistema e construir várias camadas de abstração (por exemplo, subsistema, aplicativo, projeto, módulo, classe, método) que permitem decompor seu código em unidades compreensíveis com relacionamentos claros entre elas e poucas dependências. .

    
por 24.05.2012 / 07:41
fonte
0

É difícil, o que estamos realmente falando é uma capacidade de abstração, em vez de criar um código melhor, mas duas coisas farão você melhor e uma coisa o deixará mais feliz:

"Melhor"

A) Encontre o melhor designer que você pode e faça um par / programa juntos. Peça-lhes para explicar o que estão pensando enquanto resolvem o problema, não se contente com "isso apenas parece certo" e continue procurando. Esse processo também ajudará a parte de "mentores"

B) Imagine tudo como atores individuais e conversas entre eles. Cada um dos atores deve ter um único papel / responsabilidade e grupos deles lidam com sistemas diferentes. Se essa conversa funcionar e cada ator se sentir coerente e coeso, você estará no caminho certo.

E "mais feliz"

C) Se você tentou o seu melhor e isso ainda não está acontecendo, não há nada de errado em aceitar que algumas pessoas não podem fazer algumas coisas. Você poderia escrever um código brilhante e firme, mas nunca conseguir projetar ou arquitetar. E daí? Eu não posso jogar esportes físicos para caramelo, eu não sou bonito e meu carro nunca será melhor que a média. Divirta-se e utilize o que você é bom.

    
por 13.04.2013 / 22:10
fonte
-1

Na minha experiência pessoal, ler outros códigos é uma boa fonte de "inspiração". Quero dizer, tente entender o design de outras pessoas e se pergunte por que ele faz as coisas dessa maneira?

você pode encontrar muitos projetos de código aberto para pesquisa.

de qualquer forma, você precisa praticar.

    
por 31.05.2012 / 01:00
fonte
-1

Não viva com medo

Lute pela simplicidade

Ouça seus usuários

Tente muitas ideias

Crie algo e melhore

Trabalhe em coisas que agreguem valor, abandone as coisas que não o fazem

    
por 14.04.2013 / 23:35
fonte
-1

Aprenda a fazer as perguntas certas. Na maioria das vezes, você melhora seu design examinando o problema de um ângulo diferente. Em particular, isso ajudará você a deixar de se concentrar na solução do problema em questão e analisar mais as soluções que resolvem vários problemas relacionados.

    
por 29.04.2013 / 16:49
fonte

Tags