Code kata - это концепция, которая предлагает оттачивать навыки программиста, многократно выполняя небольшие задачи, пытаясь улучшить код на каждой итерации. Название происходит от аналогии с ката боевого искусства, где формы (он же ката) - это практики, совершаемые снова и снова, ведущие к улучшениям.
Из реакции, которую я получил на мой последний вопрос по теме, я хотел бы знать, каковы недостатки этого подхода?
Ответы:
В принципе, я не вижу недостатков в коде ката. Вы пытаетесь выполнить одну и ту же задачу много раз, используя разные подходы и разные языки. Но
источник
Я думаю, что программирование ката, как и ката боевых искусств, в основном связано с формой над функцией. Это может научить вас писать элегантный код, но не научит вас решать проблемы, для которых вы пишете код. Я думаю, что лучший способ улучшить себя как программиста - это решать головоломки, которые требуют реального решения проблем, и работать над более крупными проектами, которые научат вас ценности хорошо продуманного кода таким образом, что код ката никогда не научит вас.
Кроме того, я думаю, что такие термины, как «кодовое ката» и «мастерство программного обеспечения», больше направлены на романтизацию нашей профессии, чем на описание чего-то нового или полезного.
источник
Код ката просто занимает время.
Будучи полностью занятым разработчиком и отцом, я не хочу заниматься компьютерными хобби.
И я не думаю, что мой начальник заплатит мне за разработку приложений, не связанных с моим текущим проектом.
источник
Как боксер, я бы не согласился с принципом ката. Это слишком жестко, чтобы быть действительно полезным. На ринге вы должны понять, как применять принципы, которые вы изучили, в свободно текущей среде.
Это не значит, что изучение и совершенствование техники не должно осуществляться. Практика на сумках позволяет вам работать с помощью удара и чувствовать, как вы его бросаете, так же, как ката. Но это не так жестко. Вы практикуете много вещей одновременно, передвигаетесь вокруг сумки, бросаете со стабильной платформы, целитесь, дышите, список можно продолжать.
Самое главное, все учат вместе, как это будет фактически использоваться. Если вы можете написать самый красивый цикл for, но не можете понять, как вписать его в программу, тогда что в этом хорошего?
Я бы сказал, что если вы хотите попрактиковаться, то лучше было бы создавать инструменты самостоятельно или работать над инструментами, которые вы используете. Это требует отработки всех ваших навыков, и в конце концов вы можете получить что-то полезное.
источник
С моей точки зрения главный недостаток в том, что это будет ужасно скучно. Также программисты, кажется, преуспевают в разработке программного обеспечения, которое делает что-то полезное или классное. Подход кода ката, казалось бы, противоположен этому.
источник
Ката означает полную противоположность тому, к чему вы должны стремиться.
Термин ката (происхождение: 1950–55; <японский язык: форма, рисунок), используемый в боевых искусствах, и ваш вопрос касается запоминания мышечной памяти, как, например, сенсорного набора текста .
В оригинальном упражнении «Карате Кид», вощение машин, шлифовка полов, покраска забора - все это было обучено катам, совершенно вне контекста и в данном случае без объяснения только для обеспечения мышечной памяти. Только когда вошел сэнсэй и дал контекст пустых действий , они что-то значат.
Я думаю, что то же самое применимо и здесь, без наставника, чтобы поставить вещи в контекст, повторное решение проблем неправильно на нескольких языках не лучше, чем на одном. Без наставника, чтобы сказать вам, где улучшить, они пустая трата времени.
Это полная противоположность творческого решения проблем путем изучения новых вариаций идиом и семантики языка или платформы.
Если вы хотите иметь возможность печатать
System.out.println()
как можно проще, то практиковать это будет ката.Если вы хотите улучшить решение проблемы в другой реализации, сократить требования к времени и / или пространству или применить более идиоматические принципы, это не то, что Kata поможет вам в этом.
Уже существует общепринятый в отрасли термин для повторного внедрения одного и того же снова и снова, после того, как он уже работает, стремясь к небольшим постепенным улучшениям и сомнительным преимуществам совершенства, он называется Gold Plating !
Термины, которые они должны были использовать, - это рефакторинг применительно к одному и тому же языку / среде выполнения / платформе. И портирование при перемещении рабочей программы на другой язык / среду выполнения / платформу. Ката, вероятно, была выбрана ошибочно, потому что она звучит хипстерски, круто и мистично, не понимая семантику полностью.
Решать различные сложные проблемы с небольшим планированием, опытом или руководством - это то, что большинство разработчиков, особенно начинающих разработчиков, должны делать каждый день.
Только ученые могут выполнять одно и то же упражнение снова и снова только для того, чтобы отточить конкретное решение. Умение иметь успешную карьеру разработчика является адаптацией , а не повторением.
Кто сказал, что нет умных людей, которым не нужно учиться после работы, и которые могут узнать все, что нужно знать, а иногда и больше за 8 часов работы?
источник
Я согласен, что метафора "ката" может быть не самой лучшей. Ката в каратэ выполняется с целью отработки определенного, дискретного движения, пока оно не может быть выполнено безупречно, четко и автоматически. Это не очень хорошо подходит для деятельности, требующей критического мышления и творчества. (Лучше бы, скажем, печатать).
Тем не менее, провал имени не является провалом деятельности. Какой возможный недостаток может быть в том, чтобы практиковать что-то, в чем кто-то хочет поправиться? Я полагаю, можно сказать, что время, потраченное на это, является недостатком с точки зрения альтернативных издержек, но на самом деле это инвестиции. Таким образом, время, потраченное на то, чтобы потренироваться в искусстве разработки программного обеспечения, отводится разработчикам программного обеспечения, поскольку деньги, потраченные на акции или облигации, являются долгосрочным вкладчиком / инвестором. Это не «недостаток» - это ставки на стол.
источник
Вы поправляетесь, пытаясь делать вещи, которые сложны и просто недоступны вашим способностям; бросить вызов себе. Выполнение одного и того же «кодового ката» снова и снова, как в форме боевых искусств, этого не делает. Я думаю, что это стагнирует ваши способности, а не помогает развивать ваши навыки.
Он имеет свое применение в качестве метода практики в первый раз, но он ограничен. Я говорю людям использовать проект Euler вместо этого. Больше проблем и больше проблем.
источник
Для меня главным недостатком этой техники, как я вижу, является ее неоптимальное использование вашего времени.
Учебная ценность этого упражнения также сомнительна: когда вы делаете что-то слишком много, чтобы стать лучше, обратная связь с экспертом очень важна. Без качественной обратной связи вы тоже чему-то научитесь, но есть шанс очень хорошо выучить неправильную вещь.
Не поймите меня неправильно, практика остается единственным способом стать хорошим программистом, а ката - это определенно форма практики. Но то же самое можно сказать и о решении задач в области кодирования, написания собственных «веселых проектов», изучения новых языков программирования и так далее. В конечном счете, вам нужно выбрать технику, с которой вы будете чувствовать себя наиболее комфортно, и убедиться, что у вас есть четкие указания на этом пути.
источник
Я верю, что без какой-либо формы ката вы никогда не станете великим программистом. Ката - это практика, это буквально означает. Возьмите это в качестве примера: спортсмен говорит: «Я просто покажу и пробежу 100-метровую черту, тренируюсь винтом». Это похоже на выигрышную стратегию? Это когда-либо было сделано таким образом?
Я предлагаю людям прочитать « Чистый кодер » дяди Боба , он углубляется в эту (и другие) темы профессионализма в области программирования.
О, и выдвигаемые аргументы, что вы не можете заниматься ката и воспитывать семью, - это просто оправдания. Говоря по опыту: дети в какой-то момент ложатся спать ...
источник
Делать только каты в контексте боевого искусства бесполезно. Как уже было сказано, каты - это хореография движений, которая учит вас форме. Вы знаете движения, но не знаете, как их применять. Вы не знаете, в каких ситуациях они полезны. Если вы действительно хотите сделать что-то полезное с ними, вам нужно приложение (я), которое является Bunkai .
В контексте программного обеспечения, ката кода - это алгоритм, инструмент, шаблон проектирования или любая другая технология. Знание это хорошо, но вы должны применить это, чтобы понять это. Вы должны использовать это в различных контекстах, чтобы действительно справиться с этим. Бункай - это конкретная ситуация, в которой эта ката или ее часть полезна.
Я не вижу ничего плохого в этой методологии, вот как все осваивается: учиться чему-то, практиковаться, добавлять детали, практиковаться, добавлять еще детали, тренироваться и т. Д.
источник
Программирование - это искусство, как живопись или музыка. Когда кто-то становится музыкантом или артистом за деньги, вы можете сказать, что нет вдохновения, представление не стоит вашего времени. Если вы увлекаетесь искусством, ничто не может помешать вам практиковаться и постоянно совершенствовать его - каждый день совершенствуя одну технику, замечая нюансы, которые большинство людей никогда не увидят.
Всегда есть место для людей, которые счастливы быть барными музыкантами и малярами, но это совершенно другой класс талантов. Я полагаю, что большинство маляров посмеялись бы над идеей практики, но я держу пари, что художник, который занимался исследованиями и практиками, - по сути, признание их работы как искусства сделало бы заметно лучшую работу, даже над чем-то столь же обыденным, как покраска вашего дома. ,
Некоторые люди признают ценность практики, а некоторые - нет. Одно это должно иметь ценность, если вы в состоянии оценить, и вы ищете людей, которые могут сделать искусство (простой, простой, понятный код), а не просто решение.
пс. Я не называю себя удивительно артистичным или что-то в этом роде - я не занимаюсь Ката абстрактными проблемами, но я осознаю ценность и пытаюсь немного реорганизовать свой производственный код.
источник