Изучать C++ — легко

Изучать C++ — легко

Да, история трудоустройства одной моей подруги из предыдущего поста так быстро не закончилась. Загнавшая сама себя в дурацкую ситуацию Анна не сдавалась и продолжала в экстремальных условиях колоссального стресса и горящих сроков поглощать нездоровые объемы кофе и изучать С++.

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

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

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

Получив положительный отклик от руководства, Анна была поставлена в качестве наставника следующему стажёру. Это была удивительная ситуация: в фактическом подчинении у с трудом способной разобраться в самых простых кусочках кода Анны оказалось уже два человека, навыки каждого из которых на голову превосходили ее собственные. Дни шли, а Анна продолжала свою борьбу, проклиная компиляторы и злосчастные точки с запятой. Она продолжала вести дневник своих неудач: "День 145: Если на экране расползаются черные пятна, это NaN пролез аргументом в шейдер”. Навыки Анны как программиста росли, она уже могла решить любые простые задачи на LeetCode и даже некоторые средние задачи. Совершенно безумная кривая сложности обучения наконец сгладилась (это ж надо было начать изучать программирование с шаблонов!). Да и двое толковых подчиненных отлично справлялись с задачами, выданными на троих. Анну официально повысили в должности и она стала лидить небольшую команду.

Рассказы Анны о своей карьере вызывали у продолжающих учиться друзей и подруг жгучую зависть и желание бросить учебу, причем волновали они не только подруг, но и их родителей. Отец лучшей подруги не выдержал и после очередной истории о головокружительном карьерном росте Анны, подарил ее подруге небольшую софтверную компанию в долине, чтобы исправить самооценку дочери, ну и “чтобы у девочек было больше общих тем для общения в спа”.

Анна продолжала совершенствовать свои навыки, работа над проектом продвигалась хорошо и полной неожиданностью для всех (кроме, конечно, давно планировавшего это руководства компании) оказалось закрытие проекта. Да-да, к сожалению, по совершенно независящим от Анны и никак не связанным с процессом разработки причинам, неанонсированный игровой проект, над которым работала Анна, закрыли, а всем программистам предоставили возможность перейти в другие команды. Многие сильные разработчики отказались и уволились, среди них была и группа Анны в полном составе. Анну вместе с подчиненными переманила к себе подруга. Новая должность означала для Анны необходимость прервать изучение книги “C++ Primer”, так и не добравшись до обработки исключений, и переключиться на “The Goal”, “The Phoenix Project” и гайды по прохождению system design-интервью.

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

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

Некоторые говорят, что Анна поступила неэтично, но я привожу здесь эту историю не для того, чтобы обсудить этичность ее действий. Эта история показывает, что нет ничего сложного в том, чтобы в спокойной обстановке, когда тебя никто не торопит, научиться писать игры на С++, особенно если начать изучение С++ не со сложных проблем с шаблонами, а с основ, с минимального базиса, позволяющего создавать совершенно любые программы. И этот базис настолько прост, что программировать с его применением можно начинать в самом раннем возрасте.

Чем раньше человек начинает чему-либо учиться, тем проще для него проходит это обучение. Если начать изучать программирование лет с 6-8, то еще в школе можно полностью овладеть всеми возможностями языка С++ и создать множество разнообразных игр, как это, собственно, и делали лет 40 назад, когда создание игр считалось достаточно простым занятием и многие создавали игры в одиночку всего за несколько… нет, не лет, дней.

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

Одно дело - когда человеку сказали - иди и изучай умножение вектора на матрицу, а человек не понимает, зачем ему это нужно, и совсем другое, когда человек хочет сделать не 2д а 3д игру и для этого всего-то и нужно научиться умножать вектор на матрицу. А чтобы желание создавать игры не затухало, очень полезно понять, насколько на самом деле это просто — создать небольшую игру. Причем не в каком-то конструкторе игр, в котором только такие игры и можно создавать, а на самом серьезном языке, С++, на котором создано большинство ААА игр и игровых движков.

66
3 комментария

О, продолжение фанфика. Не останавливайся только.

2
Ответить

Героиня фанфика по знаку зодиака Лев.

Ответить

Думаю, Лев не рискнул бы так мощно опозориться, если раскроют.

Ответить