Не си достатъчно умен

Когато бях на 8 повечето ми съученици събираха миришещи листчета или колички. Аз пък правих първите си стъпки в програмирането – цъках DOS, правех магии с .BAT файлове и ръчках колкото можех по-навътре в компютъра защото ми беше интересно. В четвърти клас бях написал змията на QBASIC в текстов режим. На QBASIC се научих сам, четейки документацията и експериментирайки. Единственото обучение с учител, което съм имал тогава бе един курс по PASCAL в училища „Европа“ (от който почти нищо не разбрах). Бе, от малък си ме бива в тия неща. И тия ранни сблъсъци много ми помогнаха по-натам да разбера това-онова за занаята.

Разбира се, тия неща могат да се кажат за повечето добри програмисти. Краквахме сме софтуер, писахме бързо сортиране и сме правихме игри докато още ни се налагаше да ставаме в 7 часа за училище. И тогава беше много яко – викаш си „Иха, колко съм умен, к’ви дивотии правя“. После, като влезеш в университета е същата песен – задачите са лесни, научаваш повече, ставаш зъл C хакер – успяваш да държиш в главата си невероятно сложен код, на който повечето колеги само мигат. Отново си казваш „Иха, колко съм умен“. И после, след някоя друга година се хващаш на първата си работа – Java в някоя големичка фирма, където плащат добре. И тогава, изправен пред цялата плетеница от бисери и плява, си казваш „Няма к’во да губя време да чета седмици – направо ще се мятам. Достатъчно умен съм за да се оправя“.

Съжалявам, че аз трябва да ти го кажа. Не си достатъчно умен.

Всеки интелигентен човек, който познавам, страда малко или много от този проблем. Всеки. Мисли се за достатъчно умен. С кръв и пот се е справил да добие доста познание и умения, да ги използва и да произведе нещо от което да се гордее. И след някакво време започва да смята, че вече е видял всичко и може всичко без още кръв и пот. Безплатно. Голяма грешка.

Направил си супер яко приложение с OpenGL или MFC? Честито – трябват ни повече такива хора. Но това не значи, че знаеш Java. Там законите са други. Трябва да инвестираш известно време за да разбереш как работи езика. Да схванеш идеята на това да предаваш обекти по стойности и да ползваш garbage collector. И най-вече, да видиш как Java програмистите си решават проблемите. А не машинално да преписваш глупости от рода на if (4 == foo). Може би въобще няма нужда от това, защото foo = 4 не е валидно условие за if и няма как да паднеш в този капан? И може езика е достатъчно добре стандартизиран, за да не ти се налага да пишеш всичко сам, а вместо това да ползваш някоя готова библиотека за логване или рефлекции? Въобще, може би ще спестиш много главоболия и на себе си и на колегите си, ако вземеш да научиш как стават нещата, а не смяташ, че си достатъчно умен да се оправиш без учене?

Знаеш Perl в най-малките му детайли? Нещата на OPC ги парсиш с поглед за секунди? По-умен си от мен, значи. Но все още не си достатъчно умен – не знаеш нито Ruby, нито Rails наготово. Вземи, седни ги и ги научи. И после не пиши перлизми – виж как рубистите си решават проблемите и ползвай техните похвати. Не се опитай да пречупиш всичко през призмата на Лари Уол.

Същото важи и за хора, които дълго време са били на върха. Бил си най-добрия в класа/групата/офиса? Всички други са били далеч под нивото ти? Хубаво, случва се. Но това не значи, че положението е същото на новото място на което си отишъл. Може би там хората знаят повече? Може би докато ти си се разтапял от кеф колко по-добър си от околните, те са се бъхтели за да станат още по-добри? Може би не си единственият, който е написал змията в четвърти клас или е правил 3D графика преди да завърши средното? И може би всички тези неща нямат почти нищо общо с реалния свят, където има клиенти, колеги, истински проблеми и мъгляви изисквани?

Принципно не вярвам в скромността, но това е нещо за което не трябва да бъдеш нахакан. Въобще, престани да се мислиш за достатъчно умен. Никой не е достатъчно умен. Всички тези програмисти на които се възхищаваме не са достатъчно умни. Седнали са, научили са какво им трябва, помисли са здраво и чак тогава са минали към писане на код. С кръв и пот. Просто няма кратък път, независимо колко разбираш от C, OpenGL или Perl.

7 thoughts on “Не си достатъчно умен

  1. Hubris (макар че на мен ми звучи като нещо което ще хванеш по краката ако не ги миеш) е термина за това състояние на „много съм умен!“. Някой го беше определил като един от „смъртните“ грехове на професията. Keep a beginner’s vew.

  2. Не мисля, че тук проблема опира до умнота. Много хубаво беше написано в Practices of an Agile Developer как просто на програмистите им е трудно да „забравят“, това което са научили.

    Аз например сигурно никога няма да се откажа да пиша

    "BABA" == code
    . Опитвам се да се оправдая, че така поставям ударение върху стойността, а не върху името на променливата. Осъзнавам, че логиката ми е глупава, но продължавам да го правя.

  3. не, не говорих за това в този пост. Някои навици са трудни, съгласен съм, но това не е въпрос на навици. Въпрос е на его.

    Когато си добър в един момент започваш да се чувстваш, всякаш ти е достатъчно голям и да забравяш реалноста около себе си. И да правиш аматьорски грешки, които те карат да изглеждаш като пълен глупак пред останалите.

    И че много хора си мислят, че като знаят един език и една технология много добре, знаят всичко. Че това че знаят C им позволява да са по-добри в Python. Което не е баш така.

  4. Мда, понякога е лесно човек да се самозабрави. Особено ако нивото на някое място е ниско. Човек не само, че спира да се развива, ами има опасност и да „назадне“ в развитието си.

  5. Това, което си написал е много вярно, зная защото съм го изпитвал върху себе си и знам какво е да си „достатъчно умен“, след което да станеш „недостатъчно умен“. Но все пак всеки се мери според кръгозора си, ако гравитираш винаги около по-глупави все ще си достатъчно умен, без да е необходимо да се напъваш. Със сигурност такъв човек няма да е достатъчно умен по твоите или моите стандарти, но пък ще е доволен от живота си. А че програмистите много трудно променят навиците си.. много вярно, на това дължим купищата код оставен за съвместимост. Например на старата работа имах един, който се мислеше за „много умен“ и използваше редовно DDE…

  6. Съвсем прав си… Имам тонове опит с IE, CSS и HTML и въпреки това днес разбрах, че всъщност нищо не знам… И няма как, ще се сяда на зад–ка и ще се учи още и още…

    🙂

  7. Абсолютно съгласен. На мен ми се струва, че наистина съм „назадвал“ в определени моменти. А между другото, много яко, че виждам такова нещо в блог. По принцип блогаджийте пишат така, все едно са абсолютно всезнаещи. То не е лошо човек да си отстоява мнението, ама да не е сляпо.

    Респект.

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

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