Надолу, в амброзните пещери…

Познавате ме. Знаете, че съм способен на крайни психопатщини. Дори съм публикувал някои. Фен съм и на Making Fiends. Въобще, способен съм да стигна далеч. Нещата бързо стават сюреалистични.

Например, наскоро Ники имаше рожден ден. След много психонавтика, стигнахме до извода, че фригидни моркови се опълчват на шампоанената хегемония. Май в някакъв разговор за разликата между граматики от нулев и втори тип. В последствие бе стигнато и до хубава рационализация зад това изречение, т.е. измислена бе художествена случка, в която то (изречението) бе смислено. Бих го нарекъл Бачиев универсум. Не съм убеден дали този начин за построяване на прилагателно от фамилия би бил одобрен. А и сигурно този скромен текст започва да ви „идва нагоре“, дори и да не сте от ФМИ

Прочетете горните два абзаца пак. Много внимателно, обмисляйки всяка дума и линк. След това хвърлете един поглед на _why’s (poignant) guide to ruby. Надминава всичко, което съм виждал до момента. Автора му трябва да е гениален. Или да е изял кофа халюциногенни гъби.

throw new Exception(„Error’d“);

exceptions.png

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

И да, помня че имах блог. Знам, че не съм писал отдавна. Обещавам, че в близко време това ще се промени.

Учене чрез примери

В книгата, която чета напоследък, има хубава теза: учим се да кодим като гледаме чужд код. Всъщност, това е валидно за всички сфери на изкуството (композиция, рисуване, литература) и другите, не изцяло художествени занаяти (архитектура, спорт, компютърни игри). Това което ние, като програмисти, рядко правим, е да се учим от чужд код. Continue reading

Пластелин

Установих че имам бая различен спрямо познатите си подход като пиша код. Силно напомня игрите с пластелин от детската. Първо натрупваш няколко буци, докато се задържат заедно и постепенно добавяш детайли, променяш конструкцията и премахваш излишното. Докато не получиш крайната цел. Предполагам художниците правят същото – започват с най-обща скица, после постепенно добавят конкретни и твърди форми, цветове и детайли. Така правя с кода – изработвам основна работеща идея и после постепенно я опростявам, изчиствам и правя по-елегантна. Смътно ми се струва, че имаше много подходяща дума за това. Сякаш Martin Fowler го нарича refactoring.

Моите две стотинки: третирайте кода като пластелин. Не спирайте като закрепите нещо работещо. Не пишете на един дъх, след продължителен дизайн на хартия. Нахвърляйте основното и след това изглаждайте острите ръбове и добавяйте елегантност. Периодично правете крачка назад от платното и поглеждайте цялата картина преди да продължите. Резултатите са учудващо добри.

Абстракция, енкапсулация и индиректност

Ах, абстракцията. Излезте от дома, влезте в първия програмистки бар и кажете на някой „абстракция“. Това може да се развие само по два начина. Или ще се абстрахира от вас и ще продължи да си пие latte-то или (по-лошо) ще събере момчетата, ще ви издърпат навън и итеративно ще ви разработят час при зъболекаря. Ако го пробвате, задължително ми пишете. Не забравяйте да пратите адреса.

Но все пак имаше някаква истина в горното. Ако не сте заклет OOA/D архитект (вероятно не, защото иначе ще сте твърде заети с проектиране за да ми четете блога), то думата „абстракция“ вероятно предизвиква тръпки по гръбнака ви. В училище ме учеха, че това се нарича пежоративно, но ми се подиграват, като ползвам тази дума. Поради което ще кажа, че има отрицателна конотация. Също толкова криптично, но с по-голям шанс да сте го чували.

И тъй. Това което е по-малко очевидно, е че има две доста близки до абстракцията концепции – енкапсулация и индиректност. Но често чувам хора да употребяват едното, като имат предвид другото. Затова ще ви разкажа набързо картинката в моята глава. Continue reading

Разбиране, сложност и мисъл

Последния ми пост предизвика повече емоции, отколкото бях приготвен да поема. Очаквах да подразня доста хора, които в последствие да ме заклеймят като краен фундаменталист и да престанат да ме занимават с наивните си разсъждения по ICQ-та и GTalk-ове. Обаче не стана точно така. Като го написах, очаквах да остане неразбран. Сега ще направя допълнение, което също очаквам да остане неразбрано. Ще го отбележа пак, към края на текста. Continue reading

Кога да търсим нова професия?

Събудих се със сравнително добра идея как да помогна на толкова много объркани хора в избора им на кариера. Позанимавали са се малко с програмиране, учили са малко в университета, поработили са няколко месеца. Дали това е правилни житейски път? Как да разберем?

Ето класически проблем, който илюстрира много. Искаме да изпратим писмо до всички активни потребители, че системата няма да работи през уикенда. Едно „класическо“ решение на Ruby. Умишлено написано в не-ruby стил.

Continue reading

Интересно програмиране

Програмирането не ми е интересно.

Чувал съм горните думи редица пъти. Сред всякакви мои познати – ученици, биолози, музиканти, техническа поддръжка и дори програмисти. Докато смятам, че последните трябва да се преквалифицират във водопроводчици, то думите на първите леко ме учудват. Пръв ще кажа, че програмирането изобщо не е за всеки, но понякога ми е трудно да разбера защо на хората не им е интересно. Continue reading