Истории разработчиков программного обеспечения:

10 вещей, которым следует научиться как разработчик программного обеспечения-самоучки

То, что я узнал из своей первой работы в качестве разработчика программного обеспечения-самоучки, и то, что я хотел бы знать раньше.

Как я туда попал: после первого семестра в университете, более 10 лет назад, я начал сомневаться в своем выборе изучать бизнес-администрирование. Лекции были очень похожи на те лекции «Как зарабатывать деньги с X», когда они продолжаются и говорят в течение часа, но после этого вы чувствуете, что не узнали ничего конкретного или осязаемого. Но я выжил, потому что моя семья убедила меня, что именно так можно получить отличную работу и заработать много денег.

Короче говоря, я проработал всю свою карьеру в области бизнес-администрирования в течение 8 лет. Я прошел путь от дерьмовой стажировки до дерьмовой работы, стал предпринимателем, много раз терпел неудачи, и до того момента, когда я решил, наконец, изменить «то, чем я зарабатываю на жизнь» . Я начал развивать преданность программированию, поэтому почти год сел и начал учиться.

Быстрая перемотка вперед 🕐 🕑 🕒 🕓 🕔 🕕

Сейчас. Через несколько дней мне исполнится 1 год работы в качестве разработчика программного обеспечения в стартапе, и сейчас самое время подвести итоги тому, чему я научился за этот год.

  1. Вам нужно постоянно узнавать новое.

Одна из первых и самых важных вещей, которую я усвоил, - это то, что часть работы разработчика - это постоянное изучение нового. Когда я начинал, я думал, что могу просто сидеть и писать в своей обычной системе Windows, то есть писать свой обычный код на Python с помощью своих обычных инструментов. Но довольно скоро мастер схватки сказал мне: «Загрузите Linux, запустите докер и загрузите последний репозиторий». Я спросил: «Мне нужно сделать что, запустить что и получить что теперь? Я понятия не имею, как настроить docker-контейнер. ». Я сказал: « Может быть, это сделает кто-нибудь из других ». Но мой мастер схватки ответил: «Нет, ВЫ должны этому научиться». Первые несколько недель я чувствовал себя подавленным всем, что нужно было изучить, я даже активно сопротивлялся некоторым инструментам, которые в какой-то момент использовала компания. Однако через некоторое время я заметил, что многие разработчики в компании днями изучали новые инструменты. У нас даже были цели спринта, в которых просто говорилось «Исследуй и изучай XYZ». Достаточно скоро я заметил, что старшие разработчики не уклоняются от новых инструментов и обучения новым вещам - напротив, они даже принимают это. Это был момент, когда я понял, что нужно, чтобы стать крутым разработчиком.

2. Гибкая разработка

В настоящее время большинство компаний-разработчиков программного обеспечения практикуют «гибкую разработку» в своих проектах. Как новичок в мире технологий, я этого не понимал. У нас были забавно звучащие должности, такие как «scrum master» и «product owner», и у нас были неловкие «ежедневные» встречи по утрам, «Обзоры спринтов» каждые две недели и т. Д. Я не стал разбираться в значениях всех этих новых слов, потому что сначала я работал один над прототипом. Однако позже я присоединился к «команде», и мне особенно нравились все эти правила и способы работы. Во время встреч я все время спрашивал: «Почему бы нам не сделать это так, это намного проще и экономит много времени». И всегда отвечал: «Потому что это не Agile». Так что многие встречи были для меня очень запутанными и, следовательно, разочаровывающими, пока я не привык к тому, как здесь все делалось. И вам тоже стоит, если вы не хотите, чтобы вас запутали !? (🤨 чудак!)

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

3. Linux / Ubuntu

К счастью, я работал с Ubuntu до того, как начал работать разработчиком, поэтому, по крайней мере, графический интерфейс был мне знаком. Однако я не слишком много работал с командной строкой и Bash, поэтому, когда люди просили меня подключиться через SSH или пропинговать какой-нибудь IP-адрес, я определенно чувствовал себя глупо и смущался. Я подумал, что это, вероятно, базовые знания для любого разработчика и что это только вопрос времени, когда они поймут, что я мошенник. Честно говоря, я боялся, что меня уволят за то, что я базовый пользователь. 😅 НО этого не произошло, и вместо того, чтобы нервно гуглить «Как работать с Linux», я прямо сказал одному из коллег, что не знаю, как это сделать - на удивление, он сказал, что это нормально . Он быстро показал мне, как это сделать, но также был удивлен тем, что я использую графический пользовательский интерфейс для навигации, что необычно для разработчиков. Оглядываясь назад, я понимаю, что это определенно одна из вещей, о которых я хотел бы знать раньше. В настоящее время я также большую часть времени использую командную строку, но не потому, что это удобнее, а это не так, а потому, что я чувствую себя крутым хакером, когда что-то ввожу в терминал😎.

4. GIT

Думаю, большинство из вас знакомы с git и Github для управления версиями. Но активно ли вы использовали его в своем проекте каждый день? Вы использовали его в командной работе? Знаете ли вы, что можно и чего нельзя делать, когда над одним проектом работает много людей? Вы использовали всевозможные функциональные ветки? Тогда я не знал. Я использовал git, чтобы просто загрузить свой проект на Github. И кое-где на геймджем или два. Но я никогда не выходил за рамки этих трех команд:

