Article image
Pablo Leão
Pablo Leão11/04/2024 15:48
Share

Quero Desenvolver, mas o quê?

    Introdução


    Caso você seja um iniciante que se encontra um tanto perdido no que concerne as possibilidades de carreiras no universo da programação e orquestração dos sistemas digitais, esse artigo foi escrito com o intuito de ajudá-lo a se situar.

    Quando o assunto é desenvolvimento de software (instruções lógicas concedidas a um computador), há inúmeras possibilidades, porque o Dev (nomenclatura informal atribuída ao desenvolvedor ou programador) pode atuar em um nicho específico de software, especializando-se nas ferramentas de criação daquele tipo de sistema.

    Aqui estão alguns planos de carreira que o Dev pode abraçar:


    Desenvolvimento Web


    Como a área da tecnologia que mais possui profissionais, a web nada mais é do que a internet propriamente dita. Logo, tais profissionais atuam como desenvolvedores de sites e sistemas web no geral. Vale dizer, também, que existem três principais caminhos que estes construtores do mundo digital podem enveredar (como dito anteriormente, em tecnologia há um vasto leque de ofícios): frontend, backend e fullstack [Obs.: tais conceitos são fundamentais e também se aplicam em outros ramos do desenvolvimento, como Mobile e Desktop, mudando apenas as tecnologias aplicadas e o ambiente de execução].

    O desenvolvedor frontend trabalha com o lado do cliente de uma aplicação (client-side), ou seja, a parte visual que é exibida para o usuário final, utilizando tecnologias como HTML, CSS, JavaScript e frameworks (ferramentas para agilizar o desenvolvimento), seja ele React, AngularJS, Vue.js, Tailwind CSS, entre diversos outros. Fazendo uma analogia com uma peça de teatro, o “front” é a peça em si, com os atores, cenário, e tudo que a compõe visualmente.

    Já o desenvolvedor backend exerce sua atividade com o servidor (server-side), o qual sustenta todo o sistema por detrás dos panos; assim sendo, o usuário final não consegue enxergar, tampouco interagir com o lado “escuro da força”. Usualmente, esses programadores usufruem de tecnologias como o próprio JavaScritpt, com o runtime Node.js, PHP, Ruby, Java, C#, Python e banco de dados relacionais, como o MySQL e o PostgreSQL, e não relacionais (NoSQL), a exemplo do MongoDB e do Amazon DynamoDB, entre muitas outras stacks (conjunto de tecnologias). Trazendo a tona a mesma analogia feita com o frontend, o “back” seria os bastidores, portanto é todo o mecanismo de abrir e fechar das cortinas, luzes, modificação do cenário, e assim em diante. Perceba que tal aspecto operacional é tão importante quanto a apresentação, devendo acontecer de maneira harmoniosa com a mesma.

    Por último, contudo, não menos importante, o desenvolvedor fullstack. Basicamente, este profissional detém os conhecimentos necessários para criar uma aplicação completa, abrangendo o frontend e o backend.


    Desenvolvimento Mobile


    O desenvolvimento mobile surgiu para suprir uma demanda relativamente recente, mas em constante crescimento; desenvolver sistemas para dispositivos móveis/portáteis. Assim sendo, profissionais desta área buscam desenvolver soluções para smartphones e tablets, resumidamente. Esses dispositivos possuem diferentes sistemas operacionais, como Android, iOS e, em alguns casos, sistemas operacionais proprietários desenvolvidos pelas fabricantes.

    Devido aos diferentes sistemas operacionais, cria-se uma bifurcação na área entre os aplicativos nativos e os multiplataforma (cross-platform software) [Obs. 2: estes conceitos estão em outros âmbitos do desenvolvimento também].

    Aplicativos nativos são desenvolvidos especificamente para um determinado sistema operacional e oferecem desempenho e experiência otimizados para o dispositivo em questão. Por exemplo, um aplicativo nativo desenvolvido para iOS, por meio de tecnologias como o Objective-C ou o Swift, aproveitará as funcionalidades exclusivas dos dispositivos da Apple, enquanto um aplicativo nativo Android, desenvolvido em Java ou Kotlin, poderá integrar-se melhor com as características dos smartphones e tablets que utilizam esse sistema operacional.

    Por outro lado, os aplicativos multiplataforma são desenhados para funcionar em diferentes sistemas operacionais com uma única base. Isso é possível graças a frameworks como React Native, Flutter e Xamarin, que permitem aos desenvolvedores criarem aplicativos que oferecem uma experiência semelhante em diversas plataformas/sistemas operacionais, reutilizando, dessa forma, o código-fonte. 

    Desenvolvimento Desktop

    Refere-se à criação de programas e aplicativos que são executados em computadores de mesa e laptops (os famigerados PCs). Como amostragem dos softwares desktop, pode-se citar editores de texto, imagem e vídeo, navegadores de internet, entre outros.

    Os Desktop Developers utilizam linguagens de programação como C++, Java, Python, entre outras, para criar aplicativos que atendam às necessidades dos usuários, sejam eles usuários de Windows, macOS, Linux ou, até mesmo, BSD.

    É importante mencionar que o desenvolvimento desktop não está limitado apenas a aplicativos tradicionais. Com o avanço da tecnologia, surgiram novas formas de desenvolvimento, como os aplicativos web progressivos (PWAs) e os aplicativos de desktop baseados em nuvem, que combinam a flexibilidade da web com a robustez e desempenho dos aplicativos tradicionais.

    Desenvolvimento de Jogos Digitais/Eletrônicos

    Os games são softwares fascinantes que objetivam entreter o público final, combinando criatividade, tecnologia e habilidades técnicas para criar experiências interativas envolventes. Os jogos eletrônicos podem ser jogados em diversos dispositivos, como computadores, consoles de videogame, smartphones e tablets. Eles variam em gêneros e estilos, desde jogos de ação e aventura até jogos de estratégia, quebra-cabeças e simulação.

    O processo de desenvolvimento de um jogo digital geralmente envolve várias etapas. Primeiramente, há a concepção da ideia, onde os designers e criadores elaboram o conceito básico do jogo, incluindo história, mecânicas e personagens. Em seguida são criados os documentos de design (GDD), que detalharão todos os aspectos do jogo.

    Depois disso, os desenvolvedores começam a programar o jogo, criar os gráficos e animações, compor a trilha sonora e realizar testes para garantir que tudo funcione conforme o planejado. Essa fase pode ser bastante intensa e requer colaboração entre diferentes equipes, como programadores, artistas, músicos e testadores.

    Ademais, um conceito importante no Game Development é o de game engine (motor de jogo), que é um software que simplifica o desenvolvimento de jogos eletrônicos. Há várias engines no mercado, como a Unity, Unreal e Godot. Além disso, as linguagens de programação mais usadas nesse meio são o C++, C#, Python, JavaScript e Java.

    Desenvolvimento de Inteligência Artificial (AI)

    Inteligência Artificial é o termo utilizado para designar um código com incontáveis “if’s”. Brincadeiras à parte, IA é um conceito amplo e complexo de estudo sobre formas de “simular” o funcionamento da mente humana em um sistema computacional.

    Tendo em vista isso, o profissional Artificial Intelligence Specialist (Especialista em Inteligência Artificial) atua no desenvolvimento, customização, aprimoramento, implementação e manutenção de soluções em IA. Isso vale tanto pensando em criar ferramentas para inovar o uso de soluções preexistentes, quanto pensando em melhorias que ajudarão a expandir as potencialidades dessa área.

    A repeito de hard-skills (competências técnicas), faz-se necessário conhecer profundamente linguagens de programação, como Python, R, C ou C++, e outros conceitos como ML (machine learning), DL (deep learning), NLP (natural language processing), estatística e matemática.

    Desenvolvimento de Realidade Virtual (VR) e Realidade Aumentada (AR)

    A realidade virtual é uma tecnologia que permite que as pessoas mergulhem em ambientes digitais tridimensionais, como se estivessem realmente lá, proporcionando uma sensação de presença. É como entrar em um mundo virtual onde você pode interagir com objetos e até mesmo pessoas, mesmo estando fisicamente em outro lugar. Análogo a isso, realidade aumentada é uma tecnologia que mescla o mundo real com elementos virtuais, criando uma experiência onde objetos digitais interagem com o ambiente físico em tempo real. Ou seja, enquanto a VR transporta o usuário para um ambiente totalmente digital, a AR adiciona camadas de informação virtual ao mundo real.

    Quanto a carreira, os desenvolvedores de realidade virtual precisam ter habilidades em linguagens de programação, sejam elas C#, C++, Java e Python, design 3D, utilizando ferramentas como Blender, Maya e 3ds Max, animação e conhecimento sobre interação humano-computador para criar experiências em ambientes digitais imersivos. Já os AR Devs trabalham na criação de sistemas que utilizam essa tecnologia para sobrepor informações virtuais ao ambiente físico. Isso pode incluir desde simples informações visuais, como direções em um mapa, até elementos interativos, como jogos que se passam no mundo real.

    É importante salientar que a realidade aumentada e a realidade virtual estão intimamente relacionadas, pois ambas as tecnologias compartilham algumas habilidades técnicas. Mas, por terem propósitos e abordagens diferentes, também possuem suas especificidades. Por exemplo, os desenvolvedores de realidade aumentada precisam entender como integrar objetos virtuais com o ambiente real de forma coerente e natural. Isso envolve o uso de tecnologias como reconhecimento de padrões, interação natural, rastreamento de objetos, otimização para dispositivos móveis, integração de dados em tempo real, por meio de API’s e sensores de posição para garantir dinamismo e conveniência ao software.

    Desenvolvimento de Blockchain

    Talvez você esteja se perguntando: o que é blockchain? Blockchain é uma tecnologia avançada que permite o armazenamento seguro e descentralizado – sua característica mais marcante – de informações em uma rede distribuída. Em vez de ter um único banco de dados centralizado, como é comum em sistemas tradicionais, a blockchain utiliza uma rede de computadores conhecida como nós (nodes) para armazenar e validar transações de forma transparente e confiável.

    Por ser uma tecnologia de natureza descentralizada, não há uma autoridade central controlando a rede; em vez disso, a validação das transações é feita de forma colaborativa pelos nós da rede. Isso torna o blockchain resistente a fraudes e ataques, já que seria necessário comprometer a maioria dos nós para alterar informações na rede.

    No mais, os desenvolvedores de blockchain trabalham na criação e manutenção de redes blockchain, desenvolvendo protocolos, contratos inteligentes e aplicativos que aproveitam os recursos dessa tecnologia. Eles também lidam com questões como escalabilidade, segurança e interoperabilidade entre diferentes blockchains.

    Uma das particularidades do desenvolvimento de blockchain é o uso de linguagens específicas, como Solidity (para contratos inteligentes na Ethereum) e Rust (para blockchain da Polkadot), que são projetadas para facilitar a programação de funcionalidades específicas do blockchain.

    Outros aspectos importantes são a ênfase na segurança e na criptografia, bem como o fato de que a blockchain e as criptomoedas (ou cibermoedas, moedas digitais) estão intrinsecamente ligadas, porque a existência e o funcionamento das criptomoedas dependem dessa rede. Os Devs da área precisam entender conceitos como chaves públicas e privadas, hash functions, assinaturas digitais e algoritmos de consenso para garantir a integridade e a confiabilidade das transações na rede. Transações essas realizadas pelas cibermoedas, como Ethereum, Polkadot, que foram supracitadas, e a mais famosa das moedas virtuais atuais, o Bitcoin; em síntese, o Bitcoin é uma moeda digital sem controle centralizado, criada para transações online, mas agora é vista como um ativo digital conversível em outras moedas. Sua rede blockchain pública é responsável pelo registro e gerenciamento das transações. 

    Desenvolvimento de Sistemas Embarcados

    Para finalizar este escrito, temos os sistemas embarcados ou embebidos, que são sistemas computacionais/eletrônicos microprocessados dedicados a tarefas específicas e integrados a dispositivos físicos, sendo eles eletrodomésticos, veículos, chips, câmeras de segurança, dispositivos médicos, smartwatches, dispositivos vestíveis (wearables) e outros mais. Tais sistemas são projetados para executar funções pré-determinadas de forma eficiente e confiável, muitas vezes operando em tempo real.

    Deve ter ficado claro que a característica principal dos sistemas embarcados é a sua integração direta com o hardware (parte física de um computador) do dispositivo onde estão inseridos. Isso significa que o software desenvolvido para sistemas embarcados é otimizado para aproveitar ao máximo os recursos limitados de processamento, memória e energia disponíveis nos dispositivos. Consequentemente, os desenvolvedores de sistemas embarcados trabalham com criação de software especializado para um aparato eletrônico em particular, porém também estão envolvidos na montagem e integração dos circuitos eletrônicos desse aparato, onde o sistema embebido será aplicado.

    Utilizando principalmente linguagens de programação de baixo e médio nível como Assembly, C, C++, e eventualmente, linguagens de alto nível, como Python e Java, dependendo das necessidades e das capacidades do sistema embarcado em questão, esses programadores concebem suas soluções para colaborar com o progresso da automação de diversos processos.

    Conclusão

    Certamente, após ler este artigo, é possível decidir qual caminho do desenvolvimento mais se adéqua ao seu perfil. No entanto, é importante deixar explícito que cada um desses tópicos são muito abrangentes, sendo o ideal criar um artigo para cada um deles, mas o objetivo aqui é introduzi-los a este mundo fantástico das carreiras em programação. Então, caso tenha se interessado minimamente por uma dessas áreas, pesquise mais sobre elas para compreender em menores detalhes. 

    Share
    Comments (2)
    Andressa Machado
    Andressa Machado - 11/04/2024 16:43

    Parabéns pelo conteúdo!

    VP

    Vinícius Prado - 11/04/2024 15:55

    Obrigado