Закрытый контент
Экспериментирую с форматами. Смотрел выступление DHH, пытался комментировать и рассказывать о своих соображениях. Если вдруг будет интересно - оставляйте вопросы и ваши мысли. Поговорим.
Ну и вообще любой фидбэк приветствуется.
https://youtu.be/bW77VZpKZBw
Экспериментирую с форматами. Смотрел выступление DHH, пытался комментировать и рассказывать о своих соображениях. Если вдруг будет интересно - оставляйте вопросы и ваши мысли. Поговорим.
Ну и вообще любой фидбэк приветствуется.
https://youtu.be/bW77VZpKZBw
YouTube
RailsWorld. Смотрю и комментирую выступление DHH
Смотрю и комментирую выступление DHH в рамках цетрального доклада на RailsWorld 2023. Это закрытое видео. Доступно только по ссылке.
👍4
Ну всё, теперь я еще и Vue.js архитектор 😂
Несколько дней погружался в проект, написанный на Vue. Несколько лет проект буксовал из-за сложности реализации простых вещей. Разные разработчики хотели реализовать свой подход и никак не могли придти к соглашению.
Я выступил независимым модератором процесса. Ничего за них не решал, но, как истинный коуч изводил вопросами, - А это что? А это как? А это зачем? А это почему?
В итоге за пару дней мы нашли все ключевые проблемы текущего проекта, подобрали инструменты, и в ближайшие дни согласуем план миграции со старой архитектуры на новые подходы.
Несколько дней погружался в проект, написанный на Vue. Несколько лет проект буксовал из-за сложности реализации простых вещей. Разные разработчики хотели реализовать свой подход и никак не могли придти к соглашению.
Я выступил независимым модератором процесса. Ничего за них не решал, но, как истинный коуч изводил вопросами, - А это что? А это как? А это зачем? А это почему?
В итоге за пару дней мы нашли все ключевые проблемы текущего проекта, подобрали инструменты, и в ближайшие дни согласуем план миграции со старой архитектуры на новые подходы.
👍2🤯1
Что позволило мне решить задачу по улучшению архитектуры приложения на мало знакомом мне фреймворке?
Любопытство
Мне было интересно, а что же там в проекте идет не так?
Управление сложностью
Понимание, что программисты любят усложнять и накручивать абстрактность на ровном месте. Частично это можно связать с преждевременной оптимизацией. Частично с персональными хотелками поиграться в "крутых программистов".
Страх программистов быть простым и понятным
Сеньеры-помидоры понимают, что проста это залог стабильности и поддерживаемости проектов. Сделать просто — это скорее признак крутизны специалиста. Сделать сложно — удел еще растущих специалистов. Я был готов к необоснованной сложности и страху участников проекта перед простотой.
Коучинговый подход
Не приходить с единственно верным (для меня) решением. Позволить людям самим проговорить проблемы и предложить их решения. Так процесс движения вперед в командах с талантливыми и образованными людьми идет проще.
Заметить удачные решения и поддержать их применение
Чуйка, основанная на опыте и решенных ранее ситуациях сильно помогает в нужный момент заметить то, что может принести проекту техническую и организационную пользу.
Движение внутри проекта с самого низа до самого верха
Хочешь как понять работает система? Надо ответить на следующие вопросы
1. Где точка входа?
2. Где момент инициализации проекта?
3. Куда мы идем дальше?
4. Где мы получаем первые данные?
5. Какой dataflow реализован в проекте?
6. Как мы будем обновлять данные?
7. Как валидируются данные, перед сохранением?
И нужно не полениться задавать один и тот же вопрос — а что дальше? Где следующий шаг?
=========
Отработав коучем по технологиям на прошлой работе я научился раскладывать сложные системы по деталям и винтикам. И это хороший навык.
Любопытство
Мне было интересно, а что же там в проекте идет не так?
Управление сложностью
Понимание, что программисты любят усложнять и накручивать абстрактность на ровном месте. Частично это можно связать с преждевременной оптимизацией. Частично с персональными хотелками поиграться в "крутых программистов".
Страх программистов быть простым и понятным
Сеньеры-помидоры понимают, что проста это залог стабильности и поддерживаемости проектов. Сделать просто — это скорее признак крутизны специалиста. Сделать сложно — удел еще растущих специалистов. Я был готов к необоснованной сложности и страху участников проекта перед простотой.
Коучинговый подход
Не приходить с единственно верным (для меня) решением. Позволить людям самим проговорить проблемы и предложить их решения. Так процесс движения вперед в командах с талантливыми и образованными людьми идет проще.
Заметить удачные решения и поддержать их применение
Чуйка, основанная на опыте и решенных ранее ситуациях сильно помогает в нужный момент заметить то, что может принести проекту техническую и организационную пользу.
Движение внутри проекта с самого низа до самого верха
Хочешь как понять работает система? Надо ответить на следующие вопросы
1. Где точка входа?
2. Где момент инициализации проекта?
3. Куда мы идем дальше?
4. Где мы получаем первые данные?
5. Какой dataflow реализован в проекте?
6. Как мы будем обновлять данные?
7. Как валидируются данные, перед сохранением?
И нужно не полениться задавать один и тот же вопрос — а что дальше? Где следующий шаг?
=========
Отработав коучем по технологиям на прошлой работе я научился раскладывать сложные системы по деталям и винтикам. И это хороший навык.
👍1
💡 Постановка задачи — это искусство
Как много проектов было загублено, как много часов разработчиков было потрачено, как много стресса было получено только из-за того, что задачи были сформулированы менеджерами не достаточно хорошо.
Коллеги пожаловались на ситуацию с оформлением задач и это натолкнуло меня на мысль, что надо попробовать сформулировать свои идеи на этот счет.
Как много проектов было загублено, как много часов разработчиков было потрачено, как много стресса было получено только из-за того, что задачи были сформулированы менеджерами не достаточно хорошо.
Коллеги пожаловались на ситуацию с оформлением задач и это натолкнуло меня на мысль, что надо попробовать сформулировать свои идеи на этот счет.
👍1
Frontend: Идея для опенсорса — Query/Filter Builder
Допустим, у вас панель где вы выводите данные о целом большом списке элементов.
Хочется простой, лаконичный, современный инпут для формирования фильтров. Не то, страшное и многоуровневое, что предлагают в интернетах. И не специализированное только для SQL.
Хочется такой фильтр-билдер, который был бы простым, кастомизируемым, и в формате inline инпута.
Кажется такое я видел в Jira/Atlassian.
Может кто-то из вас знает готовое решение?
Допустим, у вас панель где вы выводите данные о целом большом списке элементов.
Хочется простой, лаконичный, современный инпут для формирования фильтров. Не то, страшное и многоуровневое, что предлагают в интернетах. И не специализированное только для SQL.
Хочется такой фильтр-билдер, который был бы простым, кастомизируемым, и в формате inline инпута.
Кажется такое я видел в Jira/Atlassian.
Может кто-то из вас знает готовое решение?
👍1
Сегодня решаю задачу в чисто TDD стиле
Не так часто это приходится делать, на самом деле.
Есть четкое понимание того, что должна выдавать функция на выходе.
У меня не сложная, но все равно довольно размазанная схема данных в которой я должен найти данные строго нужного вида.
Я уже написал тесты. Описал, что должна возвращать функция. Тесты сейчас 🍎
Вот теперь буду изобретать выборку данных внутри функции, которая будет заставлять функцию выдавать нужный результат, а в итоге приведет тесты к 🍏
Вообще TDD отлично работает для backend, тк ты практически всегда понимаешь, что в итоге должно получиться и как это тестировать.
Во фронтенде такой подход не так часто работает. Легче сперва реализовать, а только потом покрыть тестами.
Не так часто это приходится делать, на самом деле.
Есть четкое понимание того, что должна выдавать функция на выходе.
У меня не сложная, но все равно довольно размазанная схема данных в которой я должен найти данные строго нужного вида.
Я уже написал тесты. Описал, что должна возвращать функция. Тесты сейчас 🍎
Вот теперь буду изобретать выборку данных внутри функции, которая будет заставлять функцию выдавать нужный результат, а в итоге приведет тесты к 🍏
Вообще TDD отлично работает для backend, тк ты практически всегда понимаешь, что в итоге должно получиться и как это тестировать.
Во фронтенде такой подход не так часто работает. Легче сперва реализовать, а только потом покрыть тестами.
👍4
Не видел UI проекта целый день; Только тесты и дебаггер. Десятки, может быть сотни прогонов. Размышления о структуре данных, поиск workarounds чтобы минимально затронуть существующий код.
Тесты 🍏 Это хорошо. Но не факт, что тесты и ожидания были правильные 🤣
Пора пойти посмотреть, что будет в UI.
Страшно
Тесты 🍏 Это хорошо. Но не факт, что тесты и ожидания были правильные 🤣
Пора пойти посмотреть, что будет в UI.
Страшно
🤯3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Провели установочную сессию с руководителем проектов. Очень интересная команда. Очень интересно что у нас получится в долгосрочной перспективе.
🔥2
Пример несложного SQL запроса, который мне довелось написать в последние дни.
Потом на основе этого будет сделан Matarialized View и выполнен Self Join чтобы найти Siblings и выполнить по ним ILIKE поиск по строкам и применить необходимые фильтры.
Если вы ничего не поняли - не переживайте. Я тоже. 😂 Спасибо тестам и TDD. Без них бы я вряд ли справился в ограниченное кол-во времени.
Потом на основе этого будет сделан Matarialized View и выполнен Self Join чтобы найти Siblings и выполнить по ним ILIKE поиск по строкам и применить необходимые фильтры.
Если вы ничего не поняли - не переживайте. Я тоже. 😂 Спасибо тестам и TDD. Без них бы я вряд ли справился в ограниченное кол-во времени.
👍2🤯1
Самым интересным за последние дни было 2 события
1. Я переписал кусок небольшого проекта так, что решать относительно сложные задачи внутри этой части проекта стало настолько легко, что я случайно за пол часа закрыл несколько некритичных задач, которые висели в бэклоге до лучших времен.
2. Обсудил с коллегой его процесс поиска работы, и мы вместе пришли к выводу, что для поиска хорошего места нужно сперва понять, что же за место ты ищешь и что дальше с этим делать.
Абстрактные мечты часто приводят нас к тому, что мы вроде бы искали, а чуть позже ты начинаешь понимать, что это не делает тебя счастливым.
Хорошо платят, удаленка - а коллектив такой унылый, что работать с ними не хочется.
Задорный классный коллектив, а зарплата несопоставимая с жизнью.
Прекрасная зарплата, отличный коллектив, но фулл-тайм в офисе и никакой возможности для гибкого графика.
Как выдержать баланс? Как не пойти с самим собой на невыгодную сделку? Не такой просто вопросец.
1. Я переписал кусок небольшого проекта так, что решать относительно сложные задачи внутри этой части проекта стало настолько легко, что я случайно за пол часа закрыл несколько некритичных задач, которые висели в бэклоге до лучших времен.
2. Обсудил с коллегой его процесс поиска работы, и мы вместе пришли к выводу, что для поиска хорошего места нужно сперва понять, что же за место ты ищешь и что дальше с этим делать.
Абстрактные мечты часто приводят нас к тому, что мы вроде бы искали, а чуть позже ты начинаешь понимать, что это не делает тебя счастливым.
Хорошо платят, удаленка - а коллектив такой унылый, что работать с ними не хочется.
Задорный классный коллектив, а зарплата несопоставимая с жизнью.
Прекрасная зарплата, отличный коллектив, но фулл-тайм в офисе и никакой возможности для гибкого графика.
Как выдержать баланс? Как не пойти с самим собой на невыгодную сделку? Не такой просто вопросец.
👍1
Есть у меня проверенный человек, который мне несколько раз помогал с некоторыми работами. И все было хорошо. У него портфолио на сотни работ. Прекрасные отзывы. Отличный специалист.
Но последний раз я дал ему задачу чуть-чуть отличающуюся от типичной. И все пошло кувырком.
Задача простая, но кажется именно это вывело его из привычного процесса. Надо было сделать быстро и просто, а это, ну никак не получалось.
Там где не надо — возникала сложность, там где надо, он словно не замечал очевидного и не подходил творчески к задаче и будущему результату. В какой-то момент мне уже начало казаться, что он надо мной издевается. Хочет скорее получить деньги и забыть о задаче.
Очень не хотелось, но пришлось вмешиваться. Это была не моя область, но какая-то насмотренность все же есть. Пришлось самому решить задачу принципиально, а потом и в деталях.
Что нас спасло? То, что этот человек работал хоть и плохо, но абсолютно профессионально. Спокойно выслушивал замечания, не реагировал агрессивно на замечания и принципиальные и по деталям. И даже абсолютно спокойно отнесся, когда я ему сказал — мне пришлось решить задачу вместо тебя, вот смотри как надо, а ты доделай мелкие детали.
Ооооох. Это был тяжелый и мало приятный опыт для обеих сторон. Но мы в итоге получили нужный всем результат. Правда, я купил не решение своей задачи, а опыт. Такое тоже бывает. К счастью я был готов к непредсказуемому развитию ситуации.
Выводы
1. Даже самый проверенный человек может подвести
2. Как бы ты не был уверен в человеке - всегда нужно иметь план Б, а еще лучше и B
3. Когда все летит к черту, только спокойствие, адекватность и предсказуемость помогает решить ситуацию
4. Иногда ты покупаешь решение, иногда опыт. И еще не известно что ценнее
Но последний раз я дал ему задачу чуть-чуть отличающуюся от типичной. И все пошло кувырком.
Задача простая, но кажется именно это вывело его из привычного процесса. Надо было сделать быстро и просто, а это, ну никак не получалось.
Там где не надо — возникала сложность, там где надо, он словно не замечал очевидного и не подходил творчески к задаче и будущему результату. В какой-то момент мне уже начало казаться, что он надо мной издевается. Хочет скорее получить деньги и забыть о задаче.
Очень не хотелось, но пришлось вмешиваться. Это была не моя область, но какая-то насмотренность все же есть. Пришлось самому решить задачу принципиально, а потом и в деталях.
Что нас спасло? То, что этот человек работал хоть и плохо, но абсолютно профессионально. Спокойно выслушивал замечания, не реагировал агрессивно на замечания и принципиальные и по деталям. И даже абсолютно спокойно отнесся, когда я ему сказал — мне пришлось решить задачу вместо тебя, вот смотри как надо, а ты доделай мелкие детали.
Ооооох. Это был тяжелый и мало приятный опыт для обеих сторон. Но мы в итоге получили нужный всем результат. Правда, я купил не решение своей задачи, а опыт. Такое тоже бывает. К счастью я был готов к непредсказуемому развитию ситуации.
Выводы
1. Даже самый проверенный человек может подвести
2. Как бы ты не был уверен в человеке - всегда нужно иметь план Б, а еще лучше и B
3. Когда все летит к черту, только спокойствие, адекватность и предсказуемость помогает решить ситуацию
4. Иногда ты покупаешь решение, иногда опыт. И еще не известно что ценнее
👍4