Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
79 - Telegram Web
Telegram Web
Хороший тон партиционирования в Greenplum

— Делить на партиции нужно только большие AOT-таблицы.
— Не нужно разбивать таблицы на очень маленькие партиции.
— Ключ партиционирования должен использоваться в запросах в условии where.
— Ключ должен позволять разбить таблицу на примерно одинаковые части.
— Таблицы, созданные с использованием политики распределения данных DISTRIBUTED REPLICATED, не могут быть партиционированы.

#greenplum
Метод '5 почему' поможет раскрыть истинные потребности бизнеса

Поговорим о том, как понять, что именно нужно бизнесу, когда он приходит с вопросом "хочу того — не знаю чего". 

Рассмотрим сценарий: продуктовый аналитик требуют какие-то метрики, основанные на данных, которые вроде бы есть, а вроде и нет в хранилище. Как удовлетворить потребности максимально точно? Есть метод, который помогает раскрывать настоящие потребности заказчика. Этот метод — "5 почему".

Суть метода заключается в том, чтобы понять, что именно бизнес хочет получить задавая вопросы. Конечно, не обязательно спрашивать именно "Почему". Вместо этого, перефразируем вопросы в соответствии с запросом заказчика. 

Возможные шаги:
— Определяем запрос бизнеса. Просим заказчика ясно сформулировать, что именно ему нужно.
— Задаем вопросы, которые позволят выявить детали запроса. Подходим к делу креативно.
— Создаём цепочку из вопросов (не ставим строгую планку "пять", как в оригинале метода). Постепенно детализируем каждый аспект запроса, записывая ответы, чтобы лучше видеть картину. При сложных запросах здесь классно поможет использование майнд-карт.
— Проверяем формулировку вопросов на точность. Если вдруг застреваем на каком-то этапе, перефразируем вопросы.
— При необходимости привлекаем других заинтересованных лиц. Разнообразные точки зрения и мнения — это сила.

Так благодаря системному анализу и методу "5 почему," построение DWH становится более точным и эффективным, помогая бизнесу получить от данных то, что действительно нужно.

#soft_skills #системный_анализ
1
Множественные комбинации: перекрёстное соединение в SQL

Мы ещё не затрагивали тему соединений, которая является очень важной и обширной. И начну я, пожалуй, с одного из наиболее редких соединений. Это CROSS JOIN. Несмотря на его не частое использование, важно понимать как он работает.

По своей сути cross join — это декартово произведение. Каждая строка таблицы A объединяется с каждой строкой таблицы B. Число строк набора результатов будет равно произведению количества строк таблиц, которые будут объединены. Это отличный инструмент для создания всевозможных комбинаций.

Синтаксис:
SELECT id_a, id_b
FROM table_a
CROSS JOIN table_b;


Аналогично сработает:
SELECT id_a, id_b
FROM table_a, table_b


Давайте рассмотрим как будет выглядеть результат перекрёстного объединения двух таблиц:
table_a
1
3
NULL


table_b
1
2
NULL


Результат:
1 1
1 2
1 NULL
3 1
3 2
3 NULL
NULL 1
NULL 2
NULL NULL


Обратите внимание на то, как произошло объединение по NULL — это полноценное значение поля и забывать о нём не нужно.

При использовании cross join на больших таблицах не забывайте, что это дорогостоящая операция, возвращающая огромные наборы данных (ведь мы умножаем одну таблицу на другую).

#sql #join
1
DROP, DELETE, TRUNCATE — погружение в мир удаления данных

В SQL есть несколько способов избавиться от данных и хорошо бы в них не путаться. Так что давайте вспоминать азы.

DROP — когда нужно грохнуть всё и сразу
Эта DDL-операция используется для удаления объектов базы данных (таблицы, представления, индексы и т.д., включая саму базу). Важно понимать, что удаляются не только данные, но и сама структура, определяющая их хранение.

DROP TABLE table_name;


