can3p (can3p) wrote,
can3p
can3p

Маленький неприличный секрет программирования

Перевел Статью Стива Йегги "Маленький неприличный секрет программирования".

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


"А по поводу этого неучебного дерьма у меня есть пара слов: учитесь, черт возьми, 'печатать"


- Мистер Пинк


Это одна из вещей, которые я всегда хотел написать. Я пытался кучу раз. Не сложилось. Нескладуха. И снова я живу с сильнейшим чуством, что я сам себя перехитрил, пытаясь выразить свое мнение.

Итак! Остался всего один неиспытанный способ: ударом открыть бутылку вина и посмотреть, растечется ли мысль по клавиатуре. Вместо скучного подхода сверху-вниз, пойдем-ка снизу-вверх.


Давным-давно...


...хм, посмотрим... где-то в 1982. Ага. Давныыыым-давно. Это практически сказка.


Давным-давно, в '82-м, жил-был такой абсолютно гипотетический, выдуманный, дурацкий 12-летний парень по имени Ив Стэйджи, который второй год учился в средней школе Парадайз в городе Парадайз в Калифорнии. Ив проскочил 3-й, 7-й и 8-й классы и попал в старшие классы в возрасте 11-ти лет, в героической и вполне успешной попытке стать асоциальной личностью на всю оставшуюся жизнь.

Я бы мог рассказать вам кучу историй о маленьком Иве в те годы. Он был еще отстойнее, чем вы, возможно, уже себе представляете.

Однако, наша сегодняшняя история касается того, что Иву было нужно брать, хм... какой-то факультатив. Не уверен, как именно они его называли, но в школе Ива, нельзя просто учить математику и языки, историю и всю остальную скукотищу. Нет! Ив обучался в Соединенных Штатах Америки, поэтому ему нужно было брать "факультативы", которые приблизительно определялись как "Предметы, Которые Ведет Футбольный Тренер, Потому Что По Какому-то Закону Футбольный Тренер Должен Вести Предмет, Не Связанный с Футболом."

Эти факультативы (на которые ты мог бы "решить" не ходить, но тогда они могли бы "решить" не дать тебе закончить школу) были из тех предметов которые составляли слово "Мужественный" в словосочетании Мужественный Американец. Это были предметы типа курса деревообработки, курса металлообработки, работ в автомастерской, и, конечно, всеми любимого курса "отпили-себе-руку-за-пятерку".

В начале нашей истории, наш жалкий персонаж Ив старательно всматривается в список факультативов сквозь свои огромные поцарапанные бифокальные очки, пытаясь найти курс, который не включает машинное масло, искры и учителей, кричащих "Врача! Кто-нибудь может наложить жгут? Помогите-помогите-помогите! О, боже, моя пенсия!" и прочей мужественно-американской фигни, которую можно встретить на подобных курсах.


Ив заметил, что один из факультативов, несомненно попавший туда по ошибке, - машинопись. Ну, как на печатной машинке. Ив подумал, что на общем фоне это выглядело сравнительно безвредно. Самое ужасное, что могло случиться, было бы, пожалуй, застрять пальцем в электрической печатной машинке, типа удара молнии по зданию, заставляющего тебя так жутко дергаться, что неожиданно спадут штаны, и все будут громко смеяться над белыми трусами, которые купила тебе мама. Это было бы немного неудобно, да, но через несколько лет почти никто и не вспомнит, разве что, когда снова тебя увидят.

Кроме этой потенциальной западни, машинопись определенно звучала привлекательнее,
чем Жгут-курс.


Ив проверил, и, конечно же, курс вёл школьный тренер по футболу. Реально. Предвидя, что на этом факультативе Ив окажется ближе всего к футбольному полю за свою учебную карьеру, Ив решил на него записаться.


Тогда Ив этого не знал, но, говорят, из тренеров получаются самые лучшие учителя. Ну вы понимаете. "Говорят." "Кто-то там" говорит. Между прочим, в этом есть доля правды. Тренерам приходится прогонять кучу сложной информации через головы людей, обладающих вниманием голодных баранов. А это, как "говорят", надо уметь.

Вы никогда не замечали, как в вечерние часы Национальной Футбольной Лиги комментаторы - бывшие тренеры, или комментаторы - бывшие игроки, размахивают своими здоровенными ручищами, приковывая ваше внимание к говорящему? Это потому что ваш примитивный мозг думает, "этот чувак вот-вот мне врежет." Тренеры знают, как привлечь ваше внимание. Они знают, как обучать.