git pull, git add, git commit, git push

Тем не менее, git может сделать гораздо больше, и вам нужно будет сделать гораздо больше с ним. Вы можете создавать ветви, «объединять» их, «перебазировать», копировать их в другой репозиторий. И как вы видите, что вы совершили, в каком порядке? Как вообще вернуться на несколько шагов назад, если вы допустили ошибку? Это все, что вам нужно знать, работая в сфере высоких технологий. Я так много боролся с git, ну ... иногда я все еще борюсь с git, но я понимаю, что у меня был бы огромный рост продуктивности, если бы я выучил эти вещи до того, как приступить к работе. Так что это необходимо знать.

5. Докер

Ах, Докер. Мой «Моби Дик» инструментов разработчика (😂 Видите, что я там делал? Потому что значок Docker - это кит !? Неважно! RIP Comedy, умер в 2020 году). Вы, наверное, слышали о Docker и контейнерах Docker. Но знаете ли вы, как его создать, или даже лучше, зачем вам его создавать? По сути, он запускает виртуальную среду для проекта. Люди используют разные типы настроек, и тогда у них возникает проблема с работающим приложением на одном компьютере и неработающим приложением на другом. Лично для меня это было чрезвычайно сложно, потому что как разработчик Python вы бы использовали «venv» на ходу, который уже создает простую виртуальную среду Python и работает всего с двумя командами. Вместо этого нам пришлось сесть и создать… китовый…… Dockerfile для каждого приложения, содержащий кучу строк кода. Но это еще не все, вам также необходимо написать файл bash, чтобы запустить контейнер. На этом этапе вы теряете счет, потому что у вас уже работает 10 контейнеров и так далее, и так далее. Понимаете, это не так просто. Вероятно, это проще для небольших проектов, но, начиная с гигантского приложения, требуется много времени и фундаментальное понимание того, как работает Docker. Почему-то разработчики любят Docker. Я лично ненавижу это, но сейчас 2020 год, и он уже стал стандартом для большинства компаний. Так что пути нет.

«Вот дерьмо», - подумал я. Первый день и я уже смутился. Он, должно быть, подумал, что я полный «нуб», и, вероятно, в первую очередь пожалел о том, что нанял меня.

6. Virtualbox / VMware

В мой первый рабочий день мастер схватки оглянулся через мое плечо и сказал мне настроить среду разработки в каком-нибудь дистрибутиве Linux по моему выбору. «Но у меня установлены окна», - сказал я. Он посмотрел на меня с озадаченным лицом и сказал: «Тогда воспользуйтесь Virtualbox». «Вот дерьмо», - подумал я. Первый день и я уже смутился. Он, должно быть, подумал, что я полный «нуб», и, вероятно, в первую очередь пожалел о том, что нанял меня. Однако через мгновение он посмеялся над этим и сказал мне погуглить. Итак, я погуглил. Я был поражен тем, насколько мощной была эта штука, когда я начал с ней работать. Я мог создавать и удалять десятки виртуальных машин всего за несколько кликов. Я мог бы иметь одновременно 3 или 4 машины, создавать снимки и даже импортировать и экспортировать виртуальные машины из любого места. У вас есть идеальная установка? Просто сделайте снимок или экспортируйте и сохраните его как резервную копию. Вы даже можете забрать его домой через USB, вместо того, чтобы тащить ноутбук взад и вперед (хотя, пожалуйста, спросите своего руководителя, прежде чем делать это 😅). Это определенно необходимо на данный момент.

7. Slack

До этой работы я действительно не использовал Slack. Сначала я даже не понимал, почему все продолжают об этом говорить. Я чувствовал, что Discord, например, намного лучше справляется с пользовательским интерфейсом. Slack казался слишком неуклюжим и ограничивающим. Вы не могли общаться в видеочате или голосовом чате. И вы не могли плавно переключаться между «Рабочими местами». Но теперь он мне очень понравился. Я могу понять, почему компании используют Slack, поскольку в нем есть всевозможные приложения и варианты интеграции для других инструментов организации. И мне нравится функция «обсуждения», которая позволяет открывать другой чат на основе одного сообщения. Таким образом, вы можете обсудить конкретную вещь, сказанную кем-то в чате. В любом случае, мне потребовалось время, пока я не освоился со всеми функциями. Возможно, вы захотите проверить это как можно скорее.

8–10. Jira, Kanban Board и Confluence

Я немного обманываю здесь, объединяя последние три в один, но это скорее инструменты, которым вы можете научиться на работе. Это поможет, если вы получите некоторый опыт с этим на раннем этапе. Jira - идеальное программное обеспечение для гибкой разработки. Здесь вы можете планировать и отслеживать все задачи и рабочие процессы для вашего проекта. Вы можете создавать разные доски Kanban для разных команд, например «Frontend», «Backend» и «UX». Даже управленческие команды любят использовать его в нашей компании. Вы можете интегрировать все виды инструментов и приложений. Например, наш отдел продаж использует приложение для отслеживания потенциальных клиентов (извините, не могу вспомнить его название). Кроме того, он интегрируется с Confluence - инструментом для создания документации. Надеюсь, это не слишком похоже на рекламу Atlassian, компании, которая поставляет эти продукты. Я уверен, что есть отличные конкуренты, просто знаю только этого.

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

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