[Akitando] #69 - Respondendo suas Perguntas sobre Carreira | via Instagram

2019 December 11, 11:00 h

DESCRIPTION

Muita gente me procura via mensagens diretas em redes sociais, em particular pelo Instagram. Pro episódio de hoje eu selecionei 10 perguntas que representam a maior parte dos temas que costumam me perguntar e apesar de já ter parcialmente respondido algumas delas via os temas de outros vídeos passados, vou tentar compilar respostas um pouco melhores hoje. Espero que ajude.

O tema vai ser “Perguntas mais frequentes de iniciantes no mercado de tecnologia”. Diferente do vídeo que eu fiz chamado “Começando na Carreira de TI” (https://www.youtube.com/watch?v=H84WD_xyj10) onde eu abordei assuntos que começam mais na escolha da faculdade primeiro, esta é mais focado no primeiro emprego e na forma de começar a evoluir. Depois de assistir este video convido vocês a tentarem o vídeo “Dimensão do Tempo” (https://www.youtube.com/watch?v=Qb5b8ZE9tIY) e “O Mercado de TI para Iniciantes em Programação” (https://www.youtube.com/watch?v=O76ZfAIEukE) também.

Se vocês ainda não me seguem nas redes sociais, não deixem de seguir (@akitaonrails em todo lugar). E podem mandar perguntas em privado que eu possa usar em próximos episódios de perguntas e respostas.

Links diretos pra cada pergunta

03:14 - pergunta 1

11:27 - pergunta 2

15:23 - pergunta 3

19:23 - pergunta 4

21:30 - pergunta 5

29:00 - pergunta 6

30:30 - pergunta 7

33:13 - pergunta 8

35:14 - pergunta 9

36:21 - pergunta 10

SCRIPT

Olá pessoal, Fabio Akita

Ultimamente eu ando bem distraído por assuntos pessoais, e ao mesmo tempo tem alguns assuntos técnicos pros próximos episódios que vão demandar mais tempo de pesquisa do que eu normalmente faço, por isso acabei procrastinando um pouco mesmo. Provavelmente minha frequência de lançar videos vai ficar irregular agora entre dezembro e janeiro. Um desses assuntos pessoais é que estou pra me mudar pra outro apartamento, e ainda tem uma obra que vai começar agora, tem feriados que vão atrapalhar essa obra. Eu imagino que quando eu terminar de me mudar e estiver com tudo pronto mais do meio pro fim de Janeiro é que vou conseguir me focar 100% pro canal de novo. Inclusive, até o fim de Janeiro significa que o cenário do canal vai mudar também.

Pro episódio de hoje eu resolvi repescar algumas perguntas que vocês me mandaram em mensagem privada. Eu não peguei todas, acho que vasculhei um período de quase 2 meses de mensagens no Instagram. Por alguma razão a maioria das pessoas interage mais comigo no Instagram mais do que em qualquer outra rede social. Aliás, se vocês nunca prestaram atenção, todo vídeo eu começo com meus perfis de rede social, então não deixem de me seguir. Às vezes eu não consigo responder todas as perguntas como eu gostaria. Não se sintam mal quando eu não respondo, muitas vezes é simplesmente porque eu esqueço mesmo, outras vezes é porque eu não estou muito a vontade de responder qualquer coisa rápida.

A maioria das perguntas acaba sendo em torno de assuntos de carreira, principalmente início de carreira. Eu já falei sobre vários desses assuntos como no vídeo sobre Mercado de TI ou Conhecimentos Gerais e vários outros. No episódio de hoje eu vou repetir algumas das coisas que já falei em outros vídeos, mas vou tentar reformular em algo que se pareça mais com respostas. Então vamos lá!

Antes de mais nada, eu não vou dizer quem mandou as perguntas. Eu imagino que se me perguntaram em privado pode ser que não se sintam a vontade de eu expor publicamente. Então se vocês reconhecerem suas perguntas e quiserem expandir em cima delas nos comentários, sintam-se à vontade. Ou se preferem falar em privado, podem mandar direct no Instagram ou Twitter.

Outra coisa que é meio óbvio mas melhor avisar antes. Cada pessoa tem circunstâncias diferentes. Por isso não existe resposta universal que cabe pra todo mundo. Na minha posição, toda resposta podia começar com "depende". Depende de que tipo de formação você já teve, depende de quanto você tem condições de investir em educação, depende se você tem objetivos específicos como morar fora do país, depende se você tem limitações que te impedem de escolher um ou outro caminho. Por isso ajuda muito se você se apresentar um pouco melhor quando faz as perguntas.

E isso já é uma dica: no trabalho muita gente quando fala alguma coisa acha que todo mundo devia entender suas circunstâncias, mas ninguém vai saber se você não disser. Todo mundo vai responder no seu ponto de vista particular e não no de quem perguntou. Por causa disso também, minhas respostas provavelmente vão ficar meio compridas. Porque eu vou tentar dar um contexto em vez de só dar uma receita simples. Então vamos começar com a primeira pergunta que é: "Quais dicas você daria pra quem tá começando na área de dev. Interior, quase não tem empresas pra contratar devs, só com faculdade."

Eu achei essa pergunta interessante porque na real é onde eu acho que a maioria das pessoas se encaixa no Brasil. Muito do material sobre carreira parece mais voltado pra quem é de algum grande centro ou pólo tecnológico como São Paulo, Belo Horizonte, Porto Alegre, Recife. Mas a maioria das pessoas vive fora das capitais. Durante mais de uma década eu visitei cidades como Xanxerê, Maringá, Rio Branco, Criciúma, Macapá, Campos de Goytacazes. A maioria sequer tem aeroportos perto. A indústria de tecnologia na maioria das cidades do interior simplesmente não existe.

Pouco a pouco isso vem mudando, muitas empresas estão procurando cidades fora dos grandes centros. A minha própria empresa, a Codeminer, costuma procurar cidades fora de São Paulo pra montar escritório, por isso estou em lugares como Santa Maria, Guarapuava, Poços de Caldas, mas nenhum de nós vai conseguir cobrir o Brasil inteiro tão cedo. Muitos estudantes tem o sonho de se mudar pra uma cidade maior e alguns até mesmo morar em outro país, mas isso não é realidade pra muita gente que não quer ou mesmo não pode deixar a família pra trás, por exemplo.

Por isso muita coisa que se usa em tech startups, linguagens mais arrojadas como Elixir, Clojure, Scala, Go, Typescript ou até mesmo coisas que consideramos super normal como Lambdas, NoSQL, Machine Learning, nada disso é remotamente perto da realidade. No máximo tem projetinhos Web simples que se integram com sistemas legados que tem 20, 30 anos de idade até. Pra todos os efeitos e propósitos, não é exagero eu dizer que já vi empresas do interior que estão literalmente presos a tecnologias e práticas que eu só via nos anos 90 e começo dos anos 2000. Você vai achar implementações de ERP como os da Totus, ou coisas customizadas dessa época feita em Delphi antigo, ou até mesmo Clipper, que eu parei de usar em 1994.

Então vamos lá. Vamos assumir que por qualquer razão, você esteja preso na região. Não tem planos de se mudar tão cedo. Não há sequer agências pequenas de sites e serviços de Web. Só empresas que Não são tecnologicamente avançadas mas tem sistemas pra manter. Coisas em Java antigo, ou .NET antigo, ou VB ou Delphi ou até Clipper. Que usam bancos de dados antigos como Interbase, Informix, Ingres, Caché. Se você não tem opção, então a escolha já está feita. Eu imagino que você vai precisar comer e pagar suas contas. E se sua vocação é programação, não tem como evitar lidar com tecnologias antigas.

Começar em empresas assim, ao contrário do que pode parecer, não é necessariamente uma coisa ruim, especialmente se você está no começo de carreira. Mas tem duas coisas que você vai precisar fazer. A mais importante delas é estudar inglês até se tornar fluente. Esse vai ser seu passaporte pra conseguir coisas melhores. Eu fico pasmo que até hoje ainda tem gente na área que desincentiva o aprendizado de inglês mas fica empurrando tecnologias inúteis que a maioria das empresas sequer tem intenções de usar por muito tempo ainda. A menos que você goste de programação só como hobby, você precisa aprender inglês, o quanto antes. Pra saber como fazer isso sem gastar muito, veja meu video sobre Como eu aprendi inglês.

Apesar de hoje de fato termos bons materiais em português pras tecnologias mais populares, a maioria delas fica defasada muito rápido, porque todas as linguagens, frameworks, ferramentas e plataformas, estão recebendo novas versões o tempo todo. E quanto mais usado é uma tecnologia, mais rápido ele recebe atualizações. Em poucos meses um livro em português fica defasado. Mesmo em inglês os livros ficam defasados apesar deles receberem novas edições com muito mais frequência do que no Brasil. Por isso a grande maioria dos programadores que estão à frente não estão estudando por livros, mas sim pelas documentações nos sites oficiais de cada tecnologia e foruns de discussão, e adivinhem: 100% delas é em inglês. As tecnologias que não são populares ainda, mas que tem potencial de mercado no futuro próximo, sequer tem livros publicados ainda.

Pior ainda, talvez muitos nem saibam disso mas se você usa Wikipedia em português, você sempre está lendo versões curtas e incompletas. Vejam por exemplo o verbete de computação quântica que foi assunto que eu gravei a respeito algumas semanas atrás. Em inglês tem mais de 70 referências. Em português tem uma lista ridícula de 18 links, metade pra posts de blog. O mesmo vale pra stackoverflow que todo programador usa todo dia. Se você não usa a versão em inglês, você está perdendo provavelmente 80% das opções, se não mais. Nem importa se você ainda não é fluente, pare de usar as versões em português e vá direto na versão mais completa em inglês. Por que você quer ficar em desvantagem em relação a todo mundo?

Enquanto seu inglês for ruim, sim, use todo material em português que conseguir encontrar porque não tem outra opção, mas faça isso sabendo que você está com um material que é incompleto ou já está defasado. Agora, sua vida vai ser bem mais difícil mesmo. Você vai ter que aprender a tecnologia antiga que a empresa da sua região usa e em paralelo vai ter que estudar as tecnologias um pouco mais modernas que são mais populares no mercado dos grandes centros, como Javascript ou Python, frameworks como React, linguagens mais modernas como Go. Se as empresas da sua região pelo menos usarem coisas como Java ou .NET menos mal, porque elas são fundação pra muita coisa nova. Eu diria que todo programador deveria saber um pouco ou de Java ou mesmo C#. Você aprecia melhor as novas linguagens se souber algumas um pouco mais antigas. Não procure a linguagem que é a mais simples pra aprender, ou a que você acha que pagam melhor, se for você realmente entrar na carreira de programação, você vai aprender várias linguagens diferentes ao longo do tempo. Se você estiver anos com a mesma, você está se colocando em desvantagem, de novo.

O outro problema é a falta de faculdade. Nos grandes centros isso também ainda é um requisito, especialmente em começo de carreira onde você ainda não tem muito como demonstrar o que sabe, porque não tem experiência anterior. Não preciso dizer que as leis trabalhistas do Brasil são uma das piores do mundo, sério é o conjunto de leis mais primitivo e imbecil e um das coisas que mais dificulta a entrada de iniciantes no mercado. Por exemplo, você só pode ser estagiário se estiver cursando faculdade, porque estágio é um processo assinado entre empresa, o estagiário e a faculdade. Existe a obrigatoriedade da figura da instituição de ensino. Pra contratar alguém, sem faculdade e sem experiência, é um custo muito alto pra maioria das empresas, porque o vínculo empregatício e a liability que isso trás custa caro. As leis trabalhistas são obstáculos pra todo mundo que não fez faculdade e precisa buscar experiência. Essas leis garantem que você que não fez faculdade comece em desvantagem.

Daí a única outra alternativa que pode acabar sobrando é tentar se tornar autônomo ou freelancer muito cedo na carreira. E isso é péssimo, porque se você aprendeu sozinho e nunca trabalhou em projetos de verdade ou com alguém mais experiente que consiga te mentorar, você não tem noção ainda do que um projeto realmente precisa pra ser entregue de ponta a ponta, e vai ter um caminho ainda mais difícil. Especialmente porque sem saber até onde dá pra ir, você só vai ficar repetindo as poucas coisas que aprendeu, e muitas vezes do jeito errado por muito tempo. A maioria desiste porque a pressão e frustração são grandes demais.

Por isso eu digo que mesmo se na região não tiver empresas com tecnologias modernas, mesmo que não paguem tão bem, ainda assim é melhor que nada. Você precisa ver como uma empresa funciona no mundo real. Mesmo se ela for ruim, você precisa ver o que ser ruim significa. Mesmo se o código for antigo e mal feito, você precisa ver como é um código antigo e mal feito. E ao mesmo tempo aprender como lidar com outras pessoas, mesmo chefes ruins pra saber o que significa ser um chefe ruim. Entenda, mesmo com faculdade, tendo aprendido só teoria, por mais que tenha lido livros e feito cursos online, você ainda não sabe 1% do que precisa.

Pra continuar, vou aproveitar o gancho da segunda pergunta que separei pra hoje que diz: "É legítimo o alarmismo com relação a escassez de profissionais na área de programação? Mão de obra qualificada. Não que precise ser genial, mas alguém que tenha uma base boa pelo menos."

E sim, existe escassez de profissionais qualificados neste mercado. Não é alarmismo. Nos grandes centros a situação é bem diferente do interior e regiões afastadas do país. São realidades completamente diferentes aliás. Em centros como São Paulo, Rio de Janeiro, Recife, Belo Horizonte, Porto Alegre, e um pouco menos em outras capitais como Florianópolis, Curitiba, Fortaleza, por exemplo, o ciclo econômico dos últimos 10 anos trouxe um boom de tech startups e grandes empresas que absorveram parte da cultura das tech startups. Essas regiões atraíram muito investimento tanto nacional quanto internacional. Não é exagero dizer que o Brasil em 10 anos conseguiu crescer um ecossistema de tech startups muito grande. Só que com todo crescimento rápido demais conseguir mão de obra qualificada vai ficando mais e mais difícil. Porque qualificação de verdade não acontece do dia pra noite, exige anos de dedicação, estudo e experiência.

Pra tentar suprir essa demanda, também houve uma explosão em cursos online e geração de material de aprendizado. Mas não existe milagre. Educação exige tempo. É impossível só via um curso online produzir programadores seniors, nem mesmo pleno. Via de regra, qualquer curso online, os melhores, só vão conseguir gerar, no máximo do máximo, programadores júniors. A partir de um determinado ponto, o júnior precisa obrigatoriamente se inserir numa empresa de verdade pra aprender na prática o que significa desenvolver um sistema grande de verdade, como desenvolvedores mais experientes resolvem problemas de verdade. Nenhum curso jamais vai conseguir queimar esses passos. Aliás, se você ver algum curso ou bootcamp que faça promessas imbecis como "estude com a gente e pule de júnior pra pleno em x tempos" eles são charlatães, fuja. Outros cursos exigem que você já seja um pleno pelo menos e tenha uma formação boa pra conseguir usar o material mais avançado.

O lado menos óbvio se você não é da área é que apesar do número de tech startups ou empresas similares em tecnologia tenha crescido rápido, elas tem um problema grave: quanto mais investimentos ela recebe mais a pressão pra crescer mais rápido. Só que a maioria não tem experiência em gerir uma empresa que cresce tão rápido. E dentre as várias coisas que elas são péssimas em fazer é treinar os programadores júniors. Por isso elas tendem a procurar só programadores mais experientes, muitas vezes tentando tirar funcionários de outras empresas e pagando mais caro do que deveriam. Isso causa distorções graves no mercado e ao mesmo tempo é um tiro no próprio pé. Elas não percebem isso porque muitas sequer dão lucro, vivem de rodada de investimento atrás de rodada de investimento, então eles não entendem o conceito de eficiência, são máquinas de queimar dinheiro. A maioria vai quebrar ou ser adquirida por outra empresa maior.

Então de um lado existe alta demanda e escassez de profissionais experientes. E do outro lado existe uma oferta crescente de programadores júniors saindo de cursos online que não vão conseguir chegar nesse nível de qualificação sendo contratados por tech startups que ainda não chegaram no nível de crescimento acelerado via investimentos. E esse é aquele cenário onde o júnior é contratado como se fosse sênior, não vai ser mentorado direito, e tem grandes chances de acabar queimado, frustrado e sem evolução adequada. Por isso outra consequência é que o nível de retenção é baixo, os programadores crescendo nesses ambientes tem uma visão irreal de como as coisas funcionam e do que realmente valem, e a barreira de entrada é maior. Portanto existe essa escassez de moscas brancas, os seniors que conseguem carregar esse tipo de estrutura ineficiente nas costas.

Pra completar esse pensamento, vou engatar a terceira pergunta que é "Você falou sobre aprender tecnologias que estão ficando "top trending", mas seria errado você aprender uma tecnologia já bem estruturada no mercado de trabalho e depois se aventurar por tecnologias novas?"

Parte da estratégia das tech startups é tentar adotar tecnologias mais novas que elas acreditam que podem dar alguma vantagem no crescimento delas. São as que estão usando os Clojure ou Elixir da vida, coisas mais novas da AWS como Lambdas, serviços de machine learning de uma Azure por exemplo. Ao mesmo tempo é uma forma de tentar reter as pessoas porque não tem tantos outros lugares que elas podem usar tecnologias novas demais. Por outro lado você é um profissional que tem mais valor se ao mesmo tempo souber as coisas novas e tiver domínio sobre outras tecnologias mais difundidas e maduras como Java ou Python por exemplo.

Uma empresa de tecnologia raramente usa uma única marca de tecnologias, porque sempre existe a ferramenta certa pro uso certo. Saindo do mundo Web, você tem mais valor como programador mobile se souber Java e Kotlin direito pra programar Android. Ou pra mercados mais de nicho que faz coisas como IoT ou hardware embarcado. Ou mesmo em grandes corporações. Aliás, voltando à conversa de se você for iniciante e tiver acesso a uma região geográfica com mais grandes empresas que não são tech startups, essas podem ter condições de oferecer programas de trainée mais estáveis, que conseguem absorver mais programadores júniors inexperientes e dar um treinamento melhor. Eu expliquei um pouco mais sobre isso tanto no meu vídeo sobre o Mercado de TI quanto no de SAP, não deixem de assistir pra saber mais.

Quando se fala em carreira você não deve ser imediatista. Eu sei como é, a gente é jovem, vê o brilho das tech startup, tecnologias modernas, e acha que esse é o objetivo do emprego dos sonhos. Baixe suas expectativas. Tech startups no geral são péssimos lugares pra iniciantes, porque a prioridade não é te ensinar nada, a prioridade é crescimento acelerado acima de tudo, muitas vezes queimando etapas. É um lugar melhor pro senior aventureiro que tem mais mobilidade pra fazer o que ele já sabe que tem que ser feito. Mas pra maioria dos juniors, você pode acabar sendo queimado rápido demais e se frustrar com a área antes do tempo. De novo, óbvio que tem exceções, mas como estou considerando a maioria da população e o mercado em geral, eu diria pra procurar empresas que tem um histórico maior, já existem faz 10 anos ou mais, e que oferecem um mínimo de suporte pra ganhar experiência. Não existem garantias, só brincar com a sorte mesmo. Talvez você desperdice menos tempo no começo, que é quando você ainda não vai conseguir enxergar tudo. Mesmo que essa empresa seja como no caso da primeira pergunta: no interior, com tecnologias legadas.

Muito se fala em soft-skills. Tem milhares de podcasts, videos, livros e palestras sobre o assunto. O mais importante é aprender a ser honesto. E não, se você é iniciante, você ainda não sabe disso. Quando você trabalha sob pressão é que você vai saber se é de verdade ou se também vai sucumbir a dar respostas fáceis. Ser honesto é saber dizer “não” quando sabe que não vai conseguir entregar. Só que não dá pra dizer “não” sempre, senão pra que você serve? Como aprender a dizer esse “não” na hora certa, ou melhor, como aprender a gerenciar expectativas?

Você pode ler quantos livros quiser. Mas a única forma de aprender é na prática, em situações reais, tomando até decisões erradas e tendo que consertar depois. Por isso eu digo que não importa se é uma empresa de interior, com software mal feito, com chefes ruins. Se você sempre for o cara que diz sim, fica quieto quanto devia falar, ou fala demais quando não precisa, e não consegue explicar objetivamente porque você prefere uma opção que considera melhor do que a outra que a empresa já usa, então não importa se é uma empresa de interior ou uma tech startup, você ainda não tem o que precisa. Então vai lá e pratica.

Agora aproveito pra colocar a quarta pergunta: "Iniciei recentemente um curso de Javascript e agora estou estudando o mesmo por conta. Gostaria de saber, apenas com Javascript consigo algum trabalho, o quanto tenho que saber nessa linguagem pra atuar na área? Qual é o mínimo que preciso saber pra atuar em uma empresa ou prestação de serviços?"

Isso é um pouco o que eu já respondi acima. Neste momento existe uma demanda alta também por bons profissionais de Javascript. Mas não basta só saber um pouco da linguagem, isso é simples. No caso de front-end, você precisa saber frameworks como React, precisa saber Redux, dependendo da região geográfica precisa saber os concorrentes como Angular que infelizmente muitas empresas ainda usam. Precisa saber como organizar projetos corretamente, as melhores práticas pra organizar módulos, como configurar coisas com Webpack direito.

Precisa saber as bibliotecas mais usadas. Se for fazer uma landing page ou gerenciador de conteúdo precisa saber coisas como Gatsby. Se for server-side precisa saber Node, precisa saber Express. Precisa saber usar frameworks de teste como Chai, Mocha, Puppeteer. E isso que acabei de falar aqui é só o básico. É o mínimo pra Javascript. E quando falamos Javascript, claro, estamos falando da versão ES6 que é a mais usada hoje, mas lembrem-se do que falei no começo: muitos livros e documentações antigas estão defasadas na versão ES5. A forma como se organiza código Javascript hoje e 5 anos atrás é bem diferente.

Como falei na pergunta anterior, por causa desse boom de crescimento rápido tanto de tech startups como produtos web em grandes empresas, a demanda por profissionais que conheçam coisas como Javascript cresceu bastante. Especialmente porque muitos modernizaram ou estão modernizando os front-end com componentes React, usando coisas como Progressive Web Apps pra fazer aplicativos web que funcionem como aplicativos desktop, como a app do Twitter por exemplo. Javascript completo hoje é muito mais abrangente do que 5 ou 10 anos atrás.

Eu diria que hoje, indo pra 2020, o ecossistema Javascript tá um pouco mais estável e menos caótico do que 3 a 5 anos atrás que era uma zona completa. Mas agora se você é iniciante e não sabia disso, pode estar meio assustado, como aprender tanta coisa logo no começo? Vamos pra quinta pergunta que é gancho pra isso, e a pessoa falou: "Tenho alguns problemas que me impedem de prosseguir nessa carreira. Sou muito imediatista, quando inicio algum curso, seja de inglês ou de uma linguagem nova, eu já penso em um longo caminho pra percorrer e acabo desanimando de prosseguir, não consigo adquirir uma rotina de estudos. E também tenho medo de ser burro e não saber programar, ou esquecer de tudo na hora que uma empresa me contratar. Meu conhecimento na teoria é bom, mas na hora de praticar ou criar alguma coisa, eu esqueço ou desanimo por pensar que não consigo achar o que as pessoas iriam pensar. Sempre me dá um branco e não consigo começar nada, nem um portfolio que preciso muito. Tem alguma dica? Já passou por isso?"

Eu já estou parecendo uma vitrola quebrada, mas vou repetir isso até vocês enjoarem ou entenderem de uma vez: existe um limite do que cursos e livros podem fazer só na teoria. Chega uma hora que simplesmente não adianta só estudar. Ninguém aprende a programar só lendo. Não tem um ponto exato pra começar, mas eu sempre vou dizer que você precisa dividir seu tempo entre estudar teoria e praticar. O problema é que muito iniciante ainda acha que prática vem no emprego. E isso era bem verdade, até o começo dos anos 2010 pelo menos. Mas especialmente nos últimos 10 anos com um acesso melhor que a maioria da população tem de internet de banda larga e com a popularização de plataformas como GitHub, você tem literalmente milhares de projetos open source à sua disposição.

Eu falei no episódio sobre a Dor de Aprender o que você tem que fazer: não fique só lendo post, vá no GitHub e baixe os projetos. Digamos que você é o iniciante no interior, que só tem a opção de trabalhar numa empresa com sistemas legados. Ou mesmo se você é um júnior numa tech startup caótica que ninguém tem tempo nem estrutura pra te treinar. Como você vai conseguir aprender o que é um bom código se você só está exposto a código mal feito, seja porque é legado ou seja porque é feito às pressas num lugar que prioriza crescer rápido acima de tudo?

A sua única opção é código open source. Não estou dizendo que todo projeto open source tem bom código, na verdade tem muito código bem porcaria também. Mas o importante é que você consegue achar bons códigos. E mais do que isso. Eu falei que você precisa saber um monte de bibliotecas que muitas empresas modernas usam. Muitas dessas bibliotecas sequer tem cursos ou livros. A sua única forma de saber como elas são usadas é procurar projetos que usam essas bibliotecas. Exemplo simplificado em post de blog é muito pouco. Mas ver só num projeto é pouco, você precisa ver como vários projetos usam a mesma biblioteca de maneiras diferentes.

Aqui você vai encontrar a barreira: você vai ter que encarar qual é sua real determinação em querer aprender. Se você diz que só consegue estudar dentro do horário de uma aula de curso. Se você diz que só consegue pegar no teclado pra digitar código durante o horário de serviço. Essa é sua barreira. Não é um defeito, só não é sua vocação. A maioria dos programadores é assim na realidade. São mais raros os que tem a determinação de, nas horas vagas, ler documentação online, baixar as dezenas de projetos na própria máquina e treinar esses códigos.

Lembre-se, você não tem experiência, muitos que não quiseram ou não puderam fazer faculdade, sequer tem a fundação. Se você não tiver essa disposição, eu realmente não tenho muito mais que eu posso recomendar pra você. Literalmente todo dia tem coisa nova aparecendo. Você pode escolher que não quer ter que estudar pro resto da vida, então você tem a opção de empresas que não estão tão preocupadas em seguir as novas tendências. As tais empresas de interior, empresas cujo foco não é tanto tecnologia, setor público por exemplo. Eu chutaria que a maioria dos programadores na realidade são mais codificadores, não estão tão preocupados em buscar as melhores soluções, mais em manter o que já tem e torcer pra não mudar muito pra não ter que estudar nada novo. Já deixo bem claro que esse não é meu público alvo.

Mas se você gostaria de uma carreira que vai evoluir, e você vai ter mais valor no futuro, você tem que colocar na cabeça que vai ter que estudar e praticar com frequência, pro resto da sua vida, não é uma opção. Na pergunta a pessoa fala que tem dificuldade de se colocar numa rotina de estudos. Isso é muito comum. Eu também não consigo ficar estudando coisas na teoria sem nunca usar na prática. Eu prefiro iniciar pela prática e buscar a teoria pra complementar o que eu não sei e vou intercalando. Raramente eu leio um livro técnico do começo ao fim. Na verdade eu não lembro se um dia cheguei a fazer isso. Eu realmente nunca li um livro técnico de cabo a rabo. Seria uma enorme perda de tempo. Livro técnico é que nem dicionário: é uma referência que você busca em momentos específicos, pra ler um trecho específico, e daí voltar pra prática.

E aí tem o tal medo de numa entrevista não lembrar do que estudou. Ou mesmo quando vai tentar começar um projeto não se lembra também. A razão disso é a falta de prática. Só fazer curso e ler livro é uma chatice. Eu não lembro a última vez que fiz algum curso, mesmo lá no começo. Na real, faz anos que eu não leio livros técnicos nem faço cursos online. Eu só procuro referências quando eu tenho dúvidas específicas. Como eu disse, pra muitas das coisas novas, sequer existem cursos. Eu prefiro sempre ir atrás das documentações online e em alguns casos abrir o código fonte dos projetos que quero usar pra ter uma noção de como funcionam.

Muita gente recomenda você começar um projeto pessoal do zero. É a pior recomendação que se pode dar, justamente porque se você não tem experiência, como vai imaginar como se começa um projeto do zero? Na verdade isso é uma experiência super frustrante pra quem tem zero experiência. É muito melhor começar baixando projetos dos outros. Copie código dos outros, sem nenhum objetivo de no final ter um produto seu que tenha alguma utilidade.

Eu disse isso em outro vídeo e vou repetir de novo: copie muito código. Literalmente abra o navegador no projeto do Github de um lado, abra seu editor de textos do outro, e copie. Treine sua memória muscular a se acostumar com código. Não só baixe o projeto e rode. Crie um novo diretório e redigite tudo do zero de novo. Você vai descobrir que mesmo copiando, seu código vai falhar. Você vai descobrir que às vezes é melhor codar algumas coisas do começo ao fim, às vezes é mais fácil copiar uma parte, tentar rodar, depois continuar. Você vai descobrir que algumas partes você já sabe como codar de uma forma melhor e vai ver na prática se o que você acha que é melhor realmente funciona. E além disso vai ver bibliotecas sendo usadas que você nem sabia que existiam e pra que servem, na prática. Quando você está começando do zero, isso é extremamente importante.

Nem pense tanto em contribuir nos projetos open source logo de imediato. Essa não é a prioridade. Com o tempo, você vai saber quando tá apto a contribuir. E contribuir é vantajoso tanto como exercício e prática quanto pra montar portfolio e currículo. Porque é um código seu que qualquer um consegue avaliar e ver até onde você consegue contribuir. No Brasil parece que nem toda empresa olha isso, mas no exterior é um critério muito importante.

A sexta pergunta eu ouço bastante, a pergunta é curta e a resposta não vai ser satisfatória, mas a partir daqui minhas respostas devem ficar um pouco mais curtas pelo menos. Vamos lá, a pergunta é assim: “Qual seria a linguagem mais fácil pra começar a programar? Eu tentei Python mas falhei.”

Cara, Python é uma das linguagens mais simples pra começar. A sintaxe dela é uma das mais simples, tem poucas exceções às regras, ninguém fica inventando muita moda nos patterns. Não é a toa que muitas faculdades escolhem Python hoje, porque realmente é simples de começar. Mas isso dito, não existe isso de “linguagem mais fácil pra começar”. Qualquer linguagem é fácil pra começar. É que nem eu perguntar: qual idioma é mais fácil pra começar. Tanto faz. Qualquer criança no mundo, nascida em qualquer país do mundo, aprende o idioma local. O que faz a diferença não é a dificuldade do idioma comparado com a que você já sabe, é quanto você está disposto a mergulhar nela. Como eu disse antes, se sua disposição for fraca, qualquer opção vai ser difícil.

Você tá no começo, literalmente tanto faz. De preferência procure um conjunto de tecnologias que é usado nas empresas da sua região. Depois você aprende outras. Daqui 5 anos as linguagens que hoje são consideradas as mais tops, já não vão mais ser. Nem se preocupa e se não assistiu ainda veja meus episódios sobre “Sua Linguagem Não é Especial” e “A Dimensão do Tempo” onde eu tento explicar mais essa visão de longo prazo.

A sétima pergunta é outra que ouço bastante ainda: “Pra irmos pro framework, precisamos dominar a linguagem pura ou basta saber do básico ao intermediário? Por que as vagas de emprego hoje em dia tudo pede eles, perdi duas vagas em entrevista porque eu disse que sabia a linguagem pura.”

Você precisa saber obviamente, tanto a linguagem quanto o framework. Por exemplo, Javascript e React. Python e Django. PHP e Laravel. Ruby e Rails. Java e Spring. Você nunca vai conseguir saber 100% de qualquer linguagem. Isso leva anos, provavelmente nem os criadores dessas linguagens conseguem saber tudo que elas fazem hoje, porque é como um idioma. Nem Shakespeare saberia tudo de inglês. Só com a linguagem, sem ter conhecimento do ecossistema ao redor, você tem bem pouco valor pro mercado. O mercado adota frameworks, bibliotecas, ferramentas e processos que você vai precisar saber. Portanto não tem nenhum problema em começar pelo framework e aprender o mínimo da linguagem pra conseguir copiar e colar trechos que viu no stackoverflow. Muita gente faz isso.

Mas deixa eu colocar isso bem claro: é muito fácil pra qualquer sênior olhar pro código feito dessa forma e saber que é trabalho de um iniciante. Vira e mexe eu avalio código e de bater o olho eu já sei se é um iniciante ou alguém mais experiente. Sei quais trechos tem cheiro que foram copy e paste. De novo, pensa um idioma. Se você faz uma redação, algumas partes você mesmo escreve, outras partes você abre um livro de Shakespeare e copia trechos, abre um livro de Mark Twain e copia outro trecho. Você não acha que o estilo da codificação fica diferente? Alias, fica bem diferente? Por isso eu enfatizo tanto pra você treinar copiando código dos outros o máximo que puder. Com o tempo você vai começar a notar esses padrões. Comprimento de métodos, complexidade do código, estética da organização, e com o tempo vai começar a se preocupar não só com a função, mas com a forma do seu código. Vai identificar o que é sujeira desnecessária, vai aprender a reduzir seu código ao mínimo necessário que deixa ao mesmo tempo legível e também eficiente.

Não se preocupe, seu código no começo vai ser sempre ruim. Não importa se você começou aprendendo primeiro a linguagem e depois pulou pro framework, ou se começou pelo framework e foi aprendendo a linguagem no caminho. Qualquer das duas opções você tem que continuar estudando os dois. E se você parar, qualquer um mais experiente vai saber qual é seu nível só de olhar pro seu código. Aliás, isso é outra dica: se alguém que se diz senior, olhar pro seu código de junior, e não tiver nada a dizer, provavelmente é porque ele também é junior e só tem o título de senior.

A oitava pergunta é uma continuação. Depois de ter passado do estágio de aprender o básico de uma linguagem e dos frameworks, a dúvida é: “Eu tenho muita dificuldade com CSS, não consigo encaixar as coisas onde eu quero na página, e também tenho dificuldade com responsividade. A maior parte do meu trabalho é construindo APIs REST, e alguns back-offices com o próprio Rails. Meu foco é no backend, mas acabo mexendo um pouco com front e deploy no Heroku. Como profissional, eu devo focar meus estudos em superar essa dificuldade com CSS ou focar na minha carreira de backend e estudar TDD, design patterns, fundamentos, etc? Lembrando que meu foco é ser desenvolvedor fora do Brasil.”

A velha discussão sobre desenvolvedor full-stack. Isso existe e não existe. Em pequena escala é possível ser full-stack. Mas em grandes tech startups, que já tem alcance e escala, o trabalho de engenharia é muito mais especializado. Então a discussão se divide entre empresas onde é possível ser full-stack e onde não é. E a barreira é a quantidade de conhecimento avançado e experiência que o profissional precisa ter. Pra que direção você vai depende que tipo de empresa que você tem como objetivo. Tanto no Brasil quanto no Exterior. Empresas menores tendem a querer mais um “full-stack” que no fundo é alguém que consegue desenvolver e deployar uma aplicação web de ponta a ponta sozinho, mas sem se preocupar com escala e segurança de tech startup nível Uber. Claro que o que esse full-stack vai saber em termos de conhecimento e experiência é muito menos que um back-end especializado senior de um Uber.

Agora, o que foi listado como TDD, design patterns, fundamentos, ainda é só o básico. Tanto pra empresas médias, quanto pras grandes isso é be-a-bá, coisas que juniors já tem que estar estudando, plenos já tem que saber. Back-end senior tem ir além disso. Mas o que vai determinar até onde você vai é o quanto você tem disposição pra buscar coisas novas versus se conformar onde está e evitar mudanças.

A nona e penúltima pergunta é outra que não tem uma resposta satisfatória. A pergunta é: “Onde você vê mais vagas de emprego. No front-end ou back-end?”

Dependendo de que site de empregos ou post analíticos você procurar, vai achar respostas diferentes. Dependendo se está olhando só na sua região, nos grandes centros, em outros países. Depende. E de novo, como eu disse antes, existe escassez de profissionais de qualidade e existe excesso de profissionais inexperientes ou ruins mesmo. Se você for um programador ruim, não tem vaga decente em quase nenhum lugar. Se você se esforçou pra ser qualificado, existe vaga sobrando. E tanto faz se é em front, se é em back, em devops, em infosec. Pense sempre assim: se você sabe pouco, tem muito mais concorrência, portanto você vale menos. Se você se esforçou pra saber mais, tem muito menos gente que se esforçou, então a concorrência é menor. É lei da oferta e da procura. Use essa lei a seu favor e acumule mais conhecimento e experiência do que a maioria está fazendo. Se você está seguindo a maioria, você provavelmente está indo na direção errada.

E finalmente, a décima e última pergunta de hoje diz: “Meu sonho é ser um engenheiro de software, programo já tem 5 anos e amo fazer isso, mas ao mesmo tempo amo empreender. Estou criando minha empresa, vai ser um produto saas. Será que um dia vou ter que tomar a decisão de ou empreender ou programar? Os dois consigo fazer? Ouvi dizer que um dia se eu quiser que a empresa tenha sucesso vou ter que deixar de codar.”

Empreender, principalmente no mundo de tech startups, tem um fator que é pouco dito: o fator QI, que é Quem Indica. Nada é garantido no mundo de empreendimento, mas se você já é bem conectado, seja por histórico familiar e coisas assim, você sempre vai ter chances melhores de conseguir parcerias melhores, investidores e tudo mais. Se como eu, você não teve nada disso, sua única chance é conseguir isso do zero e confiança é algo que se adquire rápido. Certamente não tem vantagem nenhuma ir em evento de networking trocar cartão.

Criar um produto é razoavelmente fácil. Se você não for ruim demais, eventualmente consegue codificar um produto. Se ele vai ser bom ou não é outros quinhentos. Porém o maior custo de um produto do zero é o marketing. Estou falando numa ordem de grandeza maior do que você gastar pra fazer o produto. Um produto ruinzinho que tem um marketing caro tem mais chances de atrair usuários do que um produto extremamente bem feito que ninguém nunca ouviu falar. Eu falei que estamos no meio de um boom de tech startups, significa que a concorrência é enorme. Ser só um pouquinho melhor do que a concorrência, ainda mais se for só subjetivo, não basta. Pra conseguir crescimento orgânico só na competência técnica, sem apoio externo, é basicamente sorte.

Se seu objetivo é ser um engenheiro de software bom, isso vai de encontro a empreender, que também é uma atividade de tempo integral. De novo, se você já não tem excelentes sócios administradores, que conseguem perfeitamente levar a parte tributária, fiscal, vendas, marketing, suporte, recursos humanos, você vai ter que fazer tudo isso sozinho. É muito raro, sozinho, conseguir fazer tudo e ainda conseguir ter alguma chance de ter sucesso. Já vi gente conseguir, mas é a exceção da regra. Por isso não é uma recomendação.

E isso é outra coisa que eu falo pra todo iniciante na carreira. Empreender muito cedo não é nunca uma recomendação. Administrar uma empresa de maneira inteligente e eficiente, especialmente no começo, é tão difícil quanto fazer um bom código que funciona, sem bugs e que escala. Não superestime suas capacidades de programação e nem subestime a dificuldade de ser empresário com as leis toscas do Brasil. Aqui é uma preferência pessoal, mas eu prefiro ir um caminho de cada vez. Primeiro ganhar calo como programador de verdade em uma variedade de projetos diferentes até se tornar realmente bom e com o tempo ver como as empresas realmente funcionam e durante esses projetos ir conhecendo pessoas fora da sua área como advogados, contadores, administradores, que você passe a confiar e que também confiam em você depois de ver resultados, e naturalmente você pode se tornar um empresário.

Tudo isso muda se você já tem dinheiro, vem de família abastada, e pode contar com esse networking e recursos, claro. Mas não é a realidade da maioria das pessoas. O caminho pra se tornar um bom profissional, um bom engenheiro de software, não é simples. E não deveria ser mesmo, por isso ele é bem remunerado. Justamente porque a maioria das pessoas desiste no caminho, é desonesto, não consegue admitir as próprias fraquezas e por isso nunca sabe onde precisa melhorar, e gasta mais tempo botando defeito no mundo e nas outras pessoas do que em si mesmo. Eu sempre falo que se alguém reclama tempo demais, é justamente o tempo que não está usando pra praticar, estudar e entregar valor de verdade. Acho que falei no video sobre SAP que no mundo de consultoria a gente tem um nome pra isso: consultor crocodilo, que é aquele que tem boca grande e braço curto.

E por hoje é isso aí, não dá tempo pra responder todas as outras perguntas que recebi, mas essas representam a maioria das coisas que me perguntam. Eu tentei cobrir os cenários que eu acho que a maioria das pessoas se encaixam, seu caso particular talvez não esteja aqui. Também não tem problema me mandar perguntas em privado pelas redes sociais, mas eu realmente não consigo responder todo mundo de bate pronto, mas pode ser muito útil pra um próximo vídeo. Vocês gostam desse tipo de video de vez em quando? Não deixem de dar feedback nos comentários abaixo, se curtiram o video deixem um joinha, assinem o canal e não deixem de clicar no sininho pra não perder os próximos episódios. Aliás, o YouTube vira e mexe tira a sua assinatura do canal se você não volta com alguma frequência, então chequem se ainda estão assinando! Por hoje é isso aí, a gente se vê, até mais!

Olá pessoal, Fabio Akita

Antes de mais nada, meus agradecimentos ao Codigo Fonte TV pelo convite pra compartilhar nossas mensagens pra comunidade brasileira de desenvolvimento de software.

Estamos nos anos 20 do século XXI eu fico pensando uma coisa. Faz só 6 décadas que começou a revolução do circuito integrado. Faz só 5 décadas que começou a revolução dos computadores desktop. A revolução da Web ainda não completou 3 décadas. E faz só 1 década que tivemos a revolução dos smartphones. Durante minha carreira de 30 anos de programação eu tive o privilégio de testemunhar boa parte dessa história em primeira mão e mesmo assim eu não consigo imaginar o que vai acontecer na próxima década. Não existiu melhor momento pra se tornar um programador do que agora e fazer parte dessa história que vai continuar transformando a humanidade. E não tem nada mais empolgante pra mim do que saber como essas coisas funcionam e ter parte da construção do futuro. Juntem-se a nós!

Muita gente me procura via mensagens diretas em redes sociais, em particular pelo Instagram. Pro episódio de hoje eu selecionei 10 perguntas que representam a maior parte dos temas que costumam me perguntar e apesar de já ter parcialmente respondido algumas delas via os temas de outros vídeos passados, vou tentar compilar respostas um pouco melhores hoje. Espero que ajude.

O tema vai ser “Perguntas mais frequentes de iniciantes no mercado de tecnologia”. Diferente do vídeo que eu fiz chamado “Começando na Carreira de TI” (https://www.youtube.com/watch?v=H84WD_xyj10) onde eu abordei assuntos que começam mais na escolha da faculdade primeiro, esta é mais focado no primeiro emprego e na forma de começar a evoluir. Depois de assistir este video convido vocês a tentarem o vídeo “Dimensão do Tempo” (https://www.youtube.com/watch?v=Qb5b8ZE9tIY) e “O Mercado de TI para Iniciantes em Programação” (https://www.youtube.com/watch?v=O76ZfAIEukE) também.

Se vocês ainda não me seguem nas redes sociais, não deixem de seguir. E podem mandar perguntas em privado que eu possa usar em próximos episódios de perguntas e respostas.

tags: javascript carreira akitando empreendedorismo mercado

Comments

comentários deste blog disponibilizados por Disqus