1

Этап 1

Computer Science

2

Этап 2

iOS development

3

Этап 3

Алгоритмы и паттерны

4

Этап 4

Архитектура и разработка в целом

5

Этап 5

Прокачка своих аккаунтов

6

Этап 6

100 дней кода

7

Этап 7

Разработка своих приложений

8

Этап 8

Слепая печать 10 пальцами

01 июля—01 июля

1

Этап 1

Computer Science

2

Этап 2

iOS development

3

Этап 3

Алгоритмы и паттерны

4

Этап 4

Архитектура и разработка в целом

5

Этап 5

Прокачка своих аккаунтов

6

Этап 6

100 дней кода

7

Этап 7

Разработка своих приложений

8

Этап 8

Слепая печать 10 пальцами

01 июля—01 июля

17 марта 2019 29 сентября 2021
Цель завершена 28 февраля 2021
Карьера и работа

Дневник Senior iOS разработчика

Или "Стать Senior iOS разработчиком за 2.5 года"

Сейчас я работаю Джуном. Но я не хочу тут засиживаться. Тем более что на текущем месте я работаю по сути сам с собой. Никакого обучения кроме как самостоятельного тут нет. Нет CodeReview, нет ТимЛида и Сеньера. Есть просто приложение с дизайном и ты его полностью делаешь. И даже вопрос по архитектуре некому задать. Ну и хороший код я тоже не вижу на практике.

Есть много вариантов того, как разделают профессию по уровням и далеко не всегда понятно, а что все-таки отличает Senior'a от Джуна. Нужно примерно выделить основные моменты на которые я буду ориентироваться:

  • Достаточное количество опыта работы со всеми основными технологиями под выбранную платформу. Чтобы он не гуглил каждый метод. Понятно, что выучить все нельзя, но уверенно знать фундамент и базовые фреймворки нужно обязательно.
  • Понимание Computer Science в целом. Нужно понимать что и как работает под капотом, как устроена та или другая технология, какие идеи в это заложены. Знание Алгоритмов и Структур данных
  • Понимание и применение разных практик по разработке ПО. Есть TDD, BDD, DDD, разные принципы и еще много чего.
  • Умение разрабатывать архитектуру больших проектов, которые потом будут поддерживаться.
  • Умение решить любую задачу в рамках платформы. А для этого нужно все выше перечисленное.

Это мои мысли и кто-то может не согласится. Но у меня выходит как-то так.

В целом я себе уже составил примерный список книг и курсов которые хочу пройти. Хотел чтобы было около 50 источников, но пока что насобирал примерно 25. Остальное наберу в процессе.

Примерно план такой:

  • Углубляем знания в Computer Science: как все работает под капотом, как развивалась сфера. Что-то из этого я знаю, чего-то нет, о чем-то только слышал. Пока на примете одна книга + курс от Гарварда
  • Алгоритмы и структуры данных. Читал одну простенькую книгу и статьи. Понятно, что все я не выучу и тем более не смогу писать все алгоритмы из головы, но я хочу ориентироваться в них. Потому что уже сталкивался с ситуациями когда (казалось бы) простое решение о выборе алгоритма дает разницу в производительности около 400%. Базовые вещи я знаю, но хочу нырнуть чуть поглубже, 2-3 книги, может быть какой-то курс (надо будет поискать от Гарварда или Стенфорда)
  • Архитектура. Пока что не сильно ориентируюсь в этой теме. Что-то знаю, но не понимаю как это применить на практике. Почти все варианты так называемых "архитектур" для iOS под капотом не различаются и представляют собой по сути шаблон для работы с интерфесом. А это не имеет ничего общего с архитектурой приложения. В общем тема очень глубокая, и невероятно важная.
  • Ну и все что связано с iOS.
    • Многие вакансии требуют умения писать код на Objective-C, так как многие старые проекты написаны именно на нем. Читать его я уже научился. Теперь нужно научится на нем писать. В целом выучить язык не так сложно, пары недель должно хватить. Учитывая что все остальное остается без изменений (системные библиотеки и фреймворки).
    • Понимание структуры приложений и основных компонентов. Есть неплохая книга на эту тему.
    • Написание кастомных компонентов под разные задачи. Без этого в большом проекте скорее всего обойтись нельзя.
    • Анимации, есть книга от Рея по этой теме. Без анимаций тоже никуда. Есть базовые вещи, которые я уже знаю. Но есть очень много продвинутых вещей которые предстоит изучить.
    • Есть еще такая тема как реактивное программирование. Не могу сказать что я в восторге от этой идеи, но пощупать это хочу, чтобы лучше понимать.
    • И еще 100500 вещей которые нужно выучить и пройти на практике.

Еще планирую выпустить несколько приложений. Идей есть много, но никак не начну их делать. А есть и такие, в которых есть ограничения. Например, есть несколько, для которых нужен бекенд. В целом не большая проблема, есть друзья которые могут помочь, или можно вспомнить свои приключения в JS и NodeJS. Или можно попробовать Питон или Го. Короче вариантов много. Но начну я с приложения без бека. А еще есть такие, где нужно много контента. Или нужно на старте какое-то количесвто юзеров.

