CodeGym /Blogue Java /Random-PT /Como foi? Ou meu primeiro projeto
John Squirrels
Nível 41
San Francisco

Como foi? Ou meu primeiro projeto

Publicado no grupo Random-PT
Esta é uma tradução da história de sucesso da nossa comunidade Java global. Alex aprendeu Java na versão em russo do curso, que você estuda em inglês no CodeGym. Que isso se torne a inspiração para o seu aprendizado futuro e talvez um dia você queira compartilhar sua própria história conosco :)

Introdução

Um pouco sobre como comecei na programação. Sou professora e psicóloga de formação e há 5 anos exerço minha profissão com sucesso. Mas, por vários motivos, penso cada vez mais em mudar-me para outro país. E como a linguagem e as regulamentações são diferentes em outros países, eu não poderia me tornar o mesmo tipo de profissional sem uma reciclagem séria. Então comecei a procurar maneiras mais simples e interessantes de me mover e ter sucesso. Como foi?  Ou meu primeiro projeto - 1Tentei ser tatuador (isso não requer essencialmente nenhum conhecimento do idioma), mas isso é uma história para outro dia. Então meu amigo colega de trabalho me apresentou ao CodeGym. Inicialmente, fiquei cético em relação às promessas de me tornar um programador completo jogando um jogo e por um preço tão modesto. Mas então ganhei algum dinheiro de aniversário (não sujeito ao "imposto familiar") e me deparei com a escolha entre WoW e CodeGym... Bem, graças a um desconto oportuno, a balança pendeu na direção certa, e aqui estou. Como todos já deveríamos saber, CodeGym é 90% prática pura. Você aprende a resolver tarefas. Você aprende a encontrar o conhecimento que lhe falta na Internet. Tudo isso é bom, mas durante 15 níveis não consegui afastar a sensação de que estava faltando algo que completaria o quadro para mim. Pensei em ingressar no GeekBrains, mas (provavelmente felizmente) o mesmo amigo me parou a tempo e me apresentou à Udemy. Quando abri esse repositório de conhecimento, fui junto com os apelos: " Psiu, amigo. Você é novato?" Tem desconto para você... por apenas 3 dias — Não perca essa oportunidade! " Depois ficou claro que sempre há descontos, mas não é esse o ponto. Adquiri imediatamente um pacote com dois cursos: Java de 0 a Pro e algo semelhante para Android. E é aqui que começa a nossa história.

Sucesso ou fracasso?

À medida que avançava no curso de Android, recebi lição de casa para fazer um projeto baseado em meus novos conhecimentos. Sou o tipo de pessoa que acredita que fazer algo de maneira simples ou comum é como não fazer nada. Então, imediatamente comecei a complicar minha vida. Recorri à pessoa que conheço que tem a imaginação mais desenvolvida e vívida. Esta é minha querida esposa (sim, ela também lerá este artigo). Ela sugeriu fazer um aplicativo com fotos de animais, que emitem sons de animais correspondentes quando são clicados. Foi uma ótima ideia, mas ainda assim bastante simples. Tomando esta sugestão como base, comecei a raciocinar:
  • Este aplicativo deve ser mais do que fofo (algo para rir e esquecer). Eu quero que isso tenha valor. Por exemplo, ensinando algo.
  • Que seja o alfabeto com animais. Mas não qualquer alfabeto, mas o alfabeto inglês!
  • E não apenas animais, mas animais raros que poucos conhecem, para ampliar seus horizontes!
  • E deve haver animação, reprodução em áudio dos nomes das letras e dos nomes dos animais em inglês e russo!
