кстати сказать |
[Nov. 15th, 2017|04:50 pm] |
люди периодически спрашивают, какие книги читать, чтобы научиться программировать, и я как-то забываю сказать очевидное: книги — хорошо, но если вы не будете читать код других людей, то ничего толкового не выйдет.
тут, конечно, кто-нибудь обязательно спросит: «а как отличить хороший код от плохого? зачем мне плохой код читать, я хороший читать хочу!» а ответ на этот вопрос такой: читать побольше кода. со временем научитесь отличать. и читать плохой код не менее важно, нежели хороший, потому что наглядные примеры «неуподоблюсь» — это очень ценно.
если будете читать много кода (и писать много своего кода, конечно; это тоже обязательно), то со временем получите офигенно удобный скилл «пишу патчи не приходя в сознание». проще говоря, сможете чинить чужой код, даже не всегда полностью понимая, что и как он делает. при этом вполне нормально чинить. звучит как магия, конечно, но это не магия, это опыт. ну ладно: и совсем немножко магия.
ещё чтение чужого кода закрепляет понимание того, что решение самой сложной задачи состоит из простых шагов. это, вроде бы, общеизвестно, но пока не привыкнешь видеть практические доказательства, понимание так и будет плавать где-то в «теоретической области». а на практике я видел людей, которые обладали достаточными знаниями, но боялись писать код, потому что «это сложная задача, я не справлюсь…» вместо чтобы спокойно делать маленькие шаги.
в обратном направлении тоже работает, кстати. то есть, лечит от опухания ЧСВ, по типу: «да это всё фигня, напишу за вечер!»
также чтение кода даёт опыт понимания, на какие именно шаги разбивать задачу и как. это отчасти такое же интуитивное умение, как разбиение текста на абзацы.
и да, я в курсе, что уже когда-то писал об этом. ничего, истина от повторения не тускнеет. а я кажусь умнее, что всегда приятно.
p.s.: почти всё, что я знаю и умею, я увидел в чьём-то коде. процесс обычно выглядит так: сначала я вижу в чьём-то коде интересное решение, а потом начинаю искать подробную информацию о подобных решениях. |
|
|