Спомням си програмистски разговор отпреди осем години. Още бях в училище. Ползвах Windows, знаех (почти) всички особености на C++ и можех с лекота да разплитам спагети код. Или да го пиша.
Разговарях с един приятел. Бях прекарал последните няколко години в усилено писане на C и C++ (в училище). Занимавах се с OpenGL и линейна алгебра. Той пък бе открил Java. Водехме дълъг разговор кое е по-добро – C++ или Java. Спомням си как ми каза „Java има много добър garbage collector“, на което отговорих с „Е какво, не можеш ли да си управляваш паметта сам?“. Той отвърна „Мога, ама защо да се занимавам?“. Бях изненадан. Защо не разбираше, че garbage collector-а е излишен? Всеки адекватен програмист може да си управлява паметта. Пък и несъмнено е по-бързо. Не успя да ме убеди.
Осем години по-късно съзнавам наивността си. Разбирам предимствата. Още повече, разбирам нуждата от контекст – защо в едни приложения ръчното управление на памет води до загубено време и бъгове, докато в други е необходимост. Просто трябваше да поработя с първия тип.
Чудя се – за какво друго реагирам предубедено? Колко идеи изхвърлям, защото са неприложими в текущия контекст? Колко, защото си мисля, че са неприложими? Към колко съм предубеден, защото съм ги чул от лоши програмисти? И колко игнорирам по навик?
Твърде често го виждам в колеги. Няма значение дали става въпрос за библиотека, метод на работа или език за програмиране. Няма значение дали говорите за Java, Ruby или PHP. Реакцията към новото и непознато е скептицизъм.
Не знам какво го поражда. Твърде много неща за учене? Обемът на информацията е страшен? Чувстваш се глупав, ако не успееш да научиш нещо? Изглежда непрактично да се опитваш да разбере всичко? Хората, които учат много неща не вършат никаква работа?
Знам друго – този начин на мислене е вреден. Като програмист не мога да си позволя да спра да уча. Започна ли да отхвърлям новото, след пет години ще съм безполезен. Още повече – ако съм негативен, изпускам ред възможности да подобря уменията си.
Затова се опитвам да поддържам позитивна нагласа към новите неща. Усетя ли, че съм скептичен към нещо непознато, спирам и се замислям. Казвам си, че все още нямам право на мнение. След това вниквам в него. Не е достатъчно да прочета блог пост или книга – трябва да си поиграя, да го видя в различни контексти и да съм преспал над него. И чак тогава решавам какво да мисля.
В крайна сметка, нещата не са абсолютни – едно нещо не е изцяло добро или изцяло лошо. Обикновено една технология има предимства и недостатъци. Работи добре в един контекст и лошо в друг. Части от нея са изработени добре, а от други има какво да се иска. Картинката не е черно-бяла. И ако се вгледам в нея внимателно, имам възможност да науча нещо ново. Или да окача нов инструмент на колана си.
А понякога технологията/идеята е загуба на време. Не може всяка прочетена книга да си заслужава. И това е ОК.
Има и друго – прилагайки „да/не“ без да задълбаваш си спестяваш страшно много време в ресърч на евентуално не особено полезни неща. Може би туй е качеството на умния човек – да отсява важно от неважно?
Да се мъчиш да слагаш етикет „правилно/грешно“, и да съставяш мнение е неправилната стратегия. По-скоро млъкни, послушай, и прецени дали и кога да разбереш нещо повече по въпроса. Вярно – няма да имаш възможност да блеснеш :).
Може би най-трудното е да спреш да отхвърляш. После е по-просто. Трябва да набележиш ключовите моменти в някоя потенциално интересна тема, която е извън твоя текущ периметър на действие.
Ако темата е наистина занимателна, фактите и мненията започват да те преследват навсякъде. Сравняваш всяко следващо инфо, с това което вече имаш, и оформяш хопотеза. Колкото по-детайлна става хипотезата, толкова по-конкретни въпроси имаш. Накрая си съвсем нетърпелив, отваряш Google и стъпка по-стъпка отговаряш на въпросите си.
Този подход на запознаване с новите неща елиминира подготовката и стреса при „първоначалната среща“, замествайки я с нещо по-лековато и не по-малко забавно.
Според мен изложените от автора възгледи могат да се доразвият: не просто не всичко е абсолютно, ами нищо не е абсолютно. Поставено по-строго математически – винаги може да се избере множество критерии, по които фиксиран обект да е оптимален (което е очевидно поради факта, че всеки елемент на множество е различим от всички останали). В този смисъл съм забелязал, че програмистите като цяло (включвам себе си, разбира се) стават все по-„смирени“ с времето. Дори едновремешното ми твърдо мнение, че PHP е боклук, който за абсолютно нищо не става и трябва да бъде забранен със закон, бе смекчено напоследък. Продължавайки в този ред на мисли – много е полезно за програмисти да се срещат с по-кадърни и опитни от тях – не защото ще научат нещо конкретно, колкото че ще научат, че има какво да научат.
Още едно наблюдение – това, че даден език е много по-як от друг, може и да не е обективно валидно, но когато човек разработва проект и избира на какво ще се работи, трябва да избере любимия си език, понеже просто го познава най-добре и няма да се „простреля в крака“. А пък и човек обича най-много даден език/платформа/технология, понеже го разбира най-добре. Забелязал съм, че хората се оплакват от спецификите на даден език, когато не ги разбират, а обратно, когато ги разберат, ги харесват и се оплакват от липсата им в други езици. За жалост изглежда не съм забелязал сериозно обучение по парадигми поне в своето учебно заведение – ФМИ на СУ.