Образование в области программного обеспечения проходит через интенсивную демократизацию через Интернет, особенно в условиях пандемии.

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

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

Но есть навыки, которые можно получить только с опытом. Вам не нужен опыт, чтобы учиться на чужих ошибках.

Вот список.

№1: Вам не всегда нужен (мощный) компьютер:

Если вы не внештатный, инди-разработчик игр.

Единственный момент, когда вам понадобится физическая машина, - это когда вы хотите предоставить полноценное настольное / мобильное приложение.

Если у вас есть школьный / библиотечный компьютер, на котором вы можете проводить время в Интернете, вам не нужно сразу вкладывать драгоценные $$$ в оборудование.

Если вам все равно нужно практиковать код 24x7, Chromebook за 200 долларов может быть достаточно для изучения программирования.

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

  • Https://repl.it/ - онлайн-IDE, позволяющая писать и тестировать программы на языках от Python до PHP.
  • Codechef, Leetcode, HackerRank и др. - отработка алгоритмов для интервью. Большинство из них часто проводят соревнования по программированию, где можно выиграть немного денег.
  • JSFiddle - онлайн-IDE для разработки веб-страниц, позволяющая одновременно кодировать в HTML, CSS и JS.
  • Онлайн-редактор Three.js - ставьте свои графические веб-приложения и получайте удовольствие
  • Heroku - облако, в котором вы можете бесплатно развертывать свои приложения (все популярные облачные провайдеры, включая AWS, Azure и GCP, также имеют свои бесплатные уровни)

Это только самые популярные примеры, и в сети доступно множество других ресурсов. Все, что вам нужно, чтобы их найти, - это спросить в таких местах, как Reddit.

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

# 2: Подготовка к интервью переоценивается:

Подготовка к собеседованию - это навязчивая идея тысячелетия. Это вызывает стресс именно из-за своей высокой популярности и конкуренции.

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



Что действительно помогает вам в долгосрочной перспективе:

  • Возможность создавать крупномасштабные системы
  • Способность изучать новые навыки самостоятельно.
  • Возможность устранения неполадок
  • Стремление создавать товары с сочувствием к клиентам.

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

Эти качества не только приносят вам отраслевые награды и продвижение по службе. Они делают вас самодостаточными и устойчивыми к увольнениям и рецессиям.

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

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

На начальном уровне всегда помните:

Деньги банальны. Знания вторичны. Пачкать руки необходимо.

Просто войдите внутрь. Медленно, но твердо. Остальное приложится.

# 3: стиль хорош, но дизайн лучше:

Я видел, как команды проводят целые циклы спринтов, выбирая идеальный вариант, в котором должен быть написан их код.

Затем есть Войны за фигурные скобки:

function someThingThatDoesNothing() {
     console.log("Hello world!");
}

vs

function someThingThatDoesNothing() 
{
    console.log("Hello world!");
}

Несколько более сильные команды тратят бесконечные часы на доработку руководств по обзору кода.

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

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

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

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

Если такие обсуждения вызывают волнение в команде, вероятно, время от времени оно того стоит.

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

# 4: Оптимизация - это хорошо, но доставка лучше:

Если вы не работаете в миссиях NASA или SpaceX, выполнить тысячу раз лучше, чем тысячу раз оптимизировать и никогда не доставить.

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

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

Он решает объединить их в одно и выпустить 1.1 вскоре после того, как услышал первый 5-звездочный обзор.

С другой стороны, разработчик программного обеспечения rockstar теряет бесчисленное количество спринтов для оптимизации циклов, которые никогда не выполняются для более чем 100 элементов. Он продолжает оптимизацию, пока не будет достигнуто 100% покрытие кода.

Пока не истощатся бюджеты и не начнутся увольнения.

Он чувствует удовлетворение, но опустошен тем, что его продукт никогда не пользовался популярностью. Команда уволена. Мечта разбита.

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

# 5: ваш лучший ресурс - это не ваше оборудование или программное обеспечение:

И это не лучшая книга по программированию.

Это время, которое вы тратите на размышления о проблеме - в дороге, в душе или во время просмотра любимого фильма Netflix.

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

Flow - это название этой Kool-Aid.

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

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

Убедитесь, что вы потратите эти часы, и неважно, проходили ли вы онлайн-сертификацию.

6. Встречи - железо, а время простоя - золото.

Размышляя о своей 20-летней карьере в сфере программного обеспечения, я вспоминаю следующее: мой лучший начальник провел наименьшее количество встреч. Он всегда позволял своей команде влиться в поток.

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

Конечно, были времена, когда нашему боссу приходилось быть требовательным, и мы знали те времена. Мы знали, что он никогда не украдет наш поток, и всегда были на высоте. Мы с удовольствием проводим целые дни (часто выходные) в поисках решений для аварийных исправлений.

Но те времена были исключительными, что только соответствовало правилу.

У нас было твердое согласие: встречи должны сглаживать разногласия. Время простоя - золото разработчика.

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

7. Маркетинг недооценивают:

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

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

Получить работу по традиционному пути, обратившись в отдел кадров, пройдя через сети собеседований и получив только 0,5-кратную зарплату, разрушительно для вашей самооценки.

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



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

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

Программисты нужны не только для написания кода.

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

Вот уже десять лет, как программисты нужны не только для программирования. Они также зарабатывают большие деньги на онлайн-обучении (Udemy, PluralSight), создании видеороликов на YouTube, подкастах или написании учебников.

Маркетинг заставляет вас постоянно изобретать себя заново, а вознаграждение - это гораздо больше, чем усилия.

Заключение:

Пережив технологические потрясения 21 века в 2008 и 2020 годах, будет преуменьшением сказать, что карьера разработчиков программного обеспечения больше не будет прежней.

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

Подробнее о карьере в сфере программного обеспечения: