Мої найкращі поради для нових розробників: поради (в основному) програмного інженера-самоучки

Найбільш поширене запитання, яке я отримую від читачів блогу, - “Що ти радиш новим програмістам?” Отже, я подумав, що настав час написати свої думки.

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

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

Окрім власного досвіду, я також вчу людей кодувати як свою основну роботу та для організацій, з якими я волонтер. Тож ця стаття також спирається на цей досвід.

Тож ось мої поради щодо початку роботи.

Мої поради для нових програмістів

1. Майте свою причину і пам’ятайте про це

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

Слідкуйте за цією причиною. Програмування важке, і ви іноді зірветеся. Важливо пам’ятати про цю причину і дотримуватися її. Ви можете помістити на комп’ютері наліпок або на домашній екран. Або (як я) напишіть це на дзеркалі маркером сухого стирання.

2. Побудуйте міцний фундамент

Це може бути менш поширеною порадою, але я вважаю, що це дійсно корисно. Перш ніж почати писати код, якщо ви ще не переглянули математику, я б переглянув поняття з алгебри 1. Програмування побудовано на математиці Algebra 1, як функції та змінні. Розуміння цих понять поза програмуванням буде дуже цінним у майбутньому. Рекомендую курс алгебри Хан Академії 1!

нехай x = 1; // концептуально те саме, що алгебраїчні змінні!
функція add (x, y) {// те саме, що алгебраїчні функції!
  повернути х + у
}

3. Знайдіть спільноту

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

Я б запропонував знайти зустріч у вашому районі як найкраще рішення тут. Навіть невеликі міста, як правило, мають групу дещо поруч. Якщо його немає, я б запропонував dev.to та CodeNewbie-спільноту як дві чудові альтернативи. CodeNewbie має щотижневий чат у Twitter, групу Slack та подкасти для прослуховування. Dev.to має купу публікацій у блозі та тег #discuss, де можна розмістити свої запитання.

4. Розбийте проблеми на більш дрібні

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

5. Псевдокод

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

// якщо у користувача більше десяти балів
// відобразити на сторінці "переможець"
// інше
//     продовжуй грати

6. Отримати цикл навчання

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

7. Почніть з вільних ресурсів

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

8. Знайдіть свою нішу

У програмах існує багато світів, тому спробуйте знайти той світ, який вам подобається, і зосередьтеся на цьому. Замість того, щоб намагатися вивчити 8 мов програмування, фронтенд та бекенд, складені та інтерпретовані мови, усі текстові редактори, інструменти для розробників тощо, знайдіть декілька речей, які вас справді цікавлять, і добре на них виграйте.

9. Добре розпізнайте візерунок

Розпізнавання шаблонів у коді - одна з найважливіших навичок, яку ти можеш мати. Коли люди говорять про те, щоб написати код "DRY" (тобто не повторюйте себе), вони говорять про зменшення шаблонів у вашому коді. Я рекомендую гру «Набір для розпізнавання шаблонів» - ви можете навіть кожен день грати в Інтернеті на веб-сайті New York Times!

// не DRY-код
нехай reversedString = string.split (""). reverse (). join ("")
нехай reversedString2 = string2.split (""). reverse (). join ("")
// чистіший код
const reverse = string => string.split (""). reverse (). приєднатися ("")
нехай reversedString = reverse (рядок)
нехай reversedString2 = зворотний (string2)

10. Займіться хорошими звичками рано

У майбутньому буде простіше писати чистий код, якщо ви звикли рано. Шкідливі звички важко порушити. Ось мої поради щодо написання більш чистого коду. Якщо ви займаєтеся веб-розробкою, запуск валідаторів HTML і CSS на вашому коді може точно сказати, що виправити!

// Не великий
функція avg (a) {
  нехай s = a.reduce ((x, y) => x + y)
  повернути s / a.length
}
// Значно краще!
функція sumArray (масив) {
  return array.reduce ((число, currentSum) => число + currentSum)
}

функція povpreArray (масив) {
  повернути sumArray (масив) / array.length
}

11. Визначте свій стиль навчання

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

12. Боріться, але не надто багато

Трохи боротися, коли ви навчаєтесь, дійсно важливо. Ви хочете вирішити проблему самостійно і знайти відповідь, використовуючи наявні ресурси. Але, маючи на увазі, боротися з проблемою занадто довго непродуктивно і мотиваційно. Через кілька годин зверніться до когось за допомогою!

13. Будьте задоволені від невдач

