Simplicidade guiada pelo contexto

Estava vendo um vídeo sobre como saber se uma pessoa toca bem ou mal a bateria. E já vi gente fazendo essa pergunta sobre desenvolvimento de software. E aí, como se mede se uma pessoa desenvolve software bem ou não?

Sobre o “desenvolver software”, algumas perguntas podem aparecer, como exemplo: sabe padrões de projeto? Conhece ferramentas de automação? Mais de N linguagens de programação? É especialista em alguma linguagem? Tem certificações?

Eu já pensei muito sobre isso, e vejo um padrão interessante. Na uMov.me a gente tem um teste prático para a galera fazer durante o processo de conversas. Esse processo permite viajar muito longe no código fonte. É um problema simples. E muito por isto, a gente pede que a pessoa use no máximo 1 hora do tempo para realizar o exercício. E também um foco sobre modelagem do problema e validação com testes automatizados.

Não tenho problema sobre as pessoas realizarem mais horas (na verdade tenho), mas acho que esse jogo da restrição de uma hora serve por alguns motivos:

  • Não deixar a pessoa ter todo o tempo do mundo para planejar e pensar sobre a melhor solução. A restrição de tempo ajuda neste sentido.
  • Ao indicar o foco em modelagem e automação, as pessoas não tem chance de tentar usar um super framework do momento ou coisa do tipo. Esse tipo de discussão a gente percebe quando conversa na entrevista, questiona sobre projetos que se participou, desafios, modelos de aprendizado de novas tecnologias e coisas assim.
  • Não quero que a pessoa perca tempo demais neste processo. Já vi empresas usarem os testes de contratação para repassar trabalho de produção para quem participa. E não vejo problema algum em fazer isto, se ao final do trabalho realizado a pessoa seja remunerada. Vejo o teste como uma história de usuário em desenvolvimento, funcionando como um lembrete para conversa.

O ponto todo é que mesmo falando todo esse blá blá blá, no final do dia saber se uma pessoa desenvolve bem software ou não, na minha visão, vai se resumir em uma pergunta: essa pessoa, consegue levar em conta o contexto do problema para trabalhar a solução? Consegue atuar com abstração, reconhecimento de padrões e quebra de problemas em problemas menores?

Nota, a pessoa pode ser a melhor em uma determinada técnica, mas não necessariamente em todo momento aquela é a única pessoa técnica disponível. Ela combina com o ritmo de entrega esperado pelo cliente? É possível demonstrar avanços ao cliente, sobre o trabalho sendo realizado?

No fim, assim como o vídeo abaixo fala que o bom profissional da bateria é aquele que consegue tocar com a música e fazer parte dela, o desenvolver software bate muito parecido quando penso nisso. Se eu consigo desenvolver software tendo o contexto de negócio, restrições de tempo, financeiras e técnicas (exemplo infra), me adaptar conforme a necessidade, esse vai ser sempre um excelente diferencial.

— Daniel Wildt (faça parte do meu clube)

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s