Bene, non posso essere completamente d'accordo, perché devi preoccuparti di tutto. E del resto, una delle cose che amo della programmazione sono i passaggi attraverso diversi livelli di astrazione e dimensioni che passano rapidamente dal pensare ai nanosecondi al pensare ai mesi e viceversa.
Tuttavia, le cose più alte sono più importanti.
Se ho un difetto in un paio di righe di problemi che causano comportamenti errati, probabilmente non è troppo difficile da risolvere. Se sta causando un rendimento inferiore, probabilmente non ha nemmeno importanza.
Se ho un difetto nella scelta della struttura dei dati in un sottosistema, ciò causa un comportamento errato, è un problema molto più grande e più difficile da risolvere. Se sta causando una performance insufficiente, potrebbe essere abbastanza grave o sopportabile, ancora sensibilmente meno buono di un approccio rivale.
Se ho un difetto nella relazione tra le più importanti strutture di dati in un'applicazione, ciò causa un comportamento errato, ho una riprogettazione enorme di fronte a me. Se sta causando un rendimento inferiore, potrebbe essere così male che sarebbe quasi meglio se si stesse comportando in modo sbagliato.
E sarà ciò che rende difficile trovare quei problemi di livello inferiore (correggere i bug di basso livello è normalmente facile, è trovarli che possono essere difficili).
La roba di basso livello è importante e la sua importanza rimanente è spesso seriamente sottovalutata, ma impallidisce rispetto alla roba grande.