Методика

По времето през което писах за PC Club с Веско попаднахме в творчески конфликт. И двамата имахме много голям мерак да пишем за клавиатурата Optimus и заявихме по едно и също време. Главния редактор ни каза да се оправяме помежду си. За да се измъкнем от тази неловка ситуация, Веселин предложи следното решение – тридневно състезание на Type Fighter. Това е просто Flash игра, която изисква да бързо писане на клавиатурата. Доста несправедливо – от чатерските си години съм станал пълен звяр и опонента ми нямаше голям шанс да ме надпише. Най-накрая аз победих, но Веско бе успял да постигне впечатляващи резултати. Стана ми много интересно как го е постигнал и той учтиво ми обясни… Всъщност, трябва да видите какво представлява Type Fighter. Вие поемате ролята на едно от две човечета, които се борят. Другото се управлява от компютъра. Преборвате врага като пишете възможно най-бързо думичките, които се появяват на екрана. Има и скала, която индикира на какъв процент сте от това да победите или загубите. Отвъд всичко друго, на екрана периодично се появяват два надписа. Единият ви предупреждава, че противника се кани да ви шибне един и за да го блокирате трябва да натиснете произволна цифра. Другия пък ви информира, че може вие да му вкарата едно круше и за целта трябва да натиснете интервал. През цялото време играта ви брои грешките, които правите при писането. Окончателният ви резултат е секундите, които ви е отнело да смелите лошия плюс броя грешки, които сте допуснали. Интересно е – пробвайте, ако имате време.

След като направих 24 точки за 30тина минути, опонента ми беше доста респектиран – тогава той се колебаеше около 40. Смятах играта за спечелена и се облегнах назад, но на следващия ден той бе достигнал 22. Евентуално и аз се поблъсках и направих рекорд от 19 (пробвайте се дали ще го задминете), което ме направи победител. Но го питах „Добре бе, Жилов, как направи 22, да ти се незнае“. Отговора му беше много интересен. Звучеше горе-долу така:

Ами първоначално определих думите, които греша често и потренирах с тях в notepad. Като набрах достатъчно бързина с тях, започнах да се тренирам да уцелвам интервала и цифрите без излишна паника, когато се появат надписите. И с малко упоритост достигнах до този резултат.

Това доста ме впечатли. Никога няма да ми хрумне да подходя така в рамките на тази игра. Но все пак има логика, нали? Това е начина по който ние, като програмисти, си вършим работата – анализираме проблема, разбиваме го на малки части, попълваме познанията си там където трябва и започваме да го борим едно по едно (или поне така се надявам – познавам доста програмисти, които не могат да подходят методично посмъртно). Всъщност, не е ли това начина да се спарвяме с проблемите по принцип – да си създадем някаква методика, с която ще подходим към тях. Дали ще е начина на ориентиране в една математическа задача, стратегията да съборим противника на някоя реалновремева стратегия или изграждането на някаква доволно сложна система – все това е начина да се справим.

Разбрах нещо важно този ден – че когато имаш проблем, чието решение още не знаеш, начина не е да си блъскаш главата в стената докато тя падне. Начина е да се замислиш, да си изградиш стратегия как ще се пребориш с него, да я следваш и постоянно да обръщаш внимание на обратната връзка. Да подходиш методично. И това важи както за компютърните игри, така и за сложната материя на софтуерната разработка.

И нима умението да се подходжда методично не е това, което отделя талантливия от наистина интелигентния?

5 thoughts on “Методика

  1. С това за методиката ми напомняш за 1 учител по програмиране…и той така говореше пък беше на 50+. Има нещо мъдро в това дето казваш, ала таланта си е талант….гениите са си гении + като добавим и труд поне колкото ти полагаш….и къде остава място за теб в света ?

  2. Разбиването на прости под-проблеми е може би едно от най-важните неща, но в някои случаи не е достатъчно.

    Според мен това, което описваш е по-скоро обвързано с архитектурата на даден софтуер. По-различно е, ако става дума за малък иновативен проект или за решаване на алгоритмичен проблем, които досега не е срещан.

    Всъшност съгласен съм, че и в този случай може да се подходи като се анализира и разделя на части, но пък дали е най-добрият вариант? Например ако става въпрос за симулиране на интелигентно поведение, човек може да се вгреда във начина по който той решана дадения проблем и след това да се стреми да го представи чрез синтакстиа на съответния език. Това обикновено дава резултати много по-бързо и лесно, отколкото ако се фокусираме чисто логически въвху проблема.

    Затова според мен не трябва 100% да се робува на такива принципи. При всеки човек е различно, но винаги трябва да се търси някакъв баланс между формалното и хаотичното.

  3. Всъщност, не говорих за това как пишем код, а как си вършим работата. Има редица проблеми които решаваме, несвързани с писането на код – кой framework да ползваме, как да изградим системата, как да усвоим някакво ново познание и най-вече как да откриваме причините за грешките. И нямах предвид толкова, че трябва се работи логически и с анализ, а че трябва да се подхожда с някаква идея към проблема (методично).

    Разбира се, хаотичния подход също помага по някога, но блъскането с глава в стената по-често чупи главата, отколкото стената. 🙂

  4. Codito ergo sum » Съвременна машина на времето

Вашият коментар

Вашият имейл адрес няма да бъде публикуван.