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

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

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

1. Важнее медленное и глубокое обучение, а не то, сколько материалов я покупаю или сколько из них я читаю/выполняю.
2. Я не узнаю что-то глубоко с первого раза, независимо от того, насколько уверенно я себя чувствую. Со временем память угасает, уверенность ослабевает, и вы почти возвращаетесь к исходной точке.
3. Хотя существует множество материалов для изучения чего бы то ни было, очень немногие действительно выходят за рамки определенного уровня.
4. Наилучший прогресс, которого я добился, был связан с выполнением конкретных проектов, которые были выше моего уровня способностей на тот момент.
5. Очень приятно практиковать одни и те же задачи снова и снова — об этом редко говорят. Мы хотим решать все больше и больше проблем, которые являются новыми. Но когда я возвращаюсь к одной и той же проблеме снова и снова, я получаю новые идеи, которые я не мог себе представить.

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

› Изучение Python и внешнего интерфейса — обновление за 6 месяцев | Сирадж Самсудин | Средний
https://siraj-samsudeen.medium.com/learning-python-front-end-6-month-progress-update-d36d1aea8505

Когда я посмотрел на свое обновление за первый год, похоже, я многого добился:

› 1 год изучения Python и Javascript | Сирадж Самсудин | Медиум
https://siraj-samsudeen.medium.com/1-year-of-learning-python-javascript-5e8ce7fa4498

По сравнению с моим первым курсом список конкретных достижений на втором курсе совсем небольшой:

  1. Я применил TDD и Pandas для некоторых задач по очистке данных в своей профессиональной деятельности в области анализа данных. Я не пошел очень далеко с этим. Но это помогло мне укрепить мое понимание TDD с помощью Pytest.
  2. Я вернулся к своему Проекту Quran SRS in Django и добавил тесты, чтобы довести покрытие до 100%. Написание тестов постфактум оказалось намного сложнее, чем я ожидал. Я никогда не осознавал, что программное обеспечение для детей, которое я написал, со временем стало таким сложным. Когда я начинал, рефакторинг сложного алгоритма казался кошмаром, но, создав систему безопасности из тестов, я смог медленно распутать сложный код. Я удалил ряд функций, чтобы взять ситуацию под контроль. Мне все еще нужно больше узнать о Django — я купил несколько книг, но не смог их закончить, так как мои профессиональные проекты были ограничены сроками — поэтому личный проект должен отойти на второй план.
  3. Это мой второй профессиональный проект — я выполнил интеграцию между системой SAP (ERP) и популярным продуктом SaaS с использованием NodeJS — когда я начинал проект, я был совершенно новичком в Node. Используя то, что я узнал, практикуя TDD в Python, я смог создать решение локально в своей системе, покрытое тестами, а затем довольно легко перенести его на облачную платформу. Я переключился с помощью Jest на TDD в NodeJS, и это было замечательно. Я затронул новые территории, поскольку мне приходилось использовать макеты для ускорения TDD, когда код нужно было развертывать удаленно.
  4. Хотя это может показаться не таким уж большим, выяснение процесса создания заметок и их пересмотра с использованием SRS с помощью Obsidian + Anki Combo было для меня огромным достижением.

В прошлом году я не мог тратить много времени на изучение книг или видеокурсов. Я ДЕЙСТВИТЕЛЬНО прошел несколько курсов, но ни один из них не оказал такого существенного влияния, как те несколько материалов, которые я использовал в первый год.

Что касается меня, я все еще хочу вернуться и перечитать книгу TDD Гарри и книгу TDD Кента Бека.

На третьем году обучения программированию я хочу освоить основные концепции одну за другой — вот краткий список, который может вырасти:

  1. Командная строка Linux — хотя это кажется неуместным, отсутствие этих знаний — недостаток, который по-разному повлиял на меня во многих проектах.
  2. Git — я получил довольно много знаний о Git, но мне нужно еще больше освоить эту область.
  3. Regex — я немного вникал в это и даже купил 2 книжки, которые пылятся.
  4. VSCode — я могу считать себя опытным пользователем VSCode, но все же было несколько раз, когда я чувствовал себя инвалидом, не зная, как сделать что-то быстро. У меня все еще есть курс VSCode Pro, который я купил, но я не прошел даже 1/3.
  5. Продвинутый Python — я рассмотрел первую часть Fluent Python и остановился. Нужно вернуться и пересмотреть. Python — прекрасный язык, и есть чему поучиться, размышляя о том, почему некоторые вещи именно такие, какие они есть в python.
  6. Расширенный Javascript — это область, которую я охватил больше всего в этом году. Я люблю JS за его гибкость. Но по мере того, как я приближался к продвинутой территории, меня начали кусать некоторые знакомые проблемы в области JS (например, потеря ссылки this). Нужно вернуться к отличным курсам/книгам по JS, которые я прошел в первый год.
  7. HTML/CSS — большую часть этого я забыл, так как не использую их напрямую.
  8. Некоторые интерфейсные фреймворки, такие как VueJS или React — кажется, что React есть везде. Поскольку я очень впечатлен Jest, я мог бы также попробовать React, чтобы увидеть, какова моя реакция, поскольку у меня уже есть положительное мнение о Vue.

Когда я понял, что мне нужен какой-то конкретный путь для освоения основ, я проверял разные варианты, когда вдруг на YouTube появилась реклама, указывающая на Scaler Academy. Когда я слушал соучредителя Anshuman, рассказывающего о его целях, это было музыкой для моих ушей, и я записался на их курс full-stack-разработчика. Пока что я получаю удовольствие от глубокого погружения в структуры данных и алгоритмов, а также от действительно сложных заданий и домашних заданий…