Так что Иву повезло, что ему достался тренер. Имейте в виду, не все было так здорово. Ему не повезло в том, что он жил в 1982-м, у него почти не было опыта с компьютерами, а школа была такая отсталая, что, к 2008-му году у них нет даже вшивого сайта. А в 1982-м они могли позволить себе обеспечить только половину класс электрическими печатными машинками; остальные были старые, ручные печатные машинки на конной тяге.


Было бы лучше, если бы Ив учился печатать сейчас. Сейчас есть быстрые клавиатуры и умные программы, которые могут показать точные результаты, и так далее.


Я почти завидую людям, которым приходится учиться печатать в наше время. А вы?


Но в 1982, у маленького очкастого Ива не было обучающих программ, так что ему пришлось учиться у футбольного тренера.


И, учитывая все эти вещи, это было непросто.


Я расскажу вам, что было дальше...


Изучая рифы


Вы когда-нибудь видели репетицию профессионального концертного музыканта? Я говорю о музыкантах мирового класса, которых учили в академиях в Китае и России, и которые владеют техникой японских роботов вкупе с музыкальной душой.. хм, японских роботов.


Так вот, они тренируются так: Быстро, Медленно, Средне. Быстро, Медленно, Средне. Снова и снова.


Вот так они тренируются


Типа как Машенька, помните? Вы ведь ее помните, не так ли? Слишком горячо, слишком холодно, в самый раз. Вот так тренируются музыканты.


В классической музыке, сложные куски называются "пассажами". В гитарной их называют "рифы", хотя это примерно то же самое. Вы хотите научить свои пальцы пробегать по этим нотам, как Чеширский Кот облизывает свою большую улыбку. Ррриф! Вот как надо тренировать пальцы. Вы начинаете с пассажа. Любого. Сначала это будет всего одна нота. Позже это будут несколько нот, фраза, такт, несколько тактов. Всё, что плохо получается, и что вы хотите улучшить.

Сначала играете риф настолько быстро, как можете. Не беспокойтесь об ошибках! На этом этапе цель - освободить ваши пальцы. Вы хотите, чтобы они знали, что такое грубая скорость. Пальцы должны быть как ураган! В следующий раз вы играете настолько медленно, насколько это необходимо. В этот заход вы должны использовать правильную технику. В основном это означает "настоко правильную, насколько можете", поскольку наиправельнийшие техники А) постоянно развиваются, и Б) всегда индивидуальные.Возьмите любую дисциплину, и там будут разные виды техники. Не существует верного ответа, так как все наши тела работают слегка по-разному. Вам остается выбрать технику, которая вам нравится, и попытаться выполнить ее правильно.

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

Форма освобождает. Поверьте. Все так говорят, и говорят не без причины. Какую бы технику вы ни выбрали, при медленном заходе вы СОВЕРШЕННО не следите за скоростью. Вы следите за точностью. Совершенная практика рождает совершенство, вот и все. Вы хотите дать пальцам знать, что означает быть точными. Не важно, что на ноту уходит по тридцать секунд. Просто делайте правильно. Если совершили ошибку, начните с начала, еще медленнее.


В конце, вы играете это "на скорости". Если вы изучаете музыкальный инструмент, то играете в заданном ритме. Вы хотите дать почувствовать музыку вашим пальцам. Музыканты в основном согласны с тем, что либо вы не хотите совершать ошибок в этой фазе, либо вы просто тренируете свои ошибки. Но в реальности, большинство музыкантов, вероятно, предпочитают принести пару маленьких жертв в этот третий проход, в то время, в целом музыка звучит отлично.

Назовем это 5 жертв в минуту. Это ваша цель. Быстро, медленно, средне. Снова и снова. Вот что они делают. И это работает!

Учимся печатать.

Футбольный тренер Ива был очень мудрым человеком. Не знаю, играл ли он на музыкальный инструментах, но классическую идею практики знал как свои пять пальцев.

