Понятия

Наскоро ми разказаха за едно островно племе, което няма в езика си думи за числа. Когато им показвали снимки с по пет и с по седем камъка, те не правели разлика – за тях купчините представлявали едно и също. Във френския език има две различни думи за стол и стол с облегалки за ръце. Ако един французин ви дойде на гости, има много по-големи шансове да запомни какви са били столовете в къщата ви. Все симптоми на един интересен факт – думитете с които боравим моделират начина ни на мислене и на възприемане на света. А когато става въпрос за софтуерно разработване, моделират и начина ни на работа… Continue reading

Java, MIT 6.170

Наскоро си припомних материала, който Мило водеше на курса „Разработване на приложения с Java“. Това е доста лошо име за този курс, тъй като обекта му е съвсем различен. В оригинала си е нещо от рода на „лаборатория по разработване на софтуер“. От него може да научите доста интересни хавици. Като цяло фокуса му е ООП, но се говори за по-концептуални неща като абстракция, предствяне, „договор“ (contract), интерфейси и редица „теоритични“ неща, които на мен поне ми бяха от ползва в практиката. Базирано е на една хавица от MIT, в която университетските мозъци са наляли много мъдрост. Всичко е много добре написано и се разбира идеално. Горещо ви препоръчвам да му хвърлите един стабилен поглед, дори да се чувствате най-опитните в тази вода. Най-готината селекция от лекции е от есента на 2004-та – от нея научих доста за „концептуалните“ неща и смятам че си струва да им отделите времето. И понеже линк трудно се намира, ето ви го.

Софтуерни метафори

Наскоро започна твърде често да ми се налага да обяснявам процеса на разработка на „нетехнически лица“. И тъй като е бая сложно да говориш за рефакторинг, редизайн и итерации на хора, които просто мигат на тези думички, си припомних мъдростта на Стив МакКонъл. В Code Complete имаше цяла глава, посветена на метафори за софтуерното разработване – бе го сравнил с писане на жудожествен текст, градинарство, игра и прочее. Безспорно най-доброто сравнение беше с изграждането на някаква постройка. Наистина, „сградостроенето“ е доста сходно до това което ние правим като програмисти. И на двете места си говорим за „архитектура“ и „инженери“, планирането е адски важно и има огромна разлика между строенето на лятна кухня и небостъргач… Continue reading