DELETE — выборочное удаление
DML-операция DELETE удаляет записи из таблиц, при этом есть возможность удаления данных по условию. Если условие не указано, то удаляются все данные (но не структура объекта). При этом при удалении DELETE возвращает количество удалённых строк. Также стоит помнить, что DELETE сохраняет значения авто-инкрементального ID, т.е. если вы удалили последнюю запись в таблице и у неё был ID 37, новая строка добавится с ID 38.
Транзакцию с DELETE можно откатить. Удаление "построчное", поэтому медленное.

DELETE FROM table_name WHERE column_name=value;


TRUNCATE — быстрая очистка
DDL-операция TRUNCATE позволяет быстро очистить таблицу ото всех записей, так как в лог-транзакций не записывается построчное удаление (быстрота особенно ощущается на больших таблицах, но не экспериментируйте на проде). При удалении TRUNCATE сбрасывает все авто-инкрементальные счётчики и статистику.

TRUNCATE TABLE table_name;


Удаляйте осознано и, главное, с пониманием что и где вы делаете 😄

#sql
1
Сказка о потерянном времени или проблемы с датами при репликации

На хабре вышла полезная статья про то, почему стоит отказаться от timestamp в PostgreSQL. Рекомендую к прочтению, так как на самом деле тема актуальна не только для постгри.

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

В финансовой отчетности критически важна точность дат. Несогласованные даты при расчетах прибыли и убытков могут привести к ошибкам в финансовых планах и стратегиях.

Что же делать?

— Необходим анализ всех полей с датами в источниках. Важно понимать, что неразбериха с часовыми поясами может быть даже в рамках одной таблицы, например, даты в тех.полях могут поступать в UTC, а в самих фактах в Московском времени.

— Нужна явная обработка часовых поясов при репликации, чтобы избежать несогласованных данных.

— Использование UTC в общем случае упростит согласование дат и предотвратит временную путаницу.

— Чаще всего лучше использовать тип timestamptz (with time zone), если данный тип поддерживается.

— Проверке времён нужно уделить особо внимание при тестировании и приёмке данных.

Управление часовыми поясами при репликации — ключевой аспект поддержания целостности данных в хранилище. Системный подход к этому вопросу поможет избежать временной путаницы и обеспечить точность аналитических отчётов.

#sql
1
Коротко о Snowflake

— Облачное хранилище данных и аналитическая платформа
— Трёхслойная архитектура: хранение, вычисление и сервисы
— Масштабируемость и производительность
— Лёгкая управляемость
— Высокая доступность и отказоустойчивость
— Автоматическая организация и сжатие данных
— Экономическая эффективность
— Колоночное хранение
— Snowflake SQL соответствует ANSI SQL и в целом очень похож на PostgreSQL

#snowflake
1
Вставка данных в таблицу Greenplum через INSERT INTO

Базовый синтаксис
insert into sandbox.table_name ({column}, {column}, ...) values
(123456, Ivan, '2023-11-17 19:45:00'),
(123457, Olga, '2023-11-17 19:46:00');


Важно! тип вставляемых данных должен соответствовать типу столбцов.

insert into sandbox.table_name select * from another_table where column_with_date > '2023-09-07';


Особенности
Для вставки данных в партиционироанную таблицу указывается корневая таблица (созданная командой CREATE TABLE), либо отдельная партиция для вставки. Если данные для указанной дочерней таблицы не соответствуют условию партиционирования, возвращается ошибка.

Для вставки больших объемов данных следует использовать внешние таблицы (external table) или команду COPY. Эти механизмы загрузки более эффективны для вставки большого количества строк.

Не рекомендуется использовать оператор INSERT INTO для вставки одной строки в append-optimized таблицу (AOT). Greenplum Database поддерживает не более 127 одновременных транзакций INSERT в одну AOT.

#greenplum
1
EXCEPT в SQL: ищем уникальные значения

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

EXCEPT — инструмент для фильтрации данных и поиска различий между таблицами. Он позволяет выполнять сравнение в одном или нескольких столбцах, в этом случае сравнение идёт кортежами.

Важно помнить, что при выполнении операции EXCEPT автоматически устраняются дубликаты строк. Если строка существует во втором наборе данных, она не появится в окончательном результате, даже если в первом наборе присутствует несколько раз.

