Як я втік із навчального чистилища і навчився кодувати - і як ти теж можеш.

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

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

Застереження: я не професійний програміст, і хоча я використовую свої навички, щоб принести користь своїй роботі (про мої пошуки прототипу можна прочитати тут), кодування продовжує бути додатковою до моєї основної роботи, а не джерелом доходу , що б це не говорило вам.

Також застереження: я не намагаюся позиціонувати одну мову чи навчальну платформу над іншою, і я, очевидно, не намагався вивчити кожну мову там, на кожній платформі. Далі - лише мій досвід, коли я намагаюся з’ясувати найбільш розумний шлях вперед у незвично заплутаному середовищі.

Ви також можете перейти до нижньої частини для TL; DR .

Пролог: C ++

Я не зовсім впевнений, що я вже знав, що C ++ був і продовжує залишатися наріжним каменем у розробці відеоігор. Можливо, я бачив це в одній із тих інфографік "Яку мову програмування слід вивчати", які є навколо. Але я хотів би дізнатись більше про те, як створюються ігри та як розмовляти з комп’ютером. Я досить технічний, і будував чи працював із власними ПК, думаючи, що це може піддатися досвіду навчання кодуванню.

Святий дим, чи не вийшов я зі своєї глибини. Я провів кілька навчальних посібників в Інтернеті (я думаю через learncpp чи подібні) і незабаром зрозумів, що мені знадобляться додаткові вказівки, щоб зрозуміти основні об'єктно-орієнтовані принципи програмування, можливо, більш доступною мовою, ніж я знайшов при вивченні C ++.

HTML, CSS, JavaScript та Python

До того, як приступити до цієї пригоди, я вже мав трохи досвіду роботи з HTML і натрапив на Codecademy. Мені дуже сподобалася можливість робити підручники в браузері і без необхідності налаштовувати IDE (це було зроблено для C ++, як досвід). Я швидко спожив усі уроки Codecademy з HTML та CSS. Природним шляхом з цього моменту було проходження курсу JavaScript, який мені сподобався. Але незабаром я опинився у "навчальному чистилищі" (не моє посилання), працюючи через курс Python та інші.

Слід також зазначити, що я закінчив курси Codecademy як безкоштовний користувач, не бажаючи платити абонентську плату за те, що вони пропонували на той час, що включало проекти та підтримку наставників.

Я вивчив багато основ із Codecademy та загальних принципів ООП, але не закінчив застосовувати більшу частину цього без чіткого шляху вперед. Я повернувся до своїх пошуків (з ким я жартую, ВАМ ВІДБАЛО багато часу, одночасно досліджуючи інші мови, навчальні платформи та завантажувальні камери протягом усього процесу) і вирішив, що хочу дізнатись більше про розробку ігор на курсах Unity.

C #

Я знайшов курс "Unity" Бена Трістема на одній із багаторічних знижок на продажі Udemy на 10000% і старанно працював за допомогою навчальних посібників над створенням клонів 2D-розбиття цегли та інших ігор. Я навчився достатньо C #, щоб обійти, але недостатньо, щоб бути впевненим у тому, щоб щось зробити сам.

Сама єдність тут, мабуть, була більше перешкодою, ніж вказівки Трістрема та товариша, що насправді було цілком непоганим. Редактор Unity - це звір двигуна, який має безліч хороших інструментів, непроникних для початківця користувача (ще раз, ви можете прочитати більше про мій досвід роботи з Unity тут).

Мені все ще здається, що я багато чому навчився на курсах та простому акті дії C # та бажаного робочого потоку Unity, але не отримав достатньо досвіду, щоб продовжити. Мій друг підказав мені поглянути на freeCodeCamp, куди я пішов далі.

Повернутися до JavaScript

На перших рум'янах, freeCodeCamp має вигляд менш кричущої Codecademy або Treehouse. Але мені сподобалось, наскільки простими були навчальні посібники, і для досягнення прогресу не потрібно було проходити повз платіжну стіну. Я продовжив навчання там, де я зупинився, вивчаючи HTML та CSS, роблячи гарний прогрес, поки не дійшов до проектів адаптивного веб-дизайну, які потрібні для завершення першого розділу та отримання сертифікації.

Я можу з упевненістю сказати, що це був момент (або низка моментів) мого викидання з навчального чистилища. Для новачка, який не мав справжнього професійного досвіду веб-дизайну та не бажав з’ясувати власні рішення, не шукаючи відповіді, проекти були важкими . Врешті-решт я виграв і створив кілька безглуздих веб-сайтів, які задовольняли вимогам, але досвід підштовхнув мене до роботи ще над кількома підручниками freeCodeCamp щодо бібліотеки інтерфейсу JavaScript і фреймворків.

Що ще важливіше, я почав працювати над власними веб-проектами на CodePen та ігровими проектами, використовуючи купу різних двигунів. Я також почав використовувати Python для виконання базової соціальної аналітики у своїй повсякденній роботі, і знайшов це корисним.

Чистилище після підручника

Швидкий перемотування вперед набагато пізніше, і зараз я працюю над кількома проектами, пов’язаними з іграми у Phaser and Unity (зокрема, цифровим прототипом настільної карткової гри, яку я розробляю). Я витратив дуже багато часу на фреймворкову документацію та Stack Overflow, шукаючи відповіді та найкращі практики для матеріалів (ще раз зв’язавши цю публікацію для кращого виміру). У мене також склалися дружні стосунки з кількома колегами, які самі є програмістами, і було корисно запустити їм код для отримання порад та відгуків.

