Федор Лосев стал программистом сам: ушел из строительства, затем поработал тестировщиком и джуниор-разработчиком, а теперь специализируется на iOS-разработке. Он рассказывает об особенностях работы в компаниях и на фрилансе, своем карьерном пути и как получить оплату, даже если не выполнил задачу.
Чем я занимаюсь
Раньше я работал в компаниях (об этом ниже), а сейчас я iOS-разработчик на фрилансе. iOS-разработчики создают программы и приложения для устройств Apple, например для iPhone, Mac и Apple Watch. Чаще всего для этого используют Swift — язык, который Apple разработала под свои операционные системы. Иногда нужно использовать Objective-C — его можно назвать устаревшей версией Swift, но в некоторых задачах он работает лучше.
iOS-разработчики пишут код в среде Xcode — это тоже продукт Apple.
Я беру заказы на платформе для фрилансеров UpWork, меня много рекомендуют знакомые и компании, с которыми я работал. Считается, что найти свой первый заказ на фрилансе непросто. У меня такой проблемы не было: за первую неделю я нашел три заказа и выполнил один из них всего за три дня.
Задачи на фрилансе могут быть самыми разными: от мелких переделок до проектов на полгода. В отличие от работы в компании на фрилансе я чувствую себя предпринимателем: нужно выяснять потребности заказчика и следовать ТЗ. Все отклонения от ТЗ и другие желания заказчиков стоят моего времени, и я беру за него дополнительные деньги.
При работе на фрилансе нужно уметь правильно общаться с заказчиками. Часто они плохо разбираются в разработке и ставят задачи, которые невозможно решить.
Например, у одного из клиентов было приложение, написанное в устаревшей версии Xcode. В этой версии нельзя было импортировать нужные ему данные из приложения — мне нужно было их как-то достать. Я потратил два дня и выяснил, что это в принципе невозможно: такая опция появилась только в двенадцатой версии Xcode. Я написал аргументированное письмо заказчику и ожидал, что мне не заплатят. Но мой ответ ему понравился: я грамотно объяснил технические аспекты и подсказал, как быть. Хотя задача была не решена, мне заплатили и оставили хороший отзыв.
Как попал в профессию
По образованию я инженер-строитель. После института я поработал в строительстве шесть лет и решил поменять карьеру: профессионального развития в этой отрасли в России я не видел. Я обратил внимание на IT и увидел, что на этом рынке все наоборот. Программисты заинтересованы в постоянном развитии и образовании, а компании готовы повышать им за это зарплату.
Я решил стать программистом в 28 лет. Начать учиться мне посоветовала знакомая, с которой я практиковался в разговорном английском по скайпу. До этого я изучал программирование разве что в десятом классе — это был Pascal. Сначала я учился без всякой системы в свободное время: выбрал язык C++ и изучал его по материалам сайтов для новичков.
Уже через два месяца занятий по С++ я стал ходить на собеседования. Естественно, моего опыта не хватало для получения работы, но тестовые задания и фидбеки помогали мне развиваться дальше. Вскоре работа нашлась — меня взяли стажером в компанию DeskAlerts, которая разрабатывает корпоративные мессенджеры.
Вначале я занимался тестированием и учил новый язык C# — на нем пишут веб-приложения. Я проработал там два года: должность стажера помогла мне войти в профессию, но от однотипных задач вскоре стало скучно.
В iOS-разработке я всего три года. Директор предложил мне заняться написанием приложений для iPhone и Mac — у клиентов на них появился спрос. Я изучал всё сам: DeskAlerts просто продолжали платить мне зарплату, пока я вникал в технологии у себя на рабочем месте.
Через две недели я стал разбираться в языках Swift и Objective-C: с хорошим знанием С++ и C# это несложно. Мне сразу не понравился Objective-C — в нем сложная структура. С его помощью я лишь иногда исправляю баги в приложениях, написанных на Swift.
Одной из первых задач на iOS было внесение изменений в CoreData-приложение с оповещениями на iPhone. CoreData — это фреймворк для Swift, который позволяет разработчикам хранить данные приложений. Я сделал так, чтобы доступ к данным был у всех разработчиков на их компьютерах. Также в начале было много мелких задач по дизайну, созданию новых экранов приложения.
Всего в этой компании я проработал около трех лет, из которых iOS-разработкой занимался девять месяцев. Там я стал единственным iOS-разработчиком, и это мешало развиваться: я не мог учиться у более опытных коллег. К тому же задачи были очень специфическими: наши приложения нужно было адаптировать на корпоративных компьютерах заказчика на Windows. Это сложная задача, ее решение нельзя просто загуглить, и мне пришлось много разбираться самому. Я справлялся с такими вызовами, но вне этой отрасли такие навыки не нужны.
Работа и постоянное изучение новых языков в той компании занимало у меня по 15–16 часов в день все три года. Потом я недолго поработал в «Центре финансовых технологий» и занимался разработкой банковских приложений. Хотя я шел на разработку на Swift, по факту надо было заниматься Objective-C. Поскольку я сразу решил специализироваться на Swift, мне это было неинтересно. К тому же мне не очень понравился опыт работы в компаниях, и я решил стать фрилансером.
Советы новичкам
Программированию можно научиться самому
У высшего образования есть недостаток: диплом дает уверенность в полном освоении профессии. В IT важно постоянно развиваться, а постоянному самообразованию в университетах, как правило, не учат. У самоучек мотивации обычно больше, а изучение нового становится для них привычкой. К тому же в нашей профессии ценятся знания и навыки, а формальные дипломы работодателю не важны.
Например, в первой компании у меня был тимлид: он сам научился С# и Java, а через полгода работы уже стал руководителем команды.
В IT нужно много усидчивости: работать и учиться придется много
Главный навык для хорошего программиста — усидчивость. Нужно постоянно читать техническую документацию, вникать в суть проекта, все время практиковаться в написании кода и обучаться новым технологиям. Без ежедневной практики и учебы многие навыки забываются. Усидчивости не научат ни в университете, ни на курсах. Но если вам хватает старательности, например для изучения первого языка, — скорее всего, программирование вам подходит.
Попробуйте начать с тестирования
Несколько моих друзей, никогда не работавшие в IT, хотели сразу стать разработчиками. Я задал им несколько вопросов и понял, что они толком ничего не знают об этой работе, о своих целях и способностях. Часто новички учатся именно на разработчиков, но в IT есть профессии с более низким порогом входа. Например, можно стать тестировщиком — знаний на старте нужно немного.
При этом вы уже будете работать в реальной IT-компании, поймете, какие есть задачи, специальности, как устроены работа и развитие сотрудников. Когда я работал тестировщиком, я много общался с разработчиками и выяснял для себя, куда мне интересно двигаться дальше. Это помогло мне попробовать другие языки и специальности и в итоге остановиться на iOS-разработке.