Por que robótica faz de você um engenheiro de software melhor

Anos ensinando robótica no HKDI mudaram a forma como penso software. Eis o que o planejamento de movimento me ensinou sobre design de sistemas.


A disciplina das restrições

A robótica obriga-te a pensar em restrições. Um servo tem limites. Um sensor tem ruído. Um loop em tempo real tem uma deadline. Isto não são desculpas; é o próprio espaço de design.

Em software, muitas vezes podemos ser relaxados. Acrescentamos mais memória, ligamos outro servidor ou apanhamos a exceção. A robótica não perdoa tão facilmente esse tipo de pensamento.

O que aprendi a ensinar no HKDI

Quando dava aulas no Hong Kong Design Institute, reparava que alunos com dificuldade em conceitos abstratos de software passavam a percebê-los quando os ligávamos a um sistema físico. Ver um braço robótico falhar por causa de um erro numa máquina de estados torna a máquina de estados algo real.

Como aplico isso ao código

Hoje, quando desenho software, penso em:

  • Prazos: o que acontece se isto for lento?
  • Estado: como está o sistema em cada momento?
  • Modos de falha: quando isto quebra, como quebra?

Estas perguntas vêm naturalmente da robótica. E fazem melhor software.