Девчонка из IT
رفتن به کانال در Telegram
2 061
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-107 روز
-4130 روز
آرشیو پست ها
2 061
Repost from Госпожа аналитик 💚 Ия Зотова
🎞 JAVA-DEVELOPER: Кто такой Senior и что спрашивают на собесах
Гость: Анастасия Андреева, Senior Java Developer
Анастасия поделится:
• Кто такой senior разработчик и как им стать
• Честно о том, как проходила собесы и что не получилось
• Какие вопросы и задания даёт, когда сама проводит собеседования, поделится лайфхаками
• Расскажет зачем нужны алгоритмы и как использует искусственный интеллект
✅ Подписывайтесь на наши каналы:
• Ия, Team Lead DA: https://t.me/Lady_Analyst
• Евгений, DE: https://t.me/halltape_data
• Анастасия, Java Developer: https://t.me/itdevgrl
Если было полезно, весело, то поддержите наш канал донатами:
💲 https://pay.mysbertips.ru/92484472
2 061
Ой ребятаааа, что покажу сейчас!)
Когда мне прислали этот пост, у меня вспотели ладошки, волнуюсь очень 😅😅😅
Вышло интервью со мной, зацените 😍
Опыт конечно просто сумасшедший, очень расширяющий и выводящий из зоны комфорта 🔥
P.S.: коллежки, простите, если я не так рассказала хронологию событий, волновалась)
2 061
Но кое-что мы с девопсиками всё же поделали 🤩
Оставлю здесь заметку 🤓
У нас появилась задача, чтобы при сборке в гитлабе зависимости подтягивались из другого репозитория, не тех, которые указаны в
build.gradle проекта.
При этом чтобы локально проект собирался по-прежнему
Мы решили добавить в пайплайн гитлаба init.gradle и в нём указать необходимые репозитории, но это не помогло))
repositories {
maven {
url "..."
}
mavenCentral()
mavenLocal()
}
Не помогло это потому, что по умолчанию настройки в build.gradle переопределяют init.gradle.
Чтобы этого не происходило в init.gradle можно указать стратегию, по которой будут определяться репозитории:
allprojects {
settingsEvaluated {
it.dependencyResolutionManagement {
repositoriesMode = RepositoriesMode.PREFER_SETTINGS
}
}
}
Есть 2 опции:
1️⃣ PREFER_PROJECT - это когда репозитории в проекте переопределяют репозитории в настройках инстанса градла
2️⃣ PREFER_SETTINGS - это когда настройки инстанса градла приоритетнее настроек проекта
Также есть опция FAIL_ON_PROJECT_REPOS - это когда билд падает, если в проекте вообще указан хоть какой-то репозиторий.
Это может быть полезно для стандартизации разработки и контроля сборок2 061
Всем привет!
Как прошёл ваш первый рабочий денёк? У меня примерно как на картинке 🤣
2 061
Ну что дорогие мои подпищеки 🤪
Всех поздравляю с Новым Годом 🎄
Подводить итоги прошлого года я конечно же не буду))
Себе пожелаю больше писать и предъявлять меньше требований к своим постам 😅
Всем вам желаю любви, спасибо что вы со мной 🥹🥹🥹🧡🧡🧡
2 061
Здарова бандиты 👋
Сходила на интервью к ребятам из Сбера, поболтали за синьорство, собесы и немножко gpt)
Coming soon...
Ищите меня в прошма... на просторах ютуба 😬🤪
2 061
Вот вам слайдики из доклада про страхи карьерных изменений тимлида и как с ними справляться 👇👇👇
2 061
YaTalks 2023 ❣️
Ну всё, конфа закончилась, рассказовою 🤪
Я ходила только на второй день «Про жизнь».
Сама конференция прикольная, живая, не пафосная, интересная.
Людей и правда гораздо меньше, чем на jug конфах, но тут и позиционирование было другое + бесплатно. С позиционированием кстати есть непонятки, конфа заявляется как для тимлидов, но по ощущениям пришло много миддлов и сеньоров.
Часть докладов тем не менее была для тимлидов+ и СТО, например про написание технической стратегии, формирование команд под нужды бизнеса, как можно общаться с бизнесом с позиции менеджера (спойлер: использовать дата дривен подход).
Также говорили про карьерный трек разработчика/лида, собеседования, развитие, попали в мои боли 😅
Слава богу обошлось без обсуждений «микросервисы или монолит» от которых меня уже трисёт 😡
Я конечно ждала, что люди подойдут ко мне знакомиться, спросят что я делаю и все такое, потому что я тот ещё хикканище 😅
Но мой друг сказал, что в таком случае мне надо делать лицо попроще)) Блин, я старалась 🥹
В конце был экспериментальный комедийный стендап от C-level руководителей, такие штуки я просто обожаю 🥰🥰🥰, хихи хаха лол кек, ну вы понели))
В целом мне понравилось, сходила бы ещё, хотя каждый раз зарекаюсь не ездить больше на бесплатные конференции)
Были косяки по организации и почему то на нескольких докладах название и описание практически не совпадало с содержанием, но об этом я напишу в обратной связи 😏
Короче, сидеть дома хикканить плохо, ездить в IT общество - хорошо 🤣
2 061
Всем привет!
У моего друга Жени, junior дата инженера в Сбере, вышло интервью.
В нём он рассказывает как вкатился в IT 🤓
🟣как выбрал профессию дата инженера
🟡как искал свою первую работку, проходил собесы и всё такое 😉
🟢с какими инструментами работает сейчас и зачем язык С дата инженеру
Будет интересно тем, кто хочет войти в айтишку, не знает как подготовиться к первому собесу и как реально устроиться на работку, если ты джун 🐥
Ещё у Жени есть канал, где он пишет про будни дата инженера, постит чаще меня 🤪
2 061
@Cacheable. Part 1
Недавно на работе решила попробовать использовать спринговый @Cacheable с Redis'ом, оказалось настроить очень легко и всё сразу работает)
Оставлю здесь заметку 📎
1️⃣ Сначала подключаем две зависимости
implementation("org.springframework.boot:spring-boot-starter-cache")
implementation("org.springframework.boot:spring-boot-starter-data-redis")
2️⃣ Потом))) на метод, результаты которого нужно закешировать вешаем собственно анноташку @Cacheable(value = ["название кеша"])
3️⃣ Создаём класс конфигурации (@Configuration), вешаем на него аннотацию @EnableCaching
4️⃣ В конфигурации создаём бин RedisCacheManager (код лучше смотреть с компа)
@Bean
fun redisCacheManager(
connectionFactory: RedisConnectionFactory,
redisConfigurationProperties: RedisConfigurationProperties
): RedisCacheManager {
val cacheConfig = defaultCacheConfig()
.disableCachingNullValues()
.entryTtl(redisConfigurationProperties.expireTime)
.prefixCacheNameWith(redisConfigurationProperties.keyPrefix)
return RedisCacheManager.builder(connectionFactory)
.cacheDefaults(cacheConfig)
// если не указать здесь кеш, то не будут собираться метрики
.withCacheConfiguration("название кеша", cacheConfig)
.enableStatistics()
.build()
}
🌟 И вуаля! Результат метода кешируется в Redis. Ключом служит входной параметр функции, на которую повесили анноташку
❓ Почему я не использовала in-memory кеши, которые были бы внутри приложения?
🟢 кеш планируется достаточно объёмный, не хочется тратить ресурсы кластера куба, когда есть выделенный redis
🔵 в случае рестарта приложения, я не потеряю накопленный кеш
🟡 мне нравится как легко в редисе настраивается retention
🟡 при локальном in-memory кеше, если будет несколько реплик сервиса, локальный кеш будет на каждой реплике, возможно будут дубликаты, а это лишняя трата памяти
🟣 уменьшится hit rate, потому что второй запрос может прийти не на ту реплику
Во второй части напишу как я использовала @Cacheable с локальным кешом, cheers 🌟2 061
Всем привет!
Вы часто меня спрашиваете, куда я пропала (нет) 🤣
В прошлый раз вернуться я не смогла, потом оказалось, что у меня выгорание и пришлось из него выходить)) Про стадии выгорания, и что помогло мне из него выйти я обязательно напишу пост, а сейчас о другом)
Коллега посоветовал классную книгу, «Фундаментальный подход к программной архитектуре» (обложку покажу в каментах), в ней описаны различные подходы к проектированию архитектуры, паттерны, антипаттерны и приёмы, виды архитектуры и др.
Одна из глав книги посвящена такому понятию как записи архитектурных решений (Architecture Decision Record, ADR). Это созвучно с тем, что мы сейчас реализуем у себя в команде разработки, поэтому очень хочу рассказать)
Architecture Decision Record - это текстовый файл, который создаётся для описания конкретного архитектурного решения. Мы у себя используем .md файлы и храним их в Git. Есть и другие инструменты и форматы, например, страница в вики вашей компании.
Файл должен быть лаконичным, и содержать разделы, о которых я расскажу ниже.
1️⃣ Название - короткое описание архитектурного решения, должно быть информативным и понятным, чтобы быстро ориентироваться, о чём эта запись
2️⃣ Статуc ADR - на какой стадии находится данное арх. решение: принято, или ещё обсуждается (Request For Comments, RFC), а может заменено новым ADR
3️⃣ Контекст - ситуация, которая привела к созданию ADR и принятию решения
4️⃣ Решение - сама суть архитектурного решения и его полное обоснование. Важно уделить особое внимание именно обоснованию решения, ответить на вопрос «почему». Этот момент является ключевым и самым полезным (имхо) в документировании архитектуры
5️⃣ Последствия - описание того, что влечёт за собой принятое архитектурное решение. Какие плюсы и минусы у него есть, их анализ
6️⃣⭐️ Альтернативы - опциональный раздел, в котором сосредоточены альтернативные решения указанной проблемы, и причины, по которым эти решения не были приняты командой
7️⃣ ⭐️ Комплаенс - в книге рекомендуется включать этот раздел в свои ADR. Это описание, каким образом контролировать соблюдение требований данного арх. решения, должно ли это контролироваться вручную или можно автоматизировать. У нас пока такого раздела нет
8️⃣⭐️ Примечания - также опциональный раздел для указания автора, дат утверждения и замены, лиц, участвующих в принятии и утверждении данного решнеия и т. д.
9️⃣ ❓❓❓
🔟 Вы великолепны 🤪😂
Вы спросите меня, зачем всё это нужно? И я вам отвечу)))
🌟 Это эффективный способ документировать архитектуру - всё в одном месте, можно наблюдать инкремент, описаны альтарнативы, + и -
🌟 Не приходится проводить повторные R&D, потому что результаты предыдущих архитектурных дилемм записаны, оформлены, подведены итоги
🌟 Чуть полегче онбордить новых разработчиков/внедрять иннерсорс, когда приходят с «а почему», можно прислать ссылку на «а потому» и вопрос исчерпан (но естественно пересмотр архитектуры и принятых решений должен быть)
🌟 Можно унифицировать подход к архитектуре микросервисов и тем самым снизить эксплуатационные издержки на поддержку
Приземлю на конкретику. Если вы приходите в сервисы и не понимаете
🟢 почему условный Вася воткнул тут кафку, а не обошёлся рестом
🟣 почему решили использовать gRPC, а не десериализовать json’ы до талого))
🔵 почему используется именно эта библиотека для генерации PDF
🟡 зачем тут Camunda прости господи)))
🟢 почему эту интеграцию реализовали из г… теми ресурсами, которые были доступны на тот момент 🥲
🟣 почему все сервисы развёрнуты в k8s, а один стоит на виндовой тачке в другом контуре
Как я уже упомянула, мы у себя потихоньку начали внедрять практику написания ADR. Пока описано не всё, но уже сейчас удобно вспомнить какие решения мы приняли и почему решили именно так.
Расскажите, знаете про такой инструмент? Практикуете?
2 061
Всем привет!
Возвращаюсь в канал и начну с топовой истории)
Вчера к нам на собеседование пришёл кандидат, который решил воспользоваться Chat GPT 🤣
Пруфов нет, но все признаки на лицо
Вводная: по резюме 5 лет опыта, работал в известных больших компаниях на высоконагруженных проектах с блекджеком и корутинами)))
После всех вопросов чел зависал секунд на 5-10, у него подёргивалось плечо, делал уточнения "правильно ли я понял, что вы спрашиваете ...."
И начинал отвечать в стиле "... обладает характеристиками и используется для предоставления ...."
Потом я чуть не упала, когда мы попросили перечислить сущности k8s, и он сказал - под, репликационные наборы (это типа ReplicaSet) 🤪
Затем мы решили перейти к секции с кодом, кандидат перепутал = и ==, не знал что такое юникод, запутался в ООП.
Я читала о том, что на некоторых курсах начинающих разработчиков учат врать в резюме, но сама столкнулась впервые. Шок-контент 😨
2 061
Что ещё было на конфе:
• Доклад Единое рабочее пространство администратора, или Когда закончилось место на панели вкладок - ребята из Сбера рассказали каким инструментом пользуются администраторы для контроля АС, работы с инцидентами и так далее. Для меня эта тема пока-что мимо.
• Разделение на dev/master-ветки при деплое на стенды: паттерн или антипаттерн? - Семён Киреков из МТС рассказал про ситуации, которые могут возникнуть если использовать dev/master ветки. Вместо них он предлагает использовать trunk-based development с feature flags. Доклад получился холиварный, имхо примеры были надуманные, как-будто разработчик с закрытыми глазами пользуется гитом))
• Как мы в Сбере предоставляем техническую поддержку сотрудникам. Дмитрий из Сбера рассказал, как построили сервис, оказывающий тех. поддержку для 250к сотрудников. Тема тоже мимо меня)
