Хотя вам редко требуется глубокий анализ кода, важно знать, что это значит, и уметь быстро оценивать сложность кода, который вы пишете, и последствия, которые он может иметь.
Во время разработки вы часто чувствуете, что это "достаточно хорошо". Эх, никто никогда не поместит более 100 элементов в этот массив, верно? Затем, однажды, кто-то поместит 1000 элементов в массив (доверяйте пользователям: если код позволяет, один из них сделает это). И тот алгоритм n ^ 2, который был достаточно хорош сейчас, является большой проблемой производительности.
Иногда это бывает полезно с другой стороны: если вы знаете, что вам функционально необходимо выполнить n ^ 2 операций, а сложность вашего алгоритма равна n ^ 3, возможно, вы можете что-то с этим сделать, чтобы сделать n ^ 2. После n ^ 2 вам придется работать над меньшими оптимизациями.
Напротив, если вы только что написали алгоритм сортировки и обнаружили, что он имеет линейную сложность, вы можете быть уверены, что с ним есть проблема. (Конечно, в реальной жизни случаи, когда вам приходилось писать собственный алгоритм сортировки, редки, но однажды я увидел кого-то в интервью, кто был явно удовлетворен его единственным алгоритмом сортировки по циклам).