Возможно, есть какая-то причина, по которой большинство производителей продуктов, особенно те, которые мы все знаем как FAANG, уделяют так много внимания концепциям информатики, таким как структуры данных и алгоритмы.

По сути, давайте начнем с некоторого понимания этих слов и контекста вокруг них. (Обратите внимание: это не официальное определение слов, а более широко используемое в отрасли)

Кодер. Человек, который может перевести некоторую логику в понятный машине код, может называться кодером, поскольку он может «КОДИТЬ» и заставить машину понимать (или вести себя в определенным образом).

Программист: человек, который может писать чистый код для разработки надежных систем корпоративного уровня. Программист (обычно) смотрит на более широкую картину, рассматривая программирование лишь как один из навыков. Обычно они смотрят на производительность того, что они пишут, как на код, и на то, как код будет вести себя при определенных обстоятельствах.

Аналогия

Кодирование больше похоже на печатание вымышленной книги детективов об убийствах. Автор тратит большую часть своего времени на прорисовку персонажей, построение ситуаций (и многое другое, о чем я могу не знать 😉), прежде чем напечатать это. Но как только все это прояснилось в их голове, они используют пишущая машинка (или iPad, или другой инструмент), чтобы написать это. Точно так же навыки кодирования можно рассматривать как инструмент (в данном случае пишущую машинку), а программистом будет тот, кто думает и делает тяжелую работу, чтобы решить проблему эффективно.

Почему?

Итак, почему важно писать код эффективно? Хм…

Что ж, чтобы ответить на этот вопрос, давайте рассмотрим пример:

Предположим, что кодировщик (не программист, согласно приведенному выше определению) нанят НАСА, и ему дали задание написать фрагмент кода, который выполняет определенные вычисления, чтобы убедиться, что ракетный корабль готов к посадке.

Для простоты предположим, что эта задача может быть решена с временной сложностью O(N). Теперь нужно было выполнить несколько операций, и потому что время здесь имеет решающее значение (при условии, что посадка ракетного корабля является критической операцией). Допустим, кодер мало думал о производительности, кусок кода был сложности O(N²), и что теперь будет, когда N становится очень большим.

И это верно для многих мест, особенно для крупных продуктовых компаний, большинство мелких ошибок исторически обходятся компаниям в миллионы долларов (если не в миллиарды). Есть очень интересное видео о просмотрах видео на YouTube, зависших на (или близкой к 301) позиции, которое может немного помочь нам понять, как = имеет значение при написании кода.

Я понимаю, некоторые из нас могут возразить, что не все приложения имеют такие критические ограниченные по времени операции, но определенно это помогает сгладить наши системы.

Это похоже на прокладку 3-мильного маршрута к вашей ванной комнате, только потому, что мы не чувствовали большого давления во время определения планировки нашего дома.

Наконец, я настоятельно рекомендую всем задуматься об этом на секунду и постараться стать лучшим программистом/разработчиком/кем бы мы ни хотели быть в своей жизни. Ведь все это в нашей досягаемости! Возможно, просто нужно немного больше толчка.

И как сказал Стив Джобс: «Оставайтесь голодными! Оставаться глупым!".