Ив ответственно посещал занятия раз в день. Перым делом ему надо было выучить основы машинописи. Их не так уж и много, по правде говоря. Вы держите руки в конкретной позиции в "домашнем" ряду. Не кладете запястья на клавиатуру. Есть рисунок с указанием, какой палец печатает по каким кнопкам. Вы запоминаете это. Вы пробуете каждую кнопку несколько раз. Впомните детский сад, когда вас заставляли писать алфавит. Вы заполняли строку буквами А, а затем еще строку буквами Б. То же самое. Через день или два, вы запомнили раскладку клавиатуры и, при наличии достаточного количества времени, можете напечатать что угодно, не глядя на клавиатуру. Всего день или два, а вы уже печатаете вслепую! Не удивительно, что после изучения основ класс много играл в "печатный футбол". Эту игру изобрел тренер, чтобы сделать изучение машинописи интересным. Это было несложно, так как тренер отдавал себе отчет, что не каждый из учеников выучил наизусть книгу правил Национальной Футбольной Лиги. Печатный футбол состоит в разделении класса на две половины, и передвижении мяча по полю путем печати лучше, чем другая половина.


Упражнения, которые Ив делал в 1982 году, могут быть выполнены намного лучше, используя современное программное обеспечение. В конце концов, теперь существуют программы, позволяющие учиться печатать путем отстрела зомби. Как вам это нравится?


Если существует какой-либо секрет изучения машинописи, то это упорство. Класс Ива придерживался этого. Они печатали каждый день, пять дней в неделю в течении 12 недель. Им не давали домашние задания, так как не ожидалось, что дома у них будут печатающие машинки. Они только приходили, играли в печатный футбол и делали быстрые/медленные/средние упражнения. Да, конечно были нюансы. Иногда они упражнялись в основных комбинациях букв выбранного языка, в случае Ива это был английский. Комбинации типа "tion" и "ing" тренировались до тех пор, пока не вылетали одним взмахом без всяких усилий. Иногда они упражнялись с текстом, содержащим много знаков препинания, цифр и разнообразное выравнивание. Эти подробности лежат за пределами обзора этой статьи. Все это поддерживается современными программами по обучению машинописи. Вы увидите. И как же все закончилось? Ну, к концу четверти. Ив твердо печатал 60 слов в минуту. И он не был лучшим в классе. Это были инвестиции в размере 50 минут в день в течении 45 дней. И это было здорово! Реально, в наши дни, при лучшем программном обеспечении и с лучшими клавиатурами, обучение машинописи будет скорее инвестицией по 30 минут в день в течении 30 дней.


Теперь Ив печатает около 120 слов в минуту. При поступлении в колледж он все еще печатал около 60-65 слов в минуту, но он решил практиковаться после переписки "мгновенными сообщениями" по юниксовой программе "talk" со студенткой по имени Келли, которая печатала со скоростью 120 слов в минуту. Ив мог чувствовать ее нетерпение во время переписки. Он намекнул на это, и она ответила: "Ты еще не видел меня с раскладкой Dvorak".

Ого! Ив был уже достаточно сообразителен, чтобы жестко прикусить себе язык и ничего не напечатать в ответ. Но хватит об Иве. Парень всё равно вымышленный. Вам нужно учиться печатать? Ну, ээээ,... да. Вы знаете, что да. Вот в чем суть. Даже если у вас есть оправдение, в глубине души вы все равно знаете, что учиться нужно. Машинопись - это способ, которым мы теперь общаемся с целым миром. Не имеет смысла чинить себе препятствия. Возможно, вы один из тех людей, кто декларирует: "Я не ограничен скоростью! Я провожу все свое время в проектировании и практически не пишу код!" Я слышу это постоянно. И вы не правы. Программисты печатают весь день, даже когда они заняты проектированием. Точнее, особенно, когда они заняты проектированием. Потому что в действительности им необходимо общаться с удаленными участниками.


И здесь заключен неприличный секрет индустрии: Программисты, не умеющие печатать в слепую соответствуют схеме. Если вы печатаете вслепую, вы знаете, о какой схеме я говорю. О неприличной. В изысканном обществе не говорят о неприличных секретах. Машинописная неграмотность - незаконнорожденный ребенок, прячущийся в подвалах индустрии. Клянусь, людям действительно неловко об этом говорить. Мы, программисты, прикидываемся компетентными на Reddit (reddit.com), но мы не можем посмотреть в лицо собственному огромнейшему социо-культурному грязному секрету. И знаете, что? Я собираюсь проветрить грязное белье, нравится вам его запах или нет. Какова схема? Схема такая: не-печатающим-вслепую приходится чем-то жертвовать, чтобы поддерживать свою производительность. Это простая арифметика. Если вы тратите больше времени вбивая код, то, чтобы не отставать, вам нужно экономить время на чём-то другом. Но когда дело касается программирования, есть так много вещей, которыми можно пожертвовать! Можно урезать документацию. Можно урезать комментирование кода. Можно сэкономить на переписке по электронной почте и участии в онлайн дискуссиях, предпочтя им групповые дискуссии и беседы в коридоре. И... ну, пожалуй, всё.