Для использования оператора необходимо, чтобы в обоих наборах данных было указано одинаковое количество столбцов, а их порядок и типы данных должны быть сопоставимыми.

Синтаксис:
select column_1 
from table_name_1
[where condition]

except

select column_1
from table_name_2
[where condition]
order by column_1


Если результирующий набор данных нужно отсортировать, то после второго набора данных указывается order by.

Также EXCEPT можно заменить на JOIN (и чаще всего это может дать прирост производительности):

select t1.column_1 
from table_name_1 t1
left join table_name_2 t2
on t1.column_1 = t2.column_1
where t2.column_1 is NULL
order by t1.column_1


Однако использование EXCEPT делает запрос более читабельным. Что касается эффективности — её лучше тестировать (и по возможности смотреть планы запросов) на реальных данных с учётом индексов и прочих особенностей в конкретных СУБД.

Но не только EXCEPT и LEFT JOIN помогают выявлять уникальные значения в данных. В одном из следующих постов вспомним с вами о таких методах вычитания как NOT IN и NOT EXISTS.

#sql
1
Качества документации: непротиворечивость

Продолжим говорить о качествах документации. До этого мы рассмотрели краткость и полноту, сегодня поговорим о непротиворечивости.

ТЗ и Соглашения не должны противоречить ни другим требованиям внутри проекта, ни самим себе. Если в начале документа мы говорим "сделай так", а в конце "сделай эдак", или в одном документе указываем что поле содержит данные Х (например, дату возврата товара), а в другом это же поле содержит данные У (н-р, дату возврата денег клиенту) — ничего хорошего от данных мы в итоге не получим.

Ещё один простой пример: в ТЗ указано время обновления витрины раз в сутки, в jira требование — "обновление раз в 15 минут", какой результат ожидать от инженера? Будет круто, если он придёт за уточнением, но это бывает не всегда. Плюс время потраченное на разбирательства явно можно использовать более эффективно.

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

Конечно, проект — живой организм и в реальности часто получается так, что соглашения изменились, но исправились только в одном месте (или вообще нет), затем пришёл новый сотрудник, который не смог разобраться где правда, и решил мести новой метлой. Но в будущем такой подход приведёт к потере доверия к данным, что в свою очередь сделает хранилище малопригодным для принятия важных бизнес-решений.

Что делать? Ревью, ревью и ещё раз ревью. Как самостоятельные, так и проводимые другими аналитиками.

Второй момент — поддержание документации (как минимум основных соглашений) в актуальном и консистентном состоянии. Да, это требует усилий, времени и внимания, но они окупятся в будущем.

Важно подчеркнуть, что даже наличие качественной документации не гарантирует отсутствия тех или иных ошибок. Если документация слишком объемная, сложная для понимания или спрятана в недрах проекта так, что о ней никто не знает, то толку от неё будет мало 🥂

#документация
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Что такое метаданные и зачем они нужны?

Это — тень данных (Б.Инмон). Они описывают и добавляют контекст остальным данным в хранилище, превращая хаос в порядок.

Ничего не понятно? Образно говоря, метаданные можно представить в виде библиотечного каталога, в котором содержится вся информация о книгах (то есть о данных), их характеристиках, структуре и расположении.

Основные вопросы, на которые отвечают метаданные: какие данные есть и как их получить в нужном для анализа виде.

Метаданные привносят ясность, которая крайне важна для всех, кто работает с данными — от инженеров и аналитиков до бизнес-пользователей. Они также позволяют отследить источник данных, понять все произведённые над ними предобразования и их путь по хранилищу. Тем самым помогая устранять любые аномалии в процессе.

Как управлять метаданными?
Для начала нужно обеспечить их хранение и автоматизировать сбор. Идеальный вариант — централизованный репозиторий для хранения всех метаданных, который станет единым "источником истины".

Внедрение контроля версий позволит отследить развитие и эволюцию метаданных. А также при необходимости легко выполнить откат до нужной версии.

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

Метаданные добавляют глубину и объем пониманию имеющейся информации. Внедрение процессов по работе с ними является важным этапом проектирования и построения эффективного хранилища.

#dwh
2
Краткий обзор архитектуры Snowflake для начинающих

