Шлях стажиста: MacPaw

[Шлях стажиста — постійна рубрика, в якій початківці IT-фахівці діляться своїм досвідом стажувань як в іноземних, так і в українських компаніях. Якщо ви хочете розповісти свою історію, пишіть на vlada@dou.ua ]

Привіт, мене звуть Микита. Я студент Київського політехнічного інституту, навчаюся на 4 курсі ФИВТа. Серед моїх інтересів — програмування, нові технології, а також спорт (плавання і бокс). На стажування в MacPaw я подавався два рази і сьогодні хочу поділитися своїм досвідом, розчаруваннями і висновками, які зробив за два останніх роки.

На момент подачі заявки на стажування в 2016 році у мене не було комерційного досвіду в iOS розробці. Але близько півроку до цього я самостійно вивчав стек технологій Cocoa Touch, мови Swift і Objective-C, намагаючись написати нескладні програми. До того ж отримав непогані базові знання в університеті: математика, алгоритми, паралельне програмування та досвід написання об'ємних робіт на C++ і Java.

Про стажування в MacPaw я дізнався через соціальні мережі — побачив у паблике «IT KPI» пост про літніх стажуваннях в Києві. Тоді я буквально горів ідеєю отримати будь-який досвід роботи, тож і вирішив податися на напрям Cocoa Development. Не буду приховувати, в першу чергу я очікував отримати знання та перейняти досвід менторів, щоб стати більш популярним розробником на ринку. Я також хотів дізнатися, як все-таки створити цілісний продукт і побачити, як це все працює наживо. У мене було вільне літо, так що я вирішив, чому б не провести його в продуктовій компанії, познайомитися з новими людьми і зробити щось круте.

Відбір

Відбір на MacPaw Summer Internship 2016 складався з двох етапів:

1. Заповнення онлайн-форми реєстрації (загальні питання, питання на логіку, мотивацію і тестове завдання з обраного напрямку). Важливо було подати заявку до встановленої дати (тоді це було 9 травня).

Пізніше я дізнався, що якість виконання завдання профільного оцінювали ментори, а HR-фахівець — відповіді на питання мотивації. Тих, хто набрав найвищий загальний бал, запрошували на другий етап.

Тестове завдання на перший погляд здавалося доволі легко — потрібно було розповісти про себе, створивши програму будь-якої складності.

Але на той момент я погано розбирався в стеку iOS і macOS технологій, які від мене потрібні. Тому на розробку довелося витратити два тижні. До того ж це був кінець семестру, так що я був дуже завантажений в університеті. Коли мені зателефонували і запросили на другий етап відбору, я зрозумів, що зусилля були витрачені не дарма.

2. Співбесіда з ментором і HR-фахівцем в офісі компанії.

Співбесіда призначили на середу, 25 травня, 11:45. Зустріч тривала близько години і ділилася на дві частини — розмова з двома менторами по технічній частині і розмова з HR.

Ми почали з базових технічних питань (алгоритми сортування, обхід дерева, загальне розуміння ООП і застосування патернів), далі заглибилися в стек технологій, обговорюючи особливості Objective-C і принципи роботи з Cocoa Touch. Після перейшли до задачі на алгоритмічне мислення і тільки потім почали розглядати мою програму. Хлопці задавали питання, як я можу поліпшити той код, який написав. Я відповів десь на половину питань менторів, але насилу розумів, як можна поліпшити додаток, так як це була одна з перших моїх програм на такому стеку технологій. Зараз я дивлюся на неї і розумію, що код дуже далекий від ідеалу.

Розмова з HR виявився важчим, ніж співбесіда з розробниками. Тоді я до кінця не усвідомлював, яке значення для мене може мати робота в компанії, а гнався виключно за досвідом, тому і не підготувався як слід. Мені задавали прості, зрозумілі й очевидні питання: «Які є продукти в компанії? Чому я хочу тут працювати? Чого я хочу?». Також досить докладно запитували про те, як я працюю в команді та інше. Хотіли зрозуміти мої сильні і слабкі сторони, щоб я більше про себе розповів.

Розчарування

Увечері напередодні 1 червня мені прийшло повідомлення про те, що я не пройшов на стажування. Тоді я, звичайно, був дуже розчарований, тому що вважав, що співбесіда пройшло вдало і в цілому я добре себе показав. Але зараз я розумію, що тоді конкурував з величезною кількістю бажаючих і підготовки до такої співбесіди слід було б приділити значно більше часу, ніж кілька днів.

Рік між стажуваннями 2016/2017

Почалося літо, я перебував у стані фрустрації, оскільки вже встиг налаштувати собі планів, що я буду працювати в MacPaw. Але мені в будь-якому випадку потрібно було набратися досвіду і я вирішив все ж знайти роботу. Мені випала нагода зайнятися аутсорс-проектом. Працював віддалено, в команді з back-end розробником з США. Ми розробляли програмне забезпечення для касового апарату на планшеті — iPad. Це був серйозний досвід, який включав роботу з заплутаною логікою і всілякими іншими девайсами: від кардрідерів до принтера чеків. Це допомогло мені стати більш впевненою в своїй області і трохи підтягнути англійську.

