Java Developer
6.45K subscribers
235 photos
8 videos
12 files
279 links
MAKE JAVA GREAT AGAIN

Мемы: @java_memes
加入频道
Быть топовыми software инженерами
Крутых идей
Никогда не сдаваться и идти к своей цели!
Наткнулся на итоги года и десятилетия от The Bell Tech
Forwarded from 🤖 The Bell Tech
🥂 Друзья, мы поздравляем вас с наступающими праздниками и желаем хорошо отдохнуть! А мы уходим на каникулы до 9 января. Пока нас нет, почитайте итоги года и даже десятилетия для российского интернета:

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

🔻Рунет за десять лет изменился до неузнаваемости: в 2009 интернетом пользовался 31% россиян, сейчас — почти 80%. Из маргинального пиратского царства российский интернет превратился в место, где можно подать документы на загранпаспорт, а за контент почти привыкли платить. И, конечно, рунетом заинтересовалось государство. Итоги десятилетия — тут.
Channel name was changed to «Java Developer»
Java Марафон 2

Новому джава марафону быть. Про предыдущий можно прочитать здесь — https://yangx.top/java_developer/424. Новогодние праздники выдались продуктивными, и я почти дописал программу марафона. Подробности будут через неделю, когда все начнут выходить из спячки. Кодовое название марафона Java Core Challenge
Как быть востребованным разработчиком

Один из самых крутых постов, которые прочитал за прошлый год.
Forwarded from In Silico
Есть очень хороший способ проверить, готовы ли вы к наступлению будущего: если все компании мира хотят вас нанять и к тому же готовы платить вам бесконечно много денег — вероятно, вы умеете что-то действительно важное. Если никто вас нанимать не хочет, либо хочет, но не слишком уж сильно, — стоит поскорее начать искать точки роста.

В IT-тусовке, к счастью, собралось достаточное количество занудных людей, готовых систематизировать всё подряд. Поэтому и оценку по приведённому выше критерию сделать просто: компании для этого придумали процесс интервью. Разработчиков в большинстве ситуаций проверяют по набору вечных ценностей: алгоритмическому программированию, system design и, опционально, data science. Первые два пункта универсальны и пригодятся любому, а третий, хоть и опционален, востребован до такой степени, что игнорировать его уже невозможно.

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

1. Алгоритмы и программирование

Умение программировать — оно как умение играть на скрипке, требует практики. Если вы прошли пачку алгоритмических курсов и прочитали томик Кормена, совсем не факт, что вам удастся отлично справляться с решением реальных задач. Вы отлично пишете код только тогда, когда пишете его постоянно. Поэтому решение 200 простых задачек на leetcode.com — отличная инвестиция, и именно этим нужно заниматься в первую очередь, если вы хотите освоить программирование с нуля, выучить новый язык, подготовиться к интервью или просто поддержать программистскую форму.

Но, конечно, можно и посмотреть, и почитать. Два моих видео про алгоритмические секции в Яндексе: задача попроще и задача посложнее. Мой же текст на ту же тему на хабре. Стоит иметь в виду инструкцию от Facebook и, конечно же, книжку от leetcode.com.

Но в первую очередь решайте задачки. Много задачек.

2. System Design

Чтобы стать реально высокооплачиваемым специалистом, нужно уметь строить сложные системы.

Эта область очень широка, и для погружения в неё полезно ознакомиться с решением как можно большего количества различных задач. Для этого подходят видеоролики: раз, два, три, четыре, пять, шесть, семь и так далее. После седьмого вы наверняка поймёте, как найти ещё, а заодно станет понятно, какие именно акронимы стоит посмотреть на википедии, да и вообще — что изучать дальше и блоги каких компаний изучить. Смотреть эти ролики намного увлекательнее и уж тем более полезнее, чем смотреть сериальчики! Да и снято их не меньше...

Есть два неплохих гайда, которые точно стоит почитать: hiredintech и interviewbit.com. Их рекомендуют, например, при подготовке к интервью в Facebook. Ну а я готов рекомендовать их и при подготовке к интервью в Яндекс!

3. Data science

