Me sinto engessado para programar

Boa tarde,
Eu estudo programação a algum tempo, horas eu paro por motivos pessoais ou de trabalho, (atualmente trabalho fora da área de tecnologia), depois volto, mas sempre me sinto engessado, não consigo enxergar o futuro.
Tenho maior conhecimento em linguagem Java, estudei o básico e a parte de orientação a objetos, preciso dar uma recapitulada mas até aqui consigo entender normalmente.
Porém não consigo enxergar onde isso me leva, procuro apostilas, cursos e ainda aprendo a somar números, tirar média de notas, animais como orientação a objetos, mas gostaria mesmo de entender é, saindo aqui do que aprendi com o que posso trabalhar? Aprendo a criar uma aplicação desktop Java mas acredito eu que provavelmente não irei trabalhar com aplicação desktop, o mesmo para Python que estou começando a me interar mais, onde exatamente vou usar Python, achei exemplos muito genéricos do tipo ah o YouTube usa, mas então vou mandar um currículo pro Google e falar pra me contratar para o YouTube? Creio que não seja assim.

Gostaria de desenvolver aplicações que são mais reais com a demanda do mercado, já sei como faz um jogo da velha com matriz e for dentro de for, não adianta eu aprender a usar o AutoCAD e não saber o que projetar com ele, preciso saber fazer um lay-out, ou planta de uma casa, edificações. Preciso conhecer exatamente as linguagens em suas aplicações especificas e não só aprender como usar elas.

Por exemplo, aprender a programar para Android me parece mais objetivo, aprender Java e/ou Kotlin eu já sei o que vou fazer com eles na plataforma mobile, mas e o resto? Desenvolvo em Java pensando em mais o que? E o Python? JavaScript é muito requisitada, mas é só pra web, eu deveria dominar HTML também já que vou desenvolver em JS? Se JS não é só pra web, então onde eu realmente vou usar ela? O C# OUÇO rumores que caiu um pouco em desuso em relação aos últimos anos, mas é bem utilizada ainda, essa eu sei que é focada em desktop.

1 curtida

Existe um ditado popular muito arcaico, mas que faz todo sentido: não coloque a carroça na frente dos bois.
Você não aprendeu a andar de bicicleta antes de dar seus 1, 2, 3 passos e cair. E, certamente, se te perguntassem, você se sentiria engessado.

Desenvolver “sistemas reais” ou jogos da velha têm o mesmo princípio e não entender isso me diz que você ainda não está apto para mandar o currículo para o google (fala 3 idiomas? é mestre em javascript?) e nem para desenvolver estas “aplicações reais”.

Como você desenvolve um jogo da velha? a partir de que? Como organiza o que precisa? Como constrói a solução? Como verifica que está correta?

Entenda: linguagem de programação, IDE, sistema operacional, etc, são ferramentas. Hoje você usa isso, amanhã aquilo e assim vai.
Mas, os conceitos não mudam. Pode haver diferença em como implementar uma classe em Java e uma em C# ou mesmo javascript. Mas, a definição de classe é a mesma.
Da mesma maneira que os requisitos, regras e outros aspectos fundamentais são os mesmos.

Outra questão que você não vê é que a ideia de usar coisas simples, como criar jogos da velha, cadastros de alunos, cálculo de notas é de otimizar o tempo e focar em trabalhar conceitos.
De que adianta desenvolver um sistema complexo, com 1001 utilidades, mas que você não tem tempo para desenvolver por completo ou você vai acabar repetindo a mesma coisa várias vezes?
Existe uma ideia por trás de uma proposta de aprendizado e ela se concentra em garantir que você aprenda.

3 curtidas

Muito boa a resposta do Darlan.

Complementando, digo que entendo seu sentimento. Mas há tempo pra tudo, e esses pensamentos ansiosos só vem atrapalhar.

Você quer sair da zona de conforto e, mesmo sem estar devidamente empregado, fazer projetos profissionais? Bem, crie seu portfólio!

Você já sabe fazer um jogo da velha. Legal, agora, é hora de utilizar os conceitos que você aplicou para um projeto que demonstre mais seus conhecimentos (e assim você vai aprender muito mais).

Por exemplo, todo mundo já fez (ou acho que já) um jogo na velha que utiliza o console da IDE ou do SO para ser jogado. Legal, bacana! Mas dá pra melhorar, não dá?

