Нужны ли тесты в frontend-разработке?
С тестами на фронтенде ситуация очень смешная. Про них любят спрашивать на собеседованиях, писать статьи и рассказывать на митапах. Но никто никогда не видел ни одно более-менее крупное фронтенд-приложение, качественно покрытое тестами. Их просто нет.
На бекенде, например, ситуация обратная. Сегодня сложно найти проект без тестов. Обычно тесты пишутся в каждом пул-реквесте, в CI прикручен coverage rate и он обычно выше 70%.
Почему на фронтенде не так? Фронты не слышали про TDD, не умеют в паттерны, не читают книги или просто нет тулинга? Причина намного проще - не надо пытаться натянуть ужа на ежа...
Стандартная пирамида, где 80% это unit-тесты, не имеет ничего общего с разработкой UI-приложений:
- Большинство кода на фронтенде имеет сайд-эффект в виде изменений на UI в браузере. Все команды он тоже получает из UI. Поэтому, пытаться изолировать JS/TS код и тестировать его какими-то чистыми функциями бесполезно. Хелперы, модели с бизнес-логикой, редьюсеры - это 5% кода и не самые критичные
- Можно написать изолированные интеграционные тесты на глупые UI компоненты: button, dropdown, chart, accordion и т.д. Это норм подход и может даже coverage от этого поднимется, но багов в джире меньше не станет. Ломаться что-то будет как и раньше не на уровне глупых компонентов, а на странице или при переходах между экранами
- Бэкенд по своей природе часто stateless, а код там в основном синхронный: получили запрос, синхронно распарсили, синхронно сходили в базу или во внешний сервис, синхронно отдали JSON. Это довольно удобно тестировать unint-тестами. В SPA приложении на фронтенде куча состояний и огромный поток асинхронных событий, срабатывающих в произвольном порядке. Даже если упороться и покрыть каждый файл с кодом unit-тестами, это не даст никакой гарантии, что приложение целиком рабочее
- Жизненный цикл кода на фронтенде на порядок короче, чем на бэкенде. API эндпоинт, покрытый тестами, скорее всего не будет выпилен или переписан полностью через месяц. Для UI/UX нет ничего постоянного и нет никаких breaking changes. Сегодня компонент, виджет или экран работает так, завтра его полностью перетрясли, после завтра уже разделили на 2 экрана/виджета/компонента и т.д. Юнит-тесты придется удалять и переписывать пачками
Итог - жить без тестов? Так себе вариант тоже. О том, как нужно покрывать FE-приложения тестами напишу в следующих постах.
#frontend #development #testing
С тестами на фронтенде ситуация очень смешная. Про них любят спрашивать на собеседованиях, писать статьи и рассказывать на митапах. Но никто никогда не видел ни одно более-менее крупное фронтенд-приложение, качественно покрытое тестами. Их просто нет.
На бекенде, например, ситуация обратная. Сегодня сложно найти проект без тестов. Обычно тесты пишутся в каждом пул-реквесте, в CI прикручен coverage rate и он обычно выше 70%.
Почему на фронтенде не так? Фронты не слышали про TDD, не умеют в паттерны, не читают книги или просто нет тулинга? Причина намного проще - не надо пытаться натянуть ужа на ежа...
Стандартная пирамида, где 80% это unit-тесты, не имеет ничего общего с разработкой UI-приложений:
- Большинство кода на фронтенде имеет сайд-эффект в виде изменений на UI в браузере. Все команды он тоже получает из UI. Поэтому, пытаться изолировать JS/TS код и тестировать его какими-то чистыми функциями бесполезно. Хелперы, модели с бизнес-логикой, редьюсеры - это 5% кода и не самые критичные
- Можно написать изолированные интеграционные тесты на глупые UI компоненты: button, dropdown, chart, accordion и т.д. Это норм подход и может даже coverage от этого поднимется, но багов в джире меньше не станет. Ломаться что-то будет как и раньше не на уровне глупых компонентов, а на странице или при переходах между экранами
- Бэкенд по своей природе часто stateless, а код там в основном синхронный: получили запрос, синхронно распарсили, синхронно сходили в базу или во внешний сервис, синхронно отдали JSON. Это довольно удобно тестировать unint-тестами. В SPA приложении на фронтенде куча состояний и огромный поток асинхронных событий, срабатывающих в произвольном порядке. Даже если упороться и покрыть каждый файл с кодом unit-тестами, это не даст никакой гарантии, что приложение целиком рабочее
- Жизненный цикл кода на фронтенде на порядок короче, чем на бэкенде. API эндпоинт, покрытый тестами, скорее всего не будет выпилен или переписан полностью через месяц. Для UI/UX нет ничего постоянного и нет никаких breaking changes. Сегодня компонент, виджет или экран работает так, завтра его полностью перетрясли, после завтра уже разделили на 2 экрана/виджета/компонента и т.д. Юнит-тесты придется удалять и переписывать пачками
Итог - жить без тестов? Так себе вариант тоже. О том, как нужно покрывать FE-приложения тестами напишу в следующих постах.
#frontend #development #testing
👍10👎1🤓1
Конкурент Chat GPT от Google
Прошла ровно неделя с поста, где я прогнозировал появление новых AI игроков в скором времени. Вот, пожалуйста - https://deepmind.google/technologies/gemini/
Просто посмотрите это демо - https://www.youtube.com/watch?v=jV1vkHv4zq8&ab_channel=Google
Пара плейлистов с демками и возможностями модели: раз, два.
Выглядит очень круто. Будем тестировать.
#ai #gpt
Прошла ровно неделя с поста, где я прогнозировал появление новых AI игроков в скором времени. Вот, пожалуйста - https://deepmind.google/technologies/gemini/
Просто посмотрите это демо - https://www.youtube.com/watch?v=jV1vkHv4zq8&ab_channel=Google
Пара плейлистов с демками и возможностями модели: раз, два.
Выглядит очень круто. Будем тестировать.
#ai #gpt
🔥4
TypeScript trick
Бывает так, что у нас получился сложный object-тип в TS, который подсвечивается как выражение, вместо набора полей.
Есть лайфках, чтобы развернуть такие типы в плоский объект с понятным набором ключ/значение:
На логику компилятора никак не влияет, но визуально становится почище.
#typescript #frontend #development #code
Бывает так, что у нас получился сложный object-тип в TS, который подсвечивается как выражение, вместо набора полей.
Есть лайфках, чтобы развернуть такие типы в плоский объект с понятным набором ключ/значение:
type Flatten<T> = Omit<T, never>
На логику компилятора никак не влияет, но визуально становится почище.
#typescript #frontend #development #code
👍11🔥4
Плато и контринтуитивные методики
Первые 5 лет в зале я тренировался без перерыва и никак не пытался распределять нагрузку. Подход был простой - каждую тренировку поднимать максимальные веса и работать в отказ. Больше сделал - больше результат, вроде все логично.
Иногда случались вынужденные перерывы на пару месяцев, после которых форма сильно проседала и восстанавливать ее было потом тяжело. В голове откладывался отпечаток, что перерывы - зло и их нужно избегать. Это приводило в итоге к тому, что я мог год тренироваться тяжело, находясь при этом на плато. Результаты не шли ни вверх ни вниз. При этом тренировки были максимально изнурительными и энергозатратными.
Один раз у меня случайным образом образовался перерыв не на пару месяцев, а на неделю. Я не болел, нормально питался, спал, но по привычке ожидал, что результаты в зале упадут даже от этого. Спустя неделю, я пришел в зал и сделал больше, чем за неделю до этого. Чувствовал себя отлично, нигде ничего не болело, энергии было больше обычного. Это немного похоже на то, когда ты всю пятницу потратил на сложную техническую задачу, но не добил ее. Надо идти домой, но ты боишься, что потеряешь контекст до понедельника. А по факту, уже смирившись с этим и отпустив ситуацию, придумываешь решение пока едешь домой в метро без ноутбука перед глазами или на выходных во время прогулки на улице.
Я уверен, что мне и до этого попадалась информация про суперкомпенсацию и распределение нагрузки в тренировках, но проблема в том, что на ментальном уровне это контринтуитивно. Ты находишься на пике своих показателей и очень сложно себя убедить замедлиться или взять перерыв. Почувствовать момент перетренированности в первый раз очень сложно, т.к ты не знаешь что это такое. Для тебя это просто очередная тяжелая тренировка, к которым ты привык. Теперь я регулярно беру недельный перерыв в зале, даже не обращая внимание на накопленную усталость или отсутствие перетренированности. Я знаю, что так надо, и лучше вообще в этот момент логику не включать, а довериться системе и опыту.
К тем же выводам прихожу насчет работы по ночам. Постоянные овертаймы нон-стоп не помогут сделать качественный скачок в карьере или в своем проекте. Только как вынужденный и ограниченный отрезок, за которым должно идти снижение нагрузки. Так же контринтуитивно, но с опытом постепенно приходит.
#performance #lifehack #it #gym
Первые 5 лет в зале я тренировался без перерыва и никак не пытался распределять нагрузку. Подход был простой - каждую тренировку поднимать максимальные веса и работать в отказ. Больше сделал - больше результат, вроде все логично.
Иногда случались вынужденные перерывы на пару месяцев, после которых форма сильно проседала и восстанавливать ее было потом тяжело. В голове откладывался отпечаток, что перерывы - зло и их нужно избегать. Это приводило в итоге к тому, что я мог год тренироваться тяжело, находясь при этом на плато. Результаты не шли ни вверх ни вниз. При этом тренировки были максимально изнурительными и энергозатратными.
Один раз у меня случайным образом образовался перерыв не на пару месяцев, а на неделю. Я не болел, нормально питался, спал, но по привычке ожидал, что результаты в зале упадут даже от этого. Спустя неделю, я пришел в зал и сделал больше, чем за неделю до этого. Чувствовал себя отлично, нигде ничего не болело, энергии было больше обычного. Это немного похоже на то, когда ты всю пятницу потратил на сложную техническую задачу, но не добил ее. Надо идти домой, но ты боишься, что потеряешь контекст до понедельника. А по факту, уже смирившись с этим и отпустив ситуацию, придумываешь решение пока едешь домой в метро без ноутбука перед глазами или на выходных во время прогулки на улице.
Я уверен, что мне и до этого попадалась информация про суперкомпенсацию и распределение нагрузки в тренировках, но проблема в том, что на ментальном уровне это контринтуитивно. Ты находишься на пике своих показателей и очень сложно себя убедить замедлиться или взять перерыв. Почувствовать момент перетренированности в первый раз очень сложно, т.к ты не знаешь что это такое. Для тебя это просто очередная тяжелая тренировка, к которым ты привык. Теперь я регулярно беру недельный перерыв в зале, даже не обращая внимание на накопленную усталость или отсутствие перетренированности. Я знаю, что так надо, и лучше вообще в этот момент логику не включать, а довериться системе и опыту.
К тем же выводам прихожу насчет работы по ночам. Постоянные овертаймы нон-стоп не помогут сделать качественный скачок в карьере или в своем проекте. Только как вынужденный и ограниченный отрезок, за которым должно идти снижение нагрузки. Так же контринтуитивно, но с опытом постепенно приходит.
#performance #lifehack #it #gym
👍8🔥3
Testing Trophy vs Testing Pyramid
Ранее я рассказывал про фундаментальные отличия между бекенд и фронтенд разработкой и почему TDD и стандартная пирамида тестирования на фронтенде не работают. Есть ли другие варианты? Есть.
Парадигма Testing Trophy предлагает кратно сократить объем юнит-тестов как наименее эффективных с точки зрения поддержки и показателя return on investment (цена/польза). Вместо этого делается упор на статический анализ кода и интеграционные тесты. Статический анализ не случайно изображен как основа кубка. Это краеугольный слой для автоматического обнаружения ошибок в коде, который является основой доказательства его целостности и отсутствия регрессии на уровне контрактов и вызовов между модулями. Сами тесты уже пишутся поверх этого слоя и их задачей является проверять именно поведение, бизнес-логику и пользовательские сценарии, вместо того чтобы просто мерять температуру отдельным компонентам.
1) Первым делом включаем TypeScript на полную ("strict: true"), не спорим с компилятором посредством "as any" и т.п, типизируем код максимально строго. Используем ESLint для более глубоких проверок и особенностей runtime-поведения вашего фреймворка (пример - React Hooks).
2) Не упарываемся с unit-тестами. Если есть какие-то сложные сериализаторы, математические вычисления или валидаторы - ок. Их даже разрабатывать проще через тесты. Все остальное лучше покрывать integration-тестами
3) Integration-тесты - то, что будет спасать вам релизы, дедлайны и здоровый сон. Лучший вид тестов с точки зрения затраты/выхлоп. Пример: вместо того, чтобы покрывать unit-тестами все виджеты, сервис и стор - рендерим экран нашего React-приложения в headless-браузере, мокаем только запросы в API на уровне http (fetchMock) и прокликиваем страницу аналогично e2e-тестам. Эти тесты все еще довольно быстрые, могут выполняться на CI на каждый коммит/пул-реквест и не требуют дополнительной инфраструктуры.
4) С E2E-тестами все так же как в стандартной пирамиде тестирования
#testing #testing_trophy #development #frontend
Ранее я рассказывал про фундаментальные отличия между бекенд и фронтенд разработкой и почему TDD и стандартная пирамида тестирования на фронтенде не работают. Есть ли другие варианты? Есть.
Парадигма Testing Trophy предлагает кратно сократить объем юнит-тестов как наименее эффективных с точки зрения поддержки и показателя return on investment (цена/польза). Вместо этого делается упор на статический анализ кода и интеграционные тесты. Статический анализ не случайно изображен как основа кубка. Это краеугольный слой для автоматического обнаружения ошибок в коде, который является основой доказательства его целостности и отсутствия регрессии на уровне контрактов и вызовов между модулями. Сами тесты уже пишутся поверх этого слоя и их задачей является проверять именно поведение, бизнес-логику и пользовательские сценарии, вместо того чтобы просто мерять температуру отдельным компонентам.
1) Первым делом включаем TypeScript на полную ("strict: true"), не спорим с компилятором посредством "as any" и т.п, типизируем код максимально строго. Используем ESLint для более глубоких проверок и особенностей runtime-поведения вашего фреймворка (пример - React Hooks).
2) Не упарываемся с unit-тестами. Если есть какие-то сложные сериализаторы, математические вычисления или валидаторы - ок. Их даже разрабатывать проще через тесты. Все остальное лучше покрывать integration-тестами
3) Integration-тесты - то, что будет спасать вам релизы, дедлайны и здоровый сон. Лучший вид тестов с точки зрения затраты/выхлоп. Пример: вместо того, чтобы покрывать unit-тестами все виджеты, сервис и стор - рендерим экран нашего React-приложения в headless-браузере, мокаем только запросы в API на уровне http (fetchMock) и прокликиваем страницу аналогично e2e-тестам. Эти тесты все еще довольно быстрые, могут выполняться на CI на каждый коммит/пул-реквест и не требуют дополнительной инфраструктуры.
4) С E2E-тестами все так же как в стандартной пирамиде тестирования
#testing #testing_trophy #development #frontend
👍8🙏1
Text to Video
OpenAI выкатили демо новой генеративной модели Sora, которая создает реалистичные, качественные видео до 60 секунд из текста - https://openai.com/sora
Модель пока недоступна для общего пользования, но уже понятно, что это будет очередной прорыв. 2024 год только начался )
#openai #gpt #sora #ai
OpenAI выкатили демо новой генеративной модели Sora, которая создает реалистичные, качественные видео до 60 секунд из текста - https://openai.com/sora
Модель пока недоступна для общего пользования, но уже понятно, что это будет очередной прорыв. 2024 год только начался )
#openai #gpt #sora #ai
👍6🔥1
Devin - первый AI software engineer
Cognition AI - компания, о которой я мало что знал до недавнего времени, показала короткое демо полноценного AI software-инженера.
Помимо обычного промпта, Devin использует свой собственный command-line терминал, редактор кода с файлами и браузер для гугления и поиска ответов на stackoverflow как настоящий программист.
Уже не за горами времена, когда можно будет дать подобной туле ссылки на репозиторий и задачу из трекера, AI создаст pull-request с решением и будет доводить его до ума, обрабатывая комментарии на код-ревью.
Пока в ограниченном доступе. Можно подать заявку и стать бета-пользователем.
Демо (1:49) - https://www.youtube.com/watch?v=fjHtjT7GO1c&ab_channel=Cognition
Cognition AI - компания, о которой я мало что знал до недавнего времени, показала короткое демо полноценного AI software-инженера.
Помимо обычного промпта, Devin использует свой собственный command-line терминал, редактор кода с файлами и браузер для гугления и поиска ответов на stackoverflow как настоящий программист.
Уже не за горами времена, когда можно будет дать подобной туле ссылки на репозиторий и задачу из трекера, AI создаст pull-request с решением и будет доводить его до ума, обрабатывая комментарии на код-ревью.
Пока в ограниченном доступе. Можно подать заявку и стать бета-пользователем.
Демо (1:49) - https://www.youtube.com/watch?v=fjHtjT7GO1c&ab_channel=Cognition
👍6
🎥 Node.js: The Documentary
Новая документалка из мира open-source. На этот раз про Node.js. История создания, взрыва популярности, смены руководства, раскола на форки и последующего воссоединения. Мне зашло.
Помню лет 10-12 назад по поводу ноды было очень много скепсиса в русскоязычном сообществе, который я и сам разделял. Сейчас Node.js выглядит довольно зрелой экосистемой. А с учетом TypeScript и Serverless, для многих проектов уже рассматривается как опция #1.
Смотреть фильм - https://www.youtube.com/watch?v=LB8KwiiUGy0&ab_channel=Honeypot
#documentary #development #nodejs #backend
Новая документалка из мира open-source. На этот раз про Node.js. История создания, взрыва популярности, смены руководства, раскола на форки и последующего воссоединения. Мне зашло.
Помню лет 10-12 назад по поводу ноды было очень много скепсиса в русскоязычном сообществе, который я и сам разделял. Сейчас Node.js выглядит довольно зрелой экосистемой. А с учетом TypeScript и Serverless, для многих проектов уже рассматривается как опция #1.
Смотреть фильм - https://www.youtube.com/watch?v=LB8KwiiUGy0&ab_channel=Honeypot
#documentary #development #nodejs #backend
🔥6👍1
Год в Дубае 🇦🇪
С января 2023 года я большую часть времени живу в Дубае. Локация хайповая с кучей мифов и гипертрофированных отзывов, поэтому решил коротко рассказать свои впечатления и разбавить эти сториз-байки реальным контентом. Поехали:
- Легализация и получение ВНЖ для IT-удаленщика очень просты и прозрачны. Минимум документов, адекватная стоимость, почти все online. Есть пост в блоге про все детали с пошаговой инструкцией.
- Налоговый режим просто лучший. Я работаю официально из ОАЭ с апреля прошлого года. По итогу за неполный 2023г у меня налог 0% на весь доход. Даже отчетность никакую подавать в этом случае не нужно. За 2024 год скорее всего так же будет 0%, но придется заполнить пару заявлений на сайте, чтобы получить статус "неплательщика" НДС.
- Сам город - отличное место для жизни. Комфортный, чистый, с развитой инфраструктурой, сервисом, современной архитектурой и общественными пространствами, технологичный - я такое люблю. Москва конечно one love, но она дико перенаселена и по уровню стресса и шума проигрывает без шансов. В Дубае полный чил.
- Тут безопасно. Дубай - топ-6 самых безопасных городов мира, соседний Абу-Даби - топ-1. Это реально ощущается на ментальном уровне каждый день и повышает качество жизни. Конечно у меня есть типичная Дубайская история как забыть телефон на беззвучном режиме в такси, обнаружить уже в номере отеля, а через 20 минут забрать его на ресепшне.
- IT-продукты на поколение отстают от Российских, включая гос. сайты, маркетплейсы, мобильные банки и т.п. Пользоваться ими не всегда удобно. Индо-пакистанские ребята не умеют так вылизывать UX как мы. А кто, собственно, умеет?) 🇷🇺 Тем не менее, дверь в апартаменты я открываю с приложения. Заказываю еду, продукты, такси и даже химчистку обуви в пару кликов. Прохожу границу по прилету через smart gate за 10 секунд.
- Климат. 3 месяца в году тут невыносимо жарко на улице. Еще 2 месяца - просто очень жарко. Если нет возможности работать из дома, может быть проблемой. Остальная часть года - идеальна для проживания. Тепло, сухо, низкая влажность. 7 месяцев подряд идеального комфортного лета. Воздух не самый чистый. Любителям гор и лесов будет не хватать природы. Сам город становится зеленее каждый год, но вокруг пустыня. Если в Москве облака искуственно разгоняют - в Дубае наоборот пригоняют)
- Все на английском, включая гос. учереждения. Это супер удобно. Арабский язык учить не нужно.
- Еда, развлечения, досуг, спорт, крутые локации - на любой вкус для взрослых и для детей. IT-комьюнити, бизнес-тусовки, русскоязычные ивенты - все есть.
- Цены. По моим ощущениям прилипшая репутация к Дубаю как к супер-дорогому городу это скорее миф. Аренда жилья дороже чем в Москве раза в 2, такси так же. В остальном цены вполне адекватные с учетом вышеперечисленного. По общему индексу цен скорей ближе к Кипру, чем к США или Западной Европе. Тут можно найти много тяжелого люкса и легко потратить много денег при желании, но только если очень сильно хочется.
- Высокие зарплаты - еще один миф. Местный рынок IT тут укатан индусами и зарплаты меньше чем в Москве. Про не IT я вообще молчу. Обслуживающий персонал пашет за 1000-1500$/месяц. Поэтому только удаленка на Европу/США или свой бизнес.
- Есть ряд запретов. Такие как открытая одежда, ограничение продажи алкоголя, пост в Рамадан - в Дубае уже скорее формальность. Культура тут для экспатов по большей части светская. Все ходят, одеваются и развлекаются практически так же как привыкли у себя дома. ЛГБТ флагами тут не помашешь, конечно, и травку не покуришь на лавке. Мне не пришлось ничего менять в своем образе жизни при переезде и я себя тут ощущаю максимально свободно. Наверно свободнее чем где-либо. Звонки в whatsup и телеге не работают без VPN - вот это, наверно, самый большой облом для меня. Zoom и Google Meet работают, кстати.
Если подитожить - Эмираты для меня на данный момент идеальный match. Дубай - уникальный город, аналогов которому я пока не видел. В планах также изучить эмират Абу-Даби. Он может оказаться еще перспективнее 🇦🇪 🇷🇺
#uae #dubai #life
С января 2023 года я большую часть времени живу в Дубае. Локация хайповая с кучей мифов и гипертрофированных отзывов, поэтому решил коротко рассказать свои впечатления и разбавить эти сториз-байки реальным контентом. Поехали:
- Легализация и получение ВНЖ для IT-удаленщика очень просты и прозрачны. Минимум документов, адекватная стоимость, почти все online. Есть пост в блоге про все детали с пошаговой инструкцией.
- Налоговый режим просто лучший. Я работаю официально из ОАЭ с апреля прошлого года. По итогу за неполный 2023г у меня налог 0% на весь доход. Даже отчетность никакую подавать в этом случае не нужно. За 2024 год скорее всего так же будет 0%, но придется заполнить пару заявлений на сайте, чтобы получить статус "неплательщика" НДС.
- Сам город - отличное место для жизни. Комфортный, чистый, с развитой инфраструктурой, сервисом, современной архитектурой и общественными пространствами, технологичный - я такое люблю. Москва конечно one love, но она дико перенаселена и по уровню стресса и шума проигрывает без шансов. В Дубае полный чил.
- Тут безопасно. Дубай - топ-6 самых безопасных городов мира, соседний Абу-Даби - топ-1. Это реально ощущается на ментальном уровне каждый день и повышает качество жизни. Конечно у меня есть типичная Дубайская история как забыть телефон на беззвучном режиме в такси, обнаружить уже в номере отеля, а через 20 минут забрать его на ресепшне.
- IT-продукты на поколение отстают от Российских, включая гос. сайты, маркетплейсы, мобильные банки и т.п. Пользоваться ими не всегда удобно. Индо-пакистанские ребята не умеют так вылизывать UX как мы. А кто, собственно, умеет?) 🇷🇺 Тем не менее, дверь в апартаменты я открываю с приложения. Заказываю еду, продукты, такси и даже химчистку обуви в пару кликов. Прохожу границу по прилету через smart gate за 10 секунд.
- Климат. 3 месяца в году тут невыносимо жарко на улице. Еще 2 месяца - просто очень жарко. Если нет возможности работать из дома, может быть проблемой. Остальная часть года - идеальна для проживания. Тепло, сухо, низкая влажность. 7 месяцев подряд идеального комфортного лета. Воздух не самый чистый. Любителям гор и лесов будет не хватать природы. Сам город становится зеленее каждый год, но вокруг пустыня. Если в Москве облака искуственно разгоняют - в Дубае наоборот пригоняют)
- Все на английском, включая гос. учереждения. Это супер удобно. Арабский язык учить не нужно.
- Еда, развлечения, досуг, спорт, крутые локации - на любой вкус для взрослых и для детей. IT-комьюнити, бизнес-тусовки, русскоязычные ивенты - все есть.
- Цены. По моим ощущениям прилипшая репутация к Дубаю как к супер-дорогому городу это скорее миф. Аренда жилья дороже чем в Москве раза в 2, такси так же. В остальном цены вполне адекватные с учетом вышеперечисленного. По общему индексу цен скорей ближе к Кипру, чем к США или Западной Европе. Тут можно найти много тяжелого люкса и легко потратить много денег при желании, но только если очень сильно хочется.
- Высокие зарплаты - еще один миф. Местный рынок IT тут укатан индусами и зарплаты меньше чем в Москве. Про не IT я вообще молчу. Обслуживающий персонал пашет за 1000-1500$/месяц. Поэтому только удаленка на Европу/США или свой бизнес.
- Есть ряд запретов. Такие как открытая одежда, ограничение продажи алкоголя, пост в Рамадан - в Дубае уже скорее формальность. Культура тут для экспатов по большей части светская. Все ходят, одеваются и развлекаются практически так же как привыкли у себя дома. ЛГБТ флагами тут не помашешь, конечно, и травку не покуришь на лавке. Мне не пришлось ничего менять в своем образе жизни при переезде и я себя тут ощущаю максимально свободно. Наверно свободнее чем где-либо. Звонки в whatsup и телеге не работают без VPN - вот это, наверно, самый большой облом для меня. Zoom и Google Meet работают, кстати.
Если подитожить - Эмираты для меня на данный момент идеальный match. Дубай - уникальный город, аналогов которому я пока не видел. В планах также изучить эмират Абу-Даби. Он может оказаться еще перспективнее 🇦🇪 🇷🇺
#uae #dubai #life
Alexey Krasman's Blog
Релокация в Дубай. Фриланс виза
Данную статью можно рассматривать как полный гайд по релокации в Дубай для тех, кто работает удаленно или на себя как фрилансер. Мой процесс легализации завершился в марте 2023, но я планирую в будущем поддерживать актуальность гайда, обновляя информ...
👍14🔥6❤🔥2
Open AI did it again...
Новая модель GPT-4o не только как обычно быстрее, дешевле и с более высокими лимитами. С ней можно общаться в реальном времени с помощью голоса и камеры. Обещают, что будет доступна так же по API. Очередной прорыв в индустрии🚀
Демо-презентация (eng) - https://youtu.be/DQacCB9tDaw?t=551
Новая модель GPT-4o не только как обычно быстрее, дешевле и с более высокими лимитами. С ней можно общаться в реальном времени с помощью голоса и камеры. Обещают, что будет доступна так же по API. Очередной прорыв в индустрии
Демо-презентация (eng) - https://youtu.be/DQacCB9tDaw?t=551
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Introducing GPT-4o
OpenAI Spring Update – streamed live on Monday, May 13, 2024.
Introducing GPT-4o, updates to ChatGPT, and more.
Introducing GPT-4o, updates to ChatGPT, and more.
🔥5🤔1
Dart и Flutter рвут всех
Как обычно Dart и Flutter обновляются синхронно и в этот раз завезли реально крутые фичи.
Flutter 3.22 📱
- Теперь компилируется не только в Web (JS) но и в WebAssembly с поддержкой WasmGC. 'Hello World' уже работает в Хроме. Реальные приложения скорее всего пока не заведутся, но это вопрос времени. Веб с нативным перформансом уже не загорами, причем для Flutter-разработчиков он будет бесплатным по доп. затратам.
- Impeller новый рендер движок теперь под капотом на обеих мобильных платформах iOS и Android. Он быстрее и потребляет меньше ресурсов. Для разработчиков опять же бесплатно. Надо просто обновить Flutter в своем проекте.
- Так же анонсировали оптимизации и дальнейшие планы по адаптации Flutter под разработку 2D игр. Очевидно хотят захватить этот перспективный рынок.
Dart 3.4 🎯
- В язык завезли макросы! 🔥 Это то, чего я ждал больше всего. Можно будет отказаться от костыльной кодогенерации для дата-классов, json-сериализации, ORM-библиотек и т.д. Со статическим метапрограммированием Dart выходит на совершенно новый уровень и имеет все шансы стать моим вторым любимым языком после TypeScript.
- Написали новый Dart compiler backend для генерации WasmGC кода
- Улучшили type-анализ. Теперь он станет чуть умнее и ближе к TS)
Пост - https://medium.com/flutter/whats-new-in-flutter-3-22-fbde6c164fe3
Видео (36 мин) - https://www.youtube.com/watch?v=lpnKWK-KEYs&ab_channel=Flutter
#dart #flutter #development
Как обычно Dart и Flutter обновляются синхронно и в этот раз завезли реально крутые фичи.
Flutter 3.22 📱
- Теперь компилируется не только в Web (JS) но и в WebAssembly с поддержкой WasmGC. 'Hello World' уже работает в Хроме. Реальные приложения скорее всего пока не заведутся, но это вопрос времени. Веб с нативным перформансом уже не загорами, причем для Flutter-разработчиков он будет бесплатным по доп. затратам.
- Impeller новый рендер движок теперь под капотом на обеих мобильных платформах iOS и Android. Он быстрее и потребляет меньше ресурсов. Для разработчиков опять же бесплатно. Надо просто обновить Flutter в своем проекте.
- Так же анонсировали оптимизации и дальнейшие планы по адаптации Flutter под разработку 2D игр. Очевидно хотят захватить этот перспективный рынок.
Dart 3.4 🎯
- В язык завезли макросы! 🔥 Это то, чего я ждал больше всего. Можно будет отказаться от костыльной кодогенерации для дата-классов, json-сериализации, ORM-библиотек и т.д. Со статическим метапрограммированием Dart выходит на совершенно новый уровень и имеет все шансы стать моим вторым любимым языком после TypeScript.
- Написали новый Dart compiler backend для генерации WasmGC кода
- Улучшили type-анализ. Теперь он станет чуть умнее и ближе к TS)
Пост - https://medium.com/flutter/whats-new-in-flutter-3-22-fbde6c164fe3
Видео (36 мин) - https://www.youtube.com/watch?v=lpnKWK-KEYs&ab_channel=Flutter
#dart #flutter #development
Medium
What’s new in Flutter 3.22
WebAssembly, Graphics rendering enhancements, and more options for AI integration
👍9
Новогодний пост про фокус и приоритеты
С мая я не писал ничего в канал, но не потому что решил его забросить. Причина очень простая - чуть ранее я перешел в новую компанию и весь год был сфокусирован почти исключительно на работе. По-другому там бы не получилось, челлендж уровня хардкор: либо тащить, либо не браться совсем.
Я в таких случаях быстро перетасовываю приоритеты, убираю все лишнее из своей рутины и ухожу в бессрочный поток. Под конец года есть определенная усталость, но главное, что и результаты есть.
В следующем году появятся новые посты, не обещаю, что регулярные)
Всех с наступающим!
#newyear #life #blog #work
С мая я не писал ничего в канал, но не потому что решил его забросить. Причина очень простая - чуть ранее я перешел в новую компанию и весь год был сфокусирован почти исключительно на работе. По-другому там бы не получилось, челлендж уровня хардкор: либо тащить, либо не браться совсем.
Я в таких случаях быстро перетасовываю приоритеты, убираю все лишнее из своей рутины и ухожу в бессрочный поток. Под конец года есть определенная усталость, но главное, что и результаты есть.
В следующем году появятся новые посты, не обещаю, что регулярные)
Всех с наступающим!
#newyear #life #blog #work
🔥20❤8🎄4☃2😱1
Заплатил криптой за обед в кафе 💳
Только что на фуд-корте приложил к терминалу карту из Apple Pay, которая привязана к USDT кошельку и транзакция прошла за долю секунды. Вау… 🔥
Да, курс конвертации USDT в местные дирхамы получился со спрэдом 1.5%, но те кто менял крипту на фиат через P2P знают, что там спрэд обычно не меньше.
Радует, что крипто-экосистема продолжает развиваться и становится все более целостной.
#crypto #life #blockchain
Только что на фуд-корте приложил к терминалу карту из Apple Pay, которая привязана к USDT кошельку и транзакция прошла за долю секунды. Вау… 🔥
Да, курс конвертации USDT в местные дирхамы получился со спрэдом 1.5%, но те кто менял крипту на фиат через P2P знают, что там спрэд обычно не меньше.
Радует, что крипто-экосистема продолжает развиваться и становится все более целостной.
#crypto #life #blockchain
👍11❤4
Два года в Дубае 🇦🇪
Прошел еще один год и незаметно завершился двухлетний цикл моего ВНЖ в ОАЭ. Незаметно потому, что продление еще на два года произошло абсолютно бесшовно: нажал пару кнопок онлайн, оплатил пошлину, прошел медосмотр буквально за 10 минут и получил новый ID с доставкой на дом.
Уровень бюрократии - 0.
Налоги за два года - 0.
Уровень повседневного стресса - 0.
Недавно заходил пообедать на фуд-корт и заказал то же самое, что два года назад. Заплатил ровно ту же сумму, цена не выросла за два года ни на копейку. Так не везде, конечно, но факт забавный.
В целом, все что я писал про Дубай год назад актуально - прекрасная, уникальная среда для жизни и работы. С каждым годом становится все зеленее и комфортнее для привычного нам европейцам образа жизни. Одна из немногих локаций, где будущее выглядит позитивным в ближайшие 10 лет.
P.S. Я в Москве на месяц. У кого есть желание встретиться - пишите.
#dubai #uae #life
Прошел еще один год и незаметно завершился двухлетний цикл моего ВНЖ в ОАЭ. Незаметно потому, что продление еще на два года произошло абсолютно бесшовно: нажал пару кнопок онлайн, оплатил пошлину, прошел медосмотр буквально за 10 минут и получил новый ID с доставкой на дом.
Уровень бюрократии - 0.
Налоги за два года - 0.
Уровень повседневного стресса - 0.
Недавно заходил пообедать на фуд-корт и заказал то же самое, что два года назад. Заплатил ровно ту же сумму, цена не выросла за два года ни на копейку. Так не везде, конечно, но факт забавный.
В целом, все что я писал про Дубай год назад актуально - прекрасная, уникальная среда для жизни и работы. С каждым годом становится все зеленее и комфортнее для привычного нам европейцам образа жизни. Одна из немногих локаций, где будущее выглядит позитивным в ближайшие 10 лет.
P.S. Я в Москве на месяц. У кого есть желание встретиться - пишите.
#dubai #uae #life
🔥9❤6👍3👏3
KPI в IT
Для меня тема очень интересная. Не раз встречал мнение, что эффективность разных программистов может отличаться не просто в разы, а на порядок. Мой собственный опыт это полностью подтверждает. Отличается ли зарплата у разработчиков на одной позиции на порядок или в разы? Никогда. Обычно на 10, 20, максимум 50%.
Вопрос, конечно, тут не про справедливость, а про мотивацию. Зачем работать 8 часов в день в максимально сфокусированном режиме, если можно просто кайфовать и никуда не спешить? Особенно если разница в компенсации настолько невелика, а базовый уровень зарплат вполне комфортный. Мотивироваться просто любимой работой, сложными задачами, собственным ростом как инженера? В первые года 4, наверно, будет работать, а дальше уже вряд ли, по ряду причин.
Невольно может появиться навязчивая идея ввести какой-нибудь персональный KPI в IT команде и высчитывать размер компенсации или бонусов по формуле. В рознице и сфере услуг ведь этот прием хорошо работает. Почему не попробовать в IT?
Для менеджерских позиций вполне можно, если специфика бизнеса позволяет определить какие-то показатели, на которые команда разработки влияет хотя бы косвенно. Для остальных членов команды это сделать будет гораздо сложнее. Проблема в том, что нет ни одного объективного показателя, который отражал бы эффективность и ценность отдельного инженера в команде. Количество строк кода, пул-реквестов, апрувов на код-ревью, закрытых задач в трекере и т.п - недостаточно объективные метрики, которые зависят от множества рандомных факторов. К тому же, их очень просто накручивать.
В рознице есть объективная глобальная метрика - сколько денег ты заработал компании своими личными продажами. В IT компании прямая связь между работой программиста и прибылью отсутствует. Часто у компании прибыли нет совсем. Большинство KPI, которые можно придумать программистам будут довольно синтетические, сместят фокус команды с продукта на виртуальные фантики и вряд ли повысят общую эффективность команды в целом.
KPI - очень эффективный инструмент в целом, но для разработчиков лучше использовать другие методы мотивации. Об этом можно сделать отдельный пост.
#team #development #management #career
Для меня тема очень интересная. Не раз встречал мнение, что эффективность разных программистов может отличаться не просто в разы, а на порядок. Мой собственный опыт это полностью подтверждает. Отличается ли зарплата у разработчиков на одной позиции на порядок или в разы? Никогда. Обычно на 10, 20, максимум 50%.
Вопрос, конечно, тут не про справедливость, а про мотивацию. Зачем работать 8 часов в день в максимально сфокусированном режиме, если можно просто кайфовать и никуда не спешить? Особенно если разница в компенсации настолько невелика, а базовый уровень зарплат вполне комфортный. Мотивироваться просто любимой работой, сложными задачами, собственным ростом как инженера? В первые года 4, наверно, будет работать, а дальше уже вряд ли, по ряду причин.
Невольно может появиться навязчивая идея ввести какой-нибудь персональный KPI в IT команде и высчитывать размер компенсации или бонусов по формуле. В рознице и сфере услуг ведь этот прием хорошо работает. Почему не попробовать в IT?
Для менеджерских позиций вполне можно, если специфика бизнеса позволяет определить какие-то показатели, на которые команда разработки влияет хотя бы косвенно. Для остальных членов команды это сделать будет гораздо сложнее. Проблема в том, что нет ни одного объективного показателя, который отражал бы эффективность и ценность отдельного инженера в команде. Количество строк кода, пул-реквестов, апрувов на код-ревью, закрытых задач в трекере и т.п - недостаточно объективные метрики, которые зависят от множества рандомных факторов. К тому же, их очень просто накручивать.
В рознице есть объективная глобальная метрика - сколько денег ты заработал компании своими личными продажами. В IT компании прямая связь между работой программиста и прибылью отсутствует. Часто у компании прибыли нет совсем. Большинство KPI, которые можно придумать программистам будут довольно синтетические, сместят фокус команды с продукта на виртуальные фантики и вряд ли повысят общую эффективность команды в целом.
KPI - очень эффективный инструмент в целом, но для разработчиков лучше использовать другие методы мотивации. Об этом можно сделать отдельный пост.
#team #development #management #career
👍5🤔2❤1