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

В начале 2014 года мой лучший друг порекомендовал мне начать изучать программирование, так как увидел, что я опечален и устал от карьеры, которая мне не очень нравится. Я начал изучать C самостоятельно, немного дублировался на C++ и, наконец, начал читать «C# in Depth» по рекомендации моего друга.

8 октября 2014 года я присоединился к программе обучения C# от Accenture (они назвали это своим буткемпом), через месяц я уже работал разработчиком C# Junior, и моя карьера в программном обеспечении началась.

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

Многое изменилось и в моей карьере: я перешел от самоучки к буткемпу, сменил университет, чтобы заниматься разработкой программного обеспечения, бросил учебу и, наконец, продолжил путь самоучки. От работы в бухгалтерии до разработчика программного обеспечения, работы в течение 3 лет в моей родной стране, Аргентине, до поиска лучшей жизни в месте, о котором я ничего не знал, не говоря уже о том, чтобы говорить на одном языке, в прекрасной дождливой Бельгии.

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

1. Ходите на встречи, знакомьтесь с новыми людьми, заводите друзей!

Люди недооценивают, насколько важны личные отношения и общение в разработке программного обеспечения. Некоторые верят в эту идею разработчика Genius 10X, который будет кодировать 24 часа в сутки без сна и творить волшебство. Это несбыточная мечта. Мы хороши в том, что мы делаем, когда сотрудничаем друг с другом, когда мы развиваем человеческие отношения, которые позволяют нам создавать отличные части программного обеспечения. Эти отношения помогают нам расти, узнавать новое (не всегда связанное с программным обеспечением, что не менее ценно) и даже продвигаться по карьерной лестнице. Если бы не мой друг, я, наверное, был бы очень грустным бухгалтером.

2. Читайте технические книги.

Я всегда предпочитал учебники и онлайн-курсы, но, к сожалению, они не охватывают фундаментальные знания, которые выведут ваши навыки разработки на совершенно новый уровень. Последние 2 года я ел технические книги: «Программист-прагматик», «Полный код», «Чистый код», «Рефакторинг» и так далее, мне просто хотелось начать раньше. Там так много знаний, написанных профессионалами в отрасли, и просто жаль немного не поковыряться в их мозгах.

3. Сосредоточьте свое обучение на знаниях, не зависящих от языка/фреймворка.

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

4. Всегда имейте при себе личный проект.

Я не могу не подчеркнуть, насколько это важно. Конечно, вы кодируете по 8 часов в день на своей ежедневной работе и можете подумать: «Зачем мне кодить в свободное время?». На это есть ряд причин.

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

5. Изучите компьютерные науки.

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

Я провел 2 года, изучая информатику, работая разработчиком, немного, но все же этого было достаточно, чтобы познакомиться с такими понятиями, как булева алгебра, группы, графы, деревья, алгоритмы сортировки, динамическая и статическая память, указатели, теория автоматов; даже различные парадигмы программирования — такие как структурированное, логическое, функциональное и объектное — и я могу вспомнить множество моментов, когда я мог связать эти концепции с тем, как какая-то новая технология, которую я изучал, была реализована за кулисами.

Если вы разработчик-самоучка, я бы порекомендовал вам прочитать Справочник самозванца 1 и 2, они охватывают все, что вам когда-либо понадобится :)

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