По мотивам разных постов думаю про то, как же надо поменять мемы в голове, чтобы оно всё получше работало. С примерами из работы, обучения профильного, обучения досугового.
две девушки в баре:
- выпьем за неизменность!
- да, за всё что угодно, кроме измен
Начнём с первой темы, которая меня зацепила.
Инкрементальная и итеративная разработка
Наверное еще более важной историей чем TDD стало для меня понимание важности инкрементальной и итеративной разработки. Моя обычная привычка - попытаться сделать все сразу, частенько не справляюсь и потом фрустрирую. В книге дается объяснения почему так происходит - это происходит из-за слишком длинного цикла обратной связи и потери контроля над тем что происходит. Вообще все практики связаны между собой и помогают тому, чтобы цикл обратной связи был меньше. Итеративная и инкрементальная разработка также направлены на это.
Моё понимание на данный момент:
- итерация - это повторы (повторные улучшения), мы всё время крутим цикл: гипотеза, проверка, рабочий продукт, обратная связь, корректировка гипотезы
- инкремент - небольшое улучшение, чтобы цикл обратной связи был покороче (побыстрее).
Что уже получилось поменять в голове. Восприятие рабочего цикла в виде помидора, где я делаю какой-то рабочий продукт. Это работа инкрементами. Я больше не запариваюсь тем, что мне нужно сделать всю фичу (сторю). Я делаю минимальный кусок, который сама себе сформулировала как гипотезу. Для починки бага это “я думаю что может не работать вот этот кусок, воткнуть туда логирование и посмотреть”. Вполне делается за 25 минут, получается результат, после отдыха идёт новый цикл уточнения. Туда ли я пошла и куда можно пойти ещё. С задачами, тоже самое “вот сделать вот этот кусочек кода, получить результат”. Причём интересно, что это начинает работать вдолгую. Я перестаю воспринимать закрытую задачу, как нечто завершённое. Тут как раз конфликт мемов в голове. Старая прописанная в голове идея звучит “надо сделать (доделать до конца)” и там с ней “дуракам полработы не показывают”. Хотя уже “непрерывное всё”. И вот я делала задачу по визуализации метрик взаимодействия с БД нашего приложения и сделала её уже 3 или 4 раза. Мне мешает морально трекер задач, где я хожу по циклу work in progress, ready for test, test, work in progress. Т.е. не дохожу до closed. Хотя могла бы и закрыть. Т.е. я в первую итерацию просто прикрутила сбор метрик на уровне приложения, потом меня отвлекли. Но я этот сбор молча вылила (потому что и не мешает никому, и доделать хочу и сама себе разрешила). Потом визуализацию в каком-то виде на эти метрики прикрутил коллега, а я докрутила. Снова молча и не закрывая задачу. Третьей итерацией я придумала (это к вопросу о том, что решение рождается из инкрементов) как сделать график долгих запросов. Сделала, вылила, показала коллегам, получила обратную связь. Получила запрос, что хотели бы ещё видеть и пошла на четвертую итерацию. По факту я только сейчас могу сказать, что оно в каком-то приемлемом виде “доделано”. Но и это не значит, что доделано совсем. И задача всё ещё висит не закрытая. Что меня смущает, что во мне борется?
От части поставленный бюрократический процесс. Правильно закрывать задачи. В моём примере это надо было бы развернуть в сторю, а там на каждый инкремент делать подзадачи (и их закрывать). Но мне было лень. И я воспользовалась тем, что здесь мы сами себе заказчики. Т.е. если бы это была бизнесовая задача/сторя, ко мне ходил бы аналитик и задавал вопрос “а когда будет готово”. И в бизнесовых историях я продолжаю чувствовать зуд “не доделано”. Вот мы обсуждали сегодня в очередной раз ситуацию, которая постоянно повторяется. Заводится сторя “сделать сортировку и поиск”, она так же убого описана. Примерно такой же фразой. Нет уточнений никаких, а техническая сложность уже есть. Для бизнеса (аналитиков) это выглядит как что-то простое и что можно сделать быстро. А когда это начинаешь делать, по отсутствующему описанию, вылезают косяки. Причём они вылезают на этапе тестирования. Вот тут работает, а тут не работает, а тут я ещё не успел проверить. И когда часть косяков поправлена, а нетерпеливый аналитик просит это катить в прод, у меня начинается сопротивление “но мы же знаем, что вот тут не работает, нельзя такое катить, оно не доделано”. Как это в голове победить? Т.е. я пока вижу всего два варианта. Первый уговорить себя, что лучше выкатить хоть что-то, чем не выкатить ничего. Сейчас полностью не работает, а так будет работать хотя бы кусок. Второй вариант: наплевать на ощущение “не доделано”. Плевать не хотелось бы, некрасиво.
Вторая тема вытекает из “долой дипломы” и вопроса об отношении к обучению.
Обновление знаний
Учиться хорошо и приятно. Но как будто учиться чему-то новому. Если новому учимся, то по полной. А если я этому уже училась, то по полной вроде не надо? Поясню. Тоже шатается в голове конструкция восприятия обучения. Есть Физикл - помимо постановки образа жизни в теме питания и активности, там есть довольно большой блок знаний (видео лекции, с саммари про всякое: калории, БЖУ, соль, молочка, вода, витамин D3). На удивление автор проекта лекции переписывает достаточно часто (раз в несколько месяцев). Внимание видео лекции переписывает! Потому что исследования выходят, мир меняется. Одно время говорили, в яйцах холестерин, их нельзя много есть. Потом оказалось, что холестерин в яйцах полезный, и надо 2-3 желтка в день. Потом уточнили, что надо, но не всем, есть ограничивающие факторы. Перепрошивка никуда не деться. И это первый мой учебный курс, где я нормально восприняла идею “заходить раз в год обновить знания”. Там есть подоплёка погонять себя по образу жизни (подтянуть привычки там, где они просели). И народ каждый поток и в комментах во всех сетях спрашивает: что это вы такое продаёте, что оно с первого раза не работает, почему к вам люди (которые успешно похудели) возращаются ещё и ещё?! Обновление прошивки, улучшение результата. Да, видите, “денег жалко и я же один раз уже сходил, чо вы там мне нового такого расскажете”. Культуры обновления нетуть. Но я с 2020 года в физикле была 3 раза. Все разы дошла до конца, хотя везде было “что-то пошло не по плану”. Я думаю, тут работает защитный механизм “я не эксперт, я не могу знать достаточно, человек копает это постоянно, ему можно довериться”. Т.е. несите ваши SoTA, я готова подписаться на обновления. А если взять курсы по проф.области, начинает давить на голову шапка эксперта. Программерский курс от классного автора выходит в феврале 24го года, 4й поток. Я была на 2м потоке, т.е. два года прошло. Программу я посмотрела, там есть изменения. В языке/стеке тоже само собой изменения есть. Но до поста Левенчука про отмену водопада, я смотрела со скепсисом. Т.е. у меня есть запись старого курса, я на него ходила будучи начинающим специалистом в этом стеке (меняла стек), это было критично для карьеры. Сейчас я себя чувствую уверенно итак, и вот это опять “ну чего уж там такого я не знаю, чтобы тратить время и деньги на повторное прохождение курса”. А после прочтения поста, решила тряпочкой протереть свои мемы. Можно ли вообще говорить “повторное” по смыслу, когда всё изменилось? Т.е. человек доработал курс, язык изменился, я изменилась, мой опыт изменился. Не уж-то я не найду там новые слои знаний и развитие? Записалась на курс, будем тестить новое отношение и прописывать себе новый мем. Обучение - это обновление прошивки. Надо ещё мышление письмом впихнуть куда-то. На программерских курсах чаще всего формат видео лекций. Не делала никогда по ним заметок, даже мысли не было попробовать. Теперь мысль есть!
Пет-проект
Третий пример, где старое мышление конфликтует с новым. Это моё тестирование интереса в виде постановки мастерства в настольный теннис. Забавно, что практика была запланировала, как досуговая. Но превращается в пет-проект, где я обкатываю мастерство постановки практики. Плюс остро чувствую трудности перехода на новые рельсы.
У меня есть интерес, но как выяснилось есть и довольно сильный внуренний конфликт (иногда внешний тоже). Теннис это то, во что мне нравится играть и практика, которая поставилась почти полностью интуитивно. Что я делаю сейчас, я пришла во взрослом возрасте к тренеру учиться играть в “спортивный” настольный теннис. Спортивный в противоположность дворовому. Я уже не раз ловила себя на мысли, что рада тому, что в детстве/юности не попала в секцию. И меня никто не учил теннису, как балету. Утрировано “где ногу тяни, а если не тянешь, щас пойду за палкой”. Не знаю, как дети терпят эту скуку и нравоучения. И технически понимаю зачем это тренерам, спорт очень динамичный, любые лишние движения это заведомо проигрыш. А на секциях тренируют тех, кто потом пойдёт на турниры и дальше. Точнее ищут и отбирают.
И тут мне уже не шапка эксперта мешает, а накопленное “я же уже умею”. Причем это и мысленно, есть и в теле. Т.е. мне тренер говорит “надо двигаться”, а понимаю, что я достаю рукой до мяча при статическом положении ног. Более того, я местами это воспринимаю как свою фишку. Вот вам как раз лишние движения убраны. Ещё у меня есть внутренняя “оптимизация” имя которой, но “мы же не играем”. Т.е. мы треним учебную ситуацию, к реальной игровой она имеет мало отношения. Когда я играю, я нацелена на победу, мне интересно, это важно. А тут мы 50 раз разыгрываем одну и ту же комбинацию. Да, её надо отработать, чтобы она встала на место. Но я не могу сделать вид, что мне это каждый из этих 50 раз важно отбить по-настоящему. Эмоциональные качели я описывала в посте про теннис.
Идея перепрошивки плюс мышление письмом по затруднениям натолнула на мысль поменять позицию. Во-первых, вспоминаем “Практики саморазвития” и с недовольного взрослого, который как-то умеет играть становимся сознательно в роль ученика. Пришла на тренировку, будь любезна, отложить свои притензии и настроиться на обучение. Во-вторых, раз мне не 12 лет и я мыслю письмом, делаем инкременты. Помогаем себе как можем. Ищу видосы, читаю про технику конкретных ударов, пробую их понять и отработать дома. В-третьих, во время тренировки тоже берём инкремент во внимание. Обращаю внимание на те разы, когда получается и хотя бы чуть-чуть радуюсь внутри. Выбрасываем перфекционизм, замечаем улучшения. О, чудо, проклятый накат справа на последней тренировке стал получаться. Не с нуля каждую тренировку я его возвращаю себе, а уже с чего-то похожего на накат)) И о, чудо, трений и лишних разговоров с тренером сразу стало на минимуме.
Из размышлений на будущее. Уговариваю себя искать инкрементальную ценность в каждом курсе ШСМ по мере прохождения. Это тоже такой камень, к ноге привязанный. Я хочу системную инженерию! А до неё сколько, год? Два семестра полных в любом случае. Я хочу уже всё выбросить из кривого процесса на работе. Но кажется это тоже старый мем. Будем улучшаться по кусочкам каждый раз, насколько хватит драйва.
Так выпьем же за изменчивость!
Ссылки на посты-вдохновители:
David Farley - Modern Software Engineering
Уходим от “водопада”
Как повернуть реку вспять?