В этом треде автор постарается объяснить, почему в «Web Perf» нет места хакам, а подебажить алгоритм на бумаге — это круто.
📝 Disclaimer
Автор треда — адепт старой школы и в 2k21 зачем-то учится в универе, хотя это уже не модно. Убеждён, что если у тебя нет фундаментальных знаний, то «инженером» называть себя не стоит. Примерно о том же говорит и Wikipedia в определении «Engineer».
Я не уверен, знают ли ребята без фундаментального образования, как обозначается блок модификации на блок-схеме, да и о чём он вообще.
Алгоритмизация закаляется в учебных заведениях. Сейчас же, в эпоху шейминга вышки, если сам не выучил, то… я даже не знаю что.
Ничего?
Если ты начертился на бумаге алгоритмов, то ставь класс.
Придётся рассказать про опыт «старой школы» — мой.
Конкретно у меня было 2 преподавателя по алгоритмизации с абсолютно разными подходами.
Алгоритмизация (опыт в техникуме)
Преподаватель давал разные задачи и принимал решения любой ценой.
Это олимпиадный подход. Ты забиваешь на всё и решаешь на скорость. Лишь бы потом эту программу было не лень вбивать в Pascal.
И это хороший опыт.
Алгоритмизация (опыт в универе)
Преподаватель давал не ёмкие задачи и принимал только максимально оптимизированные решения.
И это лучший, как мне кажется, опыт!
P. S. У меня как-то не приняли лабу, потому что сложность была «N», а не «N-1».
Было забавно наблюдать за проверкой алгоритмов. Студент с алгоритмом на 10 блоков мог отлететь, а вот блок-схема на 3 листа сдавалась на «ОТЛ».
Кажется, где-то на этих занятиях я стал понимать как интерпретатор идёт по коду, процессор делает такт, а в памяти создаётся ячейка. 🤖
НО!
Я не могу понять почему не использовал даже простые оптимизации первые 2 года в своём коде, вообще.
Наверное, пока ты юниор, ты все силы тратишь на то, чтобы код был читаемым, а не эффективным.
И это нормально, нет проблем. Точите паттерны, ребята!
Когда алгоритмическая база освоена, самое время расширить свои знания о структурах данных. Ещё.
Ибо если загуглить «BigO», то одним из топ-результатов будет bigocheatsheet.com , где чётко понимаешь, что тут структур данных больше, чем ожидал. Надо гуглить.
Собственно, эту фразу Линус Торвальдс говорил в контексте «Git». Так что, тут говорится не об отличиях списка и массива. Повысьте градус контекста этой цитаты.
«BigO» и понимание структур данных — неотъемлемы.
Поэтому, затраты на: чтение, поиск, вставку и удаление сначала (увы, тупо) заучиваешь.
Потом, уже понимаешь «почему так?».
Затем, больше не возвращаться к шпаргалкам.
Там еще есть такой прикольный момент, когда ты сам понимаешь цену вставки:
- в начало
- в середину
- и в конец
для всех ходовых типов данных.
Потом, так же понимаешь и про «удаление».
Рекоммендую. Прикольное чувство.
И вот когда у тебя в голове есть понимание структур данных, а твои руки могу зачертить блок-схему, чтобы это понял кто-то из команды, то ты оптимизируешь иначе.
Со временем, у тебя появляются следующие повадки:
- Ты исследуешь алгоритм на неоптимальность;
- У тебя намётан глаз на квадратичную сложность;
- Ты чётко видишь лишнюю работу в чейне вызовов;
- Профайлер начинает кипятить Макбук;
- ???
- Ты начинаешь исследовать.
🥲
И восприятие эвристики оптимизации программы, меняются.
Нпример, помню свои мысли, когда увидел `optimize-js`: «Ого, вот это показатели!»
А затем у тебя начинают вызывать вопрос: `React.memo`, `shouldComponentUpdate` и кастомные компараторы.
– «А зачем в этот узел вообще текут данные, если на вход мемоизация? Может, структуру компонента и поток данных сначала пересмотреть?»
Нам надо чаще думать о потоке данных.
Итого, что нам даёт понимание «BigO» и структуры данных?
Они дают надежду, что «Web Performance» не скатится в чек-лист быстрых решений, а оптимизаторы будут не только созерцать графики «Web Vitals», но и думать о «Total Blocking Time».
В этом треде найдём все неоптимизированные строки кода в рамках одного файла и поговорим о нюансах работы DevTools.
Хорошая привычка, если не хочешь копить Perf-долг.
⚠️ Disclaimer:
От этого треда не стоит ждать решения всех Performance-проблем. Ибо «DevTools» – не тот инструмент, мануал которого можно изложить в одном треде. en.wikipedia.org/wiki/101_(topi…
📝 Предварительные требования: 1) Понимать что такое стек вызовов (LIFO) 2) Примерно понимать как интерпретатор JS «идёт» по коду
С вами была Ирина Соколовская, и моя неделя в этом аккаунте подошла к концу. Вы классные, мне было с вами интересно, надеюсь и вам со мной тоже :)
Мой личный твиттер: @ierhyna
В реплаях соберу тред тредов из всего, о чем рассказала на этой неделе.
Привет! Сегодня поговорим про оптимизации, что влияет на метрики, расскажу про best practices и случаи из жизни :)
Выделю три основные направления возможных оптимизаций:
- размеры бандлов и их доставка
- загрузка и отрисовка страницы
- взаимодейстивие со страницей, отзывчивость, UX
Всем доброй пятницы!
Вчера вечером мы поговорили про деньги и где их можно заработать, подробности вот в треде 👇
Ну и самая главная мысль: легких денег не бывает. Нет ни одной волшебной схемы, которая сделает тебя богатым. Путь к бабкам всегда труд
Труд не такой, что сутками пахать на износ на заводе — так много не заработаешь. Труд состоит в том, что ты должен потратить ГОДЫ, чтобы создать капитал. И эти годы ты должен быть сконцентрирован, не бросать то что начал, не верить в «схемы».
То же самое применимо к зарплате в IT. Хочешь 500к? Будь готов потратить несколько лет на получение опыта и экспертизы. Тебе придётся интересоваться всем что происходит. Можешь сидеть с 9до5, а после забывать про разработку, но тогда 500к не жди.
Фуф, ну и денёк сегодня выдался.
Как и обещал, давайте поговорим немного про бабки 💸
Все их любят, всем они нужны для того, чтобы влачить своё существование. Но где их взять, как сохранить и преумножить?
Пока я пишу тред кидайте свои варианты
Первое и самое очевидное — зарплата.
Вы меняете своё время и навыки на деньги. Все это делают, большинство только этим и живёт. У зарплаты есть такие свойства: она ограничена кол-вом часов в сутках, вашими умениями и часто геопозицией.
Мы можем работать N часов в сутки и получать M шекелей за час. M зависит от того сколько стоят ваши навыки на рынке в вашей местности. Также зарплата может резко сократиться до 0 если вы заболеете, получите неисправимую травму или больше будете не нужны на рынке.