Most of the value of understanding computational complexity of code is that you get a little voice saying "hey, this is probably going to cause issues on larger data sets" after writing something that passes tests and works on small pieces of trial data. A Chinese-Room understanding of O(n^2) vs O(n) and O(1) is plenty for noticing these, and may actually out-perform a more thorough understanding; what you want is to notice things going quadratic as you rush through a code review or slam out a feature, and that is almost entirely reliant on pure pattern recognition.