David Thomas, ou simplesmente Dave Thomas é programador de computador, autor e editor. Ele escreveu sobre Ruby e, juntamente com Andy Hunt, foi co-autor do livro “The Pragmatic Programmer” e dirige a editora “The Pragmatic Bookshelf”. Thomas mudou-se para os Estados Unidos da Inglaterra em 1994 e vive ao norte de Dallas, Texas.
Thomas cunhou as frases ‘Code Kata’ e ‘DRY’ (Don’t Repeat Yourself)*, e foi um signatário original e autor de O Manifesto para Desenvolvimento de Software Ágil. Ele estudou ciência da computação no Imperial College London.
É também criador do CodeKata (http://codekata.com/) que usa uma analogia ao Kata da arte marcial Karatê, para ensinar programação e desenvolvimento de software desde um nível básico CodeKata 01 até como enfrentar os desafios mais difíceis em CodeKata 21.
No ano de 1998, conheceu a linguagem Ruby e escreveu o livro “Programming Ruby” que tem o objetivo de apresentar a linguagem ao mundo. Dave foi um dos apoiadores da documentação da linguagem, e como ele mesmo diz, evangelizou o uso do Ruby durante mais de uma década.
Em 2001, participou ativamente da criação do “Manifesto Ágil” o que segundo ele mesmo, “Ainda estou incrivelmente orgulhoso desse documento, e do impacto que ele teve na indústria. Ao mesmo tempo, estou angustiado com a forma como esses quatro valores originais foram cooptados e distorcidos para justificar todo tipo de mau comportamento e produtos duvidosos” em seu blog pessoal.
Trabalhou junto com Joe Armstrong (um dos criadores da Erlang) quando escreveu Programming Erlang, e estava naturalmente interessado quando Elixir apareceu, e seu interesse o fez escrever Programação Elixir para ajudar os outros a descobrir esta linguagem incrível. Seu último livro, intitulado Simplicidade foi como uma resposta a complexidade ridícula que se infiltrou nos processos, ferramentas e na própria área de programação. O livro, é uma tentativa de recuperar o objetivo original do Ágile e ajudar os desenvolvedores a manter a consciência diante do quadro geral, não se fixando em estruturas, bibliotecas, frameworks ou algoritmos complicados. Atualmente, presta consultoria e ministra palestras, conferências e workshops em todo o mundo.
* DRY é um princípio de desenvolvimento de software destinado a reduzir a repetição de informações que provavelmente mudarão, substituindo-as por abstrações que são menos propensas a mudar ou usando a normalização de dados que evita a redundância em primeiro lugar. Declarado como “Todo conhecimento deve ter uma representação única, inequívoca e autoritária dentro de um sistema”.