Esta sempre foi pra mim uma das comparações mais nocivas em relação à nossa área, mas já que estamos comparando, vamos lá!
Responsabilidade
A primeira diferença pra mim é a questão da responsabilidade: quem mencionou isto tá coberto de razão. Programador se esquece que software não raro mata e ninguém sofre consequência alguma.
Além de matar também destrói vidas, sonhos, negócios quando é mal feito e, pro meu horror, as pessoas simplesmente não pensam nisto. Na minha opinião deveriam existir entidades responsáveis por validar se o software é bem projetado e construído, tipo o CREA. Não estou falando em regulamentar a construção, mas de um QA realmente profissional (algo que nunca vi).
Cinco anos atrás escrevi sobre isto, aliás: https://www.itexto.net/devkico/?p=1741
Previsibilidade
Aqui na minha opinião é aonde o bicho pega. Software, ao contrário da construção civil é imprevisível por natureza e portanto não devíamos sequer pensar nesta comparação.
Se vou construir uma parede, consigo facilmente prever quanto tempo leva pra que ela seja levantada: os tijolos tem tamanho similar (o mesmo na maior parte das vezes), a área a ser construída é conhecida de antemão e você sabe claramente quantos tijolos o operário consegue colocar na parede por hora. Logo, no que diz respeito à construção, dá pra prever.
Agora, será que consigo prever o mesmo no que diz respeito ao trabalho do arquiteto? Não entendo porra nenhuma de construção civil, mas acredito que não. Então, vamos ao software.
No caso do software, todo mundo deveria ser operário no sentido de que todo mundo deveria saber construir (programar) neste ofício. E aqui entra aquilo que é lindo e traumático no software: toda pessoa é diferente e portanto não podem ser pensadas de uma forma massificada.
Não sei se já notaram, mas já perceberam que os piores gerentes são aqueles que usam o termo “recurso” pra se referir à sua equipe de desenvolvimento. Frases como “disponibilizei seis recursos” aos meus ouvidos soam como o alerta: perdido gerenciando.
Software não é previsível por causa disto: qualquer problema pode ser resolvido de inúmeras maneiras, por que as pessoas pensam de inúmeras maneiras, e é isto que torna a coisa linda.
E ainda há outro ponto aí. Sabe aquele papo do “programador 1000x” que muita gente diz que é mentira? Pois é: é verdade. PURA verdade.
Se você pega, por exemplo, um padeiro muito ruim e um padeiro muito bom, no que diz respeito à produtividade, a diferença entre os dois não deve ser grande coisa. Sei lá: 20, 30%. Quando se fala de gente que programa, a situação muda. Tem aquela pessoa que resolve o problema em 10 minutos de forma brilhante, e a outra que leva dias.
E pra piorar, você ainda tem variações de humor. Se você pensa em software como matemática… tá falando merda, não sabe do que tá falando.
Sobre a qualidade
Aí já discordo demais. É possível ter critérios bem objetivos pra coisa, é só saber do que se está falando.