Nie do końca zgodzę się, że zaprzestano optymalizacji oprogramowania w ogóle. Wszystko zależy od branży/technologii i zastosowania danej aplikacji.
Same kompilatory wielu języków, bez względu na to czy to C, C++ czy Java są dzisiaj na tyle rozwinięte, że dokonują olbrzymich optymalizacji automatycznie. Oczywiście, nigdy nie będą one "skrojone na miarę" procesora/maszyny wirtualnej, jednak robią co w ich mocy by wyjściowy program wykonywał się możliwie szybko. Optymalizacje dokonywane manualnie na poziomie assemblera rzadko mają duży wpływ na wydajność.
Jednocześnie na problem należy spojrzeć z innej strony - dzisiejszym podejściem do tworzenia oprogramowania jest tworzenie go tak, aby był przenośny między platformami i możliwy do późniejszego rozwijania. Czysto napisany kod często obniża wydajność aplikacji (poprzez np. dodanie dziesiątek warstw abstrakcji, które zdecydowanie "zmulają" wykonanie programu), jednak pozwala on na to, by kolejny programista przyszedł, spojrzał na kod, wiedział gdzie co się znajduje i jak mniej więcej działa. Bez zbędnego przekopywania się przez dżunglę optymalizacji, uproszczeń, hacków i tak dalej...
Jeżeli chodzi o Facebooka to tak, strona (a raczej aplikacja webowa) jest niesamowicie ociężała. Składają się na to dwa czynniki: olbrzymia ilość elementów na stronie, również tych których nie zawsze widać i przede wszystkim to, że strona jest dynamicznie budowana przez ReactJS (częściowo) po stronie przeglądarki. Taki model aplikacji pozwala na oddelegowanie zadań do klienta, odciążając serwery usługi. Co więcej, użycie takiego frameworka sprawia, że aplikacja jest łatwo rozbudowywalna i zmniejsza ryzyko występywania "bugów". Do tego staje się ona łatwo skalowalna.
Kolejna rzecz, która umożliwia pominięcie dużych optymalizacji w kodzie, przynajmniej w branży webowej to niska cena hostowania i utrzymania programu. Żyjemy w czasach, gdzie hostowanie serwera VPS przez miesiąc, zdolnego do udźwignięcia niemałych aplikacji, kosztuje nierzadko mniej niż obiad w barze mlecznym. Utrzymanie serwera pod Starepro kosztuje mnie tyle co nic ;)
Tak jak napisałem na samym początku, wszystko zależy od branży/technologii i zastosowania aplikacji. W systemach wbudowanych, gdzie mamy ograniczone zasoby, skupienie się na optymalizacjach będzie konieczne, natomiast w aplikacjach webowych nie ma takiego wymogu - wystarczy dołożyć kolejny serwer w razie potrzeby by ją skalować (stąd też założenie, że powinno się utrzymywać dobrą jakość kodu). Optymalizacje częściej dotyczą środowiska wykonania programu, niż samego programu.
A w silnikach graficznych/fizycznych (np. w grach), czy w przypadku aplikacji do obróbki multimediów - i tak liczy się moc karty graficznej i sprzętowa akceleracja zadań, bo procesor i tak często nie wyrobi ze względu na swoją uniwersalność :)
Trochę pfcode'a i technika się gubi.. ~ Aveo, 2015