Good dev knows – Telegram
Good dev knows
2.15K subscribers
26 photos
8 videos
187 links
Everything what the good dev shall know. Stories, hard skills, soft skills. Regularly.

Instagram: https://www.instagram.com/gooddevknows/

Questions: @PavloPoliakov
Download Telegram
Новости

В начале этой недели стали доступны результаты IT Salary Survey December 2021. Особенность конкретно этого опроса в том, что его участники, преимущественно русскоговорящие экспаты.

🔭 Наблюдения следующие:

* Большинство экспатов переезжают в Берлин. Определенно там и вакансий больше и ЗП повыше.

* Зарплаты растут, сейчас медианная ЗП составляет 75.000€, когда я переезжал была 60.000€.

* Total compensation практически никогда не отличается от базовой зарплаты больше чем на 10%. В Германии по-прежнему не распространено давать стоки. Обычно бонус это какой-то ежегодный процент от ЗП.

* Большинство ответов из Берлина, 20% из всех ответов питонисты. Они что там все переезжают data science делать в Берлин?

* Фрилансеры зарабатывают прям много, но у них и рабочих часов в году больше, чем у обычных работников. 2000 vs ~1800.

Остальное посмотрите сами, интересные наблюдения велком в комментарии.

Спасибо организаторам за проведение опроса 🤗.

#новости
👍9
VAPID цели

Было ли с вами такое, что вы задумали сделать что-то хорошее, но ничего не происходит? Например, вы подумали — надо больше читать. Действительно хорошая идея 💡.

Если мы хотим что-то сделать, то нужно поставить цель. А когда мы слышим про постановку цели в голову приходит одна аббревиатура — SMART. Цель должна быть Specific, Measurable, Attainable, Relevant, Time-Bound. Тогда шансы на успех повышаются.

Хорошо, мы теперь знаем (знали) как ставить хорошие цели, а что есть что-то наоборот? Как проверить, не поставили ли мы перед собой “плохую” цель? Решение есть. Недавно я узнал еще одну аббревиатуру — VAPID.

VAPID это:

Vague – Цель не ясна, шаги, которые нужно предпринять непонятны

Amorphous – Непонятно, что будет считаться достижением цели

Pie in the sky – Она очень амбициозна

Irrelevant – Цель сложно отнести к чему-то, что действительно важно для нас

Delayed – Не ясно когда планируется осуществлять намерение, это может произойти в любой момент

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

Пример VAPID цели — “давайте избавимся от технического долга”, “надо найти новую работу”.

⬛️ Еще раз — хорошо ставить цели используя SMART фреймворк. Чтобы убедиться, что с целью все в порядке — проверим не выглядит ли она как VAPID цель.

#софтскиллы
👍61👎1
Как я промоутил без фактов

Как-то раз я работал тимлидом в команде. В мои обязанности входило не только деливери и техническое лидерство, но и непосредственно формальный менеджмент. Я временами проводил 1-1 (редко), давал людям фидбэк и участвовал в процессах эвалюэйшена.

Тогда процесс был такой — тимлиды заполняют документы на членов команд, собирают с них фидбэк, дают свой и делают вывод — как проявил себя человек в этом полугодии. Вариантов было три — below expectation, meets expectation, overachieved expectations. Если человек overachieved, то ему выплачивался бонус 💰, согласно контракту. Потом был митинг среди всех хэдов, где производилась калибровка, утрясались детали и утверждались результаты.

В моей команде, по моему мнению, был один человек below, два meets и один overachieved. Поговорим о последнем. На этого разработчика всегда можно было положиться, он брал на себя ответственность, разбирался с бизнес требованиями, предлагал улучшения, делал больше чем написано в тикете, было понятно чем он занят. В общем это был Хороший разработчик.

С этой информацией я, собственно, и подошел к калибрационному митингу. Это был первый подобный опыт для меня. На митинге мы быстро прошлись по below и meets — вопросов не было. Потом начали обсуждать overachieved. И тут меня спросили — а почему этот разработчик overachieved? Я рассказал про то же, что написал выше. Тогда меня спросили — а что конкретно сделал этот разработчик, как можно это измерить?

И тут я понял, что я в беде 📉. У меня не было ответа на этот вопрос. Для меня было очевидно, что он работает отлично. Я думал, что и для других очевидно, а если не очевидно, то они поверят моим словам. К сожалению, у меня не было подготовлено конкретных примеров (а лучше еще и слегка преувеличенных). Я попытался что-то быстро вспомнить, но это был провал. При этом я наблюдал, как другие хэды предметно нахваливали своих подопечных, тех, кого я бы не оценил, как Хороших разработчиков.

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