Еще хочу пройти нынче популярный челлендж "100 дней кода" (https://www.100daysofcode.com/). Вот только врядли я буду использовать для этого Твиттер, но в Инсте такая тема тоже работает. Вижу много ребят кто ежедневно выкладывает посты с этим хештегом и отчитывается о своем прогрессе.

Еще (да сколько можно этих "Еще"?)

Нужно развивать себя как бренд. Профили в социальных сетях: пока что больше всего нравится Инста. Плюс ЛинкедИн обязательно, особенно это важно для зарубежных работодателей и заказчиков.

Свой сайт, пока что это скорее для галочки. Но потом там можно сделать блог, обучение какое-то, заметки и мысли. И свои проекты можно тут оформлять в виде лендингов для их рекламы.

Ну и гитхаб. Пока что не знаю что именно я могу туда заливать, но я придумаю. Как минимум есть пара идей для библиотечек, которые как я вижу, я буду применять в многих своих реальных приложениях.

Где-то в промежутках между другими пунктами буду ходить на собеседования. Как минимум на них весело ходить, ну и полезно узнать, чего я не еще не знаю. И зная в целом ситуацию по сфере - устроиться работать не сложно. Как говорит мой знакомый: "Главное не бросаться на острые предметы и не пить воду из лужи". Короче нужно быть адекватным. Ну и знать то, что ты делаешь.

One more thing! Несколько полезных вещей:

  • Слепая печать на русском и английском 10 пальцами. Я могу печатать вслепую, но по "своей" методике. Пару месяцев назад активно занимался практикой, были хорошие результаты по скорости набора и точности, но потом я забросил и старые привычки вернулись. В общем хочу печатать 10 пальцами, чтобы прям руки по другому уже не умели.
  • Английский. Куда без него разработчику? В целом я неплохо его понимаю, спокойно читаю и слушаю. Нужно это поддерживать и немного развивать. Ну обещаю что буду упорстовать по этой теме, но нужно помнить и регулярно что-то смортеть и читать на инглише.

Планирую писать раз в пару дней. Буду описывать что изучил, с чем познакомился. Какой прогресс идет по проектам. Просто свои мысли. Ссылки интересные, полезные статьи и прочее.

Чуть позже напишу пошаговый план, потому что задач много и сразу все не получится записать. Цель будет развиваться параллельно со мной.

 Критерий завершения

Я работаю на позиции Senior iOS разработчик

  1. Computer Science

    Советовали пока только книгу "Теоретический минимум по computer Science" + нашел курс от Гарварда "CS50: Introduction to Computer Science". Еще знакомый говорил про неплохую книгу - как узнаю - запишу ее.

    1. CS50: Introduction to Computer Science

    2. Теоретический минимум по computer Science

    3. Computer science an overview

    4. Харольд Абельсон, Джеральд Джей Сассман «Структура и Интерпретация Компьютерных Программ»

  2. iOS development

    Тут книг достаточно, и курсов и туториалов. Но нужно копать глубже и докапываться до основ: как устроена система, как все работает под капотом, как работает иерархия классов и View.

    1. Programming iOS 12., Deep dive into controllers, views

    2. Data Structures & Algorithms in Swift | raywenderlich.com

    3. Realm RayWenderlich

    4. iOS animations RayWenderlich

    5. Курс от Стенфорда по разработке на Swift

    6. Objective c Programming - Big Nerd Guide

    7. Apple WWDC 2017 - Session 230 - Advanced Animations with UIKit https://youtu.be/35_nNRtkc54

  3. Алгоритмы и паттерны

    Общая тема

    1. Грокаем алгоритмы

    2. «Паттерны проектирования», Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес

    3. «Регулярные выражения», Джеффри Фридл ED

    4. Томас Кормен, Чарльз Лейзерсон, Рональд Ривест и Клиффорд Штайн «Алгоритмы: построение и анализ»

    5. Небольшой курс на сайте https://regexone.com

  4. Архитектура и разработка в целом

    Это пока что представляется самым сложным. Потому что тут нет однозначных правил. Есть только принципы, которые можно использовать и интерпретировать по разному. Некоторые книги в этой теме чисто практические, с примерами, другие более философские, или общего назначения.

    1. Принципы, паттерны и методики гибкой разработки на языке C#

    2. «Совершенный код. Мастер-класс» – Стив Макконнелл

    3. Предметно ориентированный дизайн

    4. Чистый код

    5. Проектирование с применение UML 2.0

    6. Бертран Мейер «Почувствуй класс. Учимся программировать хорошо с объектами и контрактами»

    7. «Экстремальное программирование: разработка через тестирование», Кент Бек

    8. Гради Буч «Объектно-ориентированный анализ и проектирование с примерами приложений»

    9. М. Фаулер «Рефакторинг»

    10. Э. Хант, Д. Томас «Программист-прагматик»

  5. Прокачка своих аккаунтов

    Как и говорил в описании, хочу целенаправленно развивать Инстаграм как социальную сеть. Плюс, поддерживать в актуальном состоянии профиль на Линкеде и ГитХабе. В идеальном варианте на Гит еще что-то регулярно заливать и обновлять.

  6. 100 дней кода

    Каждый день на протяжении 100 дней минимум 1 час в день писать ко. Более подробно распишу когда решу начать этот челлендж.

  7. Разработка своих приложений

    Пока что не выбрал что именно я хочу написать. но задача до конца года (2019) выпустить минимум 2 приложения. Скорее всего это будет что-то на тему целей, привычек, самоанализа. Люблю эту тему и хочу делать полезные приложения. Хотя с точки зрения рынка и пользователей я могу быть не прав и в итоге пролечу с такими идеями)

  8. Слепая печать 10 пальцами

    На стабильной скорости выше 300 символов в минуту. В целом это не так быстро как кажется. Пока что просто печатаю в сплепую 15 минут каждый день на английском, нужно будет на русском тоже начать.

    1. На английском 300 знаков в минуту

    2. На русском 300 знаков в минуту

    3. На английском 400 знаков в минуту

  • 1593
  • 17 марта 2019, 18:38
Регистрация

Регистрация

Уже зарегистрированы?
Быстрая регистрация через соцсети
Вход на сайт

Входите.
Открыто.

Еще не зарегистрированы?
 
Войти через соцсети
Забыли пароль?