Pegando o eixo que você falou que o software cresce, muda, morre e são substítuidos. Acredito que ele funcione de forma similar a "Dialética", apesar de ser algo relacionado a filosofia o desenvolvimento FUNCIONA DA MESMA FORMA: duas coisas opostas ou que são realizadas de formas diferentes, quando debatidas, formam uma coisa nova que na grande parte das vezes é muito melhor que a antiga (fazendo com que muitas coisas aconteçam por baixo dos panos, e tá tudo bem).
Isso era algo que eu comecei a refletir esses dias após ter feito uma aula sobre linguagens de baixo nível e alto nível. As linguagens de alto nível são provenientes das de baixo nível, grosseiramente falando, porém as de alto nível ela realiza as mesmas coisas (sem entrar em detalhes técnicos), de modo que a construção do software seja mais rápido e que atenda aos mesmos requisitos que a de baixo nível.
E isso é o que um engenheiro de software faz. Resolve problemas, otimiza perfomance e aumenta produtividade. Então aquela coisa de escrever 010101, já passou, assim como também vai passar os comandos que a gente realiza hoje.
Pare para olhar, o tanto de framework que vem surgindo... Até momentos anteriores a gente tinha que fazer requisição no banco para realizar um CRUD, hoje em dia a gente tem os ORM's, até momentos anteriores a gente tinha que alocar memória e desalocar memória, hoje em dia existem linguagens que nem precisa mais realizar isso (apesar de existirem no mercado algumas que ainda necessitam disso).
Mas de modo geral, eu acredito que a essência do software é continuar aprimorando funcionalidades que já existem, de modo que aumente nossa produtividade, remova os antigos de modo de realizar, e tá tudo bem! Não há problema nenhum em acontecer coisas por baixo dos panos como muita gente fala, desenvolvemos, para atender o mercado que a cada dia ta pedindo mais velocidade e qualidade.