TL;DR

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

Что вы получите (если продолжите)

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

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

Учиться наизусть никогда не было моим делом…

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

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

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

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

«В эпоху Google и смартфонов запоминание устарело. [...] Мы по-прежнему придаем этому чрезмерное значение только потому, что так всегда делалось, и мы жили в мире до появления Google». — Навал Равикант

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

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

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

Работа с «данныминаучной диаграммы Венна»

Я быстро понял, что мне нужно сделать, чтобы стать тем, кем я представлял себе Data Scientist. Поиск в Google «навыков специалиста по данным» даст вам 80-процентную точную картину того, что я имел в виду: немного программирования, машинного обучения, визуализации, математики, статистики и всего того, что представлял собой «опыт в предметной области».

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

Следовательно, я записался почти на все курсы на Coursera, EdX и Udacity (ни один из которых я не закончил, кроме одного); Я купил ошеломляющее количество книг (большинство из которых никогда не читал) и еженедельно получал электронные письма от Kaggle и KD Nuggets (которые я читал; примечание: это веб-сайты, посвященные науке о данных). В общем, я запланировал солидную работу на неполный рабочий день не более чем на 6 месяцев.

Естественно, здесь следует предложение, которое вы, возможно, надеетесь, что кто-то наконец опровергнет: «Независимо от того, насколько умным вы себя считаете, …

… так это не работает!»

Какой бы туториал или книгу я ни брал, с точки зрения кода они либо касались Адама и Евы, либо, казалось, были написаны для самого Стива Возняка. В любом случае, я оказался далек от идеи потока. Я часто прибегал к мета-исследованиям типа «какая программа/курс/буткемп/волшебная палочка/правдивый рассказчик лучше всего подходит для х», тем самым чувствуя себя продуктивным, но зная, что потратил еще один час впустую, так и не изучив что-то новое.

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

Это, мой дорогой читатель, существенно отличается в большинстве областей, связанных с (компьютерными) науками. Программирование (или взлом, если хотите) похоже на строительство дома или игру с Lego: вы продолжаете складывать блоки друг на друга. Для некоторых задач вы можете полагаться на работу других людей, но это все равно очень близко к этой аналогии. На самом деле мой мета-поиск был направлен на то, чтобы найти ярлык. Одного предложения, которое прояснило бы мне все это, просто не найти. Чтобы оставаться на картинке, нет дома без прочного фундамента.

Вставать в 5 утра

Мягко говоря, в какой-то момент я был просто ошеломлен. Попробовав то и это, побывав время от времени, я, наконец, понял: бросить трек Data Science/Machine Learning и научиться правильно программировать. Я отказался от языка R, который использовал до сих пор, в обмен на Python, который я преждевременно поставил в слишком трудный угол. Я пошел дальше и нашел LPTHW Зеда Шоу, который, как я узнал, не всем нравился, но у него был правильный тон, скорость и стиль для меня.

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

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

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

Все борются: что чувствует сообщество

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

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

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

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

Позвольте мне повторить это очень четко: КАЖДЫЙ борется! Но вы можете быть уверены, что есть люди, которые помогут вам бесплатно.

Почему вы можете все это делать

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

Вспомните аналогии с домом/Лего? Как менеджер, вы можете сказать себе и другим, что вы делаете именно это. Но вы (и другие) знаете, что на самом деле это не так. Чтобы быть очень ясным, это также не обязательно. Вы просто помогаете, позволяете, просите или иногда запрещаете другим делать именно это. Это не значит, что само по себе это не создает ценности, конечно, может. Но тот момент, когда вы самостоятельно создали продукт впервые, — это момент, наполненный радостной независимостью, чувством выполненного долга и здоровым аппетитом к большему.

Ресурсы и как начать

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

Если вы хотите воспользоваться мудростью толпы, этот Сабреддит — отличная отправная точка. Если вы предпочитаете более простой, более личный совет, вот вам:

  1. Если вам на самом деле не нужно использовать определенный язык программирования, используйте Python 3. Ничто не сравнится с этим языком в самом важном в начале: в его сочетании удобства для пользователя, общности и универсальности.
  2. Найдите учебный ресурс, который начинается с самого начала и построчно знакомит вас с кодом. На самом деле не имеет значения, идете ли вы с печатной книгой или онлайн-курсом, бесплатным или платным. Если вы можете себе это позволить, учебные курсы по программированию, вероятно, станут для вас идеальным выбором. Но у большинства людей либо нет времени, либо денег, и это нормально. Лично мне больше всего понравился LPTHW, но вы узнаете, что лучше всего подходит для вас.
  3. Не беспокойтесь о том, какой редактор кода лучше. VS Code или Atom — хороший выбор, который проведет вас от новичка до программиста мирового уровня. Просто выберите тот, который, по вашему мнению, выглядит красиво, и не зацикливайтесь на том, чтобы выяснить, какой из них лучше. Ни один редактор в мире не пишет для вас программное обеспечение.
  4. У Brad Traversy и Corey Schafer лучшие видео по программированию на YouTube. Брэд немного занимается веб-разработкой, но это отличный материал для всех. Кори — волшебник Python, и его видео могут быть намного более требовательными для новичка. Если вы не можете следовать, просто поищите другой источник по теме.
  5. Stackoverflow станет вашим новым домом.
  6. Поначалу не беспокойтесь о таких вещах, как Github и портфолио проектов. Все это делает его более сложным, чем необходимо, поэтому просто подождите, пока вы не сможете добиться прогресса без них. Этот момент — как и необходимость смены редактора кода — скорее всего, наступит гораздо позже, чем вы думаете. При этом вначале трудно провести грань между тем, что важно, а что нет. Просто придерживайтесь того, что рекомендует ваш учебный ресурс.
  7. Не отвлекайтесь на бесконечные дискуссии о том, какая технология, язык программирования или операционная система лучше. Они во многом зависят от личного вкуса. Вы можете комфортно изучать программирование на ПК с 256 МБ ОЗУ, Windows 98 и подключением к Интернету, и точка. Все остальное является необязательным и не имеет ничего общего с тем, что вам нужно для начала работы.
  8. В том же духе не переключайте языки программирования в самом начале. Придерживайтесь одного, пока не сможете реализовать некоторые идеи самостоятельно и не почувствуете, что в целом понимаете программирование. Это гораздо важнее, чем то, что люди в Интернете говорят о скорости и производительности.