⬛️ Какой вывод можно сделать? Я делаю такой — нужно не забывать, что мы живем в информационном пузыре. Если что-то очевидно мне, это не значит, что это очевидно и другим. Если хочешь в чем-то убедить других, легче всего это делать, используя что-то, что можно измерить. Например, я мог сказать — разработчик N сделал рефакторинг пайплайна, теперь мы билдим проект за 5 минут, это сэкономило нам 20 часов в прошлом месяце. А его об этом даже никто не просил. Все нужно измерять, это пригодится.

#истории
👍52
Mutation testing

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

Мы можем тестировать компоненты отдельно с помощью unit тестов, мы можем тестировать как все работает вместе, с помощью интеграционных тестов. Но сколько тестов нужно? Чем сложнее приложение, тем больше сценариев, как оно может работать — тем больше тестов можно написать. Все сценарии покрыть невозможно. Но можно усилить свой quality assurance процесс дополнительно. Один из таких вариантов — применять mutation testing 🧟‍♂️.

Суть этого подхода проста. Специальная библиотека делает в вашем коде изменение (мутант) и запускаются тесты. Если ваши тесты упали, значит они убили мутанта ☠️. Если ваши тесты не упали, значит он выжил и нанес ущерб. Это что-то значит. Хотя бы следующее — либо изменение было сделано в мертвом коде, либо этот кусок кода не тестируется, либо ваши тесты плохо работают. Из этого уже можно сделать какие-то выводы и принять решения.

Какие изменения вносятся в код? Например, у вас в коде есть if(myValue == 50), мутант может выглядеть так if(myValue != 50). Мутант ведет себя как обычный баг.

Качество ваших тестов можно будет измерить ориентируясь на mutation score. mutation score = number of mutants killed / total number of mutants. Если mutation score низкий — нужно менять ваши тесты.

Что можно использовать:
* Stryker — для JavaScript, C#, Scala
* Pitest — для JVM языков
* Mull — для C или C++
* mutmut — для Python

⬛️ Еще раз — тесты это классно. Их нужно писать. Если хотите контролировать, что ваши тесты действительно что-то проверяют, добавьте mutation testing.

#хардскиллы
👍43
Моя страна атакована, мой город атакован, не хочу делать вид, что этот канал вне политики.

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

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

Я знаю, что в этом канале много россиян. Посмотрите обращение президента Зеленского к россиянам (на русском с 02:03).

Всех призываю помочь фонду "Повернись живим". Это можно сделать тут:
* https://www.patreon.com/savelife_in_ua
* https://savelife.in.ua/donate/

Переживаю, но верю в будущее 🇺🇦
316👍89👎67
Работа с тревожностью

Разработчики много переживают. Особенно сейчас 💙💛. Тревожность (anxiety) сковывает, мешает делать свою работу, кидает тебя в объятья думскроллинга. Именно так я провел вчерашний день.

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

Хочу порекомендовать апп Sayana. Я узнал о нем около месяца назад, на фоне новостей о том, что Headspace купили его. В приложении простая механика - вы делаете чекин, отмечаете как себя чувствуете (тревожно, спокойно, счастлив, устал и т.п.), можете сделать заметку из-за чего. А после этого, апп рассказывает вам что-то полезное. Например, о простой практике с фокусом на когнитивно-поведенческую терапию или что-то про когнитивные искажения или просто историю.

Например, упражнение Breathing daisy 🌸. Если дышать в темпе вдох 4 секунды и выход 4 секунды, то тело подумает, что вам спокойно и вы тоже успокоитесь.

Еще мне понравилась притча оттуда:
Когда-то давно старый индеец открыл своему внуку одну жизненную истину.
— В каждом человеке идет борьба, очень похожая на борьбу двух волков. Один волк представляет зло — зависть, ревность, сожаление, эгоизм, амбиции, ложь... Другой волк представляет добро — мир, любовь, надежду, истину, доброту, верность...
Маленький индеец, тронутый до глубины души словами деда, на несколько мгновений задумался, а потом спросил:
— А какой волк в конце побеждает?
Старый индеец едва заметно улыбнулся и ответил:
— Всегда побеждает тот волк, которого ты кормишь.

⬛️ Еще раз — можно переживать, можно не переживать, но лучше быть осознанным и понимать, почему ты чувствуешь то, что чувствуешь. С этим может помочь практики когнитивно-поведенческой терапии.

ℹ️ В ближайшее время я не гарантирую регулярные посты в канале, пока голова занята другим. Нужно позаботиться о себе и близких.

#софтскиллы
👍73
Пятый день войны 💙💛

Моя мама только что рассказала, что в дом 60 метров от нашего дома в Харькове прилетел разгонный блок ракеты. Поврежден первый этаж дома. Это обычный жилой квартал, рядом больница.

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

