Мое путешествие в разработку приложений


Зарождение

Мой путь к тому, чтобы начать разрабатывать программное обеспечение в качестве источника средств к существованию, занял некоторое время. Оглядываясь назад, я понимаю, что всегда был как бы рядом с компьютерами. Я вырос в эпоху, когда обычные люди начали пользоваться Интернетом. В детстве мне пришлось посещать несколько уроков машинописи и информатики в школе. У меня было несколько уроков, которые касались веб-разработки с использованием различных инструментов. Мой отец тоже немного работал с компьютерами, и у нас в доме всегда был как минимум один настольный компьютер, а часто и несколько. Я даже помогал ему разбирать несколько компьютеров и делать мелкий ремонт и модернизацию на протяжении многих лет.

Но для меня это никогда не было интересно. Код казался эзотерическим и скучным, и у меня никогда не было четкого представления о возможностях. Я играл в эмуляторы, которые папа скачивал и устанавливал для меня. Я постоянно пользовался Facebook и Myspace (да, я был в средней школе, когда появился Myspace). Я любил свой iPod и возможность брать с собой всю свою музыку, куда бы я ни захотел. Но я никогда не понимал, что могу участвовать в создании подобных вещей в мире.

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

Искра

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

Через несколько месяцев работы передо мной поставили задачу. Мы использовали Basecamp в качестве инструмента управления проектами. Все, что нам нужно было сделать как команде, мы отслеживали в нем. Но возникла проблема. Время от времени происходили события, запланированные другими отделами церкви, которые не попадали в нашу систему. Более того, никто не говорил нам о том, что им нужна наша поддержка для проведения мероприятия, до самого дня его проведения! Я не знаю, просили ли вас когда-нибудь неожиданно задержаться на работе еще на шесть часов. Если да, то, скорее всего, не для того, чтобы управлять микрофоном и музыкой в комнате, полной двухсот подростков. Но я уверен, что вы можете себе представить, что это были не самые лучшие дни.

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

Я с головой ушел в поиски решения. Я начал изучать несколько языков программирования. Я выучил немного python и немного ruby. У нас был доступ к сайту под названием Lynda.com, на котором были учебные видеоматериалы по различным темам, включая основы информатики и языковые материалы. Я смотрел некоторые из них каждый день и учился разным вещам. Я написал несколько скриптов, которые перемещали файлы и папки на компьютере, и почувствовал себя богом. Я работал и работал над ужасным маленьким скриптом, который должен был решить проблему на работе, и наконец я его выполнил.

После нескольких недель целенаправленного обучения и множества проб и ошибок у меня появился скрипт, который копировал события из церковной программы в Basecamp. Он был очень плохо организован. Я уверен, что он был полон ошибок и уязвимостей в системе безопасности. Мне было бы стыдно показывать его кому-либо сегодня (к счастью, у меня его нет, поэтому я не могу показать его никому, даже если бы захотел 😁).

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

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

Мой совет для себя (или для любого другого человека) на этом этапе — оставаться открытым. Будьте готовы говорить «да» и пробовать новые вещи. Никогда не знаешь, какой обыденный и тривиальный проект, за который ты берешься на работе, может стать для тебя началом совершенно новой карьеры.

Тлеющий

Я продолжал учиться, проходя курсы на сайте Lynda. Я наткнулся на курсы информатики в Стэнфорде. (Они размещают все материалы в Интернете, и вы получаете доступ к ним бесплатно, так что никаких отговорок, если вы пытаетесь начать). Я прошел курс CS 193, который назывался «Разработка приложений для iOS», и запустил свои первые несколько приложений в симуляторе. Они были уродливыми и не очень функциональными, и это были дни Swift 2, так что сам код тоже был довольно уродливым. Но я написал программу, у которой был пользовательский интерфейс, и она могла самостоятельно работать на телефоне в моем кармане. Я едва мог в это поверить.

Прошло еще четыре года, прежде чем я решил полностью переключиться на разработку программного обеспечения. Со временем я продолжал пробовать что-то новое. Я изучил кучу материалов Free Code Camp, прочитал несколько книг, блогов, посмотрел видео на YouTube и т. д. Но я никогда не чувствовал, что у меня есть квалификация, чтобы найти работу.

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