Isso é o que chamo de dever de casa (esqueci de mencionar que antes do CodeGym eu basicamente não estava familiarizado com programação. E menos de 3-4 meses se passaram desde o momento em que comecei a usar ativamente o site até o momento em que iniciei o projeto. Então, se você Você é veterano nessa área e está pensando: “ Pff... Mudou alguma coisa em relação à versão original? ”, garanto que sim, mudou)! A primeira dificuldade que encontrei foi , por incrível que pareça, iniciar o projeto. Acontece que os autores não são os únicos que vivenciam o "bloqueio de escritor"... Mas como sou psicólogo, sabia a solução para o meu problema. Você só precisa começar a fazer alguma coisa. Dê pelo menos um pequeno passo e depois não pare. Então comecei com uma aula abstrata de Letter . Esta classe tinha alguns campos e posteriormente teria que ter vários métodos. Na verdade, eu não tinha ideia do que faria com isso, mas tinha que fazer alguma coisa. Então criei classes para cada letra, fazendo com que elas herdassem a classe abstrata. Demorou muito e com isso meu primeiro dia de trabalho chegou ao fim. No dia seguinte apaguei o projeto e comecei de novo. Acabei de abrir o projeto para lembrar o que mudou desde o momento que descrevi acima. E eu gostaria de dizer que tudo parecia melhor quando terminei, mas não. Ainda existem aulas para cada letra... Isso se deveu especificamente ao fato de que essa lição de casa me foi atribuída quase no início do curso Android e, sozinho, tive que descobrir as complexidades do relacionamento entre um atividade (a janela ativa ou algo parecido) com uma classe. E não encontrei nem pensei em nada além dessa maneira desajeitada de associar uma aula específica a uma atividade específica. De qualquer forma, um dos princípios da programação (evitar repetição) foi violado 26 vezes. Primeiro, eu implementei completamente (me pareceu) as duas primeiras letras, fiz uma interface de usuário aproximada que consiste em dois menus (um menu geral que pode ser necessário ao expandir a funcionalidade e um índice, do qual você pode pular para qualquer das letras). Eu realmente não encontrei muita dificuldade em programar. À medida que implementei meu projeto independente, muitas coisas, como as relações entre classes, métodos, etc., ficaram claras e o projeto em si se tornou uma excelente prática para consolidar todo o conhecimento que adquiri não só sobre Android, mas também sobre Java. A segunda dificuldade foique a letra mudou ao mesmo tempo em que seu nome foi ouvido. A transição suave (sombreamento) fazia parecer que o som precedia a imagem. Mas quando coloquei um delay no som, todo o thread congelou — a transição foi simplesmente adiada pela quantidade de delay, produzindo o mesmo efeito indesejável, só que mais tarde. Então tomei a ousada decisão de tornar meu programa multithread! Mudei a reprodução do som para um thread separado, com um atraso longo o suficiente para carregar a imagem. O multithreading foi até aí, mas tive orgulho de dizer que estava escrevendo um aplicativo multithread. A dificuldade final foi selecionar materiais adequados. Você achou que o inglês não tem animal para a letra X (acontece que tem)? Tive que identificar 26 animais e encontrar suas imagens e sons, além de registrar os nomes de 26 letras e 26 animais. Se eu estivesse trabalhando em equipe, obviamente teria deixado essa parte do trabalho para outra pessoa. Esses momentos monótonos matam a vontade de trabalhar, e quando não há vontade, há desculpas. Enfim, essa etapa durou cerca de 2 semanas (fiz o projeto nas horas vagas e quando não tinha desculpas). O projeto foi declarado concluído aproximadamente 3-4 semanas após seu início.

Vale a pena continuar estudando programação?

Seguiu-se a desilusão. Primeiro, não tive permissão para publicar meu dever de casa do curso. Eu fiz o trabalho e me esforcei muito para me exibir, mas não tive permissão. Em segundo lugar, meu aplicativo funcionou perfeitamente no emulador e no meu telefone. Do que planejei fazer, não implementei a animação, porque cuspi e decidi que terminaria quando tivesse passado pelas lições relevantes do curso. Mas quando comecei a pensar em distribuir o aplicativo, me deparei com um problema interessante. Depois de usar outro telefone e um tablet para verificar se meu aplicativo estava otimizado para diferentes telas e diferentes versões do Android, encontrei um erro desconhecido. O programa simplesmente desligava ao mudar para uma carta. Tentei encontrar a raiz do problema, revisei os logs, que, comparados às exceções concisas do Java, pareciam ainda mais um truque. A Internet não me ajudou. Por um lado, fiz um aplicativo funcional que meus filhos gostam de brincar. Por outro lado, só funciona no meu telefone. Isso me faz rir. Claro que fiquei chateado, mas refletindo sobre isso concluí que ganhei mais do que perdi:
  • Fiquei melhor em lidar com críticas ao meu trabalho.
  • Percebi o valor do conhecimento e da experiência em design de software.
  • Aumentei minha auto-estima de programação.
  • Percebi a necessidade de estudar padrões de projeto e os fundamentos da refatoração.
  • E como eu disse, agora tenho meu próprio aplicativo, que ninguém mais tem e provavelmente nunca terá. =)
"Só sei que nada sei". Ao implementar projetos educacionais como este, você tem uma grande oportunidade de analisar o que sabe, onde há lacunas em seu conhecimento e identificar maneiras de progredir ainda mais. Vale a pena continuar estudando programação se você entende que todos os seus esforços ao longo de uma longa etapa da sua vida o levaram de 0 a +0,001? Para mim, a resposta foi sim. E você?
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION