|
1 | 1 | ## 1.1. Подход к изучению программирования
|
2 | 2 |
|
3 |
| -Многие думают, что главный навык программиста — это писать код. На самом деле, программисты чаще читают код и исправляют его. А основные критерии качества, кода — понятность, читаемость и простота. Как говорил Гарольд Абельсон: «Программы должны писаться для людей, которые будут их читать, а машины, которые будут эти программы исполнять — второстепенны». |
| 3 | +Многие думают, что главный навык программиста — это писать код. На самом деле, программисты чаще читают код и исправляют его. А основные критерии качества кода — понятность, читаемость и простота. Как говорил Гарольд Абельсон: «Программы должны писаться для людей, которые будут их читать, а машины, которые будут эти программы исполнять — второстепенны». |
4 | 4 |
|
5 | 5 | > Главные навыки программиста — это чтение и исправление кода.
|
6 | 6 |
|
7 |
| -Каждая тема содержит примеры хорошего кода и плохого кода. Эти примеры собраны из практики программирования и ревью проектов. Специально заготовленные примеры плохого кода будут работоспособны, но полны антипаттернов и проблем, которые нужно выявить и исправить. Даже сама первая практическая работа в курсе будет связана с исправлением кода, повышением его читабельности. Если давать традиционные задания (написать функцию по сигнатуре, алгоритм, класс), то начинающий, очевидно, реализует его не лучшим образом, но будет защищать свой код, потому, что это первое, что он написал. А если задача будет "взять пример чужого плохого кода, найти проблемы и исправить", не переписать с нуля, а улучшит в несколько шагов, фиксируя и осознавая эти шаги, то включается критический подход. |
| 7 | +Каждая тема содержит примеры хорошего кода и плохого кода. Эти примеры собраны из практики программирования и ревью проектов. Специально заготовленные примеры плохого кода будут работоспособны, но полны антипаттернов и проблем, которые нужно выявить и исправить. Даже сама первая практическая работа в курсе будет связана с исправлением кода, повышением его читабельности. Если давать традиционные задания (написать функцию по сигнатуре, алгоритм, класс), то начинающий, очевидно, реализует его не лучшим образом, но будет защищать свой код, потому что это первое, что он написал. А если задача будет "взять пример чужого плохого кода, найти проблемы и исправить", не переписать с нуля, а улучшить в несколько шагов, фиксируя и осознавая эти шаги, то включается критический подход. |
8 | 8 |
|
9 | 9 | > Исправление плохого кода — один из самых эффективных способов обучения.
|
10 | 10 |
|
11 | 11 | Начинающий получает примеры ревью кода и по аналогии стремится исправить и свое задание. Такие итерации повторяются много раз, не теряя критичного настроя. Очень хорошо, если будет наставник, который наблюдает за улучшениями, и может корректировать и подсказывать. Но наставник ни в коем случае не должен делать работу за новичка, а скорее наталкивать его на то, как нужно думать о программировании и где искать решение.
|
12 | 12 |
|
13 | 13 | > Наставник — незаменим на любом этапе профессионального роста.
|
14 | 14 |
|
15 |
| -Дальше будут идти задания по написанию своего кода. Очень рекомендуем начинающим обмениваться между собой этими решениями для перекрестного ревью. Конечно, перед этим нужно применить линтеры и форматеры кода, которые проанализируют синтаксис, находя в нем ошибки, и выявят проблемные места по большому количеству шаблонов кода. Нужно добиться того, что бы коллега понимал выраженную тобой мысль, а не тратил время на синтаксис и форматирование. |
| 15 | +Дальше будут идти задания по написанию своего кода. Очень рекомендуем начинающим обмениваться между собой этими решениями для перекрестного ревью. Конечно, перед этим нужно применить линтеры и форматеры кода, которые проанализируют синтаксис, находя в нем ошибки, и выявят проблемные места по большому количеству шаблонов кода. Нужно добиться того, чтобы коллега понимал выраженную тобой мысль, а не тратил время на синтаксис и форматирование. |
16 | 16 |
|
17 | 17 | > Применяйте дружественное ревью кода, перекрестное ревью, линтеры и форматеры.
|
18 | 18 |
|
19 | 19 | Переходим к упражнениям на снижение зацепления между несколькими абстракциями, потом между модулями, т.е. сделать так, чтобы нужно было как можно меньше знать про структуры данных одной части программы из другой ее части. Снижение языкового фанатизма достигается параллельным изучением с самого начала нескольких языков программирования и переводами с одного языка на другой. Между `JavaScript` и `Python` переводить очень просто, а `C` посложнее будет, но эти три языка, какие бы они ни были, нельзя не включить в курс.
|
20 | 20 |
|
21 |
| -> С первых шагов не допускайте ни какого фанатизма: языкового, фреймворкового, парадигменного. |
| 21 | +> С первых шагов не допускайте никакого фанатизма: языкового, фреймворкового, парадигменного. |
22 | 22 |
|
23 | 23 | Снижение фреймворкового фанатизма — запрет для начинающих использовать библиотеки и фреймворки, и сосредоточиться на максимально нативном коде, без зависимостей. Снижение парадигмального фанатизма — стараться комбинировать процедурное, функциональное, ООП, реактивное и автоматное программирование. Мы постараемся показать, как эти комбинации позволяют упростить паттерны и принципы из GoF и SOLID.
|
24 | 24 |
|
|
0 commit comments