Por exemplo, você pode:

  1. Criar uma interface gráfica com Swing para sua aplicação!
  2. Adequar sua aplicação na arquitetura MVC!
  3. Começar a utilizar gerenciadores de dependencias e controle de versionamento de arquivos.
  4. Aprender um pouco sobre Java + Banco de Dados e gerar um histórico de partidas!
  5. Implementar um modo singleplayer no seu jogo da velha!
  6. Mudar a interface gráfica para utilizar JavaFX!
  7. Utilizar um banco de dados externo, se comunicando via requisição HTTP ou qualquer outro meio (e.g MQTT).
  8. Mudar radicalmente e tirar a interface gráfica - é hora de usar a Web para manter seu programa!
  9. Refatorar, aplicar melhor os conceitos de orientação à objetos, aplicar um design pattern

Você consegue ver o quanto de coisa dá pra ser feita e o que você vai aprender apenas mantendo o seu jogo da velha? É tudo uma questão de perspectiva! E praticamente tudo que te falei nessa lista são coisas que são utilizadas no mercado de trabalho - você aprende produzindo seu portfólio. Quando você se sentir confortável, saia do Jogo da Velha e faça outra coisa, que não necessariamente precisa ser mais complexo: basta te dar prazer em produzir.

Uma nota: Quando te falam “tal tecnologia está morrendo”, você tem que lembrar que ela pode estar morrendo agora, mas existe MUITA COISA que ainda usa ele. Java é um monstro muito grande e complexo, não é como se de um dia pra outro fosse acabar todo o uso do Java. Vou dizer aqui: Morreremos e Java ainda será utilizado

Aplicando os conceitos que te falei acima, você vai aprender:

  1. Swing (já em desuso, mas existem muitos sistemas legados que ainda usam).
  2. Arquitetura MVC
  3. Gerenciadores de dependência (como Gradle ou Maven) e CVS (Git ou Mercurial. O padrão é git).
  4. JPA/Hibernate/JDBC, enfim, o mundo de persistência de dados
  5. Inteligencia Artificial com Java
  6. JavaFX (Substituto do Swing, sofrendo do “fim das aplicações desktop”).
  7. Conceitos de API e comunicações entre softwares
  8. Java Web. Tem N caminhos de seguir isso, cabe a você escolher o melhor
  9. Boas práticas + design patterns

É isso o que eu faria no seu caso - aprenda produzindo. Essa é só minha opinião, claro.

[]'s

3 curtidas

Eu ia responder, mas tudo o que está depois do seu “Complementando,” está exatamente de acordo com o que eu iria dar como opinião… Se eu puder contribuir com apenas mais 1 centavo, se sua preocupação é “fazer algo real”, algumas dicas que eu daria é:

  • Procure algum hobby seu que não tenha um Sistema de controle e implemente algo que seja necessidade. Se for um jogo, faça um site desse jogo para que outros seguidores se cadastrem e talvez você possa fazer um rank de amigos, criação de ligas locais, etc.
  • Procure alguma necessidade na sua família ou vizinhança e resolva a mesma com um software, sem cobrar nada, apenas para aprender mesmo e coloque isso no seu portfólio.
  • Fale com aquele seu tio no almoço de domingo que tem uma empresa que vende papel e pergunte pra ele quais problemas ele está enfrentando que talvez você pudesse resolver desenvolvendo um software pra ele.

Enfim, pode nascer muita coisa boa dessas ideias daí de cima e você pode em breve se tornar o " dono" de um software em produção, com pessoas usando de verdade, gerando problemas pra você resolver, começando a lhe dar mais “casca” do que você vai de fato encontrar no mercado. Entendo sua ânsia de entender como é um “sistema de verdade” (todos não são?), mas vai de boas sem pular etapas e se quiser se desafiar a ir mais rápido, o faça com responsabilidade, mas pegue um problema real pra resolver.

Ajuda se você falar para o seu tio, para seus amigos ou para seu vizinho que o Sistema que está sendo desenvolvido é uma troca, você não cobra para fazer e entregar o que tem que entregar e nem pode ser exigido como se estivesse sendo pago por isso… PORÉM (e aqui é importantíssimo ressaltar), não seja moleque, se você pegar um problema real pra resolver e alguém depende dessa solução e confiou em você, vá até o fim, sua palavra de homem deve valer para o profissional que você quer se tornar no futuro. Apenas entregue algo responsável e crie uma relação de ganha-ganha.

Abraços :wink:

1 curtida