Раньше я довольно расстраивался из-за того, что так поздно вошел в компьютерные науки. Я имею в виду, посмотрите на это, все самые крутые вещи, которые включают в себя основы компьютерных наук, которые мы изучали в школе, были изобретены — языки программирования, операционные системы, структуры данных и алгоритмы, системы хранения, криптография, компьютерная графика, всемирная паутина и т. д. Наши повседневная работа заключается в том, чтобы брать эти замечательные инструменты, созданные другими блестящими людьми, а затем соединять их вместе с операторами if/else. Все становится черным ящиком, и эти ящики становятся все больше и больше.

Вот несколько примеров:
 – двоичные файлы → языки и фреймворки высокого уровня
 – формальное доказательство → хаотическая обезьяна
 – локальная среда → облако
 – деревья решений → нейронные сети.

Из-за того, насколько высоки нагромождения абстракций, просто нет возможности все понять. Таким образом, у нас нет другого выбора, кроме как использовать подход ленивой оценки — когда мы доверяем системам и инструментам, чтобы они работали, и только когда это не так, мы начинаем копаться в слоях абстракции, пытаясь понять и решить проблему. Если нам повезет, мы сможем докопаться до корня проблемы. В других случаях это настоящий черный ящик (будь то из-за умственных ограничений, таких как нейронные сети, где наш мозг просто не имеет такой возможности для обработки всей информации, или из-за физических ограничений, таких как облачные продукты). , где исходный код закрыт как коммерческая тайна), где все, что мы могли бы сделать, это метод проб и ошибок — мы формируем произвольную гипотезу, проверяем ее и проверяем ее вывод, чтобы увидеть, соответствует ли она гипотезе. И, возможно, с этим недавно заключенным предубеждением подтверждения мы решили проблему, но мы все еще не до конца понимаем коробку, поэтому у нас остается намек на грусть. Теоретически мы могли бы построить все с нуля, но работа в отрасли означает, что производительность превыше всего; мы, конечно, не будем долго работать, если будем настаивать на этом.

Моему эго потребовалось некоторое время, чтобы принять эту реальность. Но как только я это сделал, я понял: как недальновидно с моей стороны думать, что все самое крутое уже изобретено! Смысл изобретения в том, что его еще нет. Так что предположение, что все самое крутое уже изобретено, абсурдно (и самонадеянно). Вместо этого область для инноваций просто переместилась на уровень абстракции вверх, а я неохотно остался внизу. Я научился восхищаться существующей надежностью и сложностью систем и инструментов, которые у нас уже есть, и в то же время пытаться извлечь из этого уроки, пытаясь выявить пробелы и улучшить экосистему.

Сегодня, размышляя на более высоком уровне, у меня в голове так много потенциальных областей для улучшений (с точки зрения инженера по инфраструктуре, поэтому эти идеи довольно ограничены):
- Почему самые популярные языки программирования по-прежнему предназначены для одной машины и должны полагаться на библиотеки, построенные поверх прикладных протоколов, для связи между машинами? Я могу представить себе появление в ближайшем будущем распределённых + декларативных языков программирования, которые абстрагируются от всего этого.
- Почему мы до сих пор застряли на протоколах приложений, таких как HTTP/FTP/и т.д. в любом случае? Я мог бы представить себе более высокий уровень протоколов, которые больше обмениваются данными с меньшим количеством кода/данных.
– Почему мы реплицируем данные в таком количестве разнородных систем хранения, чтобы оптимизировать их для различных моделей использования? Я могу представить в будущем универсальную базу данных, в которой данные хранятся один раз, но при этом используется машинное обучение для оптимизации различных моделей использования.

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