Por que aprender a programar?
Por que aprender a programar?
"Eu acho que todo mundo neste país deveria aprender a programar um computador porque isso ensina a pensar". – esta era a opinião de Steve Jobs, fundador da Apple.
Portanto, ser um programador é ir muito além de simplesmente entender de computador, internet, celular e aplicativos. Os programadores são pessoas que não se colocam como meros consumidores passivos de tecnologia, são as pessoas que estão de fato escrevendo a linguagem do futuro que é a tecnologia.
- Trabalhar em empresas de tecnologia
- Trabalhar remoto de qualquer lugar do mundo
- Automatizar processos manuais e falar a mesma língua que programadores
- Desenvolver suas ideias de negócio e colocar produtos de tecnologia no mercado
Saber programar possibilita empreendedores a ter autonomia para desenvolver suas próprias ideias, com muito mais controle sobre seus projetos. Freelancers conseguem trabalhar de qualquer lugar do mundo e viver como nômades digitais. Empresas cada vez mais precisarão escalar seus modelos de negócio e por isso estudantes de outras áreas que também sabem programar têm essa vantagem no currículo. Por fim, essa é uma habilidade interessante especialmente para quem trabalha em empresas de tecnologia mesmo que não sejam os programadores eles mesmos. Entender de tecnologia vai ser importante para todo mundo.
Isso não é o futuro. Isso já faz parte do presente.
Aprender qualquer habilidade nova depende de vontade. Portanto, a primeira razão pela qual você deve aprender a programar é porque você quer isso. No entanto, você talvez ainda esteja em dúvida se vale a pena se tornar um programador. Confira alguns motivos para aprender a programar:
- grande número de vagas na área de tecnologia (muita demanda e pouca oferta);
- salários atrativos (ganhar em dólar/euro é comum nessa profissão o trabalho remoto em empresa estrangeira);
- não é obrigatório ter um diploma: há formas mais rápidas de aprender a programar;
- possibilidade de trabalhar de qualquer lugar e fazer o próprio horário;
- criar uma startup ou aplicativo inovador;
- trabalhar para grandes empresas como Google, Apple, Facebook e Microsoft.
Se essas possibilidades te motivam e te ajudaram na decisão de seguir na área de programação, confira a seguir o que muitos bons programadores fizeram nos primeiros anos de carreira enquanto ainda estavam aprendendo a desenvolver softwares, sites e sistemas.
Qual é o primeiro passo para se tornar um programador?
O primeiro passo para se tornar um programador do zero é não só estudar as linguagens, mas conhecer bem o universo dos programadores, isto é, fazer parte da comunidade tecnológica, conversar com desenvolvedores e conhecer mais sobre essa carreira e suas possibilidades.
Conceitos que são importantes conhecer para qualquer programador, independente da linguagem que vai se especializar:
Programação orientada a objetos é o conceito de programação ligado a organizar, classificar e abstrair coisas. Já MVC é a sigla para Model-View Controller. É um padrão de arquitetura de software composto por três camadas: view (interação do usuário), model (manipulação de dados) e controller (controle).
Algumas sugestões para quem pensa em se tornar um programador:
- cria uma conta no GitHub;
- Entre para grupos de comunidades no facebook e reddit;
- converse com outros profissionais da área;
- defina uma linguagem para aprender primeiro;
- escute um podcast sobre tecnologia;
- teste fazer um curso online de programação;
- construa um pequeno projeto e trabalhe com ‘’pushs’’ em grupo;
Quais habilidades bons programadores precisam ter?
Saber programar é como ser fluente em uma língua. De fato, os códigos são linguagens com evoluídas lógicas de execução. Por isso, é importante entender as regras que existem para cada linguagem, as chamadas Sintaxe, a estrutura da linguagem: suas regras, frases, pontuações, sentenças e símbolos.
Bons programadores vão além e têm muito mais que conhecimento profundo sobre as linguagens em si. Na verdade, boas ideias de aplicativos e resolução de problemas têm mais a ver com habilidades de resolução de problemas, gestão e lógica que escrever linhas de código. Criar um produto, uma solução que de fato resolva uma dor ou problema de um ser humano. Tecnologia serve para facilitar a vida de seres humanos rsrs!
Portanto, sim, aprenda bastante sobre a linguagem que escolher trabalhar, mas também lembre-se que o mercado e recrutadores procuram cada vez mais programadores que tenham desenvolvidas habilidades comportamentais chamadas soft skills, como por exemplo:
- comunicação: É preciso saber comunicar uma ideia técnica com precisão usando as ferramentas mais eficazes. Por exemplo: é mais eficaz comunicar uma ideia de app usando um protótipo navegável do que um ppt!
- trabalho em equipe: É necessário conhecer os workflows de trabalho mais usados em empresas tecnológicas
- empatia: Compreenda todos os lados, busque ter a visão do cliente, de outros programadores, de designers e principalmente do usuário;
- criatividade: O mundo precisa menos de programadores cuspidores de código e mais de programadores capazes de transformar seu conhecimento em soluções criativas!
- resolução de problemas: programar é resolver problemas. Não adianta nada ser o mestre jedi da linguagem da moda se você não é capaz de aplicar todo este conhecimento na resolução de problemas.
E obviamente, bons programadores precisam ter somado às soft-skills, amplo conhecimento em seu leque, habilidades técnicas, ou também conhecidas como hard-skills, como:
- frameworks: É uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica ou não.
- computação em nuvem: disponibilidade de recursos sob demanda sem a participação ativa do usuário (exemplo: Google Cloud, Amazon Web Services);
- banco de dados: a parte principal onde os dados coletados na aplicação são mantidos;
- algoritmos: embora não esteja conectado diretamente a nenhuma linguagem de programação, são métodos para resolver certos problemas, como classificação ou pesquisa.
Quais linguagens os programadores precisam aprender?
Um ranking publicado no site DevMedia elencou as 10 linguagens de programação mais populares no mercado. A lista conta com JavaScript, Java, Python, C#, PHO, C++, C, TypeScript, Ruby e Swift. Muita gente olha pra essas listas e se desespera achando que tem que aprender tudo isso pra poder ser competitivo no mercado de trabalho. Nada mais distante da verdade, aqui no Le Wagon temos um foco muito grande em desenvolver aquelas características que falamos ali em cima (soft-skills), pois elas nunca mudam e são elas que fazem um bom programador.
A gente já falou sobre este assunto no texto Que linguagem é melhor para aprender a programar?.
Cada linguagem tem suas características e aplicações, não existe linguagem boa ou ruim. O que existe é a linguagem adequada para cada problema. Veja alguns exemplos abaixo:
Ruby
Uma linguagem simples e bastante intuitiva, é bastante adotada por startups e empresas inovadoras na área de tecnologia graças ao framework Ruby on Rails que foi um divisor de águas no que diz respeito à produtividade dos desenvolvedores, por permitir a prototipação e deployment de ideias em uma velocidade muito alta.
Linguagem de alto nível: mais próxima à linguagem humana – fornece bastante abstrações;
Linguagem de baixo nível: mais próxima à linguagem de máquina – poucos abstrações.
Python
Se você quer aprender um tipo de código para aplicar em diferentes propósitos, certamente vale investir nessa linguagem de alto nível também muito requisitada. Ela tem fonte livre e aberta e pode ser aplicada desde o desenvolvimento web à inteligência artificial. Por essa razão, é uma das que mais tem crescido no mercado.
Java
Desenvolvida há mais de duas décadas, o Java é uma das linguagens de programação orientadas a objetos mais populares que existem: 90% das 500 maiores empresas do mundo, de acordo com ranking da revista americana Fortune, usam Java de alguma forma em suas aplicações back-end.
Kotlin
Há alguns programadores Java que têm migrado para Kotlin nos últimos anos. Na verdade, as duas linguagens são interoperáveis, ou seja, é possível trabalhar com as duas ao mesmo tempo. A Movile, uma das maiores empresas de tecnologia do Brasil, dá motivos para usar Kotlin.
JavaScript
Por muitos anos, o JavaScript teve como foco a interpretação por navegadores web. Hoje, muitos programadores desktop e mobile têm aproveitado sua tecnologia para criar peças interativas. Uma das grandes vantagens de se aprender JavaScript é poder contar com uma grande comunidade de desenvolvedores web que trabalham com ela tanto no back-end quanto no front-end. Entre seus diversos frameworks, o JavaScript tem dois que merecem atenção hoje em dia no mercado:
TypeScript
O TypeScript é uma nova forma de escrever JavaScript, de forma muito mais simples, podendo ser interpretada por qualquer servidor, navegador ou sistema operacional. Muitos desenvolvedores defendem trocar o JavaScript pelo TypeScript.
Go
A popularidade da linguagem Go disparou recentemente. Da 18ª mais usada em março de 2019, um ano depois ela passou a figurar no top 10, de acordo com o respeitado TIOBE Index. O Go é leve e tem código aberto, capaz de resolver problemas com outras linguagens existentes. Ela é muito recomendada para quem quer investir na área de Ciência de Dados.
Swift
Enquanto há tipos de código que contemplam diferentes objetivos, a linguagem Swift é exclusiva da Apple. O Swift é essencial para quem quer desenvolver nos ambientes em seus dispositivos. Essa é uma das linguagens mais novas do mercado. Criada em 2014, ela tem influência do C#, Objective-C, Python e Ruby. Hoje em dia, com a evolução dos webaps, muitas empresas têm optado por desenvolver seus apps em outras linguagens em vez de linguagens nativas como o Swift.
Qual é a rotina de trabalho dos programadores?
Entregar um produto e manter seu cliente satisfeito é uma tarefa desafiadora que os times de vendas, sucesso do cliente, suporte, produto e engenharia sapateiam para entregar um serviço alinhado que satisfaça à todos, tanto clientes externos quanto internos, felizes.
Gestão e otimização de Produto
O programador e toda a equipe precisa ter acesso a informações sobre o projeto para que sejam guiados corretamente em seu trabalho. Não é possível escrever um código às cegas. Antes, é necessário entender objetivos, plataformas, processos e mais sobre os futuros usuários. Alguns desenvolvedores assumem a função de Product Owner ou Product Manager, administrando a lista de funcionalidades (backlog) que o projeto deve ter.
Product Manager: É o gerente de produto e responsável pelo gerenciamento dos times de tecnologia: engenharia e produto. Sua função é gerenciar o time, com objetivo de otimizar a eficiência e qualidade de entrega, a fim de obter melhorias continuadas no produto.
Product Owner: Esse profissional que utiliza SCRUM (metodologia de gerenciamento de projetos) para definir estórias e definir os backlogs prioritários. Ele trabalha em contato direto tanto com o cliente bem próximo da operação.
Backlog: É a pilha de requisições de mudanças ou acréscimos no produto na fila de espera. É construído e gerenciado pelo Product Owner que monta as demandas de funcionalidades no produto realizadas pelo cliente e administra em ordem de prioridade e tempo o que deve ser entregue primeiro e quando.
SCRUM: metodologia ágil para gestão e planejamento de projetos de software. É uma metodologia da área de gerenciamento. Seus projetos são divididos em ciclos curtos de tempo, conhecido como SPRINTs.
Programação
É nesse momento que as linhas de código começam a crescer e a estrutura do sistema é desenvolvida. No caso de grandes empresas, cada desenvolvedor tem uma designação: alguns ficam com a construção de interfaces (front-end), outros trabalham com banco de dados (back-end), entre outras dezenas de tarefas.
Correção de Bugs
Para que tudo funcione bem, é preciso que os programadores sempre revisitem e revisem os códigos. As primeiras execuções sempre apontam falhas. Às vezes, elas são facilmente identificadas, outras vezes, os programadores precisam dedicar um bom tempo para corrigir os bugs.
Test Driven Development ou TDD
Além das execuções iniciais do site, sistema ou aplicativo, que ocorrem durante o desenvolvimento, há ainda alguns testes que são mais importantes. Esse processo é chamado de Test Driven Development. Eles envolvem o cumprimento de um checklist por parte dos programadores, envio ao cliente e especialmente observação do comportamento dos usuários, mesmo que esses não sejam os consumidores finais.
Deployment: Envio ao servidor
Assim que o projeto estiver pronto, o programador responsável deve enviá-lo ao servidor para que fique disponível para os usuários finais e esteja pronto para ser usado. O projeto sai de ambientes internos e vai a ambientes externos, por exemplo, sendo lançado na internet.
Refactoring
Consiste em reescrever um código, método ou algoritmo que cumpra uma mesma função que antes, mas com um script mais elegante e simples. É como o mesmo conceito de fatoração em matemática.
Melhorias técnicas
Anos atrás, um software era desenvolvido, gravado em disco, comercializado e pronto. Isso acontecia em uma época quando nem existiam aplicativos para celular. Hoje, as melhorias são constantes. Com grande parte dos sistemas hospedados na nuvem (servidores que permitem acesso aos arquivos por qualquer dispositivo conectado à web), as atualizações podem ser feitas em tempo real – e isso também faz parte da rotina dos programadores.
Cloud Computing: o armazenamento em nuvem possibilita que usuários guardem seus arquivos, documentos e informações em um servidor online, sempre disponível para acessar posteriormente de qualquer dispositivo, sem comprometer a capacidade de armazenamento local do aparelho.
Vantagens:
- Redução de custos de Infra-estrutura
- Democratização da informação
- Acesso remoto aos dados
- Economia de memória
Suporte ao usuário
Por fim, os programadores também podem atender necessidades específicas dos usuários. Embora um primeiro atendimento técnico não seja obrigatoriamente feito por um profissional de tecnologia, o desenvolvedor pode receber o ticket de suporte e executar as correções dos problemas apresentados. Nesse cenário, é muito importante que a empresa tenha uma boa sintonia entre os profissionais dos departamentos de Suporte e Sucesso do Cliente. Enquanto, o primeiro se concentra em melhorias e ajustes técnicos, o segundo é focado na satisfação do mercado.
Conseguindo o primeiro emprego: a comunidade brasileira de programadores
Para conseguir o primeiro emprego como programador, é muito importante que você faça parte da comunidade de desenvolvedores por dois motivos: para aprender com os mais experientes e para encontrar oportunidade de emprego