В области ML & DS многие совершают ошибку, фиксируя своё внимание только на алгоритмах обработки данных или обучения. В реальных задачах львиную долю сложностей составляют получение формулировки задачи, репрезентативной выборки, первого базового решения и способа правильной приёмки нового метода. Про это я тоже записал ролик и написал текст.

Это широкая область, как и system design и метод подготовки тут тоже похожий. Стоит почитать форумы на kaggle (обсуждения задач), записи Open Data Science с тренировок по машинному обучению и просто посты технологических компаний. Например, наши посты про предсказание запроса пользователя, персонализацию Поиска, алгоритмы Палех и Королёв; в целом хаб машинного обучения на Хабре; посты про AlphaGo, AlphaStar (что первый, что второй) и т.п. тоже подходят, да и вообще у DeepMind отличный блог.

При этом не нужно обязательно быть экспертом по глубокому обучению или, скажем, статистическому ML. Хотя, бесспорно, это очень полезно.

Продолжение следует

#career #interview

Алексей Шаграев
Про важность коммьюнити

В жизни очень важны знакомства и общение! В профессиональной среде это так же ценно. Реально, нет ни одной специальности, в которой не важно поддерживать связь и состоять в каком-то сообществе с коллегами (даже у таксистов есть свои чаты).

Расскажу про свой опыт: когда проходил первый курс по Джаве, я познакомился с кучей классных ребят со всей России. У каждого из нас своя история, почти все пришли в программирование из других сфер, для кого-то это был первый опыт поиска работы.

Хорошо, что после курса, мы не потерялись, и вовремя поняли, как можем быть полезны друг другу в дальнейшем. У нас организовался чат, который существует до сих пор. Нас больше 30 человек, которые теперь работают в 30 крутых и неочень(Рамблер) компаниях. Конечно же мы делимся друг с другом инсайдами: обсуждаем внутреннюю кухню, зп, собеседования, технологии, проекты в этих компаниях. Это очень помогает!

У меня на памяти несколько примеров, когда ребята в чате узнавали о вакансиях в других компаниях, где тоже работали выпускники наших курсов, и переходили туда на более высокую зп. Такие знакомства помогают решиться на релокацию. Двое парней сейчас работают в Берлине, они также знакомы между собой благодаря чату. Теперь у нас международное коммьюнити. Еще периодически мы устраиваем встречи в Питере и в Москве, это всегда очень шумно и весело!

Поверьте, такие знакомства с единомышленниками из вашей профессиональной среды могут быть также полезны, как и сами курсы/обучения, после которых можно как раз стать частью подобного активного коммьюнити. Не теряйте контакт! И спасибо вам, парни и лейдис из чата выпускников!
JAVA CORE CHALLENGE

20 января запускаю Java челлендж для начинающих. Он продлится 4 недели. За это время участники познакомятся со средой разработки, изучат основы Java, научатся избегать типичные ошибки в коде, решат множество задач и получат код ревью. А так же самое ценное – прокачают навыки самостоятельной работы, познакомятся с новыми людьми из будущей профессиональной среды и поймут, куда двигаться дальше.

Акцент сделаем на четырёх важнейших темах, каждой из которой уделим одну неделю, и задачи будем решать соответствующие. План такой:

1. основные типы данных;
2. условные операторы и циклы;
3. строки;
4. массивы.

Цена участия за месяц курса – 990 рублей. Вернуть деньги, если материал покажется вам неподходящим/сложным/лёгким, можно в первые два дня. Количество мест на курсе ограничено.

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

История Паши из чата выпускников про то, как он год трудился в Nexign. Энджой

Жила себе в городе на Неве компания Петер-Сервис. Пилила биллинговые решения для Мегафона, а на запад торговали какие-то легасёвые решения. Потом собралась с мыслями, взяла кредит в охулиард, сделала ремонт в новом офисе с проектом от ребят, которые для JetBrains офис пилили, замутила ребрендинг и стала Nexign. Nexign открыли кадровый набор в R&D отдел (Research & Developmet - ищут перспективные разработки и проводят модернизацию). Чтобы покончить с легаси и уже выкатить полноценный продукт с точками кастомизации, микросервисами, куберами и еже с ними.

Гуляли раз с супругой ночью по Санкт-Петербургу. Встретили моего одноклассника с девицей, которая, как оказалось HR рекрутер. Так я и попал в Nexign, в команду процессов. Процессы — это тупо BPMN-диаграммы на Камундовском движке, работают как оркестровщики микросервисов. Это был титанический труд — полгода овертайма, работа по выходным. Мы даже выкатили годный релиз. А потом компанию продали и тихонечко всё начало скатываться. Амдоксовских топовых менеджеров по разработке, которых недавно скупили, резко попросили уйти. А вместо выхода на международный рынок компания стала держать направление на СНГ, и народ из R&D потихоньку разбрёлся кто куда.

За этот год знатно прокачался в микросервисах, в архитектурных решениях. Но былой драйв и задор команды ушли и пришлось обновлять резюме. В самой компании остались крутые и даже очень крутые проекты, но неприязнь к менеджменту взяла своё. Из плюсов это топовый HR бренд, девочки на уровне работают. Из минусов: с проектом можно не угадать. Компания стабильно растёт, по окладам не обижают, в плане роста и менторинга тоже всё хорошо. Недооцененный джун в три раза по зп вырос за год (батрачил как чёрт). Чётких 8 из 10 уходят Nexign.
Забыл добавить коменты к предыдущему посту, поэтому держите сообщение от Саши из Nexign. Пост не для тех, кто только начал учить джаву, а давно в теме айти. Контент 18+

Nexign очень старается быть топом среди IT-компаний, но не везде это ей удается. У нас модный офис, печеньки, кофе, небольшой зал, проводятся митинги, своя "соц. сеть". Топ-компания, но со своим набором сотрудников. Компания набрала разных спецов для своего R&D и раздула рынок зарплат - джун-мидл 150-200к. Но с R&D ничего не вышло и многие ушли. Была история, когдая целая команда из 26 человек встала и ушла.

При этом, старую часть компании "легаси" обделяют. Хотя только "легаси" деньги и приносит. Плюс, на мой взгляд, страдает качество работников. В смысле, тут работают хорошие люди, но многим 40+ и нет мотивации пилить современные решения. Также некоторые просто сидят на зп и хорошо если закрывают свои таски. Бывает возьмет человек небольшую задачу и сидит с ней несколько месяцев. Есть кого взяли и оставили после испытательного строка, но совершили ошибку и теперь просто так уволить этого человека нельзя. А вот работать с такими "работникоми" бывает очень некомфортно. Молодые из "легаси" потихоньку уходят, т.к. задач крутых мало,а зп сильно не повышают. Мне, например, повысили только как контрофер.

Но опять же, все очень зависит от команды и проекта, поэтому есть определенная рулетка. 4 из 7 нексиков (внутренняя валюта) отходит Nexign
Кто хочет поделиться своей историей успеха или болью работы в компании пишите @zybkin. Устроим своё ebanoe.it с блекджеком и эйчарами
Подкасты по Java

В комментариях к посту https://yangx.top/java_developer/404 уже писали кто какие подкасты слушает. Но за год какой-то произошёл подкастерский бум, их стало намного больше. Вот несколько новых джавовых подкастов.

Радио Платформа
Всё об it и backend-разработке. Ссылка на пилотный выпуск "Backend Engineer" https://yangx.top/radioplatforma/4

Javaswag
Интервью с крутыми спецами сферы. Первый выпуск с Евгением Борисовым https://yangx.top/javaswag/561

Паша + Слава
Хардкорный подкаст, мастадонтам понравится. Выпуск "Новогодний" https://yangx.top/ps_podcast/16

Разбор полётов
Совсем не новый подкаст, но это классика. Выпуск про искусственный интеллект https://razborpoletov.com/2019/07/episode-206.html

Кидайте в коменты, какие подкасты вы слушаете. И, вообще, слушаете ли вы подкасты?
Java Developer
JAVA CORE CHALLENGE 20 января запускаю Java челлендж для начинающих. Он продлится 4 недели. За это время участники познакомятся со средой разработки, изучат основы Java, научатся избегать типичные ошибки в коде, решат множество задач и получат код ревью.…
Итак, ребята, инфа для тех, кто заинтересовался марафоном для начинающих. О том, кому он будет полезен, как будет проходить, чего от него ожидать, и что получат те, кто реализует свои планы.

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