Snowflake создан специально для сложного мира аналитики данных. Давайте рассмотрим его архитектуру, чтобы лучше понимать, что же происходит под капотом.

Архитектура Snowflake представляет собой гибрид традиционных баз данных с shared-nothing архитектурой.

Три независимых уровня:
1. Общий уровень хранения — служит основой, где хранятся данные. Автоматически организует и уменьшает размер данных для быстрого доступа и анализа.

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

3. Слой облачных сервисов — управляет важными службами, такими как оптимизация запросов, безопасность и метаданные, обеспечивая согласованную и безопасную среду данных. Этот уровень предназначен для быстрого, безопасного и надежного взаимодействия с пользователем.

Эта архитектура обеспечивает оптимальное использование ресурсов, хранение и обработку данных. При этом компоненты архитектуры работают без взаимной зависимости.

Преимущества архитектуры:
— производительность
— улучшенная масштабируемость
— оптимизация затрат

Архитектура Snowflake создана для эффективной и удобной обработки данных. Это делает Snowflake многофункциональным решением для сложных запросов в области аналитики данных.

#snowflake
2
10 важнейших навыков будущего

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

Итак, какие же навыки нам с вами предстоит развивать:
1. Творческое мышление
2. Аналитическое мышление
3. Технологическая грамотность
4. Любознательность и непрерывное обучение
5. Устойчивость, гибкость и адаптивность
6. Системное мышление
7. ИИ и BigData
8. Мотивация и самосознание
9. Управление талантами
10. Сервисная ориентация и обслуживание клиентов

Какие из них актуальны для системного аналитика? На мой взгляд, все.

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

— Быть творческим и гибким — это возможность смотреть на задачи и данные с разных точек зрения, проводя исследования как в глубину, так и в ширину.

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

— Важность аналитического и системного мышления, а также внимания к деталям для системного аналитика, думаю, не требует дополнительных объяснений :)

— И, наконец, развитие в профессии невозможно без внутренней мотивации и самосознания.

Есть ли у вас свой "топ-3" софт-скиллов, которые вы считаете ключевыми для успешной карьеры?

#soft_skills
1
Вакуум в Greenplum: путь к производительности

Эффективное хранилище данных — это не только оптимально подобранное оборудование (или облачные сервисы) и ПО. Для поддержания целостности данных, оптимизации производительности и обеспечения эффективного использования ресурсов также важно регулярно проводить различные мероприятия по поддержанию "здоровья" DWH.

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

vacuum sandbox.table_name;


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

Рекомендации по использованию VACUUM от VMvare:
— запускать VACUUM после крупных операций UPDATE и DELETE.
— избегать использования VACUUM FULL: вместо этого предпочтительнее использовать операцию CREATE TABLE...AS, а затем переименовать и удалить оригинальную таблицу.
— чаще выполнять VACUUM для системных каталогов, чтобы избежать их разрастания и необходимости запуска VACUUM FULL.
— никогда не прерывать выполнение VACUUM FULL для системного каталога и не используйте команду kill для этого процесса.

Для поддержания производительности чтения метаданных необходимо периодически запускать VACUUM FULL для таблиц системного каталога. Однако, стоит учитывать несколько важных моментов:
— Чистка системного каталога эквивалентна остановке сегмента кластера.
— Нельзя прерывать уже запущенный VACUUM FULL системного каталога, чтобы избежать поломки сервиса Greenplum на сегменте.
— Существует жёсткий лимит на объём "мёртвых" строк для VACUUM – не более 1 ГБ указателей строк на процесс.

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

Хотите почитать про вакуум ещё? На хабре есть неплохая статья на этот счёт: Особенности VACUUM в MPP-форках PostgreSQL.

#greenplum
1
Магия SQL Joins: как собрать нужные данные при соединений таблиц

JOIN — фундаментальная функция в SQL, которая позволяет объединять информацию из разных таблиц. С её помощью можно объединять строки из двух или более таблиц на основе связанного между ними столбца. Основными ключевыми словами для JOIN являются INNER JOIN, LEFT JOIN (или LEFT OUTER JOIN), RIGHT JOIN (или RIGHT OUTER JOIN) и FULL JOIN (или FULL OUTER JOIN).

