Таблица умений iOS-разработчика

27 ноября 2018

 

Junior Middle Senior Возможности может создать новостное приложение, общающееся с JSON API может оперативно спроектировать и реализовать быстрый и надёжный чат-модуль может устанавливать стандарты поведения в команде без опоры на фанатизм Интеграция кода манипулирует кодом через git имеет своё мнение о GitFlow имеет собственные идеи об организации CI и автоматизации регулярных задач Парадигмы понимает, в чём состоит суть ООП имел дело с ФРП привносит полезные решения из других платформ и парадигм Зависимости умеет пользоваться Cocoapods знает, почему приложения не могут использовать SPM, но возможно применение Carthage знает, почему важно управлять зависимостями и сокращать их Платформа применяет массивы, словари и множества разбирается в Value/Reference типах и Equatable/Hashable знает нюансы диспетчеризации методов как в Swift, так и в Obj-C Клиент-сервер легко получает JSON из интернета может реализовать real-time чат на базе веб-сокетов написать видеочат — выполнимый вызов Справочные источники ответ на любой вопрос ищет на StackOverflow часто пользуется официальной документацией задаёт вопросы разработчикам платформы и способен на реверс-инжиниринг Память знает, как предотвращать и устранять утечки памяти знает NSPointerArray и понимает, почему структуры утяжеляют исполняемый файл имеет стратегию снижения количества отказов по причине нехватки памяти Графический интерфейс может сверстать простой графический интерфейс в Interface Builder’е имеет основания верстать UI в коде может вынести вёрстку и diff calculation в неосновной поток Многопоточность считает asyncAfter своим другом, повсюду применяет @synchronize asyncAfter вреден, thread синхронизация потоков — источник проблем понимает проблемы многопоточности глубже блокировок Подход ожидает от коллег подсказок и советов делится принятыми решениями с командой при обсуждении проекта принимает ответственность за проектные решения, принятые коллегами Паттерны проектирования понимает Delegation, Target-Action и MVC умело использует шаблоны Observer, Facade и Mediator знает золотую середину между внедрением зависимости и локатором служб Качество продукта приложение считается протестированным, если оно работает на моём телефоне пишет модульные тесты, пробовал TDD и UI-тесты задаёт легко поддерживаемую пирамиду тестов с неперекрывающимися областями покрытия

Таблицу в форме изображения и markdown-версию ищите на Github’е.

Всегда нужно стремиться к объективности, когда мы оцениваем себя или потенциальных членов команды.

К сожалению, чем точнее мы пытаемся ответить на вопрос, тем сильнее отдаляемся от истины.

Эта таблица умений — результат попытки определить примерные требования к кандидатам на должность iOS-разработчика.

 Она стремится быть:

  • достаточно точной, чтобы подсказать, в каких областях следует подтянуть свой уровень,
  • достаточно неопределённой, чтобы не давать повода зациклиться на каких-то конкретных знаниях.

Уровни

Деление данной таблицы на три уровня не означает, что такой подход можно встретить в любой организации, но минимальное количество уровней позволяет продемонстрировать больший разрыв между показателями. Деление на пять и более уровней может нести практическую пользу для организации (возможность  ежегодно повышать сотрудников), но также и может обернуться трудностями при оценке уровня кандидата.

Области

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

Как не следует применять таблицу

Не используйте её как единственный инструмент для оценки соискателей или как учебный план. Это всего лишь индикаторы знаний, ключевые слова.

Изображение и markdown-версию ищите на Github’е.

Автор: Bohdan Orlov
Дата публикации: 13.06.2018
Оригинал статьи 
Перевод: Борис Радченко, radchenko.boris@gmail.com
Дата перевода: 02.08.2018

Содержание