O Poder da Paciência e da Persistência: Como Evoluir no Ambiente Tecnológico em Constante Evolução
Existem muitas coisas para estudar se você escolher qualquer posição de Engenharia de Software. Você pode desenvolver aplicativos para desktop, web, mobile, IoT, e cada uma dessas opções tem imensas possibilidades para você escolher ou se especializar. Uma pergunta comum, principalmente para um iniciante é: quando eu vou dominar essa tecnologia? Essa é uma pergunta difícil de responder, não é? A tecnologia evolui rápido e o tempo todo as coisas mudam. Isso pode causar um pouco de nervosismo e estresse, porque é um pouco difícil manter as coisas sob controle. Então, no post de hoje, vou compartilhar alguns dos meus pensamentos sobre isso. Pegue um café ou qualquer bebida que você preferir, sente-se e vamos começar.
Trabalho com desenvolvimento de software desde 2008. Já trabalhei em seis empresas diferentes e senti que eu e meus colegas estávamos buscando o mesmo objetivo: dominarmos alguma tecnologia. Todos que querem aprender, normalmente, querem dominar algum assunto, mas quão rápido podemos alcançar isso para adquirir o conhecimento que queremos?
Bem, todos nós, pessoas da área de TI, adoramos dizer: depende! Essa é a verdade absoluta para essa pergunta. Depende, porque cada um de nós temos maneiras diferentes de aprender. Algumas pessoas gostam de aprender assistindo a vídeos, outras gostam de aprender lendo postagens de blog, outras pessoas gostam de arregaçar as mangas e mergulhar no código. Então, depende. Você concorda com isso?
Outra coisa que acredito ser muito importante entender: aprender é diferente de saber. Você pode assistir a vários vídeos sobre algum conteúdo específico, e tudo bem. Você aprende sobre isso. Mas você realmente entendeu? Você realmente sabe sobre isso? Você assistiu a algum curso em velocidade 2x e está preparado para a luta? Se você precisar colocar a mão na massa, pode colocar em prática o que aprendeu? Você realmente aprendeu os conceitos?
E por último, mas não menos importante: o tempo. Esse é outro fator na equação. A maioria de nós quer aprender muito rápido, e muitas coisas. Existem muitas habilidades que podemos aprender e praticar, mas em que realmente precisamos nos concentrar primeiro para nos sentirmos confortáveis? Isso é importante para você pensar para entender quando parar ou quando se dar um tempo.
Meu Ponto de Vista
Quando queremos aprender algo ou queremos atingir um objetivo, criamos expectativas. Queremos mudar, fazer uma transição de carreira, aprender uma nova tecnologia ou apenas começar na área. Às vezes sabemos o que queremos, mas não sabemos o caminho para alcançá-lo. Então, nesse caso, é muito comum mergulhar no estudo de tudo o que você encontra. Você quer alcançar seu objetivo, certo? Quanto tempo você acredita que vai precisar para obtê-lo? Três ou seis meses? Um ano? E qual é o seu plano B? Você tem um? Não é difícil começar a tentar aprender todas as coisas, mas se você não tiver um caminho claro, você pode adquirir apenas ansiedade e medo ao invés de conhecimento.
Isso geralmente acontece quando você tenta aprender muita coisa ao mesmo tempo. Aprender muitas coisas não significa saber essas coisas. Você precisa praticar, e precisa de tempo para desenvolver as novas habilidades. Isso pode causar ansiedade, porque se você não tiver um caminho claro, pode ver que há muitas coisas novas para aprender. Você começa a aprender apenas uma coisa nova, e descobre que há cinco ou dez novos conceitos para procurar. Tudo bem! Você não está sozinho. Se você não tiver um caminho claro para se concentrar no que é mais importante, você pode se sentir um pouco ansioso, porque não vai parar de procurar por mais e mais conteúdos. Tudo o que você verá não será suficiente, e você não aproveitará sua jornada. Isso é terrível.
Também pode causar medo. Se você entender que sempre há muitas coisas para aprender, e não se sentir confiante com seu conhecimento, como você pode trabalhar adequadamente se estiver sempre preocupado com suas habilidades?
Você Pode Aprender Com Seus Erros
Já enfrentei essa situação em diferentes etapas da minha carreira. A primeira em 2008 quando comecei na área como Desenvolvedor Web. Naquele ano, eu era quase um webmaster, porque precisava aprender sobre aplicações web, bancos de dados, gerenciar servidores Linux e todas as coisas que uma pessoa de TI faz - incluindo consertar impressoras. No início da minha carreira, eu não tinha um caminho claro a seguir, apenas aprendi muitas coisas, rápido, e pratiquei muito. Aprendi muito praticando e trabalhava o tempo todo. Foi muito cansativo, mas evoluí muito.
A segunda etapa da minha carreira em que enfrentei uma mudança foi em 2014 quando comecei como Desenvolvedor Mobile trabalhando com Xamarin Forms. Tive o desafio de desenvolver uma aplicação para representante comercial para Android, iOS e Windows, mas como Desenvolvedor Web, não fazia ideia do que era necessário aprender, então comecei de novo a aprender todo o conteúdo que encontrei e pratiquei muito. Nesse período, eu estava sempre preocupado em aprender desenvolvimento mobile. Foi um período em que voltei a crescer muito, mas custou minha saúde mental. Algumas pessoas podem pensar que isso é besteira, mas só eu sei o que senti.
Em 2019, fiz uma nova mudança e comecei como Engenheiro Mobile. Apesar de continuar trabalhando com desenvolvimento mobile, havia algo diferente: comecei a trabalhar mais próximo das APIs nativas do Android e iOS. Comecei a trabalhar o dia todo com a abordagem tradicional do Xamarin. Isso pode parecer nada, mas foi uma grande mudança para mim. Senti que não tinha conhecimento suficiente para ficar lá. Honestamente, sabia que tinha um bom conhecimento sobre desenvolvimento de software, mas não sobre desenvolvimento mobile, porque trabalhava com Xamarin Forms há muito tempo. Então, eu precisava começar a aprender de novo. Cansativo, não é? Bem, mas dessa vez foi diferente para mim, porque eu estava (e continuo) em um bom lugar, e isso me permitiu finalmente aproveitar melhor minha jornada para aprender.
Eu estava determinado a tentar algo diferente em 2019. Não queria repetir o mesmo ciclo.
Acalme-se e Aproveite a Jornada
Para manter a calma e aproveitar essa jornada, aceitei que nunca saberei absolutamente tudo. Isso foi muito difícil para mim, porque eu me cobro demais. Quero ser o melhor, então aceitar isso não foi fácil.
O que está funcionando para mim é pensar nas seguintes perguntas:
- Que conhecimento preciso desenvolver para me sentir confiante e me permitir seguir em frente?
- Onde e como posso obter esse novo conhecimento?
- Quanto tempo vou investir para alcançar isso?
É difícil responder a essas perguntas? Se você não tiver o hábito ou a capacidade de refletir sobre si mesmo, isso pode ser um grande desafio. Você precisa saber sobre si mesmo, o que quer e quanto está disposto a sacrificar. Isso pode ser difícil, mas entender isso é muito importante. Vamos explorar essas perguntas.
1. Que conhecimento preciso desenvolver para me sentir confiante e me permitir seguir em frente?
Isso é muito particular de cada um. Você precisa pensar em qual conhecimento você se concentrará em aprender e praticar que o tornará mais confiante e preparado para os desafios em sua carreira. Então, pense: o que você quer aprender?
Você quer aprender sobre desenvolvimento backend? Talvez você deva começar a aprender sobre os fundamentos de bancos de dados, protocolo HTTP e APIs RESTful.
Você quer aprender sobre desenvolvimento frontend? Talvez você deva começar a aprender sobre HTML, CSS, JavaScript e design responsivo.
Você quer aprender sobre desenvolvimento mobile? Talvez você deva começar a aprender sobre view controllers / activities / fragments, componentes de UI e ciclo de vida.
Você precisa escolher qual caminho deseja seguir e entender qual conhecimento precisa aprender que lhe permita seguir em frente sem problemas.
2. Onde e como posso obter esse novo conhecimento?
Hoje existem muitos recursos que você pode usar para aprender sobre qualquer coisa. Vídeos do YouTube, postagens de blog, cursos na LinkedIn Learning, Pluralsight, Udemy, Alura, BackFront Plus, ou mesmo conteúdo gratuito no YouTube.
Acho esse tópico interessante, porque nasci em 1987 e cresci sem as novas tecnologias que usamos hoje. Meu primeiro computador ganhei quando tinha 15 anos e a internet era discada. Hoje, ligamos nossos computadores e smartphones e o tempo todo estamos conectados, com muito conteúdo na palma da mão. Mas mesmo com muito conteúdo para consumir, acho que às vezes não sabemos onde encontrar conteúdo bom ou por onde começar. Então, o mais importante é: apenas comece. É melhor do que não fazer nada.
3. Quanto tempo vou investir para alcançar isso?
Agora você já sabe qual conhecimento deseja desenvolver, onde estão os recursos e precisa pensar em quanto tempo vai investir para alcançar isso. Quanto tempo? Uma hora por dia? Duas, talvez? Entre três e seis horas por semana? Você precisa organizar sua agenda e colocar essa jornada em sua rotina. Você não tem tempo no momento? Sem problemas, mas você não pode se sentir frustrado com isso, e essa situação precisa estar muito clara para você.
Não é um problema não ter tempo agora. É um problema se você quiser fazer uma mudança e não se dedicar a ela. O famoso “no pain, no gain”.
Coisas para se preocupar
Foco significa definir um alvo e se manter nele. Então, se você planeja estudar muitas coisas, talvez esteja começando errado, ou não conseguirá alcançar seus planos adequadamente. Estou dizendo isso porque é humanamente impossível começar a aprender muitas coisas ao mesmo tempo e ser produtivo em todas elas. Existem algumas exceções, mas foco significa começar algo e garantir que você o evolua até o fim. Pense nisso.
Compartilhando Minhas Experiências
Dediquei esta sessão para compartilhar minhas últimas experiências. Talvez algo possa ajudá-lo a ter algumas ideias.
Experiência 1: Começar a Trabalhar com as APIs Nativas iOS e Android
Como disse anteriormente, em 2019 comecei como Engenheiro Mobile para trabalhar com Xamarin Traditional, mais próximo das APIs nativas iOS e Android. Isso foi um grande desafio para mim, porque eu estava acostumado a trabalhar apenas com Xamarin Forms. Naquela época, o Xamarin Forms estava muito evoluído, pois cada novo aplicativo não precisava mais de muitos custom renderers para funcionar corretamente. Isso significava que o conhecimento nativo era menos crucial, permitindo que os desenvolvedores se concentrassem no código compartilhado para a maior parte de seu trabalho.
Bem, meu cenário mudou e eu precisava de um plano para estudar. Sabia que precisava estudar muitas coisas e tentei responder às três perguntas.
1. Que conhecimento preciso desenvolver para me sentir confiante e me permitir seguir em frente?
Isso é muito estranho, mas para mim, para me sentir confortável, não precisei de muito:
- Dominar como criar telas com listas e conteúdo dinâmicos.
- Dominar como navegar entre as telas.
- Dominar como fazer a comunicação entre as telas.
Muito simples, certo? Sim, simples, mas eu precisava dominar essas coisas para me sentir mais confortável no meu novo trabalho. Eu conhecia todos os conceitos, mas não trabalhei com eles até aquele momento. Há uma grande diferença entre apenas aprender sobre algo e realmente entender, na prática. Todo esse conhecimento que eu precisava evoluir nas duas plataformas, mas mais no iOS.
2. Onde e como posso obter esse novo conhecimento?
Bem, não me lembro exatamente onde estudei, mas me lembro de procurar cursos na Udemy, Pluralsight e algum conteúdo no YouTube. Todos treinamentos muito práticos. No Pluralsight, me lembro de ter feito os seguintes cursos:
- Swift Fundamentals
- iOS 11 Fundamentals
- iOS Collection Views: Getting Started - muito bom
- iOS Data Persistence: The Big Picture
- iOS Networking with REST APIs
- iOS Auto Layout Fundamentals - 36%
- Developing Android Applications with Kotlin: Getting Started
- Android Apps with Kotlin: Tools and Testing
- Android Apps with Kotlin: RecyclerView and Navigation Drawer - 67%
3. Quanto tempo vou investir para alcançar isso?
Normalmente dedico muitas horas aos estudos. É assim que funciona para mim. Quando me deparo com um novo desafio, gosto de mergulhar fundo nele. Tenho o privilégio de poder encontrar tempo para isso. Minha esposa me apoia e me ajuda muito. Normalmente dedico entre uma e duas horas por dia, incluindo fins de semana, porque minha esposa adora acordar tarde e eu acordo cedo para estudar mais tempo quando ficamos em casa.
Eu esperava ver progresso em cerca de um ano, e ele veio. Com o tempo, as tarefas ficaram mais fáceis. Isso foi um sinal para mim de que eu estava alcançando meu objetivo. Continuei estudando e evoluindo, mas com menos pressão em mim mesmo.
Esse conhecimento básico me ajudou a continuar crescendo na minha posição. Talvez você esteja pensando: por que você estudou as abordagens nativas iOS e Android com Swift e Kotlin em vez de C# com Xamarin? Bem, acredito que se você dominar o desenvolvimento nativo e entender como cada plataforma funciona, você reduzirá as dúvidas ao enfrentar problemas no desenvolvimento mobile com Xamarin. Algo deu errado? O que está errado? É o Xamarin ou é o iOS / Android? Entender os conceitos básicos na linguagem nativa me ajuda muitas vezes a não culpar o Xamarin quando encontro problemas. Já vi isso acontecer às vezes quando as pessoas culpavam o Xamarin Forms, mas o problema real estava nas próprias plataformas.
Experiência 2: Começar a se Concentrar em Dominar o Desenvolvimento iOS com Swift
No ano passado escrevi sobre isso, e você pode encontrar essa postagem aqui. Então, aqui estou pensando nas perguntas novamente.
1. Que conhecimento preciso desenvolver para me sentir confiante e me permitir seguir em frente?
Nos últimos anos trabalhando com Xamarin Traditional, aprendi muito sobre iOS, mas agora tenho algumas necessidades específicas para me sentir confortável para ser um Engenheiro iOS no futuro. Por exemplo:
- Dominar gerenciamento de memória
- Dominar paralelismo e concorrência
- Dominar closures em Swift
- Dominar View Code
- Replicar em SwiftUI o que já sei fazer usando UIKit
2. Onde e como posso obter esse novo conhecimento?
Para minha surpresa, encontrei muito conteúdo no LinkedIn Learning, mas comecei essa jornada usando BackFront Plus. Eles têm ótimo conteúdo pago, e os vídeos sobre desenvolvimento iOS são fantásticos, muito bem explicados. Se você tiver a oportunidade, recomendo.
Também gosto dos conteúdos do Paul Hudson. Ele tem muito conteúdo gratuito ótimo. O mesmo vale para Sean Allen e CodeWithChris.
Outra coisa interessante que estou tentando agora é praticar em um projeto real. Adoro criar um projeto do zero e testar conceitos nele. Mas há um problema: quando você está em um projeto “hello world”, o aprendizado tende a ser um tanto limitado. Então, decidi praticar tentando contribuir para um projeto real de código aberto. Compartilhei sobre isso neste post.
3. Quanto tempo vou investir para alcançar isso?
Hoje, estou investindo pelo menos uma hora de segunda a sexta-feira e algumas horas no sábado. Minha intenção aqui é estudar e praticar até me sentir confiante para contribuir com projetos de código aberto.
Se sentir confiante é subjetivo, né? Bem, no meu contexto, se sentir confiante significa contribuir e criar soluções sem muita dificuldade. É isso.
Precisa de Dicas Para Encontrar Onde Ou O Que Estudar?
Existe um site chamado roadmap.sh, que é um trabalho da comunidade para criar roadmaps, guias e outros conteúdos educacionais para ajudar os desenvolvedores a escolher um caminho e orientar seus aprendizados. Confira, pois é legal.
Outro ótimo recurso é um guia de estudo para desenvolvimento de software com Swift. Não terminei, mas encontrei ótimas referências lá.
O Que Você Vai Aprender Agora?
O caminho para dominar uma tecnologia é uma jornada, não um destino. É sobre encontrar o equilíbrio certo entre aprender e praticar, focando no que mais importa para você, e entender que você não precisa saber tudo para progredir.
Abrace o poder da paciência e da persistência - é a sua chave para evoluir neste ambiente tecnológico em constante evolução. Comece identificando o que deseja aprender, encontre os recursos que se adaptam ao seu estilo de aprendizado e dedique o tempo que puder para alcançar seus objetivos.
Não tenha medo de cometer erros, aprenda com eles e continue em frente. Lembre-se, cada nova habilidade que você adquire agrega valor à sua carreira e lhe dá poder para construir coisas incríveis. Então, dê o primeiro passo, continue curioso e aproveite essa jornada!