Понимание принципов работы с JOIN поможет эффективно объединять данные и избежать множества ошибок.

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

INNER JOIN
Представим, что у нас есть база данных университета. С помощью INNER JOIN можно легко объединить студентов и занятия, на которые они записаны.
SELECT
students.student_id,
students.student_name,
students.grade,
courses.course_name
FROM students
INNER JOIN
courses ON students.student_id = courses.student_id;


LEFT JOIN
Теперь перейдём к электронной коммерции. Воспользуемся LEFT JOIN (INCLUSIVE), чтобы получить список всех клиентов, включая тех, кто еще не совершил покупку.
SELECT
customers.customer_id,
orders.order_id
FROM customers
LEFT JOIN
orders ON customers.customer_id = orders.customer_id;


Если же нам нужно найти только тех покупателей, которые не совершали заказ, то вносим небольшие правки в EXCLUSIVE-запрос:
SELECT 
customers.customer_id,
orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
WHERE orders.customer_id IS NULL;


RIGHT JOIN
Теперь представим, что перед нами база библиотеки. Воспользуемся RIGHT JOIN (INCLUSIVE), чтобы получить список всех книг, даже тех, которые не выданы ни одному читателю.
SELECT
books.book_id,
borrowers.borrower_name,
books.title,
books.author,
books.genre
FROM
books
RIGHT JOIN
borrowers ON books.borrower_id = borrowers.borrower_id;


Если же нужно найти только книги, которые выданы читателям, добавляем EXCLUSIVE условие:
SELECT
books.book_id,
borrowers.borrower_name,
books.title,
books.author,
books.genre
FROM
books
RIGHT JOIN
borrowers ON books.borrower_id = borrowers.borrower_id
WHERE books.borrower_id IS NULL;


FULL JOIN
Перейдём к управлению проектами. С помощью FULL JOIN (INCLUSIVE) выведем всех сотрудников и все проекты, независимо есть ли между ними связь.
SELECT
e.employee_id,
e.employee_name,
pr.project_id,
pr.project_name
FROM
employees e
FULL JOIN
projects pr ON e.employee_id = pr.employee_id;


Если же нам нужно вывести всех сотрудников без проектов и все проекты, без связанных сотрудников, модифицируем запрос до EXCLUSIVE:
SELECT
e.employee_id,
e.employee_name,
pr.project_id,
pr.project_name
FROM
employees e
FULL JOIN
projects pr ON e.employee_id = pr.employee_id
WHERE
pr.employee_id IS NULL OR pr.project_id IS NULL;


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

#sql #join
1
Разгадка тайн соединения NULL-значений в SQL

Продолжим серию статей про особенности работы с #null 🙂 да, они ещё не закончились.

Одна из часто встречающихся проблем — непонимание как происходит JOIN таблиц с NULL-значениями. Давайте посмотрим на примерах.

Допустим у нас есть две таблицы:

user_names
us_id  name
1 Илья
2 Ольга
3 Null
Null Null

user_roles
us_id  role
1 admin
2 user
3 user
Null guest
Null Null


INNER JOIN

Строки, для которых нет совпадения в обеих таблицах, исключаются из результирующего набора. В том числе, если в столбце, по которому происходит соединение, встречаются значения с NULL, эти строки будут исключены из результата, так как два NULL нельзя сравнить между собой.
SELECT u.us_id, r.us_id, name, role
FROM user_names u
INNER JOIN user_roles r ON u.us_id = r.us_id;


Результат:
u.us_id   r.ud_id  name   role
1 1 Илья admin
2 2 Ольга user
3 3 Null user


LEFT JOIN
Возвращает все записи из левой таблицы (users_name) и соответствующие записи из правой таблицы (users_role).
SELECT u.us_id, r.us_id, name, role
FROM user_names u
LEFT JOIN user_roles r ON u.us_id = r.us_id;


Результат:
u.us_id   r.ud_id  name   role
1 1 Илья admin
2 2 Ольга user
3 3 Null user
Null Null Null Null

Здесь стоит отметить, что появившиеся Null в полях r.ud_id — не являются Null-значениями из таблицы users_role.