Одне, що було корисно при роботі над моїми власними проектами, - це лише основний досвід налаштування робочого процесу. Наприклад, навчитися користуватися командним рядком та Git спільно з налаштуванням NPM та редактором коду відкрило очі (зокрема, від CodePen, який просто робить все за вас). У кращому чи гіршому відношенні, більшість підручників не піддають вас глибині та піску інструментів, які вам знадобляться для виконання вашої роботи, і цьому можна навчитися багато чому.

Якщо ви читаєте це і шукаєте "а я щойно отримав першу роботу програміста!" заява, вибачте, розчаруйте! Це не було моєю метою (принаймні на даний час), але я маю деякі базові знання TL; поділитися вивченнями DR, які можуть бути корисними для тих, хто також шукає мову програмування або як уникнути з навчального чистилища.

TL; DR

JavaScript:

  • Плюс: Дуже хороша точка входу в вивчення об’єктно-орієнтованого програмування, особливо якщо ви зацікавлені в будь-якій веб-розробці (передній або задній кінець). Ви можете навчитися цьому на більшості платформ, але моєму досвіду найкраще послужив freeCodeCamp.
  • Недолік: Багато веб-сайтів повідомлять вам, що він "просто працює у вашому браузері", тому вам "не потрібно налаштовувати IDE" і, отже, простіший у вивченні, але такий спосіб мислення затягне вас лише настільки далеко. Якщо ви збираєтеся зробити будь-яку значущу розробку за допомогою популярних фреймворків JavaScript (React, Vue, Express тощо), ви завершите налаштування чогось, що суміжне з IDE, за допомогою редактора коду, менеджера пакетів, залежностей тощо, без підтримка, яку ви отримали б, скажімо, від налаштування .NET або подібного.

Python:

  • Плюс: надзвичайно зручний для новачків, якщо фігурні дужки іншими мовами спочатку залякують, і хороший пункт для входу, якщо ви зацікавлені в тому, щоб займатись програмуванням або наукою даних. Я мав хороший початковий досвід роботи на борту через Codecademy.
  • Недолік: Ваші варіанти трохи обмежені, якщо ви хочете потрапити у фронт-енд або розробку гри. Наприклад, існують фреймворки, які дозволяють створювати ігри (наприклад, PyGame), але якщо ви спеціально займаєтесь розробкою ігор, вам краще послужити в іншому місці.

C #:

  • Pro: Дуже приємна мова, яка добре підтримується Microsoft та спільнотою відкритих джерел. За допомогою нього ви можете робити задню розробку, створювати настільні програми, створювати ігри (в основному за допомогою Unity, але є й інші движки, такі як Monogame). Це може бути непопулярною думкою, але я рекомендую спочатку вивчити C # за допомогою підручників Microsoft або деінде, а потім вивчити Unity, щоб полегшити частину когнітивного навантаження, спричиненого складністю редактора.
  • Недолік: Тут не про що говорити, якщо тільки вам не подобається Microsoft або ви дійсно не хочете працювати над веб-розробкою інтерфейсу (я думаю, ви могли б заглянути в Blazor, але я б не рекомендував починати тут). Наприклад, я міг би говорити багато про те, як Unity може покращити свій користувальницький досвід, але сам C # чудовий.

Загальні думки про навчання та уникнення навчального чистилища :

  • Одне з моїх розчарувань у моєму процесі запитання "яку мову програмування я повинен навчити?" було те, що, на мою думку, було недостатньою відповіддю "ну, що ти хочеш побудувати?" Я багато разів стикався з цією відповіддю, і не вважаю, що це правильний спосіб підійти до навчання, як програмувати, якщо ви ще не знаєте, що хочете з цим робити. Новачок не має достатнього контексту, щоб знати, що він може побудувати, не кажучи вже про маршрут, щоб туди дістатися (якщо це не той тип людини, який просто хоче займатися іграми або просто хоче влаштуватися на роботу веб-розробником ).
  • Кращою відповіддю було б сказати: "Спробуйте кілька підручників на різних сайтах та різними мовами, і подивіться, чи щось вам здається цікавим. Якщо це так, дотримуйтесь цього; якщо ні, виберіть один навмання і подивіться куди це вас приведе. Те, що ви дізнаєтесь, допоможе незалежно від того, що ви насправді робите ".
  • Крім того, якщо ви зможете змусити себе вийти з екосистеми підручників і просто зробити що-небудь за межами захищеного середовища, яке було налаштовано для вас, це допоможе навчити вас речам, які вам доведеться знати, наприклад, IDE, пошук відповідей на запитання та обмін вашою роботою.

Я сподіваюся, що ця публікація буде корисною для тих, хто шукає мову програмування або спосіб уникнути навчального чистилища та створити круті речі. І я б також хотів почути про ваш досвід!

Якщо вам сподобалася ця стаття, будь ласка , розглянути можливість перевірити мої ігри і книги, підписавшись на мій канал YouTube, або приєднатися до Entromancy розбрату.

М.С. Фарзан, к.е.н. писав і працював у гучних компаніях з відеоігор та редакційних веб-сайтах, таких як Electronic Arts, Perfect World Entertainment, Modus Games та MMORPG.com, а також працював менеджером спільноти для таких ігор, як Dungeons & Dragons Neverwinter та Mass Effect: Andromeda . Він є креативним директором та провідним дизайнером ігор Entromancy: A Cyberpunk Fantasy RPG та автором трилогії The Nightpath . Знайдіть MS Farzan у Twitter @sominator.