День 4: Глубокие знания - тоже (не нужны)
Я не имею ввиду знание основ, а именно какие-то глубокие детали. Как хранятся селекторы внутри обжси рантайма, что там под капотом у либдиспатч, как сделать какое-то дженерик-извращение в свифте, которым никто никогда не пользуется итп
Теперь про то, что считаю основами.
Само собой, Свифт. Вопросов как что-то написать возникать не должно. Дженерик протоколы всякие - опционально, знать что оно есть и хватит. Если нужно будет написать строготипизированный нетворк слой - человек разберется в процессе
Основные принципы многопоточки, какие есть проблемы (стандартные, без инверсии приоритетов), просто чтобы человек мог это применять для решения повседневных задач.
Юай: ЖЦ вью контроллера, респондер чейн, автолейаут, лееры. Потому, что с этим приходится постоянно работать
Чуть-чуть по алгоритмам и коллекциям, чисто проверить общее понимание происходящего. Никаких переворачиваний красно-черных деревьев и фильтров Блума. Конечно, если разговор туда зашел и человек знает - это прекрасно, но если нет, то на оценку компетенции это не повлияет
Если с основами всё ок, то дальше важны только те вещи, которые используются или планируются на проекте, ну и софт-скиллы, конечно же. Гонять человека по всякой подкапотной дичи, чтобы посадить красить кнопки и парсить жсоны - кощунство. Не нужно стрелять из пушки по воробьям
Первоочередная задача разработчика - обслуживать бизнес, а не быть самым умным зайчиком. За самым умным - соревновательное программирование. Это всё, конечно, если ваша сфера этого не требует, как например космос/робототехника/игровые движки/наука, там придётся шарить во многом
Конечно, интересоваться всяким подкапотным - это прекрасно. Посещайте конференции, читайте статьи, слушайте подкасты, смотрите мои доклады (хехе), разбирайтесь - это интересно, правда. Только не нужно требовать это от других, это сугубо факультативное занятие и личный выбор
Ситуация: приходите на собес, но собеседующий на днях прочитал статью про какую-то дичь и решил вас за неё спросить. Не знаете? А-тя-тя, штош вы за специалист такой, нихера не шарите. Сам я с таким не сталкивался, но слышал от ребят не раз. Так вот, не надо так делать, ну плез
Поэтому если вас на собесе завалили вопросами которые вы первый раз слышите, а что вы знаете даже не спросили, то не спешите расстраиваться. Возможно, собеседующий сам нихера не знает что и как нужно спрашивать. Хорошо, когда у компании есть фреймворк по которому происходит отбор
Наличие у человека знаний ещё не значит, что он умеет их применять. Зачем тогда большие и крутые компании таскают кандидатов по куче собесов на всевозможные темы? 1 - Им надо как-то фильтровать людей, 2 - могут себе позволить. Но даже там с хорошими софтами простят недобор хардов
Не смотря на то, что глубокие знания не нужны, широкие - очень даже нужны. Я ожидаю от разработчика, что он будет интересоваться новыми вещами и не лениться осваивать инструменты, с которыми сталкивается (это про софты, кстати). Например, за 10 лет не научиться в ссх - это провал
Ща скажу банальную вещь, но что разработчику нужно всю жизнь учиться - это не просто поговорка.
И, если выбирать, то лучше вширь, чем вглубь. Как минимум, это расширит концептуальное поле и будет легче перекатиться в другой стек, но об этом завтра. На сегодня всё
@bitemybyte