Desenvolvimento Ágil
A Engenharia de Software é uma subárea da Computação responsável por criar métodos, processos e metodologias que visam a criação de softwares de qualidade e de forma eficiente. Formas diferentes de criar um software, suas implicações, a participação dos clientes, a divisão em etapas, dentre outras atividades, são decisões tomadas nesta área. Apesar da tarefa de criar um software ser muito mais complexa que a elaboração e preparo de uma receita, uma analogia provável é analisarmos os fundamentos que baseiam um curso de Culinária.
Fazendo analogia com o desenvolvimento de software tradicional, quando vamos a um restaurante, consultamos o cardápio para saber o que comeremos. Fazemos o pedido e, após um tempo, recebemos o prato preparado. Infelizmente, não é pouco frequente o prato não nos agradar, seja pelo ponto do cozimento de algum alimento, seja por conter algum ingrediente que não desejávamos e que não sabíamos que era utilizado. Nos restaurantes mais caros, é comum o prato ser refeito ao gosto cliente, e o restaurante absorve o prejuízo. Nos mais baratos, é comum os clientes comerem pouco do prato. Em ambas situações os clientes saem, no mínimo, desapontados com o serviço prestado.
No desenvolvimento ágil, a analogia pode ser feita aos restaurantes onde há maior interação entre cliente e cozinheiro. Por exemplo, imagine que os pratos são preparados na frente do cliente, o qual pode sugerir personalizações de forma a deixar o prato mais adequado ao seu gosto. Essa interação aumenta a chance de que o prato preparado agrade por completo o cliente, o que também diminui a chance do restaurante ter prejuízo com o preparo.