Всем привет, эту предпраздничную неделю вести твиттер буду я, Попов Валерий (@complexityclass). 🎄
Работаю в команде… twitter.com/i/web/status/1…
Список тем постараюсь придумать по ходу. Сложно вести андерхуд, когда еще не остыл след твитов @asychev89 🤔
Саша ра…twitter.com/i/web/status/1…A
Сегодня поговорим о языках программирования. Про Swift/ObjC или Kotlin/Java вроде все ясно. А какие еще ЯП могут бы… twitter.com/i/web/status/1…
Часто слышал мнение, что язык это всего лишь инструмент, который нормальным разработчиком учится за пару недель под… twitter.com/i/web/status/1…
Если же учить языки ради новых концепций и идей, то времени нужно куда больше. Скажем один язык в год, вряд ли получится изучать больше.
Быть монолингвом в мобильной разработке сейчас сложно. По крайней мере есть по два основных языка на каждой платфо… twitter.com/i/web/status/1…
Нет хороших и плохих языков, скорее есть не особо удачные сочетания.
В вузе учил С++, точнее С с классами, а потом… twitter.com/i/web/status/1…
Хорошим разделением будет то, в котором языки входят в разные группы. В которых преобладает императивный/декларатив… twitter.com/i/web/status/1…
С разделением на ооп/фп довольно сложно, многие языки сейчас мультипарадигменные и успешно позволяют в себе сочетать много подходов.
Недавно видел хорошую табличку про то, что нет фп и не фп языков, есть просто языки поддерживающие функциональные ф… twitter.com/i/web/status/1…
В комментариях верно пишут, что часто разные яп используются для автоматизации. Вообще это отличный полигон для из… twitter.com/i/web/status/1…
В iOS сейчас много конфигов пишется на Ruby. Когда Swift Fastlane выйдет из беты и команды перейдут на SPM, думаю… twitter.com/i/web/status/1…
Часто в Ruby задачу можно решить несколькими способами, а когда знаешь язык на уровне копипаста из so, то такая сво… twitter.com/i/web/status/1…
для iOS разработчиков*
Ожидаемо вижу в ответах C++ и считаю, что этот язык может дать очень много полезного. Во-первых, потому что он прак… twitter.com/i/web/status/1…
С++ не только про ООП. Хотите других абстракций? Посмотрите на пару книг от автора STL.
"От математики к обобщенном… twitter.com/i/web/status/1…
Первая почти художественная, много историй, читается довольно легко.
В началах же нужна алгебраическая база и читат… twitter.com/i/web/status/1…
С++ полезен для whiteboard собеседований. Если набить руку с STL, то можно подобрать ключи к многим задачам с кодом… twitter.com/i/web/status/1…
105 алгоритмов, которые покрывают большинство кейсов на coding interview. Удобно то, что унифицированные подходы ра… twitter.com/i/web/status/1…
C++ дает возможность познакомится с парадигмой generic programming. Берем общие концепции и применяем их к любым с… twitter.com/i/web/status/1…
На С++ можно писать и функционально. Не так легко, как на Haskell, но можно. Мне нравятся советы из свежей книжки I… twitter.com/i/web/status/1…
У С++ есть проблемы с изучением, которые сейчас активно решаются. Долгое время нас знакомили с С под видом С++. Хор… twitter.com/i/web/status/1…
Современный С++ отличается от того, как его многие себе представляют. Отличным примером того, как надо учить С++, д… twitter.com/i/web/status/1…
Вот кстати доклад о том, как и зачем создавался курс
youtu.be/mhiAXYprh34
Другой практичный язык - Python.
В мобилках его сейчас не так много, а вне, хоть отбавляй.
Python сейчас стандарт в ML. C поддержкой OpenCV на нем можно решать задачи компьютерного зрения. NumPy, SciPy, Pa… twitter.com/i/web/status/1…
iOS разработчик может писать на Python расширения к LLDB
Отличное интро
youtu.be/F3esrC7JYmk
Крис Латтнер активно пытается подружить Swift c Python, возможно скоро увидим что-то интересное из этой синергии
github.com/apple/swift-ev…
И если хочется покопаться в безопасности, то в python есть много хороших интсрументов для пентестинга.
Может в Python, как в языке, интересных идей и не так много, но полезность его экосистемы сложно переоценить. И для… twitter.com/i/web/status/1…
Разработчику, в основном имеющему дело с мейнстрим языками, хорошо бы познакомится с декларативным подходом. Тут ст… twitter.com/i/web/status/1…
Для меня первым таким языком была Scala. Отличный курс от Мартина Одерски на coursera. Правда проблема была в том,… twitter.com/i/web/status/1…
Иногда полезней начать с чистого листа. Взять язык, в котором многое из того, что учил раньше не работает и пытатьс… twitter.com/i/web/status/1…
По Haskell уже достаточно много материалов и освоить азы не так сложно.
Начать можно с Learn You a Haskell for Grea… twitter.com/i/web/status/1…
Странно, вроде airbnb уже похоронили RN летом, но к концу года, я все чаще стал замечать мобильные проекты на Js/Ts… twitter.com/i/web/status/1…
Такими темпами, в следущем году придется JavaScript The Good Parts читать, хорошо хоть там страниц не много
Кстати жена сейчас учит Js. Был приятно удивлен, когда узнал, что у них в прогрмму начинающего фронтендера входит S… twitter.com/i/web/status/1…
Сегодня будем говорить о вопросах на технических интервью.
Что можно спрашивать, а что стоит оставить у себя в фантазиях?
Самая горячая тема это coding interview. Обычно у вас есть маркерная доска или лист бумаги, несколько задач и добры… twitter.com/i/web/status/1…
Профиль маркертной доски обсуждать не будем и перейдем сразу к задачам.
Довольно часто, перед секцией с кодом, люди… twitter.com/i/web/status/1…
Начнем с такого вопроса, если верить codesignal, то она из Amazon. Можно ли ее назвать алгоритмической? Можно ли за… twitter.com/i/web/status/1…
Задача алгоритмическая,можно сделать выводы о том, как человек подходит к решению, насколько аккуратен, умеет ли пи… twitter.com/i/web/status/1…
На мой взгляд, для таких задач должно быть достаточно уметь использовать строки, массивы, стек/очередь/дек, словарь… twitter.com/i/web/status/1…
От запросов написать по памяти какой-то алгоритм или назвать все отличия AVL tree от vEB tree толку мало. Оно и пра… twitter.com/i/web/status/1…
В условный Google планка задач повыше, но там и кандидатов больше, надо как-то просеивать самых заинтересованных. Л… twitter.com/i/web/status/1…
Часто на собеседованиях бывают архитектурные секции. Какие вопросы уместны на них? Нужно спрашивать отличия MVVM и… twitter.com/i/web/status/1…
Архитектурный собес наверное стоит разделить на два. В одном писать код, ООП и все такое, а в другом проектировать… twitter.com/i/web/status/1…
Помимо кода и архитектуры есть платформа. Тут вроде шаги понятны, спрашиваешь с чем кандидат работал и задаешь вопр… twitter.com/i/web/status/1…
Если собеседуемый с чем-то дело имел, а по факту всплывает много пробелов, то это уже повод задуматься.
Собеседующему надо быть честным. Если на неделе много работал с CoreAnimation, то это не повод мучать кандидата дет… twitter.com/i/web/status/1…
Устройства NSRunLoop это конечно не касается, его должны знать все :)
Сегодня про обучение 👩🎓👨🎓
Раскопал схемку, которую делал для себя несколько лет назад. Местами даже актуальна еще… twitter.com/i/web/status/1…
С чего сейчас новичку изучать iOS разработку? Да и стоит ли вообще?)
Многие начинали с Stanford University's CS193p… twitter.com/i/web/status/1…
А с чего начинать тем, кто хочет кодить под Android? Я начинал с документации и блога Vogella (уже устарел). Кстати… twitter.com/i/web/status/1…
Многие блоги по iOS разработке сейчас переходят в видеоформат, а жаль. Вот были раньше отличные… twitter.com/i/web/status/1…
На посмотреть в дороге хватает wwdc и других конференций. А от блога я все-таки хочу иметь возможность читать по диагонали.
Считаю, что Swift довольно хороший язык для новичка. А есть ли смысл знакомится с программированием через ObjC? Все… twitter.com/i/web/status/1…
У Android еще большой плюс в открытых исходниках. Не знаю, насколько часто Android разработчику приходится читать к… twitter.com/i/web/status/1…
Сегодня определенной темы нет. Пишите, что нравится или, наоборот, раздражает в мобильной разработке.
Рубрика хоро… twitter.com/i/web/status/1…
не очень: IDE и сборка под мобилки. Если с Android Studio + Mainframer еще жить можно, то Xcode просто боль.
хорош… twitter.com/i/web/status/1…
не очень: Rx в мобильных проектах
хорошо: операции/промисы/фьючеры
Сама идея стримов мне нравится, но в iOS не прижилась. С UIKit подход не дружит, тесты писать сложнее. Сейчас думаю… twitter.com/i/web/status/1…
Промисы/фьючеры удобны и есть в стандартных библиотеках многих языков. Да и при необходимости, их можно достаточно быстро убрать.
не очень: текущие реализации Interface Builder/Layout Editor
хорошо: верстка кодом + hot reload
не очень: Core Data, Realm
хорошо: SQLite + обертки
Не то чтобы Core Data плоха, но и большой пользы от нее не вижу. SQLite знаком разработчикам обеих платформ, да и б… twitter.com/i/web/status/1…
не очень: разухабистые DI фреймворки
хорошо: свои фабрики или что-то совсем простое, вроде Fiery Crucible на Swift
А что с кроссплатформой?
На чем начинать новый проект и как выделять общий код в существующем?
Касаемо существующих проектов, мне кажется рабочим решением выделять общий код сервисов. На Kotlin Native или С++ н… twitter.com/i/web/status/1…
Моя неделя подходит к концу, завершу небольшой подборкой книжек на праздники 📔
From Mathematics to Generic Programming
Уже рекомендовал тут, но повторюсь. На мой взгляд отличная книга для праздн… twitter.com/i/web/status/1…
The Phoenix Project
Кажется, ее советовали в подлодке. Отличная история, не зря у нас несколько экземпляров лежит б… twitter.com/i/web/status/1…
Get some headspace
Совсем недавно увидел в подборке кого-то из Microsoft 😎
Может поможет лучше фокусироваться на за… twitter.com/i/web/status/1…
C++ Concurrency in action
По многопоточности книг не так много, а в этом году вышло второе издание этого бестселлер… twitter.com/i/web/status/1…
Designing Data-Intensive Applications
По этой книге видел очень большое количество хороших отзывов. Увесистый томик… twitter.com/i/web/status/1…
Всем спасибо внимание, а еще больше, за отличные комментарии! Надеюсь, было хоть немного полезно.
Успехов в Новом г… twitter.com/i/web/status/1…