Какие темы будут затронуты
Будем изучать материалы и решим много задач на 4 темы: операторы, циклы, строки, массивы. В конце — попрактикуемся с гитом и в парном код ревью. И те, кто выполнят все задания, получат ревью кода, почёт, уважение и кайф от проделанной работы.

Сколько времени нужно потратить
В среднем 1-2 часа в день. Эффективность курса на 90% зависит от каждого. Поэтому если больше выделишь времени = больше прокачаешься.

Кому полезно
Если хотите попробовать себя в Java, изучить основы или повторить их, понять стоит ли учить дальше, то этот курс для вас.

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

Почему платно
Мотивация. Для меня это мотивация отнестись ответственно и сделать всё максимально круто и правильно, подготовить материалы и внимательно всё проверять. А для участников это мотивация заниматься и пройти курс до конца. Я сам забивал на многие бесплатные, хоть и полезные курсы, уроки, рассылки. Знаем:)

Стоимость участия 990 рублей.

Как записаться
Для записи пишите @zybkin
После оплаты, я дам ссылу на приватный канал и добавлю в чат участников. Там можно будет обсуждать домашние задания и помогать друг другу.
Тест на пиво

Как понять на собеседовании, что вам подходит команда, люди, которые вас интервьюируют? Подумайте, смогли бы вы пойти с ними вечером после работы выпить пивка, поиграть в страйкбол, боулинг. Было бы вам с ними комфортно, интересно?
Сегодня в 17:00 я проведу трансляцию, в которой подробнее расскажу о предстоящем курсе Java Core Challenge. Трансляция будет полезна участникам и тем, кто заинтересовался, но пока не решился, тк возникли какие-то вопросы. Расскажу о том, для какого уровня подготовки подойдет этот курс и что именно он вам даст. Ну и помимо этого, отвечу на ваши вопросы в прямом эфире. До связи:)

Ссылка на трансляцию:
https://youtu.be/OI1d958YTSI
Как выучить что-то новое

Пост делал для участников Java Core Challenge, но поделюсь со всеми)

Я знаю, что по окончании университета, а иногда и раньше, многие теряют навык обучения. Мы забываем, как сосредотачиваться на одном деле и как запоминать новую информацию, потому что зачастую такой нужды больше нет. Но уметь УЧИТЬСЯ это 100% навык, без которого не возьмут в будущее.

Когда я начал плотно учить джаву, я поменял всё расписание дня под это дело на какое-то время. Планировал, какие материалы буду изучать каждый день, завёл для учебы новый блокнот, куда записывал многое от руки. В общем, создал новые привычки , для того чтобы туда комфортно вписалось обучение.

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

Поэтому я хочу поделиться с вами рабочими приёмами, которые помогут легче и эффективнее усвоить новый материал:

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

2. Повторяйте изученное перед сном
Постарайтесь делать так, чтобы последней информацией, которую вы получите за день, была информация по теме курса, а не сериалы, новости и тд. Это очень поможет усвоению!

3. Не делать несколько дел одновременно
Решать задачу, читать материал желательно без видосов и сериалов на фоне. А листать ленту новостей и переписываться приятнее без отвлечений на обучение!
Лучше выделить 30 минут на прочтение главы и сделать это быстро и хорошо, чем тупить над ней час, отвечая друзьям в тг или отвлекаясь на ленту. Так мы сэкономим своё время.

4. Отложить телефон как можно дальше
Если ест
ь возможность, читайте материалы с ПК, чтобы не отвлекаться на уведомления и не заходить в перерывах в привычные приложения. Если получится читать теорию только с телефона – ставьте авиарежим.

5. Запланируйте специально 2 часа в день
Попробуйте внести их в план дня заранее, так точно будет удобнее. Например, я знаю, что сегодня у меня свободный вечер, так что выделю два часа на обучение после рабочего дня, а послезавтра вечером у меня встреча с друзьями, значит выделю час утром перед работой на обучение и час в рабочее время, если занятость позволяет.
Время на обучение не найдется, если специально не освободить его от других дел.

6. Не бойтесь задавать вопросы
Если вам что-то непонятно — пишите, спрашивайте, докапывайтесь до сути. И помните, глупых вопросов не бывает.
Java to Scala. Вопросы с собеседований

Недавно у меня друг перешел на Scala-проект. Он готовился две недели, прошел 17 собеседований, получил 7 офферов. До этого у него было два года коммерческого опыта на java-проекте. Я попросил его расписать, что спрашивают на собеседованиях. Получилось очень подробно и здорово.

Типичное собеседование по Scala можно описать как hardcore-версию собеседования на позицию Senior Java. Причем не берем в счет позиции типа better Java или Java/Scala. Речь о Scala, где нет как минимум var переменных, циклов, сеттеров и мутабельных коллекций, ну или где за этим хотя бы стараются следить. Практически нигде вам не будут задавать типичных вопросов про HashMap, методы Object, контракты equals/hashcode, как работает Docker и прочую лабуду, а сразу начнут лезть в душу. Большинство вопросов, конечно, задают и на Java-собесах, но насыщенность Scala собеседования глубокими вопросами зашкаливает и отделаться каким-нибудь определением не получится, нужно будет объяснять как это работает внутри. Вот примерный список тем, которые необходимо довольно глубоко изучить. Начнём с обязательной части.

1.Многопоточка. Про неё спрашивают вместо HashMap. Нужно знать всё. Как работает многопоточное приложение, отличие потоков java от потоков системы и процессов, может ли одно java/scala приложение работать на нескольких процессорах, happens-before, какие языковые конструкции могут гарантировать happens-before, как в жизни помогают и как работают volatile/final, CAS, способы синхронизации, виды дедлоков, как бороться с ними, Future, недостатки и преимущества Future, пулы потоков, какие пулы в каких кейсах лучше использовать. Отдельно выделяют fork/join и просят рассказать, как он устроен внутри и для каких бизнес-задач подходит, а для каких нет. Атомики, как атомики реализованы, виды локов, проблемы с lazy полями в многопоточной среде и как реализованы lazy поля, отсюда вопрос про минусы этих реализаций и все что в голову взбредет.

2. Java Memory Model. Первая часть собеса никогда не обходится без обсуждения JMM. Виды GC, алгоритмы работы, различия, преимущества и недостатки, способы оптимизации работы, основные показатели, в каких случаях какой необходимо выбрать, способы поиска проблем. Рассказать, как реализована оптимизация хвостовой рекурсии в Scala. Обычно разбор многопоточки и JMM занимает 50% времени всего собеседования.

3.Алгоритмы и структуры данных. В 90% случаев обязательно попросят написать на бумажке задачку а-ля Фибоначчи с хвостовой рекурсией, реализовать метод flatMap/map у листа, обход графа/дерева, развернуть рекурсивно лист. Или другую из первых 40 задач с leetcode, которые заточены на рекурсию. Дальше интервьюеры пройдутся по всем структурам данных в Scala, их различия, юз кейсы, сложности, что там под капотом. Спросят про сортировки. Очень популярен вопрос про различные кейсы сортировок огромных файлов и поиск в уже отсортированных файлах нужного элемента, где бинарным поиском не обойтись.

4.Scala Core. Иерархия типов, иерархия коллекций, система типов, Nothing/Null. Где-то спрашивали, как реализован Nothing и как получается, что он подтип всех? Часто собеседующие спрашивают про вариантность, просят рассказать про кейсы, дают какие-нибудь задачки на расставления вариантности у типов. Задают вопросы про тайп классы, тайп конструкторы, экстеншен методы, функции и типы высшего порядка, виды имплиситов, зачем это все нужно и области применения.

For comprehension: во что раскладывается, что будет, если не написать yield, дают различные примеры, где типы не совпадают и спрашивают, будет ли работать, во что превращается в байткоде.

Pattern matching: что нужно, для того, чтобы это работало. Отсюда вопросы про алгебраические типы данных, как они реализованы в Scala и почему именно так. Ещё нужно быть готовым объяснить, чем Scala тебя так привлекла. Рассказать о плюсах и минусах.

#scala