С сегодняшнего дня КАЖДЫЙ россиянин тоже чувствует эффект — рубль обесценивается. Весь прогрессивный мир объединился и стоит на стороне Украины. Благодаря действиям вашего правительства, ваше будущее ставится под сомнение. Не жизнь, а БУДУЩЕЕ и будущее ваших детей.

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

Россия ведет полноценную войну в Украине. "Умные" ракеты и точечные удары закончились в первый день, применяется оружие неизбирательного действия. За время войны на территории Украины уже погибло 16 детей. Гибнут и попадают в плен ваши солдаты. Солдаты не мотивированы воевать, даже они не понимают смысла происходящего.

Россияне, тут нет второго варианта, вы НЕ ХОТИТЕ войны, потому что вы хотите будущего. Хороший разработчик не хочет войны, потому что он хочет развития. Каждый должен делать что-то, что в его силах, чтобы остановить войну. Вы не хотели этой войны, но теперь эта война и ВАША ответственность. Распространяйте информацию, это минимум. Посмотрите как мирные жители встречают ваших солдат.

Все, для кого это безопасно, могут помочь армии Украины.

Комментарии под этим постом оставляю открытыми. Мир уже изменился, нет никаких "других" площадок. Все площадки должны говорить о войне и о том как ее остановить!

Украина будет свободной!
👍14633👎22
Собираем деньги для гуманитарной помощи 💙💛

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

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

Я лично начинаю сбор средств, чтобы помочь людям в Харькове и прошу вас присоединиться. Эти деньги пойдут на только на гуманитарные потребности. Я отчитаюсь о том, каким волонтерам они попадут. Буду координировать это с людьми в Харькове.

Пожалуйста, переводите деньги по этим реквизитам.

IBAN: DE69100110012620227756, Pavlo Poliakov; BIC: NTSBDEB1XXX
PayPal: https://www.paypal.com/paypalme/PavloPoliakov или me@pavelpolyakov.com
Перевод на украинскую карту (UAH): 4441114456919602, Dmitry Yevtushenko

Такие переводы безопасны, это просто p2p перевод. Каждый доллар важен. Каждый должен помогать тем, чем может. Я удвою первые 100€.

Спасибо 🙏
52👍19
Седьмой день войны 💙💛

Отчитываюсь про сборы гуманитарную помощь. Я собирал здесь и через свой LinkedIn.

Вчера мы собрали:
1. 2331.59 EUR на PayPal от 25 человек
2. 845 EUR на банковский счет от 8 человек
3. 28.000 UAH на счет в Украине, от я не знаю скольких человек, это ведь не мой счет
4. + 200 EUR от меня

Попыток фишинга моего PayPal: 1.

Я узнал контакты людей в Харькове, которые осуществляют помощь в поле и отправил им переводы.

📝 Отчет:
1. 28.000 UAH ушло брату подписчика этого канала @maxim1am — покупают и развозят продовольствие в городе
2. 1000 EUR ушло Андрей Белинский — помогает с гуманитарными нуждами в поле
3. 1500 EUR ушло Tatiana Ivanchenko — координирует лечение раненых
4. 880 EUR ушло благотворительному фонду Станция Харьков

Пока я это писал мне на PayPal пришло 500 USD. Все деньги которые продолжат поступать будут выводиться местным волонтерам и организациям.

Большое спасибо за помощь! То что вы сделали это очень важно. Важно работать над тем, чтобы война остановилась. Каждый делает то, что может.

Наконец я точно себе доказал, что не зря создал этот канал 🤗

Скрины переводов в комментариях.
76👍58
Media is too big
VIEW IN TELEGRAM
⚡️ Внеочередное включение

Пришел первый отчет и благодарность ВАМ (хоть я и не просил).

Спасибо Евгению за то, что он делает для людей в Харькове. Вот отдельный канал, где он будет выкладывать отчеты.

Если появилось желание помочь, реквизиты на месте:

IBAN: DE69100110012620227756, Pavlo Poliakov; BIC: NTSBDEB1XXX
PayPal: https://www.paypal.com/paypalme/PavloPoliakov или me@pavelpolyakov.com
Перевод на украинскую карту (UAH): 4441114456919602, Dmitry Yevtushenko

Спасибо 🤗
👍2717👎1
Восьмой день войны 💙💛

Вчера мы дополнительно собрали:
1. 2517.13 EUR на PayPal от 17 человек
2. 434 EUR на IBAN
3. 9000+ UAH на украинскую карту, точной информации нет, друг эвакуировался из Харькова и ответит позже

📝 Сегодня я перевел EUR:
1. 1500 EUR Харьков Волонтер ЕВГЕНИЙ (помощь продуктами)
2. 1000 EUR Tatiana Ivanchenko (помощь раненым)
3. 440 EUR Андрей Белинский (помощь продуктами)

Вчерашний платеж для Станции Харьков вернулся, но я перевел деньги на украинскую карточку и, вместе с новыми поступлениями, мы добьемся правильного перевода.