FULL JOIN
Возвращает все записи, включая совпадения в левой или правой таблице. Строки в любой из таблиц будут содержать NULL значения в столбцах из другой таблицы, в случае отсутствия совпадения по ключу.
SELECT u.us_id, r.us_id, name, role
FROM user_names u
FULL JOIN user_roles r ON u.us_id = r.us_id;


Результат:
u.us_id   r.ud_id  name   role
1 1 Илья admin
2 2 Ольга user
3 3 Null user
Null Null Null Null
Null Null Null guest
Null Null Null Null

Обратим внимание, что строки с NULL NULL повторяются дважды, так как они не равны друг другу и их нельзя объединить.

#sql #null
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Не потеряйте себя, попав в вихрь IT-технологий

Практически всем нам в детстве внушали деструктивные и тревожные идеи "Без труда не вытащишь и рыбку из пруда", "Терпение и труд все перетрут", "Кто не работает, тот не ест" и другие. А современные реалии приправили это всё повальным трендом на "успешный успех". И вот мы попадаем в бесконечную гонку к новым вершинам, где страшно остановиться, ибо "сразу выпадешь на обочину". Особенно это актуально для молодых и амбициозных специалистов (под молодыми я имею ввиду отнюдь не возраст, а давность входа в специальность). Кажется что, если ты остановишься на минуту — мир рухнет.

Однако, реальность немного другая. Да, в мире IT важно держать руку на пульсе и быть в курсе последних технологий, и это отлично. Но не стоит забывать и о ментальном здоровье, о режиме работы и отдыха, то есть о набившем оскомину work-life balance. Баланс — ключ к сохранению физического и эмоционального здоровья без которых просто не имеет смысла всё остальное.

Опасность в том, что в стремлении удержаться на волне новых технологий мы упускаем из виду заботу о себе. И рано или поздно это может привести к хронической усталости, стрессу, а может и к серьезным заболеваниям.

Как себе помочь?
— Всегда выделяйте время "на себя" и то, что вас наполняет. Хобби, спорт, время с друзьями — не забывайте об этом, даже когда кажется, что вы ничего не успеваете на работе и дома. На вас не держится мир. Отдыхая, вы инвестируете в свою будущую продуктивность.
— Используйте различные техники тайм-менеджмента (pomodoro, таймблокинг и другие), и обязательно отдыхайте в перерывах, а не просто переключайтесь с задачи на задачу.
— Не превращайте свое свободное время в непрерывное обучение на проф.темы. Мир прекрасен и огромен, и ваш широкий кругозор тоже принесёт пользу.
— Изучайте новое из интереса, а не из обязанности. Даже в тех случаях, когда нужно изучить что-то скучное, выбирайте наиболее удобный способ обучения и не забывайте о перерывах.
— Не ругайте себя за периоды низкой проф. активности и время, проведенное "без явной пользы".
— Движение — жизнь. Как бы это ни звучало банально, много движения — прогулки, спорт, танцы или просто разминка — помогут вашему телу и мозгу.
— Уделяйте внимание здоровью и не игнорируйте "звоночки". Всегда проще и дешевле вылечить болезнь на ранней стадии. И нет, тело не подождёт.
— Сон — верный союзник. Ещё одна банальность, но как часто в погоне за продуктивностью, мы в первую очередь урезаем именно его. При этом сон — фундамент здоровья и хорошего самочувствия.
— Учитесь говорит "нет". Не бойтесь отказываться от лишних обязательств, чтобы избежать перегрузки.

Конечно же, не стоит впадать в крайности и полностью забивать на свои обязанности. Но если становится совсем невмоготу — будьте честны с собой и работодателем. Берите отпуск. Меняйте работу. Слушайте себя. Для "крайних" случаев можно послушать лекцию Ильи Якямсева "Эффективность не работает".

Берегите себя. С наступающим 2024 годом! 🎄

А блог тем временем уходит на зимние каникулы ☃️

#soft_skills
Please open Telegram to view this post
VIEW IN TELEGRAM
👍211🔥1
2025/07/10 04:58:03
Back to Top
HTML Embed Code: