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
  • 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