И угадайте, чем жертвуют не-печатающие-вслепую? Всем
этим, чёрт побери. Они жертвуют всем. Печатающие вслепую могут за милю определить печатно-неграмотного программиста. Им даже не нужно находиться в той же комнате. Для начинающих не владеющие машинописью почти невидимы. Они не оставляют следов в нашем онлайн сообществе. Когда вы общаетесь с ними один на один, они наверняка кажутся умными. Они обычно умные. Но не владеющие машинописью только изредка вставляют одну или две фразы в онлайн дискуссии об архитектуре, или в обсуждении руководства стиля, или просто во флейме, их присутствие онлайн ограничено. Чёрт, они кажутся почти отстранёнными, не заинтересованными в помощи развитию инженерной культуры. Слишком хороши для этого. Это первая часть схемы. Они отдалены. И именно здесь полностью разваливается их заявление, что "большая часть их времени уходит на проектирование", потому что проектирование подразумевает общение с другими людьми, и включает постоянное документирование дерева решений. Если вы не печатаете в ходе проектирования, значит вы проектируете неправильно. Еще один гадкий эффект: код не владеющего мащинописью минималистичен. Они не делают лишних движений, чтобы что-то закомментировать. Если со способностями совсем плохо, они могут решить прокомментировать код в следующий, необязательный раз. А те, кто в основном печатают своими локтями? Они жертвуют даже форматированием, а это действительно, самый ужасный грех, какой может совершить программист. Хм, хотя, нет, зачеркните. Это второй самый ужасный грех. Первый - это сделать опечатку в имени переменной и не исправлять ее, потому что для этого надо слишком много печатать. Но форматирование дробовиком уже где-то рядом.

Ну вы знаете. Форматирование дробовиком? Когда вы запихиваете все свои буквы в дробовик, целитесь в монитор, и БАБАХ! У Вас Получился Код? Я знал парня, который так программировал. Это было ужасно. Было еще ужаснее за ним наблюдать, потому что он смотрел прямо вниз, на свою клавиатуру, пока печатал, а печатал он ровно двумя пальцами, вне зависимости от того, нужны были оба или нет, и примерно раз в минуту он поднимал взгляд на монитор. Во время этих кратких проверок, происходило одно из двух. В одном случае он тянулся за мышкой, потому что последние 60 секунд печатал не в том окне, часто с забавными результатами. Если он не тянулся за мышкой, он тянулся к кнопке Backspace, которую нажимал на нее примерно столько же раз, сколько он до этого нажимал другие кнопки. Этот парень, скорее всего, имел ограничение по скорости процессора, а не ввода-вывода, поэтому ему, наверное, можно сделать поблажку.


Но РЕФАКТОРИНГ, бла, бла, бла


Ага, ага. Инструменты для рефакторинга дают вам ощущение собственной сексуальности. Я знаю. Я слышал это кучу раз. Появление инструментов для рефакторинга делает машинопись абсолютно ненужной! Архаизм! Нужно просто нажимать на кнопки в меню весь день, а потом получить зарплату! Я понял. Точно. Вот в чем суть: все над вами смеются. Или если это ваши близкие друзья, то им вас просто жаль. Потому что вы - лох. Если вы действительно думаете, что инструменты рефакторинга являются заменою машинописи, то это значит, что вы говорите, что вполне нормально отрезать ваши ноги, так как у вас есть машина. Нас на это не купишь. Если вы - программист или профессионал в области IT, в какой-то степени связанный с компьютерами, вам нужно научиться машинописи! Я даже не знаю, как сказать это яснее. Если вы отказываетесь выделить на это время, то вы, вы.. прилагательное существительное, восклицание. Ага, я вернулся и немного отредактировал последнее предложение. Я хочу, чтобы мы остались друзьями. А вы просто продолжайте стебаться над таким лохом.


Хорошие новости


