Post muito bom!
Algo interessante que percebi foi a sua postura de entender a dor do cliente. E já é algo tão natural para você que já está fazendo até com o barbeiro, hoje em dia!
Muitos softwares nascem mortos porque não escutam os possiveis clientes. Da mesma forma, muitos softwares dão muito certo porque entendem que podem gerar valor objetiva e concretamente para alguém.
Mas pra saber isso você tem que conversar com a pessoa, saber as perguntas certas a se fazer. Você precisa saber lidar com gente.
Um soft-skill essencial para um programador é essa empatia: mais do que somente entender o que atrapalha alguém, encontrar uma forma de ajudar, de trazer mais lucros. Eu até acrescentaria essa habilidade àquelas que listei neste post: as três soft-skills essenciais para o dev.
É só com essa mentalidade qus a gente consegue gerar valor concreto para alguém, como programador.