Я думаю начать учиться писать код. Какой ноутбук мне купить? Нужно ли участвовать в буткемпе? Нужны ли моему ребёнку особые курсы или подготовка, чтобы поступить на computer science?
Многие люди спрашивают меня, стоит ли им учиться писать код, хорошим ли карьерным путём будет для них или их детей разработка ПО, нужно ли им учиться в вузе, чтобы обрести успех.
Приведу свой совет вкратце
Прежде чем думать обо всём этом: специальности, вузе, в который будет поступать ребёнок, покупке ноутбука, вам нужно понять, есть ли у вас (или у ребёнка) «искра программирования».
Это потребует от вас немного времени и усилий, но здорово то, что онлайн есть куча высококачественных и бесплатных ресурсов, позволяющих вам ощутить, что же такое кодинг и разработка, чтобы вы приняли решение, стоит ли выбрать это в качестве карьеры или хобби. Некоторые из них я приведу в этом посте.
Что такое искра программирования?
«Искра программирования» — это вспышка внутреннего любопытства, заставляющая вас учиться. «Внутреннее» означает, что оно исходит изнутри — другим людям не нужно заставлять вас это делать.
В разработке ПО, кодинге, системной разработке, машинном обучении, data science — по сути при работе с компьютерами, а возможно, параллельно и с людьми — возникают моменты глубокого раздражения и скуки, пронизанные тревогой и стрессом.
Лично я бесконечное количество раз достигал уровня отчаяния, вызывавшего слёзы. Если вы стремитесь идти по пути цифрового ремесленника, то будьте уверены, что и с вами это будет. Особенно в начале. И это нормально.
Кроме того, я думаю, что способность описать машинам всевозможных типов и размеров на их языке именно то, что вы хотите от них, решать задачи в сотрудничестве с машинами и возможность превратить свою идею в общественно доступный программный продукт, которым смогут пользоваться люди со всего мира — всё это сродни магии.
Искра любопытства позволяет вам постоянно подзаряжать свою страсть к своему ремеслу
По моему собственному опыту, исходя из моей карьеры и карьеры людей, которые были наиболее эффективными и устойчивыми, единственный определяющий критерий успеха — это внутреннее любопытство и стремление продолжать обучение и повышать свои навыки; любопытство к сфере, к инструментам, к возможностям, при помощи которых вы можете создавать, делиться и обучаться.
Ладно, всё это здорово, но с чего же всё-таки начать?
Чтобы понять, есть ли у вас искра программирования, используйте бесплатные ресурсы
Не покупайте новый Macbook. Не записывайтесь на буткемпы. По крайней мере, на первых порах.
Воспользуйтесь множеством превосходных бесплатных ресурсов Интернета, созданных, чтобы помочь людям попробовать программирование на разных языках и в разных контекстах.
Вот несколько примеров для начального освоения:
Попробуйте первые упражнения. На самом деле, не важно, с какого языка вы начнёте, но если у вас совсем нет опыта, то попробуйте Python, PHP или JavaScript. Если вы наткнётесь на непонятную фразу или концепцию, то попробуйте поискать её и почитать о ней.
Важнее всего то, что все эти сервисы не просят оплаты за то, что вы начнёте осваиваться и получать представление о программировании. С ними можно работать в браузере на старом маломощном компьютере, в библиотеке или Интернет-кафе до того, как раскошеливаться на крутой новый ноутбук. Если окажется, что вы вполне можете прожить всю оставшуюся жизнь, не прикоснувшись к клавиатуре, то вы потеряете лишь немного времени.
Как ощутить, на что будет похожа работа?
Должности в сфере разработки ПО сильно варьируются и зависят от таких параметров, как размер компании, размер команды, технологический стек, отрасль (кодинг в авиации сильно отличается от кодинга в рекламном деле) и так далее.
Тем не менее, может быть полезным понаблюдать за тем, как разработкой занимаются профессиональные разработчики, чтобы хотя бы оценить, интересно ли это вам. Как же нам подглядеть за повседневной работой кодеров?
К счастью, многие разработчики делятся контентом в YouTube и Twitch. Вот неполный список каналов, на которых можно самому понаблюдать за ними:
- Ants Are Everywhere — бывший сотрудник Google читает в YouTube исходный код популярных опенсорсных проектов, в процессе обдумывая его и показывая, как он отвечает на собственные вопросы. Потрясающее исследование дебрей программирования.
- Мой канал — я создаю туториалы по опенсорсным инструментам, а также публикую записи своего процесса кодинга в некоторых опенсорсных проектах. В последнее время и в ближайшем будущем я буду углубляться в темы приложений ИИ, LLM (больших языковых моделей наподобие ChatGPT), векторных баз данных и машинного обучения.
- TJ DeVries — отличный опенсорсный разработчик, автор популярного плагина Neovim (инструмента кодинга для разработчиков). Он делает свой контент доступным и интересным для всех зрителей.
- The Primeagen — более жёсткий взгляд на всё, что касается программирования, изучения кодинга и работы на высоком уровне от разработчика ПО Netflix, не боящегося говорить правду.
Помните, эти каналы дадут вам понимание того, как выглядит работа с кодом, использование редактора кода и взаимодействие с разными языками и инструментами, но это лишь часть задач профессионального разработчика.
Написаны целые горы книг и онлайн ресурсов с хорошим контентом о софтскиллах для работы: эффективной работе на всех уровнях организации, структуре и динамике команд, совместном кодинге, совещаниях, методиках планирования и мониторинга работы, способах организации при работе с другими разработчиками и так далее.
Вероятно, эти навыки ещё важнее, чем технические, и если вы решите, что эта сфера вам подходит, то будет необходимо уделить внимание и развитию своих софтскиллов.
Возможно, искра программирования появится у вас не сразу
Я сижу за компьютером ещё с трёх лет, но в течение первых нескольких лет я просто играл в игры, делал диорамы в Paint и подобных ему программах.
Примерно в одиннадцать у меня был друг, показавший мне на своём PC игру Descent.
Ещё у него был учебник по C++, который он мне одалживал. Ещё в одиннадцать я думал, что прочитаю эту книгу, стану разработчиком и буду делать свои игры. Я начал с освоения материалов учебника. Из этого ничего не вышло, и прошло ещё пятнадцать лет, прежде чем я принял осознанное решение учиться кодингу.
В 26 лет я пришёл в свою первую технологическую компанию на должность, связанную с маркетингом. К счастью, моя работа частично была связана с контролем качества, а продукт был очень техническим, поэтому мне приходилось отправлять через командную строку в движок различные тестовые нагрузки и проверять правильность вывода. Меня это увлекло.
Сидевший рядом со мной разработчик подбадривал меня и сказал, что если продолжу заниматься этим то мой опыт может расти «вот так» (он сделал движение рукой, описывая ведущий вверх наклон). С того момента я вечерами и по выходным самостоятельно учился. Практиковался, писал код, читал о кодинге и пытался создавать разное. С тех пор я не останавливаюсь.
Процесс изучения кода может быть фрагментарным и различаться для разных людей. И это тоже нормально.
Что делать, если считаешь, что у тебя есть искра программирования?
Что же делать, если вы попробовали выполнять задачи по программированию и поняли, что они вам нравятся? Что вы думаете о них, пока занимаетесь чем-то другим?
Что делать дальше? Начинать развиваться и никогда не останавливаться. Совет из опроса разработчиков на Stack Overflow о том, как оставаться актуальным и расти как разработчик: «постоянно что-то создавайте и никогда не останавливайтесь». Я полностью с этим согласен.
Первым готовым веб-приложением, которое я создал для себя, был Article Optimizer. Это был жёсткий опыт. Я даже не знал того, чего не знаю, поэтому не мог гуглить. Поэтому я пошёл в обратном направлении: изучал приложения, похожие на то, что я пытался создать (например, приложение, отображающее форму, чтобы пользователь мог отправить данные), и реверс-инжинирил их, читая исходный код страницы, пытаясь больше узнать о базовых технологиях.
Обработка форм, API, настраиваемые шрифты, CSS, рендеринг разных изображений в зависимости от условий, обработка и очистка текста. Я многому научился из своего первого большого веб-приложения, несмотря на то, что на его создание понадобились месяцы. И первая версия была потрясающей, но не совсем тем, чего я хотел. Поэтому я продолжил совершенствовать и пересобирать приложение. Изучать новые фреймворки и техники. Примерно после третьего переписывания оно выглядело и работало так, как было нужно мне, и я опубликовал его в Интернете, чтобы им могли пользоваться другие.
Затем я много лет поддерживал его как бесплатное приложение. Хостинг в Интернете на своём собственном домене тоже многому может научить.
Мне подошёл такой путь: найти нечто вне моей зоны комфорта. Разобраться, как это создать. Следовать за своим любопытством — изучать максимально подробно и попытаться заставить проект работать. Завершив его, можно приступать к следующему. На этот раз сделать что-то более амбициозное, чем в прошлый раз — то, что снова вытолкнет меня из зоны комфорта, чтобы я мог узнать ещё больше.
Не выкладывайте деньги, пока не попробуете
Я видел людей, бравших кредит на $12000, чтобы пройти буткемп по кодингу, но узнавших на первом месте работы, что на самом деле им не нравится весь день работать за компьютером и продолжать создавать цифровые продукты.
Если вы сейчас думаете, стоит ли обучаться кодингу или заниматься компьютерами в качестве карьеры, то не вкладывайтесь слишком сильно, пока не ощутите вкус кодинга и сборки.
Когда вы ежедневно будете на своей работе, выполняя настоящие задачи и ощущая стресс, радость, панику и чувство завершённости, вам не помогут ни мама, ни папа.
Разработка ПО, хакинг, проектирование и построение систем, создание приложений и сайтов, решение сложных инженерных задач при помощи вашего постоянно расширяющегося инструментария может быть удивительной карьерой, если, конечно же вы получаете удовольствие от этой работы.
Вам нужно определиться, сможете ли вы найти эту искру программирования и постоянно использовать её для возрождения своего интереса и любопытства.