Не бывает понятного спагетти кода. Да, Вася может постоянно вариться в этом коде и потому помнить, что где и как делается. Также, и другой программист, после долгого изучения выучит, что, где и как работает. Но если оба месяц-два поработают с другим проектом, то уже с трудом будут помнить что и где находится, а код им в этом не поможет. Очень часто заказчики попадают в рабство таких Вась, просто по причине своей скупости, но яхты им никто не будет покупать.
Так же и с оптимизацией, управление сложностью гораздо более важная задача, потому что от нее зависит все, а оптимизация нужна только на отдельных участках, и эти участки зачастую не определимы сразу. А "кривой, но круто оптимизированный" код возможен только для каких-то очень простых задач. В противном случае, вы очень быстро потеряете контроль над проектом.
В сортировке пузырьком нет никакой архитектурной ошибки, иначе бы ее не использовали в обучении. Хотя есть и более эффективные варианты. А если говорить про архитектуру, то наиболее эффективен монолитный кусок, без шин обмена, API, модулей, сервисов, автолоадинга, ООП, да и вообще классов, конфигураций, обработки исключений, портируемости и т.п. Но такая не расширяемая, не поддерживаемая, не тестируемая и от того нестабильная, какашка, никому не нужна.
var b = document.getElementById(id).value;
var val = document.getElementById(id).value;