Цель: Сеньор iOS Developer
Возраст: 31 год
Семейное положение: волк-одиночка
Работа: Слесарь-механик 2/2 (50 тыс/мес)
Локация: Провинция
Машина: макбукПро 15 2010г ИнтелКор5 2 ядра 4+4 ГбОЗУ
**в планах**: макбукПро 16 2021 на чипе M1PRO 16 ГбОЗУ!
Всех здравствую пикабушники! Слесарь-кодер на связи! Иду свой путь в мир IT.
Продолжаю блог. В этой части в основном мои впечатления от алгоритмов и структур данных.
Наконец закончил курс инглиша на дулинго - мой уровень A2 (в основном чтение), читаю адаптированные под этот уровень книжки. Законспектировал книжку Усова по кодингу на свифте. Наделал упражнений в Анки. Упёрся в UIKit графические интерфейсы. Но мой лэптоп не тянет программу для работы с ними. Поэтому пока учу базу фундамент. Считаю что синтаксис Свифта я освоил типа как свой инструмент с которым работаю в цеху. Знаком с десятками стандартных функций свифта. Серьезный выход с 0. И сейчас беру новый уровень - упражнения-задачи. Цель – тренировки 3в1:
Зачем мне сейчас задачи для собеса? Это мой трюк - учить структуры данных ЧЕРЕЗ решение задач. Ибо решить эти задачи без структур никак. Значит тут убиваем двух зайцев. Задачи по любому придется перед собесом выдрачивать. А сеньор iOS кодер обязан познакомиться со структурами данных. И мне надо перенастроить мозг с слесарный на алгоритмическое мышление. По факту это физическая перестройка нейронных связей под кодерство. Вступать в кодерство если не выкупаешь базу по структурам данных то это вэри бэд айдиа. Значит мне надо интервальное повторение чтобы от зубов отскакивало. Типа того разбудить кодера ночью, сказать реализуй основные методы связных списков. И я на инстинктах делаю. Иначе это просто не профессионально. Потому что все кодерство построено на этих китах - структурах данных. Типа как бозон хигса. Вот оказывается как они важны. Короче есть задачи на програмирование на сайте Leetcode. Там их тыщи, но кодеру нужно только особый список из 150 задач. Его подобрал кодер из Гугла. Он делает разборы на своем сайте Neetcod. Я просто наблюдаю, как этот тип решает, а потом повторяю за ним. Уже разобрал 50 задач в основном средний уровень. Моя тактика:
просмотр решения на Neetcod
просмотр решения на TakeUForward
конспект подхода к решению
разбор кода на Пайтон
конспект моими словами алгоритма кода
оценка сложности по времени и памяти кода
повторяю без подглядки уже на Свифт
видеолекция для этой новой структуры данных
составить упражнение чтоб написать эту структуру с нуля и ее функции
Конспект, код и картинка в карточку в Анки. Заметил что конспект своими словами очень помогает понять суть. Гарантия. Для заинтересованных в структурых данных даю бонус - ютуб профиль академика Oleksandr Tsymbaliuk - тип объяснят и поймешь даже если ты полукретин.
На одну задачу уходит много времени. По этой причине я не решаю сам покуда не знаю шаблонов решений и как использовать структуры. Да и моя цель другая. Например готовые решения для задач «Коко ест бананы» и «Генерация скобок» я разбирал две недели каждую. Хотя объяснение логичное а код короткий. Я просто не вдуплял, тем более что на каждом шагу открываю для себя такую лютую дичь как рекурсия или настройка двоичного поиска. Это жесть дырища куда надо глубоко нырять, пытаешься думать и разламываешь мозг, типа того что я двумерная омёба пытаюсь понять четвертое измерение. Эти вещи отнимают дохера времени, хотя это просто инструмент.
Когда чуть раскидал, то понял, что супер сложное станет прозрачное как кристалл, дай время чтобы в мозгу всё протряхнулось и связи между хромосомами отладились, а что-то просто запомнилось. С наскока не выйдет осилить. Мозгу надо адаптироваться под новые правила думать. Дальше это становится похоже на простое перекидование страниц гугла лопатой. Сложность измеряется только временем монотонной работы. Это важно понимать особенно если в прошлой жизни твоя работа не была умственой. Ибо это сможет вас унижать конкретно. Особенно если есть проблемы с лишним весом. Хотя я считаю что слесарня очень похожа на програмирование. К примеру много деталей между собой трутся, вместе они система, набор систем.
Осознал правило - учить ЧЕРЕЗ практику. Научись сверлить дрелью и дальше ты готов понимать инфу из инструкцию по ней. Мозгу нужен шок от новых правил. И теория впитается в кровь. Гарантия. Смотреть статью о двоичном дереве поиска мне стало нескучно после судорожных попыток разобрать 15 задач на деревья. Типа ага; вот это я делал с деревом, это видел, да оно себя именно так и ведет; это вот здесь точно подмечено и такое всё. Появляется даже интуиция. Ведь что-то новое становится понятным, когда много раз применяешь это в разных местах.
У меня плохая память и логика. Всегда моя метода была - повторение. Каждый день перечитываю условие задач и мой конспект подхода к решению, на код нет времени. А на Свифте пишу только упражнения спроектировать структуры данных + их методы. Например стек, связный список, дерево, куча. Как пройду 150 задач начну их дроч до автоматизма с кодом. Чувак с канала Neetcod рили мэджик как постепенно и ровно разматывает решение. Теперь понимаю, что настоящий программист - это алгоритмы и архитектуры. А остальное просто оператор пк.
Получилось немного сумбурно от похмелья с алгоритмов и структур данных. Кстати, после таких приходов мозг во сне работает как пьяный компилятор то есть во сне вы пишете код задачи которую не никак можете решить. Из-за этого напрягается мозг и плохой сон.
Пользуясь случаем хотел бы задать вопросы профи iOS кодерам. Реально ли кормиться на своих приложухах в апстор? То есть на полный день штамповать их как на конвеере и у них красивый кастомный дизайн как из Drible. То есть они НЕ выглядят как конструктор-клоны из стандартных компонентов SUI. Второй вопрос: сколько часов в день вы способны концентрироваться на коде на длинной дистанции?