Восени збулася моя мрія — я став учасником програми освітнього обміну Erasmus і поїхав вчитися в Люксембург. Деякий час паралельно працював з Люксембургу, вчився, подорожував. Більш того, в університеті можна було вибирати собі курси по душі, так що я скористався цією можливістю, щоб вирости як розробник. Зупинився на курсах «Веб-розробка», «Бази даних», «Операційні системи» і англійська. Після повернення в Україну я ще близько трьох місяців займався розробкою на старій роботі.

Навесні мені знову потрапило на очі оголошення про стажування в MacPaw, але вже 2017 року. Очі загорілися і я вирішив податися ще раз. Я розумів, що відбір буде ще жорсткіше і не дуже сподівався пройти на стажування. Але все ж вирішив спробувати.

Тестове завдання на цей раз стало більш чітким і складним. Потрібно побудувати маршрут метро будь-якого міста світу. І також з допомогою UI вибудувати навігацію по станціям. При цьому не можна було використовувати ніякі open-source бібліотеки. Треба було з нуля писати графи, взаємодія з UI, описувати карти. На 10 днів я пішов у розробку. На травневих святах, поки всі мої друзі і знайомі гуляли, я займався тестовим завданням. Але мені пощастило, що я був знайомий з одним із стажистів минулого року, який допоміг мені порадами щодо співбесіди та написання тестового завдання. За що йому більше спасибі :)

В цей раз я вирішив серйозно підготуватися і до розмови з HR. Знайшов питання в інтернеті і постарався відповісти на них насамперед для себе. Після такої підготовки я був впевнений у своїх силах і сподівався на хороший результат співбесіди.

Дійсно, воно було дуже легким. Технічні питання виявилися навіть простіше, ніж у минулому році. Я відповідав без утруднень і просив ментора, щоб він поставив ще який-небудь питання. Мені хотілося показати, що я багато знаю. Розмова з HR був коротким, без незручних питань. Так що після співбесіди я почував себе чудово і незабаром отримав запрошення на стажування.

Стажування 2017

У перший робочий день я познайомився в офісі з іншими 6-ма стажистами (2 людини на Mac Development, 1 — Win Development, 1 — Public Relations, 1 — Copywriting, 2 — Product Marketing). Безпосередньо на напрямку Cocoa Development нас було двоє — я і Настя Старченко, теж студентка ФИВТа КПІ.

Вся команда в зборі. Стажери MacPaw Summer Internship 2017

Наш ментор провів для нас екскурсію по офісу, розповів, що він буде нам допомагати під час стажування, пояснив, чим ми будемо займатися, яка у нас основне завдання.

Мені пощастило, і мене відразу направили в команду Setapp . Це новий продукт компанії, над яким працює більше 50 чоловік. З додаткових плюсів — проект написаний на двох мовах: Swift і Objective-C, що дозволяло отримати більше досвіду. Також команда в той час вибирала нову методологію гнучкої розробки, і я міг побачити проблеми в комунікаціях, взяти участь у їх вирішенні і відчути на собі всі принади Kanban. Працювати мені потрібно було по 6 годин в день, але, звичайно, за цей час я не задовольняв свій інтерес і часто засиджувався на повний робочий день.

Мій звичайний день на стажуванні виглядав приблизно так. Я приходив, обговорював плани з командою. Потім приступав до виконання свого завдання, вивчав код, копався в документації. Варто відзначити, що для мене ніхто не виділяв окремих тасок, придуманих завдань, як я цього очікував. Завдання потрібно було взяти з пріоритету беклога. Далі, після ретельного перегляду моїми менторами і проходження всіх кіл тестування, моя робота йшла в реліз. З прикладів — поправити поведінку кнопки, додати логіку для можливості тестування, написати міграцію Core Data. Іноді я намагався вирішити завдання дуже-дуже прикольно, але мені говорили, що все вирішується простіше. Або навпаки, що потрібно було просто застосувати більш common-practice рішення, прибравши милиці.

Також я ходив на зустрічі з продукту. Наприклад, брейнштормы по вирішенню певної проблеми. Стажери повністю брали участь у створенні продукту, генеруванні нових ідей і в цілому впливали на проект. Після зустрічі я повертався до створення коду. Часто засиджувався над цікавими задачами. Увечері ми могли зустрітися зі стажерами або піти на вечерю з командою. Були, звичайно, дні набагато веселіше, а були і рутиннее.





Бенефіти

В першу чергу мене вразило те, як компанія інвестує в наш розвиток. За час стажування ми відвідали величезну кількість воркшопів всередині компанії з Agile, по тому, як правильно складати резюме, взаємодіяти з командою, дуже багато лекцій та практикумів з програмування. Здавалося б, компанії не вигідно витрачати стільки ресурсів на стажерів. Але вона це робила, і особисто для мене це було величезним поштовхом вгору.

Друге — це увага до дрібниць. Воно проявляється у виробництві продуктів, предмети інтер'єру, відношенню до людей. Такий підхід не може залишити байдужим.

