Aprender fazendo (e programando por tentativa e erro) [fechado]

5

Como você aprende uma nova plataforma / toolkit enquanto produz código de trabalho e mantém sua base de código limpa?

Quando sei o que posso fazer com a plataforma subjacente e o kit de ferramentas, geralmente faço isso:

  1. Eu crio um novo branch (com o GIT, no meu caso)
  2. Eu escrevo alguns testes de unidade (com o JUnit, por exemplo)
  3. escrevo meu código até passar nos meus testes

Até agora, tudo bem. O problema é que muitas vezes eu não sei o que posso fazer com o kit de ferramentas porque é novo para mim. Eu trabalho como consultor, então não posso ter meu idioma / plataforma / kit de ferramentas preferido. Eu tenho que lidar com o que o cliente usa para a tarefa em mãos.

Na maioria das vezes, tenho que lidar (muitas vezes com pressa) com um kit de ferramentas grande que eu conheço muito pouco, então sou forçado a "aprender fazendo" (na verdade, programando por "tentativa e erro") e isso faz eu ansioso.

Por favor, note que, em algum momento do processo de aprendizagem, geralmente eu já tenho:

  1. leia um ou mais livros de cinco estrelas
  2. seguiu um ou mais tutoriais da web (escrevendo um código de trabalho em uma linha tempo)
  3. criou alguns pequenos projetos experimentais com meu IDE (IntelliJ IDEA, no momento. Eu uso Eclipse, Netbeans e outros, também.)

Apesar de todos os meus esforços, neste ponto, normalmente, posso ter uma compreensão grosseira da plataforma / toolkit que tenho que usar. Ainda não consigo entender cada detalhe. Isso significa que todo e qualquer novo recurso que envolva alguma preparação de dados e algum algoritmo não-trivial é uma tarefa difícil de implementar e requer muita tentativa e erro.

Infelizmente, trabalhar por tentativa e erro não é seguro nem fácil. Na verdade, esta é a fase que me deixa mais ansiosa: experimentar um novo kit de ferramentas enquanto produzo código de trabalho e mantenho minha base de código limpa.

Normalmente, neste estágio, não posso usar o Álbum de recortes do Eclipse porque o código que preciso escrever já é muito grande e complexo para essa pequena ferramenta. Da mesma forma, eu não posso usar mais um projeto pequeno independente para meus experimentos, porque eu preciso testar o novo código no lugar. Eu posso simplesmente escrever meu código e confiar no GIT para um resgate seguro. Isso me deixa ansioso porque esse tipo de código entrelaçado e meio maduro pode se tornar incrivelmente difícil de gerenciar.

Como você encara esta fase do processo de desenvolvimento?

Como você aprende fazendo sem bagunçar sua base de código?

Alguma dica e truques, melhores práticas ou algo assim?

    
por AlexBottoni 21.11.2012 / 20:06
fonte

4 respostas

1

Acho que a melhor solução é não aprender fazendo dessa maneira.

Em vez de imediatamente tentar resolver seu problema, isole o que você não entende e descubra isso primeiro.

Tome um exemplo trivial, você não sabe como Nullable funciona no .NET framework. Em vez de tentar escrever código usando-o, crie um aplicativo de amostra e brinque com ele.

Por exemplo:

public static void Main(string[] args)
{
    var test = new int?();
    Console.WriteLine("new int? - {0}", test);
    test = 0;
    Console.WriteLine("0 - {0}", test);
    test = 1;
    Console.WriteLine("1 - {0}", test);
    test = null;
    Console.WriteLine("null - {0}", test);

    Console.WriteLine("test == null - {0}", test == null);
    Console.WriteLine("test.HasValue - {0}", test.HasValue);
    Console.WriteLine("test.GetValueOrDefault() - {0}", test.GetValueOrDefault());
    Console.WriteLine("test.GetValueOrDefault(2) - {0}", test.GetValueOrDefault(2));
}

Acrescente todos os exemplos que você encontrar e veja o que acontece. Isso permite que você execute o estilo de teste de unidade de exploração ao qual está acostumado sem precisar executar uma base de código complexa por meio de suas ferramentas.

Observe que isso às vezes pode funcionar com bases de código existentes. Tenha cuidado com as suposições sobre o ambiente de execução, no entanto. Se você chamar uma DLL que espera estar em execução em um ambiente IIS de um EXE, poderá encontrar alguns erros estranhos.

    
por 21.11.2012 / 20:17
fonte
1

Supondo que você tenha lido alguns livros e documentação, a única maneira de seguir em frente é praticar. Você tem sorte de quando você é um consultor que você já tem um projeto que precisa ser feito, então você pode começar a fazer isso.

Em geral, acho que sua abordagem atual está correta.

Você

a) Aprenda o contexto e a teoria.

b) Crie testes para o TDD.

c) Comece a trabalhar.

A única coisa que gostaria de adicionar é

d) Refatore quando você aprender / descobrir uma maneira melhor de fazer algo que já fez.

O acima é IMHO sempre a abordagem correta para novos frameworks. Você não pode esperar ler livros e documentos até saber TUDO e só então começar a codificar. A mente humana não funciona assim, e mesmo se isso acontecesse, provavelmente seria abaixo do ideal.

    
por 21.11.2012 / 20:28
fonte
1

Bem, eu não sou de forma alguma um profissional, mas eu aprendo enquanto o processo continua, aprendendo e implementando novos recursos conforme eles são necessários, no entanto eu tenho o luxo do tempo e sendo um estudante.

Tanto quanto eu posso dizer, você está fazendo um bom trabalho em acompanhar todas as mudanças.

A única dica que posso dar como iniciante é dividi-la em bits consumíveis e aprender os recursos que você precisa lado a lado com os fundamentos do kit de ferramentas / plataforma para poder codificar o código trivial mais rápido e ficar satisfeito com seu código geral.

    
por 21.11.2012 / 20:35
fonte
0

Eu sugeriria que você faça um projeto descartável para se familiarizar com a ferramenta mas você já tem isso coberto. Sempre haverá mais a ferramenta do que livros, tutoriais e exemplos de projetos podem mostrar você. Todas as nuances saem apenas com experiência. Mas se você não sente que tem uma compreensão suficiente de uma ferramenta, eu simplesmente gaste mais tempo nessas três etapas.

Você planeja parece sólido para mim.

I work as a consulant

Oh. Bem, nesse caso, FAKE IT . Entregar tudo o que você pode bater de uma forma áspera que parece funcionar, conta o cliente por cumprir sua obrigação contratual, e sair . Se não é o mais bonito, é problema de outra pessoa. Ou é semear para o futuro emprego. Assim é a vida de um contratado. Se você tem conhecimento de domínio específico sobre qualquer coisa, tenha certeza para bifurcar isso em um documento ou ferramenta útil ou código de exemplo, como é isso que eles estão realmente pagando por você. Mas se eles só precisam de um macaco de código para um fim de semana, e eles não permitem que você use as ferramentas que você conhece, então este é o tipo de resultado que eles devem esperar. Desculpe, mas é assim que funciona a refeição Acontece. Se você fizer esse esforço extra, outro consultor o prejudicará. Se seu cliente estava contratando por qualidade, eles teriam contratado alguém.

Não me entenda mal, consultores podem enviar um deus quando você precisa de um super-homem de SQL ou de um guru guru para banir os insetos que o atormentam. Mas contratar um consultor que tem que aprender as ferramentas? naw

    
por 21.11.2012 / 20:53
fonte