Програмування складно, і знайти правильну відповідь буде не відразу. Одним з найбільш важливих моментів моєї подорожі з програмування було невдача при написанні розв'язувача судоку. Це може бути складно налаштувати, щоб не отримувати все відразу і не бачити ці повідомлення про помилки. Але це величезна частина програмування.

14. Любіть свої повідомлення про помилки

Повідомлення про помилки дуже корисні! Коли ви починаєте, це червоне повідомлення про помилку може бути жахливим! Один величезний крок - це прочитати ці повідомлення, зрозуміти їх, а потім використовувати їх для вирішення проблеми. Насправді, ви дістанетесь до того, що програма, яка мовчки виходить з ладу, буде набагато більше дратує, ніж корисне повідомлення про помилку.

Повідомлення про помилку Python

15. Деякі мови програмування простіші за інші

Немає правильної відповіді на те, яку мову програмування вивчити спочатку. Деякі буде простіше підібрати. Мої найкращі трійки - Python, Ruby та JavaScript. Мені вони подобаються, тому що вони мають велику спільноту, мають більш простий синтаксис і інтерпретуються, тому вам не потрібно проходити процес складання.

16. Вам не потрібно все знати

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

17. Зосередьтеся на глибині над шириною

Вивчити одне в глибині - це краще, ніж навчитися крихітного про багато речей, особливо спочатку. Ці поглиблені знання перенесуть і полегшать вивчення наступного. Надягайте жалюзі, щоб не спокуситись кинути те, що вивчаєте, і перейти до чогось нового.

18. Спершу зосередьтесь на основах

Основи програмування неоцінені. Ви будете використовувати їх незалежно від того, чим в кінцевому підсумку займаєтесь програмуванням. Сфокусуйтесь на тому, щоб мати ґрунтовні знання циклів, умов, функцій, типів даних та (на більшості мов) об’єктно-орієнтованого програмування, перш ніж перейти до вивчення цієї дивовижної бібліотеки, про яку всі говорять.

Набагато легше буде засвоїти цю бібліотеку, коли ви добре пізнаєте основи. Вони також перейдуть з мови на мову, тож вам доведеться лише один раз навчитися їх. Після цього це просто синтаксис!

19. Будьте добрі у вирішенні проблем

Вирішення проблем - основа програмування! Поліпшення цього вкрай важливо. Розв’язування загадок, написання коду на папері та вирішення проблем справді можуть допомогти у вирішенні проблем.

Щось інколи я бачу з новими розробниками, це те, що вони підходять до програмування як до дослідницької проблеми, а не до проекту вирішення проблем. Якщо в Google щось досить добре, вони матимуть рішення. Так, Google і Stack Overflow дуже корисні, але іноді покладайтеся і на себе. Спробуйте щось з кількох різних способів, перш ніж досліджувати це. Або досліджуйте невеликі частини проблеми замість самої проблеми - тобто "перетворіть рядок у масив JavaScript" замість "зворотного рядкового JavaScript".

20. Займіться хорошими дослідженнями

Однією з найбільших речей, яку слід навчитися, є те, як знайти хороші відповіді на свої запитання або дізнатись нові функції вашої мови чи бібліотеки. Використання Google важливо, тому приєднання до спільнот та підписка на ресурси. Шаблон Google, який я зазвичай використовую, є "проблемною мовою / рамкою / бібліотекою" якомога менше слів і без наповнювача. Отже, "сортувати масив JavaScript", "спінінг елемента CSS" або "створити маршрутизатор Vue".

21. Побудувати проекти, які ти любиш

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

22. Порівняйте лише себе

Там багато людей навчаються кодувати там. Не порівнюйте свій прогрес із чужим. Натомість порівняйте себе з попередніми та зосередитесь на власному зростанні.

23. Зробіть купу проблем із кодом

Швидкі виклики коду дійсно можуть допомогти закріпити основи. Вони чудово підходять для вирішення проблем і практикуються для співбесіди. Я щодня публікую його у Twitter із хештегом #CodingPuzzle, якщо ви хочете, щоб хтось інший вирішив їх!

"" "
Знайдіть елемент у масиві, який виникає лише один раз
з https://www.hackerrank.com/challenges/ctci-lonely-integer
"" "
з колекцій імпорту Counter
def lonely_integer (a):
    a_counter = Лічильник (a)
    для l, рахуємо в a_counter.items ():
        якщо рахувати == 1:
            повернути l

24. Святкуйте свої перемоги

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

25. Програмування є приголомшливим

Програмування дійсно круте, тому що ви маєте намір будувати речі. Я завжди повертаюся до цієї цитати Санді Меца:

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

Підтримувати зв'язок!

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

Спочатку опубліковано на zen-of-programming.com.