В цілому у нас, як стажистів, було дуже мало обмежень. Ми займалися у спортзалі, ходили на англійську.

Моє робоче місце знаходилося прямо навпроти MacPaw Museum, експозиції вінтажних комп'ютерів Mac

Фінальний проект

Фінальним завданням для всіх стажистів було створити власний загальний продукт. Якщо раніше ми працювали за різними напрямами зі своїми менторами, то в останні два тижні ми займалися власним проектом, результати якого повинні були представити перед всією компанією як результат стажування. Це був перший в житті хакатон. Нам навіть виділили окрему кімнату, куди ми всі разом переїхали.

Готуватися ми почали за два місяці, поєднуючи роботу над проектом зі своїми поточними завданнями. Ми були недосвідченими, але у нас було своє бачення і своє розуміння речей. Не було ніяких обмежень. Ми приходили, генерували ідеї, відразу вирішували, як нам краще взаємодіяти.

По суті, ми розробили платформу-рейтинг спікерів на заходах. Ідея народилася після розуміння наших власних проблем і трьох опитувальників, які ми розсилали по офісу і соціальним мережам. Платформа допомагає любителям івентів зекономити безліч часу, грошей та нервів і ходити тільки на якісні заходи з перевіреними доповідачами. Забігаючи вперед, хочу сказати, що на момент закінчення стажування 33 реальних спікера погодилися розмістити свої профілі на нашій платформі.

У реалізації виникали труднощі. Коли робили прототип і модель монетизації, витратили купу часу на суперечки, сварилися і мирилися, інколи кликали на допомогу скрам-майстра.

Для реалізації проекту нам потрібні були дизайнер, front-end і back-end розробники. Довелося йти на суттєві компроміси: Win Dev пішов у розробку API, замінили веб-додаток на iOS, а завдання по дизайну взяла на себе стажист напрямки PR. Ми працювали над проектом по 10-12 годин в день. При цьому хочеться сказати величезне спасибі проджект-менеджерів і менторів стажування, які були доступні 24/7, виділяючи час на наше дітище. Ми допустили купу помилок, з яких винесли цінний досвід: зробили 90 слайдів презентації, половина всього часу хакатона пішла на архітектуру проекту, багато зайвих сил і часу витратили на вибір неймінгу. Останні 10 днів залишилися в пам'яті найяскравішими за весь період стажування.

Виявилося, що розробляти свій продукт можуть і люди без досвіду, якщо у них є бажання і запал, і вони можуть домогтися дійсно хороших результатів.

Підсумком стала презентація проекту для всієї компанії. Після презентації хлопці хвалили нас і бажали продовжувати роботу.




Результат

Стажування дало мені багато чого: знайомство з прекрасними людьми, членами команди, іншими стажистами. У мене з'явилося розуміння того, як розробляється продукт. Раніше я не думав, що маркетинг — це настільки важливо. Зараз розумію, що це невід'ємна частина створення продукту.

Я не очікував, що мене також навчать працювати з людьми. В університеті частину часу ми працювали індивідуально, частина в командах, але у нас не було спільної мети. На стажуванні у нас була одна мета, і ми спільними зусиллями вирішували одну проблему.

Плюс, я прокачав свої технічні навички. Кодил з ранку до ночі, займався розробкою дійсно класних і складних штук за допомогою менторів.

Літо закінчилося, і я повернувся в реальний світ. Протягом тижня просто відходив після стажування. Через пару тижнів мене запросили співпрацювати з компанією на парт тайм в якості Software Developer. Я радий продовжити свій шлях у цій компанії, вона і сьогодні дає мені дуже багато. Я відвідую величезна кількість освітніх програм і курсів, відчуваю, що розвиваюся, що я в хорошому колективі. Я роблю щось корисне, якісне і можу цим пишатися.

Поради стажистам

Зробіть тестове завдання якісно. В першу чергу готуйтеся, показуйте код своєї програми кільком різним людям, своїм друзям. Доведіть його до ідеалу. Можете навіть написати тести в своїй програмі, якщо це доцільно.

Дайте відповідь на ключові питання HR для себе. Головне зрозуміти, що ви взагалі шукаєте в цій стажуванні і бути відвертим з самим собою. І, звичайно, бути чесним на співбесіді. Якщо ви приховаєте, то стажування не принесе користі ні вам, ні компанії.

Отримуйте задоволення. Під час стажування потрібно брати максимально все, що вам пропонують. Використовуйте все, що знадобиться для вашого досвіду та подальшого розвитку. У вас є така можливість — чому б нею не скористатися? Дедлайн заповнення заявки на MacPaw Summer Internship 2018 — 6 травня.

Опубліковано: 30/04/18 @ 07:00
Розділ Різне

Рекомендуємо:

Векторні сцени і анімації - як побороти сегментацію в iOS
Як купувати посилання в підписах на форумах
iOS дайджест #25: два роки з React Native, пишемо досліджуваний код, згадуємо основи Computer Science
Як вчити .NET: докладна інструкція для новачків і пару порад для досвідчених
Як скоротити ручне тестування і чи можна без нього обійтися