Tenho experiência como designer de interface do usuário. E percebi que é um pouco difícil para mim escrever um pedaço de lógica. Às vezes eu acerto, mas na maioria das vezes, acabo com algo hacky (e geralmente leva muito tempo). E não é que eu não goste de programação, na verdade, estou começando a gostar tanto quanto de design. Às vezes, acho que sou melhor em lidar com cores e formas do que com números e lógica (mas quero mudar isso).
O que costumo fazer é pesquisar a solução na Internet, copiar o exemplo e inseri-lo no meu aplicativo (sei que isso não é uma prática muito boa).
Ouvi dizer que uma dica era escrever a lógica em inglês comum como comentário antes de escrever o código real.
Que outras dicas e técnicas posso usar?
programming-practices
janoChen
fonte
fonte
Respostas:
Passos de bebê.
Divida um grande problema em problemas menores. Em seguida, resolva os problemas menores.
Pontos de bônus se você puder fazer backup de suas soluções para problemas menores com testes de unidade automatizados.
fonte
Normalmente, escrevo as coisas no papel enquanto estou pensando. Dessa forma, eu posso escrever pseudo-código ou fazer desenhos (geralmente ambos), e não preciso me preocupar com as limitações do software de desenho ou com o que pode caber em um comentário.
Acho que se estou fazendo algo pelo menos levemente complicado, preciso realmente colocar as coisas no papel primeiro, ou então acabo com algo hacky, como você mencionou.
Se eu acabar com algo hacky, quase sempre funciona. Às vezes, eu posso invadir até que finalmente funcione, às vezes não. Se eu dedicar algum tempo a trabalhar no papel, geralmente ele funciona sem muitos problemas.
fonte
Acho que você meio que respondeu à sua própria pergunta, e não quero dizer isso de maneira ruim - é um conselho comum que a melhor maneira de aprender a codificar é simplesmente codificando. Eu pessoalmente tentaria evitar copiar código diretamente de uma fonte, a menos que seja absolutamente claro o que está acontecendo (isto é, que não há necessariamente outra boa maneira de fazer alguma coisa), embora muitos desses tipos de problemas são sintáticos. Dedicar tempo para entender o que está acontecendo e como você (ou outra pessoa) está implementando isso é o que mais importa.
Durante o tempo que aprendi a desenvolver, descobri que trabalhar com tecnologias MVC é uma ótima maneira de entender como fazer design, como Rails (com o que estou trabalhando agora) ou iOS / Cocoa Touch . Como você está trabalhando em um ambiente de design orientado a objetos, assim que começa a pensar em termos de modelos e a lógica deles sendo separada da visualização (com os controladores sendo a cola que os une), você também começa a pensar em termos de como você pode manter seus objetos abstraídos de uma maneira lógica, mas (espero!) descomplicada.
Isso se baseia em minhas próprias experiências, é claro, mas espero que meus pensamentos sobre sua pergunta possam ajudar.
fonte
Além das respostas já dadas, uma das melhores maneiras de começar é aprender com um aplicativo simples e onde o código fonte está disponível.
É aqui que repositórios sociais como o Github brilham. Um lugar incrível para procurar exemplos. E quando você encontrar um, você pode bifurcar imediatamente como você mesmo e fazer o que quiser com o aplicativo, assim que tiver:
Outra opção é usar as implementações de referência de exemplo clássico que estão documentadas em tantos lugares diferentes. Por exemplo, o framework Spring do Java usa o venerável exemplo "Pet Store". Acho que você pode encontrar esse exemplo no Github.
Outras estruturas / tecnologias, como a estrutura Grail do Groovy, usam outros clássicos, como um aplicativo Book, para persistir e visualizar livros e autores, etc.
A opção final que eu tentei é seguir um bom livro de programação e começar a digitar os exemplos manualmente e colocá-los em um repositório como o Github; isso tem pelo menos dois benefícios: 1) existe uma referência para você com suas próprias anotações que o ajudará a se lembrar de coisas legais de uma maneira que você se lembrará e 2) se você enfrentar situações difíceis, poderá facilmente conseguir amigos ou colegas para veja seu código e entre em contato com conselhos.
A ciência e especialmente a programação são realmente construídas sobre as experiências de outras pessoas. Figurativamente falando, copiar / colar e depois ajustar até você entender é o que ajuda os desenvolvedores a se tornarem engenheiros.
fonte
Imagine que você tenha que fazer um relatório sobre o seu problema para outra pessoa.
Analise o problema. Tente formulá-lo da maneira mais clara possível. Escreva pseudocódigo, desenhe diagramas.
Pense no que poderia estar causando o problema e por que sua abordagem está errada.
Pergunte a si mesmo se há outras perspectivas nas quais você possa ver o seu problema.
Não basta fazer isso em sua mente, coloque-o no papel (ou em um documento no seu computador).
Se nada disso ajudar você imediatamente, tente não pensar no problema por um tempo. Tenha uma boa noite de descanso. Ainda sem solução? Tente pesquisar seu problema no Google ou pesquisar na SO uma solução.
Se tudo mais falhar, faça uma pergunta sobre SO (ou Programadores SE, se for mais apropriado para sua pergunta em particular). Não se esqueça de incluir seu "relatório" (ou partes importantes) ao fazer a pergunta.
Quando você receber uma resposta, pergunte-se por que sua abordagem não funcionou e o que poderia ter ajudado você a encontrar a solução sozinho. Isso pode ajudá-lo a encontrar uma solução para algum problema que você se deparar no futuro que exija uma abordagem semelhante.
fonte
Eu concordo com o pensamento no papel. Como regra, identifico todos os itens de informações que precisarei e de onde virão, primeiro. Não precisa ser elegante, apenas preciso. Questões de lógica de negócios e estratégias de design geralmente vêm durante esse processo.
Com isso, como um desenvolvedor java trabalhando de ponta a ponta em um aplicativo, divido ainda mais as camadas por camadas: apresentação, web, lógica de negócios e a camada de acesso a dados. Quando tenho tempo, normalmente escrevo os nomes das minhas aulas durante esta parte.
Por fim, sempre me esforço para executar testes para o back-end, antes de escrever o código. Você pode conectar tudo com elegância, mas se não conseguir acessar o back-end: banco de dados ou serviço da web, por exemplo, não funcionará!
fonte
Alguns dos princípios do desenvolvimento orientado a testes ajudam muito aqui.
Uma das melhores maneiras de resolver problemas complexos é resolvê-lo para casos de uso específicos e, em seguida, descobrir uma generalização. O uso do TDD promove exatamente isso. Você cria um caso de teste simples e faz isso funcionar, depois cria outro caso de teste e faz isso funcionar. Finalmente, você vê se existe alguma generalização que permite que você lide com os dois casos de teste com a mesma lógica. Se você puder, provavelmente também lidará com muitos outros casos de teste. Como você pode executar todos os seus casos de teste a qualquer momento, fique à vontade para melhorar sua lógica sem se preocupar em quebrar algo. Dessa forma, uma solução hacky não precisa permanecer hacky.
O desenvolvimento orientado a testes também promove
fonte
Na verdade, há um livro que responde exatamente a essa pergunta:
Como criar programas - Uma introdução à programação e computação de Matthias Felleisen, Robert Bruce Findler, Matthew Flatt e Shriram Krishnamurthi
No momento, eles estão trabalhando em uma segunda edição e, depois, em um segundo volume (Como criar componentes).
O mais interessante deste livro é que ele fornece um conjunto de receitas para a criação de programas. Em outras palavras, fornece instruções passo a passo que você pode (semi-) seguir sem pensar para criar um programa.
Ou, colocando de outra maneira: contém um conjunto de programas para escrever programas, para que você não precise descobrir como escrever um programa: os autores descobriram isso para você!
fonte
Além das respostas acima, às vezes não se trata de conhecer a própria lógica, mas de conhecer a estrutura e a linguagem com as quais você está trabalhando. Cada estrutura ou linguagem tem sua própria característica e é uma grande ajuda para se familiarizar com isso.
fonte