Este documento descreve o exercício de programação para a vaga de Engenheiro(a) de Software da VAGAS.com.
- O prazo para entrega da solução é de 7 dias corridos, contados a partir da data de recebimento do desafio. Caso você precise de mais tempo, entre em contato conosco e fechamos uma nova data para a entrega. Não se preocupe, somos super flexíveis ;)
- Utilize uma das seguintes linguagens: Ruby, Python, Java ou C#. Caso queira desenvolver em uma linguagem diferente das listadas aqui, fique à vontade. Podemos demorar um pouco mais em dar um retorno nesses casos.
- A utilização de frameworks/bibliotecas é livre para a construção da solução, exceto quando o enunciado indicar o contrário.
- Em relação aos dados, estes poderão ser armazenados em memória durante a execução da API ou em banco de dados (relacional, não-relacional, chave-valor etc.). Escolha o que achar que faz mais sentido para o problema.
- O código produzido deve estar versionado em algum repositório público (Github, Bitbucket etc.)
- Quando estiver tudo pronto, você deve mandar um e-mail para [email protected] com o assunto
Engenheiro(a) de Software VAGAS.com - <%SEU_NOME%>
e o link para o seu repositório.
O desafio pode ser acessado pelo link.
Crie uma documentação breve sobre a sua solução, com explicação sobre a arquitetura/design e hipóteses assumidas.
Esperamos também um passo a passo de como executar a sua solução. Quanto mais simples, melhor. Vale ressaltar que a execução não poderá depender do uso de alguma IDE específica.
A utilização de Docker é um plus ;)
A sua solução será avaliada por um time de engenheiros(as) de software aqui da VAGAS.com, com base nos seguintes critérios:
- Build: A solução contém instruções claras para configurarmos o ambiente e fazer o build?
- Execução: A documentação enviada contém todas as instruções necessárias para executarmos sua solução? Todos os requisitos foram implementados na solução entregue?
- Performance: A solução possui uma performance adequada?
- Manutenibilidade e extensibilidade: O código escrito é de fácil leitura? O quão fácil é criar novas funcionalidades na solução existente?
- Arquitetura e Design: Como está desenhada a arquitetura da solução? As responsabilidades estão bem definidas? Foi utilizada alguma técnica para guiar o desenvolvimento?
- Qualidade de Código e Testes: Foi utilizada alguma ferramenta de estilo de código para a linguagem? A solução possui testes unitários? É fácil alterar os testes caso haja modificação na solução?
Esperamos que você se divirta codificando essa solução. Estamos aqui ([email protected]) caso surjam dúvidas durante o desenvolvimento.
Bom código! ;)