От чайника до самоучки-программиста (часть 1)

От чайника до самоучки-программиста (часть 1)

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

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

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

Скорее всего, вы попадете в одну из пяти категорий ниже:

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

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

2. Вы находитесь в области STEM, но мало знаете о программировании.

Ваши аналитические навыки уже выше нормы, поэтому не тратьте много времени на первую часть, кроме чтения. Обратите особое внимание на часть II и часть III, потому что вам нужно сосредоточиться на написании кода.

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

3. Вы не STEM, и хотите научиться кодировать.

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

4. Вы собираетесь продолжить обучение за границей.

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

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

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

5. Вы студент IT-факультета.

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

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

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

Чем это руководство отличается от множества статей в Интернете?

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

Многие из вас задаются вопросом, почему я включил компьютерные науки (CS) в название. Какое отношение имеет программирование к информатике? Позвольте мне раз и навсегда положить конец этой дискуссии. Знание информатики делает вас лучшим программистом – простым и понятным. Даже без CS вы можете быть хорошим программистом, но то, что вы можете сделать, строго ограничено, потому что CS предоставляет вам мощный набор инструментов для решения проблем. Если вы думаете иначе, есть вероятность, что вы будете продолжать бить по кирпичным стенам и тратить время – как я это делал, когда только начинал.

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

.   .   .

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

Что такое компьютерное программирование?

(Вы можете пропустить это, если вы уже кодер)

Чтобы выразить это в одном предложении, программирование – это наука, заставляющая компьютер выполнять задачу, давая ему точные инструкции для ее выполнения.

От чайника до самоучки-программиста (часть 1)

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

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

Чтобы умножить 2 числа, вы явно указываете компьютеру:

Шаг 1: возьмите число А.

Шаг 2: Возьмите число B.

Шаг 3: Пусть C будет произведением A и B.

Шаг 4: Показать значение C для пользователя.

Мы называем это алгоритмом. Это просто последовательность шагов для решения проблемы.

Языки программирования

Как люди, мы не можем сформулировать всю эту последовательность шагов в 0 и 1, поэтому мы используем языки программирования.

От чайника до самоучки-программиста (часть 1)

Это мост между описаниями машинного уровня и простым человеческим языком. Как показано на диаграмме, языки высокого уровня легче понять, в то время как языки низкого уровня, такие как Assembly, могут иногда становиться загадочными. Вы пишете код на языке программирования по вашему выбору. За кулисами этот код преобразуется (в простых терминах) в описания более низкого уровня, чтобы компьютер мог выполнять инструкции на базовом оборудовании.

Тем не менее, давайте начнем с части I.

Часть I: Разработка мышления программиста

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

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

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

Помня об этом, первым шагом будет подходить к математике немного по-другому.

1. Переучить/Пересмотреть основы математики

Чтобы преуспеть в математике в школе и колледже, нас учат вводить числа и запоминать уравнения без какой-либо глубокой интуиции, прячущейся за формулами. Это не очень полезно, когда вы хотите писать программы. Узнайте, почему вы применяете определенный шаг при решении математических задач. Понять, что делает шаг и как он упрощает проблему. Для каждой проблемы, с которой вы сталкиваетесь, обдумайте способы, с помощью которых вы можете решить проблему, используя уже знакомый вам базовый набор «инструментов». Знание, какие инструменты использовать и как их использовать, приходит с практикой и выявляет повторяющиеся паттерны.

Вот очень простой пример, демонстрирующий это: скажем, проблема в том, чтобы умножить два на себя в 10 раз. Мы знаем, что это представлено как 2¹⁰. Новый инструмент или оператор под названием возведение в степень был использован для упрощения задачи. Теперь вы можете применить все свойства, которые относятся к показателям. Изменяя представление проблемы и используя правильный инструмент, вы дали себе больше силы.

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

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

2. Изучите Python

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

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

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

3. Искусство использования поиска Google

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

4. Читать много.

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

5. Переход на систему UNIX (необязательно)

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

ИТОГ

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

 

РЕСУРСЫ 1 ЧАСТИ:

1. Математика
2. Python (Python 3)
3. Google Search
4. Для чтения
5. Переход на UNIX


.

  • February 15, 2020