Evolução na profissão
Como foi a evolução (acadêmica e profissional) até chegar na sua posição atual?
- Comecei como competidor nas maratonas de programação.
- Devido a minha dedicação nas competições e aos resultados que eu vinha obtendo, eu consegui bolsas de estudo na Algar Telecom para continuar meus estudos e incentivar o investimento nas competições. Essa iniciativa da Algar deu início ao que hoje se tornou o instituto Uber Hub Code Club.
- Entrei para a UFU no curso de Ciência da Computação, onde estudo até hoje.
- Na universidade participei de diversas competições, fui classificado para a final nacional da Maratona SBC de programação nos anos de 2016 (BH), 2017 (Foz do Iguaçu), 2018 (Salvador) e 2019 (Campina Grande). Além das competições nacionais, fui medalhista e campeão da maratona mineira de programação, além de competições individuais.
- Os meus resultados nas competições me permitiram me destacar na fase de currículo dos processos seletivos de grandes empresas (BigTechs) e devido a isso consegui estágios em grandes empresas, sendo elas: Google, Wildlife Studios e Facebook.
Quais foram as principais formações (certificação, especialização, curso, etc) extra-curriculares?
- Estudo de C/C++, Algoritmos, Estruturas de dados e técnicas de Resolução de Problemas focadas pra competições de programação
Descrição da atividade atual
O que efetivamente faz o profissional na sua condição?
- Como desenvolvedor de jogos o seu papel é criar uma experiência de jogo divertida e interessante para o usuário, que seja ao mesmo tempo visualmente atrativa.
- O objetivo do jogo é fazer com que o usuário goste de jogar e queira passar o máximo de tempo possível imerso no jogo.
O que entrega como resultado?
- Os resultados geralmente são medidos por:
- Quantidade de downloads
- Quantidade de clicks (no caso de Playables) desempenho se comparado a versões anteriores do mesmo jogo
Requisitos mínimos para exercer a profissão
Cite alguns soft skills necessários para quem tem intenção de seguir essa carreira?
- Saber trabalhar em equipe. Isso inclui:
- Buscar ajuda quando necessário
- Saber expressar suas ideias
- Ter humildade para aceitar que as ideias que você expôs nem sempre serão as ideias corretas
- Ouvir e buscar entender o que o outro está te dizendo
- Saber assumir os próprios erros e aprender com eles
- Independência
- Gastar um tempo tentando pensar em formas de solucionar o problema antes de pedir ajuda.
- Pesquisar no google antes costuma evitar um monte de pedidos de ajuda desnecessários
- Ter bem definido na sua cabeça qual o problema que você está enfrentando, e saber listar o que você já tentou fazer para resolvê-lo antes de buscar ajuda
- Gastar um tempo tentando pensar em formas de solucionar o problema antes de pedir ajuda.
- Comunicação
- Aprender a se comunicar de forma clara e objetiva.
- Não assumir que a outra pessoa saiba o que você está falando. Sempre que puder contextualizar então contextualize. Adicionar screenshots, links, geralmente faz um email/mensagem/documento mais rico e fácil de entender.
Sugira alguns hard skills.
- Saber bem uma linguagem de programação.
- Melhor que saber várias superficialmente
- Frameworks você aprende conforme necessário
- Algoritmos, Estruturas de dados
- Independente da área, se você quer se destacar como programador, precisa dominar algoritmos e estruturas de dados
- Tecnologias de desenvolvimento de jogos podem ser úteis durante a atuação (mas não necessariamente são necessárias para iniciar na carreira)
- Unity, C#, Javascript, C++, Java, Modelagem 3D, Photoshop
- Geometria Analitica vetorial e fisica basica
- Todo desenvolvedor de jogos precisa manipular diariamente objetos no espaço, e a ferramenta utilizada pra fazer isso é a geometria analítica. Vetores, retas, semi retas, distâncias, forças, etc.
Ferramentas usadas no dia-a-dia
Cite algumas ferramentas, tecnologias ou metodologias das quais depende para sucesso nas atividades.
- Unity, C# são as principais
- Javascript, Java, C++, Modelagem 3D e Photoshop podem ser úteis também dependendo da área de atuação
Tecnologias envolvidas
Sugira alguma tecnologia que possa ser pesquisada por esta equipe e que possa servir de base para futura aplicação nessa profissão.
- Unity, C#, Javascript, Modelagem 3D e Photoshop
Pesquisa: C#
História:
- O C# surgiu como uma ferramenta oferecida na plataforma .NET que trouxe como características a sua linguagem simples, orientada a objetos, fortemente tipada e altamente escalável, o que a torna completa e utilizável em qualquer tipo de hardware (PCs, handhelds e mobiles).
- Com o avanço da tecnologia, foi visualizada a necessidade de se desenvolver softwares que fossem acessíveis para qualquer um e disponíveis através de qualquer dispositivo. Para isso, a Microsoft anunciou o início do .NET e a linguagem de programação C#.
- A linguagem C# foi desenvolvida por Anders Hejlsberg, inicialmente a linguagem foi chamada de Cool, porém o projeto .NET foi apresentado pela Microsoft em 2000 para o PDC(Professional Developers Conference) e a linguagem foi renomeada para C#.
Características:
- Fortemente tipada
- Imperativa
- Completamente orientada a objetos, cada variável deve pertencer a uma classe
- Compilada para “Common Intermediate Language” que depois é interpretado pela “Common Intermediate Runtime”
- Sintaxe similar a C, C++ e Java
- Faz parte da plataforma .NET da Microsoft
Exemplo de um Hello World em C#
using System;
{
class HelloWorld
{
static void Main()
{
Console.WriteLine("Hello world!");
}
}
}
Arquitetura .NET
- C# roda no runtime do “common language runtime”, o código compilado vira um intermediário, similar a abordagem do Java, chamado Intermediate Language (IL), esse intermediário é armazenado em um tipo de assembly normalmente tendo a extensão “.dll”.
- Quando o programa C# é executado esse IL é carregado para a Common Intermediate Language que essa executa uma “Just in Time Compilation” (JIT), assim como Lua e php 8, para gerar um código de máquina que é finalmente executado pelo processador
Ética profissional
Pode dar algum exemplo já vivido por você ou por alguma outra pessoa sobre aspectos éticos na profissão, seja positivo ou negativo?
- Uso de dados do usuário para obter informações sobre um jogo. Às vezes o acesso a algum dado do usuário iria contribuir para o melhor desenvolvimento de um playable, mas muitas das vezes isso era antiético dado que o usuário não iria estar ciente do uso dessa informação.
- Durante a minha entrevista para estágio na WildLife, falei inicialmente para o entrevistador que não detinha o interesse de ter uma contratação na empresa pois já tinha uma promessa de estágio no facebook. A empresa viu isso como algo positivo, pelo fato de eu ser direto, e a mesma não tratou isso de forma negativa, pelo contrário, tentaram me convencer a ficar na empresa mas sem me pressionar, e isto foi ético por parta da empresa.
Upload da apresentação
- Tem apresentação? Faça o upload aqui [1].
Dúvidas
- Qual seria um exemplo de ética dentro da empresa?
- Desde a entrevista na WildLife já sabia que teria um outro estágio no Facebook após um tempo, poderia falar ou não, caso falasse poderia perder a vaga pois 5 meses depois teria que pedir as contas para entrar no outro estágio, a empresa gostou desta postura e contrataram mesmo assim, a empresa adotou a postura de “tentar ganhar” o Gustavo do Facebook. Ao final do estágio a WildLife fez a proposta de efetivar o Gustavo mesmo sem ele ter terminado o ensino superior. Não houve pressão por parte da WildLife devido ao estágio futuro
- Sobre usar física e geometria no desenvolvimento de jogos, a empresa explica as mecânicas que devem ser programadas ou o programador que descobre o que usar?
- Quando os requisitos são passados, são passados por “não técnicos”, que descrevem o comportamento do jogo para o desenvolvedor, não importando com como esses requisitos são implementados.
- Você já chegou lá sabendo bastante de GAAL ou teve que aprender durante o estágio ? É um requisito pesado na hora da entrevista?
- Na entrevista não é cobrado geometria analítica, pois há uma falta de programadores, o que mais é cobrado é saber estrutura de dados e algoritmos, são feitos testes similares a maratonas de programação. O básico de geometria computacional é algo que se aprende muito com maratonas de programação, de resto é tudo ensinado durante o próprio estágio.
- O que levou a continuar na área?
- Durante o tempo de estudo para maratona houve um momento que toda a vida era resumida a estudo de maratonas, na época não haviam referências de programadores que estavam no caminho que estava trilhando, isso desmotivou a estudar e o fez buscar analisar outras oportunidades de carreira, ao falar com os professores Luiz Cláudio e João Pedro entendeu que suas habilidades seriam extremamentes bem utilizadas na computação
- Como era o ambiente durante o estágio do Google?
- A empresa entende que exaurir o funcionário diminui a produtividade, então o ambiente era bem tranquilo. A cultura da empresa é tratar o funcionário e o ambiente de forma leve, querendo eficiência porém entendendo que o bem estar do funcionário é mais importante que a entrega.
- Um jog AAA tambem nao ficaria defasado se tiver um desenvolvimento anormal?
- Não respondida
- Como você estudava para as maratonas?lendo código? resolvendo desafios?
- Comecei estudando pelo competitive programming 3rd edition, e resolvendo exercícios, fazendo minicursos tipo uberhub code club
- Vocês já precisaram abrir mão de uma game engine, como unity, em algum projeto? Se sim, foi por razões de custo de processamento?
- Na wild a gente usava uma engine própria baseada em webgl em js devido à necessidade de uma performance melhor pra produção de playables de <= 2MB
- Como é a interação entre as equipes no desenvolvimento de jogos?
- Artistas produzem os assets e os devs pegam esses assets e desenvolvem os playables. O desenvolvimento é bem individual mesmo
- Quais os maiores benefícios e os maiores desafios enfrentados no estágio da Google?
- O nunes sugeriu esse vídeo, nele tem a resposta para essa pergunta -> [2]
- Como foi o processo para conseguir tentar o estágio na Google o no Facebook?
- O nunes sugeriu esse vídeo, nele tem a resposta para essa pergunta -> [3]
- Qual linguagem você recomenta para quem quer começar desvolver um game? E qual engine você recomenda?
- C#, unity
- A carreira de game developer é estressante?
- Pode ser, dependendo da empresa que você trabalha. A carreira em si é como qualquer outra
- Como você fez para conseguir entrar em empresas tão grandes? Foi indicação por causa das boas colocações nas maratonas?
- Não respondida
- Gostaria de saber como estudar a lingagem de programação para jogos no caso C# para unity e C++ para Unreal. Pois ja começei os estudos em C# mas quando fui tentar usar no unity vi que é muito diferente. Como se adaptar?
- Não respondida