Впрочем, вот хорошие новости. Серьезно, хорошие новости есть. У меня есть хорошие новости, так как теперь вы в конце концов собираетесь научится машинописи. А я знаю, что собираетесь научится. Вы знаете, почему я знаю? Я вам скажу: потому что вы дочитали до этой строчки! Серьезно. Тот факт, что вы умеете читать, вас выделяет. Вы будете абсолютно, невероятно ошарашены в том, что многие программисты не знают, как ЧИТАТЬ. Я предельно серьезен. Вы можете научиться скоростному чтению еще быстрее, чем вы можете научиться машинописи, и все равно есть куча программистов, которые не сумеют даже бегло просмотреть этот блог. Они пытаются, но в отличие от владеющих скорочтением, они не схватывают суть написанного. Это еще один маленький неприличный секрет индустрии. Итак. Исходя из того, что вы уже так много прочитали, вы теперь понимаете, что сейчас самое время научиться машинописи. Вы знаете, что вы сможете это. Это даже не будет очень трудно. Вы знаете, вам нужно просто забить на пару дюжин партий в Wii Golf, и неожиданно вы станете в два раза продуктивнее без необходимости изучать что-то новое. Вы знаете. Поэтому вы знаете, что будете учиться.


Поэтому я скажу вам хорошие новости: это чертовски просто! Быстро, медленно, средне! Найдите какую-нибудь программу по обучению машинописи и просто учитесь. Мы не говорим здесь о диете или о том, как бросить курить. Неважно, сколько вам лет, как вписать это в вашу жизнь: это все равно просто. Вам нужно просто уделить на это пару десятков часов. Черт, если у вас будут проблемы, просто напишите мне, и я поговорю с вами лично. Я смогу это осилить. Я печатаю довольно быстро. К тому же ваше письмо наверняка будет коротким. Вообще вот маленькая история для вас: я не знал, как вслепую набирать числа до тех пор, когда с момента выпуска из колледжа уже прошло 3 или 4 года. В конце концов меня достал тот факт, что каждый раз, когда я печатал цифру, мне нужно было сначала посмотреть на клавиши и попытаться нащупать их неуверенными пальцами.


В результате я тратил 15 минут в день примерно две недели. Всего. Вам не нужно печатать цифры очень часто, как бывает, поэтому через неделю или около того, каждый раз, когда мне нужно было печатать число, я замедлялся и печатал его правильно. Примерно через две недели я печатал числа вслепую. Это было 15 лет назад! 15! 15! 15! Я обожаю возможность печатать, не глядя на клавиатуру! Это дает силы, дает возможность печатать практически со скоростью мысли. Почему вы хотите печатать по-другому? Бросьте. Сейчас самое время решиться и научиться.


С чего начать?


Ну, если бы это делал я, то поискал бы в интернете бесплатные программы для обучения машинописи. Я бы потратил на поиск час или два, размазанные на неделю или около того. Если бы ничего из бесплатного не подошло, я бы купил Mavis Beacon. Не знаю, насколько он крут, но думаю, что он чертовски лучше, чем футбольный тренер, обучающий вас на электрической печатной машинке. Парень, я не понимаю. Я просто не могу... Я просто не могу понять, почему профессиональные программисты делают карьеру, не научившись машинописи. Это не имеет смысла. Это как, ну не знаю, как быть актером, не умеющим надевать свои вещи. Это как начать игру неподготовленным. Это значит прийти на встречу без презентации. Прийти на занятия без домашней работы. Проплыть на олимпиаде в семейных трусах. Давайте говорить начистоту: это все лень.


Этому нет оправданий. У меня есть друг, Джон, который может использовать только одну свою руку. Он печатает со скоростью 70 слов в минуту. Он изобрел свою собственную технику машинописи. Он не ищет оправданий; он нарезает круги из напечатанных слов вокруг людей, которые подобные оправдания ищут. Позор им! Если у вас две руки, то 70 слов в минуту, без ошибок, легко вами достижимо. Или быстрее. Это не так трудно, как вы думаете. Это гораздо более полезно и освобождающе, чем вы думаете. И, если вы достаточно готовы, чтобы учиться сегодня, то вам возможно захочется узнать про раскладку dvorak. Она дает реальную прибавку к скорости. А так же может дать вам хороший старт!


Вот так. Вот моя статья. Пожалуйста, учитесь машинописи. Это не должно быть проблемой, НЕ ТЕМ неприличным секретом индустрии, о котором никто не говорит. Скажите боссу, что хотите выделить на это время. Попросите работодателя заплатить за программу. Заставьте их послать вас на курсы, если необходимо, так что вы не сможете отмазаться от этого. Делайте все, что для этого необходимо. Дайте мне знать, как идут дела. Верите или нет, но я хочу услышать ваши истории успеха. Напишите мне письмо. Это поднимет мне настроение!



Оригинал (Английский): Programming's Dirtiest Little Secret



Перевод: ©
chocky,
Дмитрий,
aidsfrag,
100grammist
.

Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments