Часто на собеседованиях задают вопрос “какую самую сложную задачу вам приходилось решать?”. Насколько я понимаю, хотят услышать о решении именно технически сложной задачи (а не социо-технической a la “доказать всем вокруг что твое решение лучшее”).

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

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

Поэтому, каждый раз, когда мне задают этот вопрос, мне хочется ответить — “вы знаете, я вот в институте делал лабы по парсингу арифметических выражений и построению из них AST, вот это было действительно сложно. А еще мы писали эмуляторы файловых систем, планировщиков ОС. А еще я делал визуализацию графа и потратил прорву времени на то, чтобы грамотно нарисовать стрелочки между вершинами и вращать их при перетаскивании вершин мышью. И вообще, на красивый GUI тратил кучу времени. А еще я диплом делал по генетическим алгоритмам. Вот это были сложные задачи, а то, чем я на работе занимался все эти 10+ лет — это так, ерунда, даже на курсач не тянет”.

Увы, такой ответ не устроит собеседователей, поэтому приходится тужиться и вспоминать какую-то ерунду, типа “приложение ООМ давало и надо было сидеть ковырять хипдампы в поисках утечек”.

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

Наверное, где-то есть действительно технически сложные задачи, вот например фильтры для фоток на телефоне в реальном времени (Looksery кажется) — вот там сидят олимпиадники и че-то дичайше оптимизируют чтобы оно быстро считало. Или движки 3д-игор, там тоже сложнааааа наверное, всякие матрицы векторы и аналитическая геометрия во все поля. Или 4K демки — сиди и думай как тебе анимацию и звук запихать в 4 килобайта кода.

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