Архив недели @SlavaSlutsker
Понедельник
На этой неделе с вами Слава Слуцкер @SlavaSlutsker - руководитель направления в мобильной разработке компании Тензор (@tensor_company). Около 5 лет назад пришёл в мобильную разработку после 8 лет веба (front, back). Некоторые мои мысли можно послушать тут youtu.be/iyTIJys7q-Q
С вашей помощью хочу сделать интересную и полезную неделю для мобильных разработчиков и сочувствующих.
Для себя я выделил по одной главной теме на каждый день - они будут задавать примерное направление, но не более того.
Список тем:
Разработка, процессы
Профессиональное развитие: как и зачем
iOS
Android
Кроссплатформа
Команда, отношение к работе
Новые технологии, собеседования, разное
Как у нас организована мобильная разработка? 🤔 Когда в компании крутая С++ экспертиза и есть большое желание минимизировать дублирование кода между iOS и Android, решение напрашивается само собой 💡!
Ведь можно написать бизнес-логику один раз на С++, покрыть тестами тоже один раз, а затем использовать средства кодогенерации для создания интерфейсов в Java и Objective-C. Для этого, к примеру, есть инструмент Djinni github.com/dropbox/djinni
О подобном подходе рассказывали коллеги из команды Яндекс.Навигатора на AppsConf 2018 - youtube.com/watch?v=HoSsZd…
Ранее я рассказал про использование С++ в нашей мобильной разработке. Частый вопрос, который мне задают по этому поводу: нужно ли разработчикам iOS и Android приложений в нашей ситуации знать C++ для работы над приложениями?
Такой необходимости нет. За плюсовую часть отвечают отдельные программисты. 👨💻Поэтому больше времени и сил iOS / Android программисты могут уделить построению UI/UX! Однако, если зов плюсов не даёт спокойно «красить вьюшки», ничего не мешает заглянуть в плюсовый код)
Я думаю, что в разработке мало сделать хороший продукт, важно при этом ещё и выстроить хороший процесс! Если у вас правильно выстроены процессы, вы сможете масштабировать свою разработку без потерь в качестве и скорости.
К примеру, сейчас у вас команда из 5 человек обеспечивает 1 релиз в месяц. Что делать, если команда проекта вырастет до 20 человек и нужно уже 4 релиза в месяц?! 🤯 В этот момент выясняется, где именно у вас узкие места.
Если продукт у вас хороший, а процессы не выстроены, велика вероятность, что найдутся те, кто сделает быстрее, дешевле и, в конечном итоге, вместо вас. Конкуренция будет, как у небольшой фабрики с ручным трудом против завода с конвейером.
Я не призываю сначала строить завод, а потом думать, как продавать его продукцию. Но рекомендую сразу после проверки гипотезы о том, что ваш продукт нужен, заниматься процессами.
Допустим, у вашего приложения есть ядро на C++, набор модулей с общими нативными компонентами (на Swift / Kotlin), которые используются в разных приложениях, и, собственно, код вашего приложения, который всё это использует.
Чтобы убедиться, что очередной merge ветки в один из используемых репозиториев, ничего не сломает, мало code review. Надо тестировать как успешность потенциальной сборки, так и работу приложения в целом.
Помимо этого очень удобно, когда каждый фикс бага или новая фича = отдельная сборка, которая прилетает напрямую тестировщикам.
Эти вещи кажутся очевидными тем, кто работает в крупных компаниях. Но ко мне на собеседования переодически приходят люди, долгое время работающие как на фрилансе, так и в небольших компаниях.
«Мы с ребятами договорились, что нужно проверять свой код и функционал перед доброской». 👌Здорово, надо было договориться сразу: писать без багов, тогда можно было бы и не проверять.
У выстроенных процессов промышленной разработки есть и своя цена:
все относительно, но их дорого внедрять и сопровождать (люди, железо)
приходится обкладываться архитектурами
места для индивидуальности меньше
трудно быть и разработчиком, и дизайнером, и архитектором
Про это как минимум стоит подумать, если вы разрабатываете один или в совсем небольшой команде и решили пойти в большую компанию. Сомневайтесь, пробуйте, думайте.
В воскресенье ближе к ночи мне неожиданно понадобилась мото мастерская. Я оказался на окраине в промзоне у бокса, где под классную музыку парни строят и чинят мотоциклы. Заводская сборка мотоцикла это, наверное, тоже очень классно, но не для тех, кому нужен рок-н-ролл.
Вторник
Хорошая летняя погода и пробежка утром на воздухе заряжают на весь день! Смелее, уже половина лета позади)
У подкаста @PodlodkaPodcast вышел выпуск про зарплаты. Он зачем-то идет целых 2,5 часа! К выпуску приложена ссылка на pdf с цифрами и основными тезисами. Я попробую коротко высказаться на эту горячую тему.
В прошлую пятницу в питере утром был дождь (внезапно) ☔️.
Открываем приложение по заказу такси и видим, что цена за поездку отличается раз в 5 от обычной цены за такую же поездку, но не в пятницу и не в дождь. Почему? Потому, что высокий спрос - желающих поехать больше чем таксистов.
В сфере IT, а точнее, на разработчиков, а еще точнее, на мобильных разработчиков, спрос стабильно высокий. Если разработчик при этом является хорошим специалистом и знает, как объяснить свою важность для работодателя, он будет зарабатывать много + получать хорошие компенсации.
Просто помните, кто-то всегда будет получать больше вас. Большинству важнее комфортные рабочие условия (оборудование, график, з/п), честная зарплата, хороший дружный коллектив и интересные задачи. А о том, как повысить свой уровень мы сегодня ещё поговорим.
Долго объяснять, зачем нужно развивать свои компетенции, не имеет смысла. Для многих работа - это жизненная необходимость, особого роста они не хотят, их устраивает текущее положение дел. Дальше имеет смысл читать тем, кто либо сомневается, либо уверен, что развитие ему нужно.
Если коротко и тезисно, то развитие позволяет:
- решать более интересные задачи
- работать над более крутыми и сложными продуктами
- зарабатывать больше
- поднять уровень жизни себя и своей семьи
- иметь больший авторитет среди коллег
Да, работодатель тоже заинтересован в вашем развитии, но направление этого развития может не совпасть с тем, что интересно именно вам. Хорошо, когда индивидуальный план развития не просто существует, но и составлен с учетом ваших интересов.
👌 Хозяйке (тимлиду) на заметку: когда составляете план обучения для своих коллег, старайтесь учитывать их интересы.
Про профессиональный рост с помощью создания своих проектов я уже рассказывал в Яндексе в рамках #cocoaheads youtube.com/watch?v=iyTIJy… и на Apps Conf 2019. Лично мне удобнее учиться на практике, а ещё классно, когда делаю что-то полезное другим.
На эту тему я уже получил десятки отзывов с положительной обратной связью и благодарностью за доп. мотивацию. Посмотрите видео, возможно, найдёте что-то полезное для себя.
Помимо работы над своими pet-проектами ещё одним способом поднять свой профессиональный уровень без вреда для работы являеся участие в open-source. Тут тебе и польза другим, и участие в международной движухе, и хорошая строчка в резюме. 👩🏻💻🤘
Как выбрать проект для участия? Лучше, конечно, найти что-то интересное лично тебе или взять какую-то библиотеку, которую уже используешь. Посмотри подборки awesome iOS, awesome Android, awesome Flutter и т.д. на github. Читай issues, думай что и как можно улучшить.
Если опыт окажется положительным, можно вообще создать свою 🚲 open-source библиотеку или фреймворк.
Ещё одним вариантом для прокачки себя как специалиста является Stack Overflow 😵, а точнее, ответы на вопросы на нём. Я рекомендую ориентироваться на основной англоязычный SO - там вопрос больше, заодно и английский подтянете.
Вы удивитесь, но дать хороший ответ на технический вопрос не всегда просто. Часто приходится поднять документацию, написать код или покопаться в каких-то своих исходниках. Лично я рассматриваю хороший профиль на SO с интересными вопросами и нетривиальными ответами как + в резюме.
Чтение книг - очевидный способ повышения знаний в нашей области, к которому почему-то прибегают далеко не все 🤷♂️. Литературы масса, спросите 5-ых специалистов интересующей вас области "что бы мне такое почитать на тему ....?" и вы получите список литературы на год вперёд.
Ничего не мешает самому посмотреть список литературы, отзывы и обзоры про разные книги - найти что-то интересное для себя. Если глаза устают от экранов, книги можно найти не только в электронном виде, но и в бумажном. В крупных городах довольно много книг выставляют на Авито.
Кстати, когда к нам на собеседование приходит человек, который плавает в какой-то теме, велика вероятность, что от нас он уйдет со списком литературы, за что, кстати, многие очень благодарят.
Если вам удобнее учиться и узнавать что-то новое в компании других людей, посмотрите на хакатоны и встречи Peer Lab. Тут на помощь придут ресурсы Meetup, Eventbrite и Timepad 🕵️♂️.
Посмотрите на уровень участвующих 👩🏻🏫👨💻, хотите у них чему-то научиться? Прекрасно, действуйте. Возможно, там вы встретите команду, с которой поднимите мега-стартап (но это неточно). Или найдёте вторую половинку / кого-то кто будет смеяться над вашими шутками 😃!
Конечно, ещё бывают дельные митапы, но тут как повезёт - я несколько раз ловил себя на мысли, что тот или иной митап не стоил потраченного мной вечера 😔.
Подпишитесь на крупные международные профильные email рассылки. Да, они будут на английском 🇬🇧, но это ещё один хороший способ подтянуть язык. Найти дельные и свежие материалы на русском не всегда получается, а читать что-то 2016-2017 года может быть не актуально.
По моим наблюдениям, от пятиминутных статей на Medium и туториалов, в которых пошагово расписано что и где нажать, пользы не очень много. Капайте глубже.
Ещё один способ расти - делать мини-исследования при выполнении задач. Пришла нетривиальная задача? Супер! Перед тем, как несколько дней потратить на решение и его отладку, посмотрите, а как другие решают подобные задачи?
Попробуйте найти схожие библиотеки и фреймворки, посмотрите что у них внутри, о чем подумали их авторы из того, что вам пока не пришло в голову? 🤔
Встретить уникальную задачу, которую ещё никто до вас не решал - большая удача! У вас такое было? Расскажите в комментах.
Сегодня я написал про несколько способов 🧠профессионального роста и тезисно показал, зачем тебе это нужно. Если ты хочешь рости и развиваться, ты будешь это делать, ну а если
у тебя нет времени/сил/возможности/мотивации/удобного места/подставь сюда свою причину, то скорее всего, у тебя просто нет желания. Не трать время и силы, убеждая в обратном других и поиском тех, кому кроме тебя важен твой рост)
Среда
Сегодня писать буду в основном про iOS, но будет и Android-истам. 👍
По ощущениям, в последние несколько лет приток новых людей в iOS абсолютно не поспевает за ростом спроса. Я думаю, что дорогая точка входа (наличие мака и iPhone) - сильный сдерживающий фактор.
Посмотрите на цены на актуальные макбуки 😱 А теперь представьте себя студентом ВУЗа технической специальности, который решил пойти в мобильную разработку. Какой у вас план? Помощь родителей, кредит, копить? Для большинства студентов в стране это слишком дорого.
Возможно, по этой причине в графе образование в резюме iOS-сников технические специальности встречаются реже? Зато встречаются маркетологи, экономисты, специалисты по связям с общественностью и т.д.
Купить б/у мак можно (хотя и это не дёшево), не советую смотреть модели до 2015 года. Если хотите начать разрабатывать под iOS без тормозов, посмотрите на новые Mac Mini - они хороши и будут актуальны в ближайшие года 3 точно.
P.S. Эконом-экстрим вариант: можете найти MacBook Pro (не retina) 2012-2013 года, поставить в него SSD и 16Гб оперативной памяти, суммарно выйдет в 40 000. Этого хватит, чтобы учиться (первый год), но работать на нём будет не очень комфортно, да и продать потом сложнее.
👩💻👨💻 iOS разработчики у нас работают на свежих iMac и Mac Mini (напишите в комментах, что у вас). Mac Mini на i7 просто пушка. Модулей у приложения много, сборки на медленных машинах сильно замедляли бы работу. Удивляют компании, где железо разработчик должен принести с собой.
К моему большому сожалению, хороших ноутбуков у Apple я сейчас не вижу. Сенсорная панель, перегрев, спорная клавиатура и цена в 200 000 за модели с 256 Гб меня не привлекают. Но даже это я бы простил, если бы яблочко на крышке светилось.
Связка макбук + внешний монитор имеет право на жизнь, но если мобильность не важна, а важны соотношения цена/производительность - смотрите на iMac и Mac Mini.
Выбирая между Mac Mini и iMac, нужно помнить - найти второй равноценный монитор к iMac сложно, а ещё его эргономика удобна не всем. Кстати, вы за какой вариант?
У меня есть
- iPhone с iOS 10.3
- iPad с iOS 9.3.6
- iPod с iOS 5.1.1
Устройства хорошо сохранились, но вот с приложениями беда. Каждый раз когда на презентации Apple с гордостью рассказывает про то, как долго устройства получают обновления становится грустно.
В наших реалиях подъем минимальной версии iOS до 11 сильно упростил жизнь разработке, но решения эти не всегда просто принять.
Жалко оставлять пользователей "за бортом".
А какую минимальную версию iOS вы поддерживаете?
Можно ли в 2019 iOS программисту не знать Objective-C? На мой взгляд, да. Swift становится все лучше и лучше, он прост, лаконичен, элегантен. Переход на Swift 5 дался небольшой кровью (а помните переход с Swift 2 на Swift 3 😉?)
Тех, кто хорошенько пописал на Swift, но при этом сохраняет тягу к Objective-C мне пока не понять. Objective-C становится синонимом и опорой legacy. Я был очень удивлен, когда знакомый искал для своего стартапа Objective-C программиста для создания нового приложения.
Где можно будет найти и как получится заманить бодрых специалистов по Objective-C через 2-3 года я совсем не представляю.
Если вы iOS программист 👨💻 и хотите понять, что у вас нет пробелов в базовом уровне, или же вы или друзья только собираетесь учиться и нужен план, вот ссылка habr.com/ru/post/437300/ на статью, которую я написал на этот случай. Дополнительно рекомендую swiftbysundell.com/basics
Каждый год внимание тысяч iOS разработчиков и сочувствующих приковано к конференции WWDC, на которой Apple выкатывает новые фичи и рассказывает про применение своих технологий 🤓.
В открытый доступ попадают многие десятки видео, в которых внимание уделено и теории и практике.
Посмотреть все видео сложно, потому что нужно много времени, но вот вам ссылка с конспектами 😃 WWDC 2019 github.com/Blackjacx/WWDC - все основные моменты собраны в одном месте 🤩.
Кстати, присоединяйтесь, там еще много чего нужно добавить! Чем вам не способ роста?)
Когда я увидел, что Apple на WWDC 2019 представила новую возможность авторизации через "Sing in with Apple" developer.apple.com/videos/play/ww…, я подумал, что это просто отличная штука. Но есть вопрос, как пользователь сможет уйти из экосистемы Apple?
Если ты авторизовался через тот же Facebook, ты можешь продолжить пользоваться сервисами и на других платформах. А что делать в случае с "Sing in with Apple"? Что вы про это думаете?
SwiftUI и Combine - два новых мощных инструмента, для использования которых придется в приложении поднять минимальную поддерживаемую версию iOS до 13. Теперь можно будет писать декларативно и реактивно при этом ещё и нативно 😃
А раз iOS 13, значит в продакшн эти решения массово заедут в какой момент? Через 1,5-2 года?
На ваш взгляд, так Apple толкает разработку, а следом и пользователей переходить на новые устройства или реально не было возможности добавить поддержку SwiftUI и Combine с iOS 11?)
Четверг
Сегодня будем говорить по большей части про Android, но будет интересно не только Android-истам.
По моим представлениям разработка под Android имеет гораздо больше подводных камней. И дело не только в том, что приложение будет запускаться на полном зоопарке устройств.
Есть ряд вещей, о которых в 2019 году почему-то нужно знать, думать и помнить.
Видна ли клавиатура? Что делать при повороте экрана? Отдельные вопросы касаются защиты приложений и от вредоносных программ, и от бесплатных скачиваний с пиратских ресурсов ... reddit.com/r/androiddev/c…
Улыбнитесь сегодня при встрече Android разработчику, пожелайте хорошего дня.
Навигация в Android 🔥 На прошлой неделе на нашем очередном внутреннем мобильном митапе один из коллег делился опытом от использования Navigation Component developer.android.com/guide/navigati… - выглядит перспективно
Что скажете про Navigation Component в проде?
У нас активно используется RxJava, вопрос о переходе на корутины пока открыт, а что у вас? codemotion.com/magazine/async…
Писать UI декларативно скоро станет стандартом - деклартив поджимает со всех сторон, вот и Google на I/O показывает Jetpack Compose во всей красе youtube.com/watch?v=VsStyq… (вдохновлялись React, Vue и Flutter)
Пятница
К сегодняшней теме будет небольшая подводка. 🙌
Давай представим ситуацию, к тебе как к понимающему в мобильных приложениях обращается подруга 🙏, которая работает в благотворительной организации.
- Про нас знают десятки тысяч людей. Мы хотим сделать для них приложение, чтобы рассказывать про наши новости, события, сборы средств и т.д. Мы посмотрели в pdf под выпуском одного подкаста про зарплаты, что 1 Android и 1 iOS программист обойдутся нам в 3-4 млн руб в год 🙄 ...
... для нас это дорого. И нужно не только сделать приложение, но и поддерживать, развивать (фриланс не вариант). Можно как-то сделать дешевле, и зачем нужно 2 программиста, чтобы сделать одинаковые приложения? Сайт у нас один, а работает в Chrome, Firefox и Safari! Как быть?
Подумав, ты отвечаешь:
- Раз вы не хотите платить так много, может вам написать одно приложение сразу на две платформы?
- А что так можно??
- Да, есть несколько вариантов 😎!
- Звучит заманчиво, расскажи, пожалуйста!
Кстати, а как вы думаете, кто бы ещё хотел не переплачивать за разработку приложений?
Я почему-то думаю, что все или как минимум абсолютное большинство.
Сегодня говорим про кросплатформу!
Небольшая ремарка к предыдущему посту. Если бы сайты были полноценной заменой приложениям, то думаю, что такого числа подписчиков у этого твиттер-аккаунта не было) (как и конференций, митапов, курсов и рабочих мест для разработчиков мобильных приложений).
Когда нужны push-уведомления для повышения вовлечённости, скорость работы и доступ при плохой сети, сайты не тянут. И, конечно же, ещё один крайне важный фактор при принятии решении о своём мобильном приложении: у других уже есть приложение, а чем мы хуже?
Желание не писать отдельно код для двух мобильных платформ вполне резонно - это и дешевле и гарантирует схожий функционал. Ну или по крайней мере, хочется свести дублирование кода к минимуму. Сейчас у нас в Тензоре для обобщения бизнес-логики, как я уже писал, используется С++.
Это действительно позволяет сильно сэкономить ресурсы (силы, время, деньги), но дело в том, что и на написание нативного UI требуется много времени, а он у нас на 95% идентичен между iOS и Android.
Я не собираюсь никого ни в чем убеждать, у меня есть гипотеза, что как только будет возможность делать годные мобильные приложения сразу под две платформы и дешевле в 1,5-2 раза, рынок сам всё решит. Дальше делюсь своим опытом с кросплатформой.
Я пробовал React и PhoneGap и я не увидел в них полноценной замены нативной разработке, тут и результат на iOS выглядел не супер, и всплывающие ошибки требовали долгих разбирательств.
Полтора года назад я услышал про Flutter, решил попробовать и переписал одно из своих приложений на нём. Я был приятно удивлён не только тем, как собранное приложение вело себя на реальном девайсе, меня впечатлило, что Flutter дико простой и многое работает прямо из коробки.
Буквально через пару месяцев я поставил из стора приложение для заказа суши 🍣 и понял, что оно написано на Flutter. Причём, в нем было все необходимое, оно быстро и плавно работало.
Я стал больше приглядываться к Flutter, сходил на конференцию DartUp и увидел там огромное количество людей, которые пришли послушать про Flutter и Dart. В январе мы провели внутренний хакатон по Flutter - iOS и Android программисты в него довольно быстро въехали.
Ещё мне нравится как команда Flutter @FlutterDev относится к разработчикам. От скорости их работы и релизов новых фич до опросов: чего вам не хватает? какие виджеты вам нужны? а на iOS что вы ещё хотите?
Я рекомендую вам попробовать Flutter, он пугающе прост. После Kotlin и Swift привыкнуть к Dart получается за пару дней.
P.S. недавно собеседовал программиста, который спросил: «надеюсь у вас не Flutter, я сильно против?» Я ответил, что нет, но спросил почему же он против? Он сказал, что сам Flutter не пробовал, но его знакомые так хвалят Flutter, что он решил его «хейтить» 🤦♂️
☝️What do Flutter package users need? Helping the Flutter community grow is important, which is why we asked questions about the ecosystem in this last survey. The Q3 survey will be launched in August! See what we learned in Q2 → goo.gle/2JSAafw https://t.co/qGe0kIaW2b
Вот вам пример очередного опроса разработчиков от команды Flutter. Я чего-то не помню, когда Apple спрашивала советы про фреймворки) twitter.com/FlutterDev/sta…
Кстати, недавно попробовал Flutter для веба. Очень необычно - тот же код, что работает в приложении на iOS и Android, собирается под браузер. А может тут есть кто-то из @wrike и хочет рассказать про свой опыт с Flutter / Dart для веба)
Суббота
Сравнение Dart vs Kotlin vs Swift показывает масштаб «непреодолимой пропасти» между этими языками. Интересно, как будет выглядеть такое сравнение года через 3. blog.usejournal.com/dart-vs-kotlin…
Предыдущий пост был про сравнение Swift, Dart и Kotlin. Этот про верстку UI с SwiftUI, Flutter и Jetpack Compose. quickbirdstudios.com/blog/swiftui-v… Напомните мне, пожалуйста, в чем смысл писать UI отдельно на схожих языках схожим образом? И что, если Flutter завтра поддержит Swift/Kotlin?
Сервис отправки push-уведомлений OneSignal теперь недоступен в России?! А кто и что про это знает?
Сегодня буду делиться мыслями про отношение к работе, life-work balance и работу в команде. 👨💻 Я частенько слышу от ребят в возрасте 22-24 года, что работать нужно не перетруждаясь, чтобы не перегореть - нужно соблюдать life-work balance и т.д. У меня свои мысли на этот счёт.
Начну с того, что я не призываю работать 24/7, но уверен, что когда занимаешься делом, которое тебе нравится, время летит незаметно, а зачем тратить своё время на работу, которая тебе не нравится - для меня большой вопрос. Не бойтесь перетрудиться, если труд вам в радость.
Теперь про специфику нашего ремесла. Я вижу, что большинству коллег в возрасте 40-45 лет гораздо тяжелее разбираться в новом да и просто искать себе другую работу. Ценный сегодня опыт тоже имеет срок годности - не думайте, что рынок будет мечтать о вас всегда.
Про физиологию - даже в 35 на отдых и восстановление нужно больше времени, чем в 25. А что будет в 45?) Добавьте к этому, как правило, появляющиеся заботы о муже/жене/детях/родителях и вы увидите, что на то чтобы «вкалывать» у вас времени будет сильно меньше.
Поэтому я думаю, что 18-25 это тот период, когда сил жалеть точно не нужно. Если вас не прёт от того, чем вы занимаетесь, возможно вы занимаетесь не своим делом. Это повод сменить дело, а не делать текущее в пол силы.
Я лично не знаком ни с одним успешным в своем деле человеком (спорт, наука, бизнес, творчество, политика), который мало работает. Мне нравится ответ одного из величайших гольфистов - Гари Плейра на вопрос про причины своего везения: "чем больше я тренеруюсь, тем чаще мне везёт".
Да, от умственного труда бывает ещё как устаёшь, но отдыхом может служить смена деятельности. Много кодил - почитай, много читал - попиши (к примеру, статью не Хабр). Вообще устал от технической части? Тогда, к примеру, аудиокнига или подкаст про софт-скилы во время пробежки.
Сильно морально истощён - помоги кому-то, кому помощь очень нужна. Чередуй интересное тебе - вот ключ к тому, чтобы не перегореть.
Ещё хочу сказать про сериалы, не советую рассматривать их просмотр как отдых. Цель сериала - подсадить тебя на просмотр нескольких сезонов, взяв суммарно от пары дней до нескольких недель твоего времени. Сюжет искусственно растянут с переходом из одной серии в другую.
За это время ты можешь пройти какой-то технический курс или записать свой, подготовить классный доклад на конференцию, подтянуть английский/китайский/эльфийский язык, пойти на курсы танго или с пользой провести время кучей других способов.
Если просмотренных сериалов у тебя в жизни больше чем достижений, которыми ты гордишься, проверь - ок ли тебе с таким положением дел) А если думаешь, ой ну посмотрю сейчас пару сериалов, вся жизнь впереди, загляни в предыдущие посты)
Что касается команды, то более емкой фразы чем «Если вы самый умный в комнате, то вы, не в той комнате» у меня нет. Старайтесь окружать себя людьми умнее себя, чтобы дотянуться до их уровня, вам придётся расти. Не бойтесь здоровой конкуренции.
А вот про состав команды, я думаю, что хорошо, когда у людей разный опыт и разные сильные стороны - они смогут дополнять друг друга. Но будьте готовы, что вести такой коллектив сложнее, это не взвод солдат.
Хороший скрипач не значит хороший дирижер. Основная причина неудачных походов в тимлиды и возврат назад - крайне проста. Наивно думать, что писать код для железа нужно учиться, а работать с группой людей можно не учиться 🤦♂️ это тоже навык, его нужно осваивать и развивать.
Теперь про мотивацию похода в лиды. Если твоя первая ассоциация на слово руководитель - «власть», в лиды идти не стоит. И будет так до тех пор, пока первой ассоциацией не станет «отвественность».
«А как мне понять, что стоит пойти в лиды?» 🤷♂️ ответ простой: если ты готов учиться работе с группой и понимаешь, что будь у тебя больше рук и времени, ты бы добился гораздо большего для своего продукта чем в одиночку - момент настал.
P.S. Да, бывает, что поход в лиды - единственный способ повысить з/п на текущем месте работы. Но не стоит это делать только из-за большей з/п. Если не хотите вести, пробуйте искать более высокооплачиваемую должность специалиста.
Воскресенье
Кстати, а тебе была бы интересна платформа, где можно найти напарника для своего пет-проекта или, к примеру, найти ментора/стать кому-то ментором в разработке? Если да, подпишись на @SlavaSlutsker, чтобы ничего не пропустить ⚡️
"Чем больше людей собираются в одном месте, тем больше времени уходит на их общение и тем меньше остается на производительную работу" - помните об этом, когда будете выбирать место для работы.
А сколько у вас совещаний в неделю?
Про собеседования. Многие не понимают, зачем на собеседованиях в крупных компаниях спрашивают про алгоритмы, архитектурные паттерны, разделение логики, тесты и принципы ООП. По крайней мере, я довольно часто вижу такое непонимание.
Просто продукты большие и сложные, если не использовать какие-то устоявшиеся подходы и правильные абстракции, есть риск сделать систему, которую сложно поддерживать и развивать. Этот процесс отличается от создания приложением на 10 экранов одним человеком.
Чтобы примерно оценить масштаб трудозатрат на сопровождение промышленных процессов разработки мобильных приложений, можно прочитать habr.com/ru/company/ole… а теперь представьте, что писать код приложений все станут как хотят и умеют)
Про то, как собеседования проводить. Меня огорчают 2 вида собеседующих. Первые не понимают, что именно проверяют своими вопросами и зачем им эта проверка. Вторые считают собеседование способом повышения ЧСВ - меня позвали кого-то спросить, я эксперт! 🤦♂️
Вот мои советы: 1) поймите какие навыки и знания хотите проверить, при этом отделите базовые от тех, которые можно быстро получить. 2) помните, что человек может очень волноваться, начните с простых вопросов или чего-то отвлеченного.
Если волнение кандидата слишком велико, отпустите на пару минут попить воды. 3) Общий принцип - не делайте на собеседовании того, чего не хотели бы чтобы делали на собеседовании с вами. Не нужно смеяться над человеком, учить жизни - относитесь с уважением, наша сфера тесна.
Про образование. Не смотрите на ВУЗ как на пту для программистов. Для меня задача университета - научить думать и декомпозировать, дать базу, кругозор и навык учиться. Нужно ли высшее образование, чтобы быть программистом - нет, но почему-то большинство специалистов,
которых я знаю, имеют университетское образование по техническому профилю. А вот с курсами интересная история была - приходил на собеседование на iOS программиста преподаватель по Swift одной из крупнейших платформ онлайн-курсов - почти ничего не ответил даже по Swift.
Оказывается, там преподают по методичкам и, видимо, можно не быть экспертом 🤷♂️
Спасибо за внимание, на этой неделе с вами делился идеями, опытом и мыслями Слава Слуцкер @SlavaSlutsker - подписывайтесь, если было интересно, надеюсь пригодится 😊. Спасибо Егору Толстому @igrekde за приглашение. Удачи ✌️