This media is not supported in your browser
VIEW IN TELEGRAM
Черный пояс по собесам, белый по работе
В одном из прошлых постов я делился подкастом со стафф-инженером Нетфликса, который еще успел поработать в гугле. Он сказал, что в конце концов, с опытом понимаешь, что литкод — это лучший инструмент для собесов, который нужен для поиска инженеров.
Многие хэйтят алгоритмы из-за бесполезности, но либо не дают альтернатив, либо их альтернативы — это узкие знания платформы, которые в 99% не пригодятся на практике, легко зубрятся и нужны только для споров в чатах. Например, 90% теории про Sidetable, компиляторы, математические функции автолайута или подсчет байтов.
Поэтому среди разрабов вечно споры:
- одни обвиняют других, что алгоритмы не нужны в реальных задачах и важно знание платформы
- другие обвиняют других, что 90% вопросов про платформу бесполезные на практике и занимаются поиском энциклопедии, а не программиста
Возможно, идеальной альтернативой и компромиссом был бы систем дизайн. Но это дорогая секция и сложная. Поэтому она часто доступна только разрабам, кто претендует на сеньорность.
Давайте разберем как вообще применяются алгоритмы.
Есть два вектора применения алгоритмов:
- алгоритмы для повседневных задач;
- алгоритмы для оценки навыков на собеседованиях.
Уже почти ни у кого нет никаких сомнений, что знание алгоритмов и структур данных является очень полезным навыком для любого разраба. Это фундаментальная область computer since, на которой держится вся разработка. Если вы будете практиковать навык разработки алгоритмов, то это поможет быстрее и эффективнее решать типовые задачи в повседневной работе и меньше ошибаться. Грубо говоря, вы набиваете руку и тренируете насмотренность.
Само собой, не во всех областях требуются такие знания. Например, работа с алгоритмами сильно реже встречается на фронте и сильно чаще — на бэке. Такова специфика работы, но навык в любом случае полезен для всех. Кто знает, может апстор заблочат или все РФ приложения удалят и куда вас девать?
А вот этот вектор как раз самый спорный. В чем заключается проблема? Все компании сейчас поголовно применяют этот подход на своих собеседованиях, зачастую не понимая как он вообще работает. В этом тоже есть проблемы, но эта секция имеет место быть, если считать что целью является только проверка алгоритмики.
Чаще на алгоритмах не проверяет знание специфичных алгоритмов, а проверяется гораздо больше:
Цель не в том, чтобы посмотреть как человек пользуется IDE или зазубрил очередное решение в ответах литкода, а узнать как он мыслит. Как он ведёт себя в стрессовой ситуации тоже важно (становится ли конфликтным или сдержано контролирует ситуацию)
Кодер != программист
Тот, кто умеет просто делать просто рабочие задачки в IDE, хвастается очередным специфичным знанием о сайттаблицах или копирует код из чатгпт — это не тот, кто нужен компании в большинстве случаев.
Компании нужен человек умеющий решать проблемы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Сразу пройдемся по одной из самых популярных задач.
Описание:
Даны две строки s и t. Напишите функцию, которая возвращает true, если s является подпоследовательностью t, или false в противном случае.
Подпоследовательность строки — это новая строка, которая формируется из исходной строки путем удаления некоторых (может быть ни одного) символов без нарушения относительного положения остальных символов. (т. е. «ace» является подпоследовательностью abcde, а «aec» — нет).
1️⃣ Пример:
Входные данные
s = "abc"
t = "ahbgdc"
Ответ: true
2️⃣ Пример
Входные данные:
s = "axc"
t = "ahbgdc"
Ответ: false
Для решения задачи воспользуемся методом двух указателей.
Мы запускаем цикл по всем символам строки t и сравниваем их с символами строки s. Для отслеживания позиции в строке s мы будем использовать указатель left.
- Если символы совпадают, мы двигаем указатель строки left на одну позицию вперед.
- Если после прохода по всем символам строки t указатель left указывает на конец строки s, значит строка s является подпоследовательностью строки t.
Please open Telegram to view this post
VIEW IN TELEGRAM
Чтобы писать об актуальном контенте я, как минимум раз в неделю, смотрю актуальные вакансии.
Могу смело сообщить — вакансий со стэком SwiftUI, Combine, Async/await стало много. А значит уже необходимо хорошо изучать эти инстурменты, чтобы быть конкурентным на рынке.
Это будет полезно как новичкам, так и опытным, которые застряли в легаси.
Начал серию больших статей про основы Swift Concurrency. В них много кода и примеров.
В первой можно изучить:
Также ждите вопросы для самопроверки и контент по Combine
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы в комьюнити решили, что сеньором нельзя стать походя по собесам или решая только рабочие задачи. Он должен держать руку на пульсе трендов и иметь специфичные, полезные знания. Опрос выше показал эту важность
Вот собрали обязательные книги для сеньора. Поделюсь частью:
1. Building Mobile Apps at Scale: 39 Engineering Challenges
Главный навык сеньора — проектировать сложные и масштабные системы. В этой книге собраны многие частые задачи, которые бросают вызов разработчикам на работе.
2. Growing as a Mobile Engineer
Достижение уровня старшего и выше старшего мобильного инженера. Книга для инженеров iOS и Android, а также менеджеров по мобильной разработке. Помогает дорасти до сеньора в мобильной разработки. Книга не панацея, но отлично поможет нарисовать свой roadmap
3. MAC OS® X AND iOS INTERNALS
Многие документации по iOS и Mac разработке окутаны тайной. Часто есть только один путь понять кишки — лезть в них самим. Автор книги сделал это за нас и расписал особенности работы ОС. Не факт, что все актуально, но познавательно
Please open Telegram to view this post
VIEW IN TELEGRAM
За этот пост мне не платили и я не согласовывал его с автором канала. Он сам его впервые увидит. Такой комплиментарности вы не купите у меня ни за какие деньги.
Об Астемире @eleev я узнал случайно ресерча интернет. А познакомился лучше уже в нашем чате. Вы уже по-любому видели его работы и упоминания в других каналах. До его скромности мне еще расти и расти. А до таланта тем более.
Вот лишь малая часть из его работ:
Это единственный разраб с миллиардами годами ненакрученного опыта. Его ответы на любое сообщения у меня в избранном. Нет ни одного вопроса, который бы он не знал. Каждую задачу по литкоду в чате он решает самыми необычными и интересными способами, где сразу видно уровень сеньора.
Подписывайтесь на его канал и ждите топ контента @contravariance
Выхода у него теперь нет
Please open Telegram to view this post
VIEW IN TELEGRAM
В ноушене я продолжаю собирать инфу про современные стэки. Как я уже говорил, по данным hh 90% новых проектов уже пишут проекты на SwiftUI, Combine и Async/Await.
Я уже писал статью с основами, а теперь собрал дополнительные вопросы, которые лучше помогут понимать технологию и собрать фокус на важных акцентах.
Что ждать в сборнике:
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой порядок выведется в консоль?
Anonymous Quiz
15%
A, D, T, M, H, B, J
16%
H, A, D, T, M, B, J
24%
Порядок всегда разный
10%
H, B, J, A, D, T, M
23%
B, H, J, A, T, D, M
12%
Deadlo
Отложенная деалокация — одна из редких неприятностей, которая может привести к зависанию или ненужной нагрузки.
Это нельзя назвать утечкой памяти, но можно назвать побочным эффектов. Он невсегда вредный, но может привести к кейсам с ненужной жизнью объектов.
Это просходит, когда класс, в котором происходит выполнения замыкания, уже должен быть освобожден, но в это время замыкание еще не закончило свое выполнение. Что мешает освобождению этих объектов из памяти пока замыкания живы.
В примере показан тест кейс, когда использования
guard let self else { return }
увеличивает время жизни объекта и с опозданием деинит закрытый класс.
Также в ноушене я сделал перевод популярной статьи You don’t (always) need [weak self] с актуальными и понятными примерами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Даже инфоцыгане в шоке
Вы зачем их обижаете?
Вы зачем их обижаете?
Я потихоньку начал заполнять большую базу упражнений по систем дизайну для нашего фреймворка. Материал на каждую задачу плотный. Это не сборники задач делать. Тут приходится структурировать и наполнять последовательностью разработку сложных модулей. Да и при этом самому не обосраться.
Создание чата — это отдельный уровень испытаний. В нем есть много вызовов, которые обязан пройти каждый на своем посвящении в сеньора.
Делюсь крутым материалом про проектирование чата. Это, наверное, самая частая задача на сеньора.
Мессенджеры вообще считаются отдельным видом приложений:
Кстати, скидывайте в лс или в комменты интересные материалы. В ноушене уже есть первая версия проектирования чата.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Я не верю, что решая только рабочие задачи мы развиваемся.
Более того, я считаю такой путь деградирующим и опасным. Наш оффер не отражает нашу экспертность. Навык прохождения собесов отдельный скилл от реальной практики.
Также, получив повышение в одной команде, далеко не факт что ты бы получил его в другой. Бесконечные рефакторинги и реорги говорят, что любой может быть неэффективен под призмой текущих целей.
Невозможно просто взять и стать хорошим экспертом. Накрутив в резюме поверив в это. Это навык и ремесло, это нужно практиковать и развивать.
Более того, я считаю такой путь деградирующим и опасным. Наш оффер не отражает нашу экспертность. Навык прохождения собесов отдельный скилл от реальной практики.
Также, получив повышение в одной команде, далеко не факт что ты бы получил его в другой. Бесконечные рефакторинги и реорги говорят, что любой может быть неэффективен под призмой текущих целей.
Невозможно просто взять и стать хорошим экспертом. Накрутив в резюме поверив в это. Это навык и ремесло, это нужно практиковать и развивать.
Задачи на алгоритмах: Максимум последовательных единиц
В чате у нас есть активность — это решение задач из литкода. Время летит незаметно и уже нарешали около 40 задач. Делюсь одной из частых задач, которую дают на собесах.
Также в ноушене и канале я писал про техники решений алгоритмов. Какой бы воспользовались, чтобы решить эту задачу?
🟢 Сложность: Легкая
Дан массив единиц и нолей. Найти максимальную последовательность единиц
1️⃣ Пример 1
Input: nums = [1,1,0,1,1,1]
Output: 3
Объяснение: Первые две или последние три цифры представляют собой последовательные единицы. Максимальное количество последовательных единиц — 3.
2️⃣ Пример 2
Input: nums = [1,0,1,1,0,1]
Output: 2
https://leetcode.com/problems/max-consecutive-ones/description/
В чате у нас есть активность — это решение задач из литкода. Время летит незаметно и уже нарешали около 40 задач. Делюсь одной из частых задач, которую дают на собесах.
Также в ноушене и канале я писал про техники решений алгоритмов. Какой бы воспользовались, чтобы решить эту задачу?
🟢 Сложность: Легкая
Дан массив единиц и нолей. Найти максимальную последовательность единиц
1️⃣ Пример 1
Input: nums = [1,1,0,1,1,1]
Output: 3
Объяснение: Первые две или последние три цифры представляют собой последовательные единицы. Максимальное количество последовательных единиц — 3.
2️⃣ Пример 2
Input: nums = [1,0,1,1,0,1]
Output: 2
https://leetcode.com/problems/max-consecutive-ones/description/
Не знаешь чем занять себя на майских? Я решил сделать скидку в это подходящее для саморазвития время.
Если ты устанешь от шашлыков, то можешь:
Прошлые подписки по акции разобрали за 3 дня. Пока поставлю ограничение в 30 активаций.
Лучше сразу брать на несколько месяцев: так и мне понятно на сколько планировать контент и вам дешевле
Please open Telegram to view this post
VIEW IN TELEGRAM
О творческой импотенции или почему запрещено слишком много обсуждать зп и офферы в чате
В нашем чате есть закрытые темы. Некоторые из них многим непонятны, но я вижу в них убийцы творчества.
Например, в чате запрещено слишком много обсуждать офферы и зпшки. В эту тему скатывается каждый чат и есть огромное заблуждение, что деньги — это показатель успеха и высшая цель. Так и неудивительно, эту идею легко продать: курсы, конфы, сообщества.
Я так не считаю и наоборот, вижу в тех, кто ставит деньги на вершину — угодивших в капкан маркетологов. Охотник поймал добычу.
У них творческая импотенция. Меркантильный нестояк. Такой диалог некачественный и низкого уровня. Секс с тобой пресный и неинтересный, потому что в тебе нет страсти и любви.
От этих разговоров веет банальностью, скукой и усталостью от жизни. А иногда даже бессилием и наивностью, что сумма в кармане даст тебе идеи и возможности её правильно применить.
В лучшей книге этого года «Быть, а не казаться», есть хорошее определение успеха. Жизненный успех — это составляющая из здоровья, любимых людей рядом, любимого дела в жизни и свободы для творчества. В этой книге творчество и сила характера становятся первостепенными. Они становятся компасом.
Программисты — творческий народ. Да и не бедный. Рано или поздно многие опытные разработчики понимают, что деньги не закрывают всех их потребностей, хоть и дают свободы. Многие выгорают, из-за того, что не находят огня в своих глазах.
Достоевский писал, что отсутствие творчества в действиях — признак бессилия.
Устав бегать за метрикой дохода, ты пытаешься найти себя в реализации, но не уделяя время творческой выносливости, быстро сгораешь. Многие зависают на стадии независимости и взаимосвязанности.
В условиях текущего трудового рынка, творческая деятельность слишком трудна, если у тебя нет нужного творческого менталитета, смелости, взаимосвязи с индустрией и выносливости.
В своей среде я не хочу быть зацикленым на бабках. Я хочу создать среду, которая зациклена на творческих возможностях
В нашем чате есть закрытые темы. Некоторые из них многим непонятны, но я вижу в них убийцы творчества.
Например, в чате запрещено слишком много обсуждать офферы и зпшки. В эту тему скатывается каждый чат и есть огромное заблуждение, что деньги — это показатель успеха и высшая цель. Так и неудивительно, эту идею легко продать: курсы, конфы, сообщества.
Я так не считаю и наоборот, вижу в тех, кто ставит деньги на вершину — угодивших в капкан маркетологов. Охотник поймал добычу.
У них творческая импотенция. Меркантильный нестояк. Такой диалог некачественный и низкого уровня. Секс с тобой пресный и неинтересный, потому что в тебе нет страсти и любви.
От этих разговоров веет банальностью, скукой и усталостью от жизни. А иногда даже бессилием и наивностью, что сумма в кармане даст тебе идеи и возможности её правильно применить.
В лучшей книге этого года «Быть, а не казаться», есть хорошее определение успеха. Жизненный успех — это составляющая из здоровья, любимых людей рядом, любимого дела в жизни и свободы для творчества. В этой книге творчество и сила характера становятся первостепенными. Они становятся компасом.
Программисты — творческий народ. Да и не бедный. Рано или поздно многие опытные разработчики понимают, что деньги не закрывают всех их потребностей, хоть и дают свободы. Многие выгорают, из-за того, что не находят огня в своих глазах.
Достоевский писал, что отсутствие творчества в действиях — признак бессилия.
Устав бегать за метрикой дохода, ты пытаешься найти себя в реализации, но не уделяя время творческой выносливости, быстро сгораешь. Многие зависают на стадии независимости и взаимосвязанности.
В условиях текущего трудового рынка, творческая деятельность слишком трудна, если у тебя нет нужного творческого менталитета, смелости, взаимосвязи с индустрией и выносливости.
В своей среде я не хочу быть зацикленым на бабках. Я хочу создать среду, которая зациклена на творческих возможностях
Media is too big
VIEW IN TELEGRAM
Как и какие решать задачи для развития и собесов мы обсуждаем часто
В итоге пришли к выводу, что олимпиадные задачи или из стажировок — это совсем разные задачи.
Одни учат думать. Другие нужны для собеседований.
В итоге пришли к выводу, что олимпиадные задачи или из стажировок — это совсем разные задачи.
Одни учат думать. Другие нужны для собеседований.
Почему сеньоры не хотят менторить
В нашем чате многие начинающие ребята спрашивают по активности с менторами. Я отвечаю, что рынок менторов для вката в ит — перенаполнен, а качественных спецов не найти, потому что им это неинтересно.
Преподают обычно либо новички, либо те, кто уже забросил и уже неактуален.
Вчера обсуждали большую проблему рынка, как сложно найти хорошего ментора. Рынок переполнился низким качеством услуг. Я заметил, что чем лучше специалист как практик, тем меньше он хочет тратить время на обучение других.
Это связано со всем известным эффектом Даннинга-Крюгера. В начале пути ты избыточно самоуверен, но чем глубже изучаешь свою нишу, тем скромнее становишься и больше понимаешь, что ничего не знаешь.
Качество услуг коммерческих менторов сильно упало за последние два года. Спрос есть, но нет инженеров высокого уровня, кто хочет взять на себя роль ментора.
Почему же сеньоры не хотят обучать? Потому что у них нет времени и там мало денег. Чем выше грейд, тем больше надо уделять развитию себя, а не других.
Навык сеньорности — это не вечный статус и его нужно вечно поддерживать. Регулярно сдавая нормативы, которые очень часто меняются, так еще уметь продать свои знания правильно, натренивов себя для собесов. Это не методички учить и требует пары лет усиленного обучения с практикой.
По вкладу инвестиций услуга развития в хорошего специалиста сильно отличается от сложности услуги входа в ит. Ты можешь один раз войти в ит, но сеньорность тебе надо вечно доказывать сложными задачами или регулярным самообучением.
Причем самообучением. Так как четкого и ясного ответа тебе не дадут. Я не верю в менторов, кто натренирует тебя до сеньора сильно-технического бигтех уровня. Особенно, если его задача — выжать из тебя больше бабок.
Я верю в комьюнити сильных инженеров, кто создает необходимую среду для саморазвития. Таким цель сделать свое и не отвлекаться на сторонние вещи
В нашем чате многие начинающие ребята спрашивают по активности с менторами. Я отвечаю, что рынок менторов для вката в ит — перенаполнен, а качественных спецов не найти, потому что им это неинтересно.
Преподают обычно либо новички, либо те, кто уже забросил и уже неактуален.
Вчера обсуждали большую проблему рынка, как сложно найти хорошего ментора. Рынок переполнился низким качеством услуг. Я заметил, что чем лучше специалист как практик, тем меньше он хочет тратить время на обучение других.
Это связано со всем известным эффектом Даннинга-Крюгера. В начале пути ты избыточно самоуверен, но чем глубже изучаешь свою нишу, тем скромнее становишься и больше понимаешь, что ничего не знаешь.
Качество услуг коммерческих менторов сильно упало за последние два года. Спрос есть, но нет инженеров высокого уровня, кто хочет взять на себя роль ментора.
Почему же сеньоры не хотят обучать? Потому что у них нет времени и там мало денег. Чем выше грейд, тем больше надо уделять развитию себя, а не других.
Навык сеньорности — это не вечный статус и его нужно вечно поддерживать. Регулярно сдавая нормативы, которые очень часто меняются, так еще уметь продать свои знания правильно, натренивов себя для собесов. Это не методички учить и требует пары лет усиленного обучения с практикой.
По вкладу инвестиций услуга развития в хорошего специалиста сильно отличается от сложности услуги входа в ит. Ты можешь один раз войти в ит, но сеньорность тебе надо вечно доказывать сложными задачами или регулярным самообучением.
Причем самообучением. Так как четкого и ясного ответа тебе не дадут. Я не верю в менторов, кто натренирует тебя до сеньора сильно-технического бигтех уровня. Особенно, если его задача — выжать из тебя больше бабок.
Я верю в комьюнити сильных инженеров, кто создает необходимую среду для саморазвития. Таким цель сделать свое и не отвлекаться на сторонние вещи
This media is not supported in your browser
VIEW IN TELEGRAM
Вопрос дня: Возможно ли найти секрет без самопожертвования для достижения экспертизы?