Но я не добился значительного прогресса, потому что не предпринимал никаких действий, или, по крайней мере, не был привержен тем действиям, которые предпринимал. Я создавал игрушечные приложения и сайты. Я сделал «портфельный» сайт, который так и не развернул. Я так и не освоил Git. У меня не было никакой доли в игре. Было весело учиться и делать таймеры pomodoro, но если из этого ничего не вышло, я не потерял ничего, кроме времени.

Мой совет для себя (или любого другого) на этом этапе — найти способ получить долю в игре. Существует бесконечное количество материала для изучения и больше обучающих проектов, чем вы когда-либо сможете выполнить. Как только вы освоите основы, найдите способ дать себе что-то получить (или потерять). Вы будете поражены тем, насколько быстрее вы продвинетесь вперед. Купите курс. Оплатите буткемп. Получите контракт на проект, который выходит за рамки вашей зоны комфорта. Заключите пари с другом. Напишите о своей цели в выбранной вами социальной сети. Сделайте что-то, что будет стоить реальных денег, если вы этого не сделаете. Только убедитесь, что это будут затраты, от которых вы сможете оправиться.

Раздувание пламени

Осенью 2018 года я решил уволиться с работы и пройти довольно интенсивный буткамп, который (на тот момент) назывался Lambda School. В интернете о них довольно противоречивые отзывы, но мой опыт был именно тем, что мне было нужно. У них было достаточно структуры и подотчетности, чтобы поддерживать меня (обучение было полностью удаленным, поэтому каждый день я проводил весь день в одиночестве перед компьютером). И они создали достаточно пространства, чтобы я мог пробовать и учиться находить ответы самостоятельно (что является огромной частью работы по разработке программного обеспечения). Когорты iOS также были довольно маленькими, и я встретил несколько невероятных людей на своем пути.

Я получил свою первую работу как раз тогда, когда заканчивал обучение в Lambda. Я подал более сотни заявок, прошел несколько собеседований и получил предложение на одну. С тех пор как я уволился со старой работы, прошел почти год, я много работал, много учился, читал и кодировал. Но я добился своего. Я нашел человека, готового платить мне за написание кода для приложения iOS, и моя начальная зарплата была на 40% выше, чем на любой другой работе, которую я когда-либо имел в своей жизни.

Но это было только начало. Мне еще многому предстояло научиться. Мне предстояло узнать, как работать в команде. Я должен был узнать о практике Agile и о том, что такое «scrum», «sprint», «epic» и «story». Мне нужно было узнать о жизненном цикле функции в компании. Как он проходит путь от идеи до плана, от разработки до реализации, от тестирования до выпуска и сопровождения. Мне нужно было узнать о том, что такое давление и притяжение со стороны различных частей организации — от руководства до маркетинга и продаж, от проектирования до инженерных разработок — и как сбалансировать это напряжение. Мне нужно было научиться доносить свои идеи до людей, которые не имели контекста или понимания технических ограничений, а также до людей, которые сами будут реализовывать эту идею. Я должен был научиться документировать решения, писать тесты и проводить демонстрации. Мне пришлось научиться отлаживать CI/CD и сетевые запросы. И т.д.

Короче говоря, мне предстояло узнать целый мир вещей, о которых я и понятия не имел до того, как устроился на работу. Технологические компании развиваются очень быстро и строят свою работу совсем не так, как все, где я когда-либо работал. Многое пришлось переварить, одновременно пытаясь выдать достойное качество и количество кода в качестве младшего разработчика. Но именно эти уроки и опыт привели меня от младшего разработчика к старшему.

Мой совет для себя на этом этапе — воспринимать себя как студента. Оставайтесь любопытным. Задавайте вопросы. Даже (особенно) если вам кажется, что они заставят вас выглядеть тупым. Слушайте ответы и принимайте их близко к сердцу. Принимайте советы, которые дают вам окружающие вас инженеры. Это может показаться грубым комментарием в PR-обзоре, но это сделано для того, чтобы сделать код (и вас) лучше. Рассматривайте ошибки как возможность чему-то научиться. Рассматривайте особенности как возможность чему-то научиться. Рассматривайте обзоры кода (как предоставленные, так и полученные) как возможность чему-то научиться. Особенно когда вы начинаете набирать стаж и получать большую зарплату, становится все легче и легче думать, что у вас есть ответы на все вопросы. Но это не так. Вы окажете себе плохую услугу, если будете вести себя так (не говоря уже об окружающих вас людях, пользователях и заинтересованных сторонах).

Огонь бушует

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

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

Оцените статью
devanswers.ru
Добавить комментарий