This is the multi-page printable view of this section.
Click here to print.
Return to the regular view of this page.
Base de Conhecimento
Quantas vezes você já tentou organizar seu conhecimento para usar depois? Eu já perdi a conta. Mas vamos lá, continuarei tentando.
Meus textos costumam apresentar a solução para depois falar porque você precisa dela. Eu sou um grande admirador do “comece pelo porquê”, mas também entendo que nem sempre temos tempo pra lenga lenga, teorias e reflexões. Primeiro precisamos ter interesse!
Minhas referências estão na Curadoria da TI e o meu conhecimento está sendo agregado nos tópicos abaixo. Faça bom proveito!
1 - Carreira
Dicas para começar e crescer
Começar em qualquer área de tecnologia pode ser um desafio assustador. Um universo inteiro em cada pesquisa, por mais especifica que ela seja.
Não caia na armadilha de acreditar que o que te falta é informação. Isso todos temos em abundância! Deixa eu te mostrar o que fazer.
Você finalmente tomou coragem e decidiu entrar na área de TI. Talvez você até já esperava ser bombardeado de informações, afinal quase todo mundo tem um parente ou um amigo que trabalha numa área que requer pelo menos um pouco de conhecimento em tecnologia. Mas… não importa o quanto te avisaram, ninguém te preparou pra TANTA coisa ao mesmo tempo.
Mesmo assim você quer tentar, porque a área parece interessante e ficou claro que ela pode mudar a sua vida e o mundo.
Você descobre que existem linguagens de programação demais, e muitas delas com o mesmo propósito. Depois percebe que existem diversas maneiras de fazer a mesma coisa (e que frameworks de Javascript são um meme pronto).
Aprende também que pra usar uma linguagem de programação, não é só “instalar”. Da pra levar horas ou dias para descobrir como lidar com dependências, bibliotecas, criar um ambiente isolado e decidir onde escrever seu código.
Você pode ter a sorte de arranjar um trabalho cedo e com ele um mentor que vai te manter no caminho certo, em vez de vagar para todas as direções ao mesmo tempo. Ou não. É por isso que estou aqui.
A solução? Passe algum tempo tentando descobrir para onde você quer ir. Precisamos equilibrar o entusiasmo de aprender coisas novas com o benefício real do que decidimos aprender. Eu te garanto, você vai perder horas, dias, meses com coisas interessantes, mas sem valor imediato ou diretamente perceptível.
Não tem problema, desde que você continue se movendo na direção certa. Vamos juntos!
1.1 - O Basico da TI
Pronto para entender o basico?
Vamos entender o que uma aplicação precisa para funcionar e quais são as responsabilidades de profissões comuns da TI nesse contexto.
Arquitetura de uma aplicação
No mundo da TI utilizamos um termo que geralmente é associado com a construção da sua casa: arquitetura
.
Apesar de representar coisas diferentes, o propósito é o mesmo. Precisamos conseguir demonstrar como os elementos que compõem um projeto vão se tornar uma casa, ou no caso da TI, uma aplicação/software:
A arquitetura acima é uma versão bem simplificada de uma das possíveis formas de se arquitetar e implementar um website. Vamos explicar cada um desses elementos da esquerda para a direita:
Usuário e Navegador
Os usuários somos eu e você, aqui, lendo esse artigo. Nesse caso, isso significa digitar no navegador do computador ou do celular (Google Chrome ou Firefox, por exemplo) o website que deseja acessar. Exemplo nada imparcial de website: https://masgustavos.com
O papel do navegador, além de mostrar o website e de te permitir interagir com ele, é de te auxiliar no processo de comunicação entre o seu computador/celular e o Servidor de Frontend
. Isso porque o navegador sabe onde procurar o “endereço” desse servidor, que é um IP
.
Servidor Frontend
Esse servidor é responsável por responder para o Navegador
com as informações necessárias para carregar e mostrar o website. Exemplos de informação são:
- Código HTML, Javascript, CSS
- Imagens
- Arquivos JSON
Com todos esses arquivos, o navegador é capaz de montar as páginas web que você vê e interage.
Servidor Backend
Muitas vezes, o Servidor de Frontend
não vai possuir todas as informações que são necessárias para o carregamento e funcionalidade do seu website. Isso porque geralmente queremos ver informações que são dinâmicas ou que dependem da nossa interação. Vamos ver um exemplo:
Quando estamos navegando num website de e-commerce (como Amazon, MagazineLuiza, etc.), uma funcionalidade muito comum e esperada é a de filtragem de produtos.
Para um site como o da Amazon, que possui milhões de produtos, seria inviável armazenar todas essas informações no Servidor de Frontend
. Por isso precisamos do Servidor de Backend
: ele vai interagir com o banco de dados que possui as informações desses milhões de produtos e filtra-los para que o seu navegador só tenha que lidar com os produtos que você de fato quer ver.
Isso garante que o site será rápido e leve, contendo apenas informação imediatamente útil para quem está navegando.
Banco de Dados
Esse é o lugar apropriado para armazenar um grande volume de informações. Existem várias maneiras de estruturar os dados, com o mais comum sendo em tabelas, como mostrado na imagem acima.
Seguindo nosso exemplo de uma loja online, um banco de dados teria tabelas como:
- Usuários: Uma tabela para armazenar os dados da sua conta, como seu email, nome, endereço
- Produtos: Para armazenar nome, marca, categoria, preço, cor, etc.
- Pedidos: Quando uma compra é feita, é essencial que a loja armazene informações como data da compra, valor pago, produtos comprados, usuário que realizou a compra, desconto no carrinho, numero do pedido
Com essas três tabelas, é possível realizar uma consulta no banco de dados utilizando o Servidor de Backend
para determinar quais foram os Pedidos
realizados e os Produtos
comprados por um Usuário
nos últimos 3 meses, por exemplo.
Profissões comuns da TI
A arquitetura acima é apenas um exemplo MUITO simplificado dos componentes necessários para fazer um website funcionar, mas ele já nos da dicas sobre quais são as áreas de atuação de profissões que vemos recorrentemente.
Desenvolvedor Frontend
“Frontend” pode ser entendido como aquilo que é visto pelo usuário final. É o site, o aplicativo, o software, o dashboard, a planilha. Logo, o desenvolvedor frontend é aquele que consegue programar e criar essas aplicações.
Esse profissional precisa ter um conhecimento sólido da famosa tríade de ferramentas para aplicações web:
- HTML: arquivos .html são interpretados e renderizados pelo navegador, estruturados de forma a organizar o conteúdo do site em blocos, também chamados de tags ou elementos;
- CSS: arquivos .css são responsáveis pelo estilo e apresentação dos elementos estruturados pelo HTML, como background, cores, layouts, espaçamentos, e animações;
- Javascript: Arquivos .js (no contexto do navegador) nos permitem reagir às interações que fazemos com os elementos do nosso site, como clicar em um botão ou filtrar uma tabela.
Como muitas das tarefas necessárias para construir um website são repetitivas e reutilizáveis em diversos casos, existem MUITOS frameworks para criação de aplicações web.
💡 Framework é um conjunto de técnicas, ferramentas ou conceitos pré-definidos usados para resolver um problema de um projeto ou domínio específico.
Considerando que existem quase 2 bilhões de sites no mundo e que eles vêm sendo construídos desde os anos 90, não é uma grande surpresa existirem tantos frameworks. Alguns dos mais comuns atualmente são:
E se quiser uma lista extensa e atual, pode dar uma olhada no https://ossinsight.io/collections/javascript-framework/.
Podemos dedicar um livro para o processo de escolha do framework ideal, ou para definir qual é o melhor. O resumo é que depende da complexidade do projeto, da cultura da empresa, das tecnologias que já estão em uso, do conhecimento dos profissionais com mais senioridade, e muitos outros fatores.
Por fim, esse profissional precisa dominar e entender como a sua aplicação vai se comunicar com outros serviços. Hoje a forma mais comum de ser fazer isso é por meio de APIs (Application Programming Interfaces).
É muito comum o Servidor Backend
ser uma API, já que o propósito é o mesmo: fazer a conexão entre quem contém a informação e quem precisa dela:
As palavras GET
e POST
representam funcionalidades de API que server para obter (get em inglês) ou enviar (post em inglês) informações. Logo, quando queremos obter produtos da categoria televisão, podemos realizar a requisição GET /produtos/categoria/televisao
. A mesma lógica utilizada em APIs para obter dados do banco de dados, pode ser utilizada na aplicação frontend para uma informação específica. Comece a observar quando estiver navegando em websites o que vêm logo após o domínio.
Meu domínio é masgustavos.com
, o que vem depois dele é chamado de caminho, ou path em inglês:
https://www.masgustavos.com/docs/carreira/
Na URL acima observamos:
- Protocolo:
https://
- Domínio:
www.masgustavos.com
- Caminho:
docs/carreira
O desenvolvedor de frontend precisa entender como interagir com APIs para armazenar e obter informações de forma eficiente e coerente com o comportamento e necessidade do usuário, o que demanda o entendimento de protocolos de comunicação como HTTP, Websocket e GraphQL.
Desenvolvedor Backend
“Backend” pode ser definido como aquilo que o usuário final não vê ou interage diretamente. Como mostrado acima, pode ser a API que interage com um banco de dados, ou um software que é responsável por processar suas compras e criar recomendações de produtos para a próxima vez que você visitar o website.
O profissional de backend tende a ser menos generalista que o de frontend. Recomenda-se que você seja muito bom em uma linguagem de programação e bom o suficiente nas demais para que você possa se comunicar com diferentes áreas de negócio e times trabalhando em outros serviços dentro da sua empresa.
Linguagens comumente utilizada no backend ou para criação de software são:
E se quiser uma lista extensa e atual, pode dar uma olhada no https://ossinsight.io/collections/programming-language.
Como desenvolvedor backend você pode ir além de APIs e implementar bancos de dados também. Esses bancos por sua vez podem ser utilizados por “serviços” ou “microserviços”.
A palavra “serviço” é comumente utilizada para fazer referência a uma aplicação de backend.
O termo “desenvolvedor backend” geralmente se refere a quem desenvolve software a ser consumido por outras aplicações. Quando removemos o termo “backend” e deixamos apenas o “desenvolvedor”, suas responsabilidades podem ir muito além de servir dados a aplicações de usuários finais.
É aqui que você tem a liberdade de se envolver com tecnologias de inteligência artificial, softwares de trading de alta frequência, ou qualquer outra coisa que sua imaginação permitir!
Profissionais de Dados
Existem inúmeras profissiões relacionadas ao armazenamento, tratamento, estudo, obtenção, inferência e qualquer outra coisa que você imaginar possível quando se trata de dados.
Dentre os vários cargos e nomenclaturas, uma coisa é certa: saber de tudo um pouco é muito benéfico.
Assim como a área de programação, esses profissionais se beneficiam muito quando entendem do contexto e motivações dos seus pares, como:
- Engenheiro de Dados (Data Engineer)
- Analista de Dados (Data Analytics)
- Cientista de Dados (Data Scientist)
- Engenheiro de Análise (Analytics Engineer)
Desde já, fique ciente que você pode zoar todos esses profissionais, porque no fim o CEO/Diretoria vai querer uma planilha no excel.
Analista de Dados
Utiliza ferramentas de visualização e linguagens de consulta (Como o SQL por exemplo) para agregar informações e tirar conclusões a partir dos dados e eventos armazenados de uma aplicação. Seu trabalho ajuda a informar tanto equipes técnicas quanto de negócio sobre a performance de vendas, operações e produtos para ajudar na tomada de decisões.
Você verá um analista de dados fazendo dashboards e relatórios com ferramentas como:
💡 Tanto o Superset quanto o Grafana são ferramentas Open Source, oque significa que o código utilizado para cria-las é aberto ao público e você consegue utiliza-las gratuitamente!
A boa e velha planilha em Excel ou no Google Sheets também estará por tempo indeterminado na vida de quem precisa fazer analise de dados. Seja por demanda do trabalho em si ou seja por demanda de quem pede e consome a análise.
Quando se trata de programação o analista de dados precisa ser MUITO BOM em SQL.
SQL (Structured Query Language) é uma linguagem de consulta, ou seja, é com ela que os profissionais de dados interagem com bancos de dados relacionais. Bancos de dados relacionais são aqueles que estruturam os dados em tabelas e criam relações entre elas. Por exemplo: Um banco pode possuir uma tabela de usuarios
e uma tabela de pedidos
, e uma relação é estabelecida ao armazenar na tabela de pedidos
qual usuario
o realizou:
Perceba que todo usuário tem um usuario_id
, sua identificação. Essa identificação é única e é adicionada na tabela de pedidos para saber qual usuário fez o pedido, sem precisar armazenar suas informações de forma duplicada.
Se quisermos retornar a informação de pedidos junto com as informações de usuário realizamos uma operação de SELECT
com JOIN
no SQL, utilizando o usuario_id
:
-- Consulta para retornar todos os pedidos juntamente com o
-- nome e o email do usuário que fez cada pedido
SELECT
pedidos.pedidos_id, -- ID do pedido
usuarios.name, -- Nome do usuário que fez o pedido
usuarios.email, -- Email do usuário que fez o pedido
pedidos.pedido_data, -- Data do pedido
pedidos.valor -- Valor do pedido
FROM
pedidos -- Tabela `pedidos`
JOIN
usuarios -- Tabela `usuarios`
ON
-- Condição de junção: corresponde o `usuario_id` em ambas as tabelas
pedidos.usuario_id = usuarios.usuario_id;
- SELECT: Descreve quais colunas você quer obter a partir da junção das tabelas
- FROM: Escolhe qual tabela é para ser utilizada como base para a junção
- JOIN: Determina qual tabela deve ser comparada para a junção
- ON: Define qual é a condição para junção das tabelas
A maioria dos comandos SQL podem ser utilizados em qualquer banco de dados relacional. Alguns exemplos são:
O analista de dados também utiliza linguagens como o Python
e o R
para fazer análises de forma programática e/ou repetitiva. Por exemplo:
Se a área de vendas de uma empresa gera um arquivo .xlsx
toda semana e a estrutura dele não muda, podemos criar um script Python
para gerar gráficos e extrair informações de forma automatizada, evitando o trabalho manual de analisar as informações dentro de uma ferramenta como o Excel
ou o Google Sheets
.
Engenheiro de Dados (Em construção)
Desenvolve os processos e as aplicações que serão responsáveis por orquestrar, armazenar e disponibilizar os dados para os analistas e cientistas de dados. Pode também atuar na criação da infraestrutura, como criação e design de bancos de dados e orquestradores. Seu trabalho garante a disponibilidade e a organização dos dados, além de definir os fluxos de informação.
Cientista de Dados (Em construção)
Profissionais de Infraestrutura (Em construção)
DevOps (Em construção)
SRE (Em construção)
Cloud Architect (Em construção)
1.2 - Como começar na TI
Pronto para dar o primeiro passo?
A melhor dica que eu posso te dar nesse momento, antes que você se confunda pesquisando o que deve aprender, é que se preocupe com:
- Por que?
- Como?
Todo mundo tem uma opinião sobre essas coisas. Algumas boas, muitas ruins. Mas perguntas como:
Qual linguagem de programação? Qual software? Qual sistema operacional?
Só vão te ajudar depois que seu propósito e seus métodos forem definidos. Ainda nessa página falaremos sobre como resolver essas duas coisas na prática, te mostrando como pesquisar as coisas certas e porque começar. Sinta-se a vontade para pular pra lá se estiver pronto!
Eu te prometo que dedicando o tempo que essas duas perguntas iniciais merecem, você vai evitar a coisa mais comum do estudante de tecnologia:
O ciclo de quem aprende sem os passos 1 e 2
-
Você vê um vídeo no Youtube que te inspira, ou ouve falar de um amigo que entrou pra TI e ta ganhando muito dinheiro. Começa a se imaginar fazendo apps, desenvolvendo sites, ou quem sabe trabalhando para fora e ganhando em dólar
-
Decide aprender a tecnologia do cara do vídeo que te inspirou, ou a linguagem de programação que seu amigo trabalha
-
Depois de passar algumas horas vendo cursos, você não sabe exatamente pra que serve o que você ta aprendendo, nem exatamente com o que vai usar
-
A motivação acaba depois de alguns dias e você abandona os estudos
-
Algumas semanas se passam e você esquece por que começou a estudar TI, e vai fazer outra coisa da vida que faça mais sentido e que dê dinheiro imediatamente
-
Alguns meses se passaram, e o item 1.
acontece de novo. E lá vamos nós…
O problema é que toda vez que você volta para o passo 1.
a frustração aumenta. Por que os outros conseguem e você não?
Imagine que você foi jogado no meio do deserto (Pesquisou no YouTube “como aprender TI”). Se você der um passo em qualquer direção (clicar em um vídeo), você vai ter a sensação de progresso, que está andando pra frente.
No dia seguinte, se você clicar em qualquer outro video, também vai ter a sensação de estar andando pra frente.
Mas depois de um mês sempre dando um passo “a frente”, se você não chegar a lugar nenhum, a pergunta óbvia é: Estou indo consistentemente numa direção produtiva?
Saber o porque e como estudar é como acordar no deserto e saber que o sol é o que te guia, e que apontar o braço direito pra ele te mostra o Norte na sua frente. E assim todo dia você vai saber que está indo para o Norte. Uma hora você chega.
Quebrando o ciclo infinito
Apesar de o “Por que” ser mais importante, eu vou começar com o “Como”. Simon Sinek vai se revirar toda vez que alguém ler isso aqui, mas é por um bom motivo. Em sua newsletter (veja aqui o que é isso), Kent Back menciona o autor Lawrence Block e uma técnica de escrita:
Ele sugere esboçar uma história de maneira “natural”, com o primeiro capítulo apresentando o herói e o segundo iniciando a ação, trocando depois os dois capítulos. Agora o primeiro capítulo começa com uma arma apontada para a cabeça do herói. No final, ele está balançando em um penhasco prestes a pular em um rio infestado de crocodilos. Justamente quando a tensão atinge o auge, somos apresentados ao personagem, mas temos motivos para querer conhecê-lo.
Então vamos lá, me deixe te apresentar a ação antes dos motivos!
Como começar
Eis o seu desafio: Se expor constantemente a conteúdo que agrega valor na sua jornada.
É muito difícil dar início a esse processo, mas uma vez que você aprende a diferenciar conteúdo bom de conteúdo ruim, vira uma bola de neve, e seu problema vai passar a ser ter coisa demais para assistir. Mas esse é outro assunto.
Imersão é tudo!
Por agora, vamos focar em como construir a sua bolha produtiva de TI!
Pesquise as coisas certas
Escolher um curso vai ser a coisa mais simples do mundo se você souber exatamente pelo que está procurando. Muito provavelmente você já passou por isso aqui:
- Quero assistir um filme
- Abre o Netflix/Prime/Disney+/…
- Fica rolando catálogo até cansar
- Desiste e vai pra próxima plataforma de streaming
Agora, compare isso com: Você ouviu alguém falar que assistiu um filme incrível, e a descrição do filme ressona com você. Ao procurar no Google o título do filme, ele aparece disponível na plataforma de streaming que você já tem.
É isso que queremos fazer, nos expor a pessoas que possuem competência e capacidade para nos recomendar tecnologias (filmes) capazes de despertar a nossa curiosidade e de nos fazer compreender e refletir sobre o que queremos e precisamos aprender.
Para isso eu criei a Curadoria da TI:
A Curadoria tem as seguintes propriedades:
- Descrição
- Link
- Relevância: Minha avaliação de 1 a 5 sobre o quão importante é o recurso
- Plataforma: YouTube, Email, Udemy, Discord, Slack, Medium, etc.
- Nível: Para evitar colocar multiplos níveis, eu coloco o nível minimo! Ou seja, o que é bom para um
iniciante
, também é bom para um expert
. Mas o que é destinado a um expert
pode acabar te confundindo como um iniciante
- Tipo: Qual é o formato da mídia ou a natureza do conteúdo
- Idioma
- Tags: Quais são os tópicos envolvidos
- Valor: Faz-me rir! Da pra filtrar por conteúdo gratuito
Nas seções seguintes (especialmente na do YouTube), te falo como tirar o melhor proveito das diferentes plataformas no seu processo de imersão. Então vamos seguir em frente para eu te ensinar a usar a Curadoria e as plataformas!
Use a Curadoria
A curadoria é uma base de dados no Notion. Pense nela como uma tabela que pode ser filtrada e ordenada de acordo com qualquer uma das colunas.
Você pode fazer coisas como:
- Filtrar por
Relevância
de 3 estrelas ou mais, apenas na Plataforma
“Youtube”
- Filtrar por
Nível
“iniciante” e “intermediário” e por Valor
“gratuito”
- E o que mais sua criatividade/necessidade demandar!
Para isso, basta interagir com os ícones que ficam no canto superior direito da Curadoria:
Veja que também é possível pesquisar por qualquer termo diretamente!
Por padrão, a base é ordenada por relevância e filtrada por conteúdo gratuito. Fique a vontade para mudar e experimentar!
Crie a sua bolha no Youtube
Para tirar o melhor proveito possível do YouTube, use a manipulação do algoritmo ao seu favor: crie um canal apenas para o tema que quer aprender.
Em sua conta do YouTube crie um novo canal e dê um nome significativo pra ele. Por exemplo Programação
, ou Engenharia de Dados
.
A partir de agora, você precisa só precisa fazer o seguinte pra isso funcionar:
- Quando estiver logado no seu canal de aprendizado, não clique ou pesquise sobre nenhum vídeo que não esteja dentro do tema escolhido.
- Sempre que tiver uma pesquisa sobre o seu tema escolhido pra fazer, faça no seu novo canal e realimente o algoritmo do YouTube com seus interesses.
Isso torna o processo de imersão muito simples, e garante que sempre que quiser aprender e se expor sobre algo relevante, será possível.
As newsletters estão em alta! Trata-se de emails que são enviados para você periodicamente sobre um determinado assunto. Elas também podem agregar vários links e notícias para te manter atualizado. Eu gosto de começar meu dia verificando se tem algum tópico ou link interessante nas newsletters que sou inscrito.
A minha favorita é a TLDR. Todo dia tenho em média 3 a 5 artigos interessantes e relevantes para ler!
Descubra Blogs
Blogs não irão a lugar algum tão cedo. Tanto que você está aqui!
Nos últimos anos, algumas plataformas se estabeleceram como a solução para desenvolvedores e escritores que não querem ter o trabalho de criar seu próprio site e divulga-lo. O resultado são plataformas como o Medium e o Dev.to.
Há ainda profissionais que, como eu, utilizam essas plataformas para redirecionar os leitores para seus próprios websites e redes sociais, visto que a exposição lá pode ser significativa.
Participe de Comunidades
E se você quiser interagir com pessoas que possuem objetivos como aprender uma tecnologia, se empregar numa área específica, ou contribuir com um projeto, comunidades são uma excelente escolha.
Vários criadores de conteúdo e empresas utilizam ferramentas como o Slack e o Discord para criar suas comunidades e manter pessoas com um objetivo em comum engajadas e firmes no seu propósito.
Um exemplo notável é a Comunidade do Kubernetes no Slack.
Por que começar (e continuar)
Não se assuste!
Os desafios que mostro abaixo nunca são “vencidos”. Eles são apenas parte da rotina, os chamados “ossos do ofício”.
Meu objetivo é te mostrar o que te espera, pra que você encare com seriedade o quão importante é colocar na cabeça que você realmente quer trabalhar com tecnologia. Nesse momento, só se preocupe em saber que os desafios existem e esteja disposto a enfrenta-los.
Todo mundo fala da parte boa de trabalhar com tecnologia, muitos falam das partes ruins, e poucos prestam atenção. Se você não tiver um motivo bem definido para seguir nessa área e que ressona com a sua identidade, você não vai conseguir. O único jeito de trabalhar com TI de forma sustentável é sendo alguém compativel com o que a profissão demanda. Eis a primeira razão em potencial para você estar no ciclo infinito:
Você está indo direto para o que acha que tem que fazer, sem se perguntar o que você precisa transformar em você e nos seus hábitos
Você pensa no que você quer (seus “por ques”):
- Ganhar muito dinheiro
- Ter liberdade geográfica
- Escolher seus horários
- Se expor a várias culturas
- Ser capaz de explorar sua criatividade
Mas não pensa no que você é:
- Eu sou curioso?
- Gosto de estar sempre aprendendo algo?
- Tenho paciência para passar dias resolvendo o mesmo problema?
- Lido bem com pressão?
- Tenho disciplina para não me distrair?
- Me preocupo em entender a necessidade das pessoas?
Seus motivos podem ser completamente diferentes do que eu citei acima. Mas a pergunta é: eles são fortes o suficiente pra passar por cima dos desafios a seguir?
Nunca parar de estudar
Nunca, NUNCA MESMO, poder falar que já aprendeu o que precisava aprender. Se você ficar 6 meses sem estudar ou sem estar imerso na sua área de atuação, você vai perder muita coisa. Se ficar 1 ano, a situação é problemática. Em 3 anos é possivel que seu conhecimento seja obsoleto.
Geralmente sabemos o suficiente sobre aquele projeto que estamos trabalhando, ou a tecnologia que estamos em contato todo dia. No momento que você mudar de empresa, projeto, cliente ou equipe, vai mais uma vez ter que entrar no modo esponja para aprender e absorver as tecnologias e processos que o novo desafio demanda.
Hoje um profissional de TI que estuda por 3 anos, saindo do zero, pode ter mais relevância técnica do que um profissional acomodado que atua há 20 anos.
Sim, experiência conta e é muito importante, mas se você trabalha como desenvolvedor, vão exigir que você se atualize.
Existe um subtópico importante aqui: a capacidade de se comunicar e expressar idéias é mais importante do que o conhecimento técnico, mas isso esta fora do escopo dessa discussão. Por isso usei as expressões “relevância técnica” e “desenvolvedor”.
TI (Tecnologia da informação) é muito mais do que saber programar ou a última ferramenta do momento (em 2024 estou falando do ChatGPT). Mas… “tecnologia” está no nome, e essa muda e se renova o tempo todo, e você vai ter que fazer o mesmo.
Eu acho engraçado quando séries ou filmes mostram o dev ou o profissional de TI como aquele esquisitão que fica sozinho numa sala escura a 15˚C cheia de servidores.
Esse é um estereótipo ultrapassado. Sim, muitos de nós somos introvertidos, mas não é pra tanto. O único jeito de trabalhar sozinho é criando um produto como um app, seu próprio SaaS (Software as a Service) ou algo do tipo, mas isso exige conhecimento e experiência. É possível adquirir ambos “sozinho”, mas esse certamente não é o caminho mais fácil.
No começo da sua carreira, a melhor coisa que você pode fazer é se rodear de pessoas:
- Mentores que podem te mostrar o caminho mais eficiente e te livrar de algumas (nunca todas) das ciladas da profissão
- Colegas de trabalho pra compartilhar suas descobertas, ensinar o que você aprendeu, passar por dificuldades juntos e praticar pedir ajuda
- Chefes que vão te exigir comprometimento, tempo de entrega, relatórios, documentação
- Clientes que não vão saber explicar direito o que querem, que te obrigam a fazer as perguntas certas para obter as respostas que você precisa
Você precisa se perguntar o seguinte:
- Estou disposto a aprender a trabalhar em equipe?
- Lido bem com prazos e com pressão para entrega?
- Gosto de me comunicar e me esforço pra me fazer ser entendido?
- Me preocupo com a qualidade do que faço e estou disposto a ter atenção a detalhes?
Não é nada incomum se deparar com pessoas de personalidade muito forte e extremamente inteligentes na TI. Elas costumam ser a estrela guia que levam o projeto/empresa ao sucesso, ou o buraco negro que gera discussões improdutivas para massagear o próprio ego.
Você vai ter chefes injustos, que cobram demais, ou chefes injustos, que esquecem de você e não te motivam.
No fim, vai ser preciso entender que seu trabalho vai girar em torno de resolver problemas. Problemas de pessoas de verdade! Ver uma telinha de notebook/monitor o dia inteiro pode te fazer esquecer do impacto que você tem na vida dos outros. Não deixe isso acontecer!
Fazer o que você não gosta
Você pode entrar na empresa que sempre sonhou, trabalhar desenvolvendo o produto que sempre quis, com a equipe mais entrosada que já teve, usando a linguagem de programação que você é melhor, com o computador mais rápido, e a internet mais estável do universo… ainda assim, quase todo dia, vai ter alguma coisa pra fazer que você simplesmente detesta.
O profissional de TI é ingrato, como qualquer ser humano. Somos acostumados a dar mais atenção ao que nos irrita ao invés das coisas que estão ao nosso favor e colaboram com a nossa produtividade.
Do momento que você tem a idéia até o momento que uma tarefa ou produto é entregue, vão haver momentos onde você vai ter que fazer a documentação, o relatório, responder o email, ter a conversa difícil.
1.3 - Como começar a programar
Sabendo programar, o mundo é seu
Por onde eu começo?
Comece pelo Python!
Python é amplamente reconhecida como uma das melhores linguagens de programação para iniciantes, especialmente para aqueles que não têm nenhum conhecimento prévio sobre computadores. Alguns motivos:
- Escrita simples e aprendizado rápido
- Extremamente popular e fácil de encontrar recursos como cursos, livros e vídeos, inclusive gratuitos
- Versatilidade e aplicações práticas podendo ser usado para coisas como desenvolvimento web, análise de dados, inteligência artificial, automação, e muito mais. Isso te permite experimentar diferentes áreas da programação e encontrar seu interesse específico!
- Amplamente utilizada em empresas e projetos reais, o que significa que as habilidades adquiridas aprendendo Python são altamente relevantes e aplicáveis no mercado de trabalho.
Exemplo de Automação com Python:
Comentários no código
Para facilitar o entendimento de um código, é muito comum adicionar comentários.
Comentários são trechos que não vão ser interpretados como comandos pelo seu processador.
Eles estão ali apenas para explicar ou justificar porque alguma coisa está sendo feita de um jeito e não de outro.
Para se fazer um comentário num código python, basta começar uma linha com “#” (hashtag)
# Criando a variável "nacionalidade"
# para utilizar num formulário depois
nacionalidade = "brasileiro"
Perceba que o comentário fica em cinza, justamente para não tirar a atenção do código que é de fato executado!
import os
# O código abaixo renomeia todos
# os arquivos ".txt" em uma pasta
for arquivo in os.listdir("."): # "." significa pasta atual
# verifica se o arquivo termina com a extensão ".txt"
if arquivo.endswith(".txt"):
# troca os quatro últimos caracteres do nome do arquivo
# nesse caso ".txt" por ".md"
os.rename(arquivo, arquivo[:-4] + ".md")
Os motivos abaixo podem não fazer muito sentido pra você agora, mas eles são muito relevantes!
- Interpretação e feedback imediato: Python é uma linguagem interpretada, o que significa que você pode escrever e executar código linha por linha. Isso é extremamente útil para iniciantes, pois permite ver imediatamente os resultados das suas instruções e entender como o código funciona.
- Várias funcionalidades embutidas na linguagem: Python vem com uma biblioteca padrão robusta que oferece módulos e funções para praticamente qualquer tarefa imaginável, desde manipulação de arquivos até computação matemática complexa. Isso reduz a necessidade de escrever código do zero para muitas tarefas comuns.
Eu acredito que não preciso te convencer sobre porque saber programar é importante, mas vou descrever alguns motivos rapidamente, só pra poder fazer referência a eles depois.
Por que aprender a programar?
Porque não importa qual seja a sua área escolhida, você vai se beneficiar MUITO por saber programar. Se um problema humano foi resolvido com tecnologia, saiba que programação foi utilizada em alguma etapa da solução.
Mesmo que você não precise programar para resolver o seu problema imediato, saber como algo foi feito ou poderia ser feito, te dá uma vantagem competitiva desleal sobre quem não sabe.
Talvez você já esteja aplicando conceitos de programação e nem se da conta.
Quando usamos o Excel, por exemplo, precisamos pensar na estrutura dos dados, para organiza-los em colunas coerentes. Podemos ainda criar fórmulas pra reagir automaticamente a valores que são inseridos. Também é possível manipular os dados de forma dinâmica e mostra-los graficamente.
Basicamente utilizamos lógica para reagir a entrada de valores e no fim obtermos uma resposta inteligente e estruturada sobre o que os dados significam.
Outras menções honrosas são o Zapier e o IFTT, que são ferramentas usadas para automação de tarefas repetitivas do seu cotidiano.
Ao aprender a programar, você vai:
- Aprender a se comunicar com seu computador
- Desenvolver suas habilidades de resolução de problemas
- Conseguir automatizar suas tarefas
- Ter muito mais flexibilidade na sua carreira
- Saber se comunicar tecnicamente com outras áreas
- Conseguir trabalhar em mais iniciativas de inovação
- E muito mais!
O que exatamente uma linguagem de programação faz?
O seu computador, mais especificamente o processador, entende apenas zeros e uns. Sim, os números 0 e 1. Isso se chama representação binária.
As linguagens de programação foram criadas porque eu e você não sabemos nos comunicar de forma binária, e mesmo que soubéssemos não seria prático.
Lendo sobre representação binária, você vai ver que um “bit” é algo que pode representar “zero” ou “um”.
Processadores só sabem realizar operações simples como adicionar
, subtrair
, salvar
, etc.
Mas como utilizar 0 e 1 para instruir um processador a somar dois números?
Uma instrução de adição para um processador específico pode ser representada da seguinte maneira:
Operação: 000001 (adição)
Operando 1: 00001 (registrador 1)
Operando 2: 00010 (registrador 2)
Destino: 00011 (registrador 3)
Juntando tudo, temos a instrução binária completa:
000001 00001 00010 00011
Os diferentes “níveis” de linguagem
Quando você ouvir falar que uma linguagem é de “alto” nível, não significa que ela é melhor que uma de “baixo” nível.
Quanto mais baixo o nível de uma linguagem, mais próxima ela está das instruções que o processador entende. Consequentemente, mais linhas de código e detalhes precisam ser escritos para realizar tarefas.
Quanto mais alto o nível de uma linguagem, mais próxima ela está das instruções que humanos entendem. Consequentemente, menos linhas de código são necessárias pra realizar tarefas mais complexas.
Exemplos notáveis de nível alto para baixo:
Python -> JavaScript -> Java -> C# -> Go -> Rust -> C++ -> Zig -> C -> Assembly
A pergunta óbvia nesse momento é:
Começo no nível mais alto ou mais baixo? Com que linguagem?
A minha sugestão é: Comece no nível mais alto para entender o que você consegue fazer com programação e para se expor aos conceitos o mais rápido possível. MAS, não pare aí.
Programar em níveis mais baixos te faz entender melhor como o computador funciona, e isso é sempre benéfico. É lógico, é preciso encontrar um meio termo entre o benefício do aprendizado e aprender por aprender. A única coisa que pode te fazer querer aprender Assembly
é sua curiosidade ou se você vai trabalhar na Intel. Fora isso, é improvável que agregue muito valor na sua vida profissional.
Comparando diferentes níveis
Vamos supor que você se deparou com uma tarefa muito simples mas repetitiva, que precisa ser feita em 100 arquivos.
Se decidir fazer isso com programação, a primeira coisa que vai precisar fazer é abrir e ler esses aquivos no seu código, para poder alterar o conteúdo depois. Vamos comparar apenas esse passo inicial com Python (alto nível) vs C (baixo nível):
Ler e mostrar um arquivo em Python
Em Python, abrir e ler um arquivo é uma tarefa direta e simples. O código a seguir lê o conteúdo de um arquivo chamado arquivo.txt
e o mostra na tela.
# Abrindo o arquivo 'arquivo.txt' em modo de leitura ('r')
with open('arquivo.txt', 'r') as arquivo:
# Lendo todo o conteúdo do arquivo
conteudo = arquivo.read()
# Imprimindo o conteúdo do arquivo
print(conteudo)
Perceba que é possível ler o código praticamente como se estivesse lendo uma frase e rapidamente entende-lo:
Abra o arquivo arquivo.txt
e o chame de arquivo
. Leia os dados do arquivo
e salve em conteudo
. Mostre o conteudo
.
Precisa saber um pouquinho de inglês
Para entender com tranquilidade o código acima, seria preciso saber que:
with
significa “com”
open
significa “abrir”
as
significa “como”. Por exemplo as before
-> “como antes”
read
significa “ler”
print
significa “imprimir” ou “mostrar”
Ler e mostrar um arquivo em C
Em C, a mesma tarefa envolve mais etapas e um maior nível de detalhamento. Vamos examinar o código necessário para abrir e ler o conteúdo de um arquivo.
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *arquivo; // Declaração de um ponteiro para o arquivo
char *buffer; // Ponteiro para armazenar o conteúdo do arquivo
long tamanho_arquivo; // Variável para armazenar o tamanho do arquivo
// Abrindo o arquivo 'arquivo.txt' em modo de leitura ('r')
arquivo = fopen("arquivo.txt", "r");
if (arquivo == NULL) {
// Verificando se o arquivo foi aberto com sucesso
printf("Erro ao abrir o arquivo!\n");
return 1;
}
// Movendo o ponteiro do arquivo para o final
fseek(arquivo, 0, SEEK_END);
// Obtendo o tamanho do arquivo
tamanho_arquivo = ftell(arquivo);
// Movendo o ponteiro do arquivo de volta para o início
rewind(arquivo);
// Alocando memória para armazenar o conteúdo do arquivo
buffer = (char*)malloc(sizeof(char) * tamanho_arquivo);
if (buffer == NULL) {
// Verificando se a alocação de memória foi bem-sucedida
printf("Erro ao alocar memória!\n");
return 1;
}
// Lendo o conteúdo do arquivo para o buffer
fread(buffer, 1, tamanho_arquivo, arquivo);
// Imprimindo o conteúdo do arquivo
printf("%s\n", buffer);
// Fechando o arquivo
fclose(arquivo);
// Liberando a memória alocada
free(buffer);
return 0;
}
Até com os comentários, se você não tiver estudado programação, fica difícil entender rapidamente esse código. O que é ponteiro
? e buffer
? NULL
? malloc
? São conceitos muito importantes!
Mas será que é por aí que você deveria começar o seu aprendizado? COM CERTEZA NÃO!!
Isso seria o equivalente a dizer que antes de aprender a falar “obrigado” em português você precisa aprender o que são orações subordinadas adverbiais.
Por isso eu acredito que Python é uma excelente introdução ao mundo da programação. É uma linguagem que vai te recompensar desde o dia 1 e te manter motivado para aprender diferentes conceitos e linguagens, que podem ser muito difíceis no começo.
Referências: