Около дебъгването

Има една история (от tdd), че дебъгването Is Evil. Дебъгването като процес на фиксване на бъгове трябва да бъде подменено с писане на тестове, които “доказват” бъга, и според които го фиксваш.
- Из българският пощенски списък за Ruby on Rails

Искам да добавя нещо, макар да съм сигурен, че автора на горното е наясно. Целта на дебъгването е да разбереш как точно работи приложението ти, а не да ти идентифицира бъговете (съответно името му може би е малко грешно). Това за което протестира една част от програмистското население: тъпо e да ползваш дебъгване вместо unit тестове. Например да изпълниш кода в дебъгера след като го напишеш за да се увериш, че работи. Да го зачеркваш дебъгването от картинката по тези причини е като да забраняваш предефинирането на оператори - премахваш един много полезен инструмент, за да “предпазваш от грешки” хората, на които не им се мисли много.

Но обратното също е доста лоша идея - да използваш тестването вместо дебъгване. Последното ти дава подробна информация как работи отделен пасаж от кода, докато тестовете служат да правят системата по-устойчива на промени. Теста ти помага да откриеш че има проблем, докато дебъгването – да намериш някакво решение. Съответно, колкото и подробни и задълбочени тестове да правите, те няма да ви помогнат да намерите off-by-one грешката или мястото, където предавате една променлива вместо друга.

Съответно цитираното ми звучи като стандартния резултат от игра на развален телефон в ИТ бранша. Някой казал “Това че пускате кода в дебъгера не е достатъчно добър гарант”, друг добавил “Да, по-добре пишете тестове, вместо да ползвате дебъгера за това” и преди човек да се осъзнае, вече е широко разпространено мнение в мрежата, че TDD зеалотите отричат дебъгера и съответно или са нещастници и съоветно цялата им философия е тъпа или трябва и ти да почнеш да “отричаш дебъгера”, ако искаш да си част от готината им групичка. Както да го погледнеш, не е на добре.

ICQ и UTF8: Не бъдете индианци

Добре бе, мама му стара. Програмисти сте. Знаете какво е UTF8. Знаете че ми позволява да смесвам български, немски (Grüße), японски (松本行弘), норвежки (færøysk) и иврит (יהושע) в един текст. Разбирате, защо е тесла да има много различни кодировки и какви пречки поставя това пред вас като програмисти и пред повечето хора като потребители. Ако имате малко акъл в главата, силно ви се иска целия свят да ползва една кодировка.

Мо’е ли да ми обясните, тогава, защо не мо’ете си настроите ICQ-то да работи с UTF8? За първи път ли виждате компютър? Не схващате каква е разликата между ляв и десен бутон на мишката ли? Тях мудерни тихнологии са твърди трудни и ни мой са оправите?

Моля ви, не бъдете индианци. Вземете и си оправете проклетите клиенти така, че да ползват UTF8. Помогнете на вашите дружки и колежки. Ако клиента ви не може, просто си намерете друг. Както направихте преди време с Internet Explorer и минахте на Firefox.

А докато направите това, ако ви трябвам ме търсете на GTalk.

Код и стойност

Ръкописите не горят.
- Воланд

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

В една от творбите на Михаил Булгаков героят създава ръкопис, който в последствие захвърля в камината. Когато научава това, Воланд му отговаря с горния цитат. Много дълбока мисъл и има прекрасен паралел с програмирането. Read More »

Подход

Програмистските блогове са за споделяне на опит. И като притежател на такива (блог и опит) ми идe отвътре да споделя малко. Искам да пробвам нещо - ще разкажа подробно за проблем от работата ми и как го решавам. Не мисля да навлизам в технически детайли, а да илюстрирам моя подход. Демек ми е интересно как другите хора от занаята работят и съответно може на тях да им е интересно как аз работя.

Не съм сигурен какво ще излезе, така че при неуспех ще трябва да потърпите (или просто да не четете). Но в случай, че се окаже интересно, хвърлям ръкавицата на няколко от познатите/приятелите ми. Смятам че имат хубави приказки за разказване и поне аз бих ги чел с удоволствие. Номинираните са Петьо, Свилен, Ники и Митьо. Бих добавил и Riznlog, но не познавам пичовете а и едва ли ме четат. Read More »

Неща които мразя: хейтърите

Едно от най-противните неща в интернет. Това са хората, които отговарят на всичко с негативно и деструктивно отношение, без да артикулират някаква разумна причина. Харесват си нещо и решават вокално да изразят, че то смуче. И за целта не ползват ни логика, ни риторика - просто наливат дълбоко пропитата си омраза в жлъчен текст, който изпляскват някъде пред очите на всички. Предпочитани медии - форуми и блогове (под формата на постове или коментари към постове).

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

Стана ясно, нали? :)

Думи от занаята

джудо
минимални усилия за максимален резултат; подход, в който се избира най-евтиният (откъм време, усилия и ресурси) път, който би довел до най-голям резултат
кайзен
изграждане на продукта чрез инкрементални стъпки, всяка от които предоставя малко, но цялостно подобрение

Read More »

Съвременна машина на времето

Двигател, генериращ енергия от нищото - перпетум мобиле - е невъзможна концепция. След като направили това заключение, физиците започнали да търсят перпетум мобиле “от втори род” - двигател, който не прахосва излишна енергия (КПД 100%). Уви, и това май е възможно.

За модерната физика пътуването във времето изглежда доста фантастично. За да се утешат, звездобройците сигурно ще опитат да потърсят някаква машина на времето “от втори род”. Уви, след като ударят на камък и се разочароват за пореден път, съм готов да предложа следващото най-добро нещо - машина на времето от трети род, или поне както аз си я представям. Тя е проект с отворен код на име DOSBox. Read More »

Изворът на идеите

Класическият мит, който никога не ми се е случвал - Добрите идеи идват в тоалетната. Или в банята. Ако това важи за останалите, то аз не съм такъв късметлия. При мен добрите идеи идват в леглото, точно преди да заспя. Затворил съм очи, отпуснал съм след половин час въртене, виждам вече вратата към света на Морфей… и прас! Нещо страхотно ми хрумва. Ентусиазирам се и почвам разпалено да си мисля за него. Интензивно да си доразвивам идеята. Трябва да стана да си записвам или да поцъкам на компютъра за да ми мине ентусиазма. Само като си помисля колко добри идеи са си заминали преди да започна да държа тефтерче и молив до възглавницата си.

Но както и да го погледнеш, креативноста ми вреди съня. И то как…

Rebirth, част 1

Над 40 дни от последния пост в блога ми. Ако сте си помислили, че ми се е случило нещо от голямо значение… правилно сте си помислили. Последните пет седмици бях в интензивен период касаещ Адския проект, който търкалям през последните две години. Това включва финалната права за завършване на всичко, истерия покрай deploy, дълга и приятна двуседмична почивка по празниците, пускане на версия 1.0.1 (по-точно 1.0.0.1) и онази досадна поддръжка в първите дни след release, изпълнена единствено със ситни подобрения. Понеже това бе “основният” ми проект толкова време, той оказа голямо влияние както в професионалното ми развитие, така и в личния ми живот.

Ще ми се да споделя някои от нещата които научих от него. Ако не за друго, за да има къде да ги прочета след време. И ще ги разбия на няколко поста - така хем да не отегчавам малкото хора четящи този блог, хем ще се върна плавно към навика да пиша тук. Read More »

All work and no play

Интервютата за работа са изкувство. В тях интервюиращият прави всичко възможно, да разбере максимално информация за интервюирания. Малко хора разбират, че процеса е двустранен - кандидатът също има възможност да научи за компанията. Ето една кратка идея за какво да питате на следващото интервю:

All work and no play

Сериозно.

И ако не чете sinfest, време е да започнете. Наистина.