Хочу рассказать — я еще собираю в LinkedIn. Очень много переводов от европейцев — немцев, поляков, людей которых я просто не знаю. Поддерживают люди из Египта и Индии. Все поддерживают Украину, наша компания SHARE NOW выделила 10.000 EUR на помощь. Дополнительно собирает непосредственно физическую гуманитарную помощь для беженцев. Всем спасибо, это важно для меня и для Украины 🙏

⚠️ Информация для россиян: Справочник для антивоенных споров в семье и на работе. Это касается вашего будущего и будущего ваших детей. Не оставайтесь в стороне. Каждый делает то, что может.

Спасибо 🤗 Вместе остановим войну 🤝
68👍17👎1
Привет, друзья 💙💛

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

С момента, когда я отправил последний отчет, я дополнительно (с канала и LinkedIn) получил 2612 EUR и отправил в Харьков 2562 EUR. Почему не отправил еще 50? Потому что я только сейчас это понял, когда подсчитал 🤦‍♂️. Исправлюсь сразу же после поста, больше такого не повторится.

Эти деньги ушли - волонтерам, которые развозят еду (1297 EUR), на медикаменты для раненых (200 EUR, цель была указана в переводе ко мне), и 1065 EUR на выпечку хлеба.

Спасибо всем за помощь, уверен, что мы помогли десяткам людей 🙏.

⚠️ Новый сбор ⚠️
Сейчас хочу помочь с другим сбором. Моя подруга, девушка с которой я работал в Харькове, собирает деньги на закупку бронежилетов. Заказ уже оформлен, 30 бронежилетов стоят 564000 UAH, нужно оплатить в понедельник. Эти бронежилеты будут спасть жизни людям из территориальной обороны в Харькове и Одессе. Тем людям, которые уже сейчас защищают нашу свободу и наше будущее.

Как помочь?

IBAN: DE69100110012620227756, Pavlo Poliakov; BIC: NTSBDEB1XXX
PayPal: https://www.paypal.com/paypalme/PavloPoliakov или me@pavelpolyakov.com
Перевод на украинскую карту (UAH): 4441114456919602, Dmitry Yevtushenko
⚡️ Теперь можно и криптовалюту
BTC 14U56GaNREPjTkvq7YfN84A9jjEew7nQSa
ETH 0x9936aa4C98ea7F1877B9400D4B1e11d0eb390A00

Первые 100 EUR я удваиваю.

Победим вместе 🤝
👍577👎5
Отчет по бронежилетам и новости

В результате сбора мы собрали 2651.29 EUR и 9881 UAH и 0 криптовалюты 🤷‍♂️. 12 переводов на PayPal, 3 на IBAN, 10 человек на Украинскую карточку. Великолепный результат.

Сумма на бронежилеты собрана И даже пересобрана, на дополнительные деньги будет куплена машина.

Всем спасибо 🤗.

Новости. Мои родители и семья моей сестры были вынуждены уехать из Харькова и сейчас находятся в Германии. Я стал немного меньше тревожиться. Даже в украинских пабликах появляется мысль, что вместо того, чтобы тревожиться и всем волонтерить — лучше вернуться к работе. Этим мы тоже помогаем. Завтра планирую отключить новости и возвращаться в работу. Предыдущие недели работать мне практически не удавалось. Очень приятно, что SHARE NOW, с первого дня признала проблему и чем могла поддерживала своих сотрудников. Кстати, согласно прошлогодней аналитике, украинцы были второй национальностью в компании, больше только немцев.

Мир изменился и мой мир тоже меняется. В канале тоже будут изменения, но об этом позже.

Вместе победим 🇺🇦
👍7623👎6
Привет, друзья,

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

Я уже отправил 200 EUR.

Вот его реквизиты:
1. PayPal: andrii.kobtsev@gmail.com
2. IBAN: DE48100110012628403294 BIC: NTSBDEB1XXX
3. PrivatBank (UA): 5168 7554 3795 7687

Вместе победим 🇺🇦
👍59👎189
Пост для немногих подписчиков из России, которые остались здесь и которые продолжают занимать позицию "не все так однозначно".

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

Что принесло им "освобождение" или "защита национальных интересов РФ"? Расстрелы, изнасилования, грабежи. Сейчас, сбежавшие солдаты, отправляют домой награбленные телефоны.

Это то, с чем вы готовы себя отождествлять?

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

Забегая вперед, ответ на аргументы про наши военные преступления, в частности — прострел ног пленным. Наше правительство их уже осудило и пообещало расследование. Что делает ваше? Где комментарии про мародерство, убийства, пытки?

Ваше будущее зависит только от вас. Вы не обязаны искать оправдания чужим действиям только потому, что вы русские.
👍163👎22