Code Retreat на 9ти юли

Code retreat е интересен начин да усъвършенствате програмистските си умения. Събирате се група хора (четен брой) и решавате един конкретен проблем (Conway’s Game of Life). Работите по двойки (pair programming) с test-driven development. Пишете на сесии от 45 минути, след които правите кратка ретроспекция, изтривате кода и сменяте партньора. И така цял ден, с различни хора.

Идеята не е да решите проблема. Идеята е да обмените умения и да затвърдите фундаментални познания. Това е адски добър начин да научите test-driven development или някой друг трик с текстовия редактор/шела.

Чух за идеята миналата година на NordicRuby, но чак през април се престраших да я пробвам. Организирах малко събитие в initLab, в което поканих само познати. Събрахме се 6 човека и направихме 5 сесии. Писахме на C#, JavaScript, Ruby, Python и дори Scala. Бяхме много доволни. Всеки си тръгна научил нещо.

Искам да организирам друг и този път смятам да поканя всички, които искат да дойдат. Събитието ще се проведе от 9:00 на 9 юли, събота в initLab. Ако искате да участвате сте добре дошли. Не е нужно да сте опитни в TDD — просто носете компютър и добро настроение.

Ето как ще протече:

Ще направим нещата „по книга“ – времето ще е 45 минути, проблема ще е Game of Life, ще трием кода на края на сесиите и ще ползваме test-driven development.

Всяка двойка ще се уговаря помежду си на какъв език да пише. Със сигурност ще си намерите партньори за C#, Java, JavaScript, PHP, Python и Ruby. Вероятно ще има всякакви екзотики.

След всяка сесия ще събираме всички и ще обсъждаме как е минало. Ретроспекциите отнемат към 15 минути, след което ще продължаваме с друга двойка.

За да компенсирам ранното ставане, ще има закуска и кафе в initLab. Ако имате по-специални изисквания (не ядете месо или сте веган), кажете и ще се погрижа. След третата сесия ще отидем в близко заведение да обядваме. След това се връщаме и продължаваме. Реалистично погледнато, ще направим 6 сесии и ще приключим към 17:00.

Първите 20 минути ще се запознаем и закусим, след което ще разкажа подробно как ще протече събитието. След това започваме първата сесия.

Събитието ще е напълно безплатно (включително закуската).

Не нужно да сте опитни в TDD. Въпреки това, имаме следните изисквания към всеки участник:

  • Носете компютър
  • Научете правилата на Game of Life. Ако имате възможност, пробвайте да няколко шаблона.
  • Изберете си езици, на които ще пишете и научете поне един тестов framework във всеки. Важно е да познавате инструментите и да можете бързо да пускате тестове.
  • Задължително подкарайте празен проект за всяка двойка (език, testing framework), с които смятате да работите на вашия компютър. Не искате да прекарате голяма част от сесията в подкарване на проект.

Ако идвате, моля елате в 9:00 и останете за целия ден. Ако ще идвате, пишете ми на stefan точка kanev маймунка гмейл точка ком. Имам нужда да знам колко човека ще присъстват. Моля пишете само ако сте сигурни. Ако ви изникне нещо в последния момент, ще се радвам да ме предупредите.

Ако имате някакви въпроси, ползвайте формата за коментари, пишете в пощенския списък Software Craftsmanship Bulgaria или ми пратете писмо. Може да погледнете кратките отзиви от предишния code retreat или да намерите повече информация на coderetreat.com.

Ще се радвам да ви видя на 9ти!

Python @ FMI, v 5.0

Тази година с Николай ще правим за пети път курс по Python във ФМИ. Избираем е за студенти от втори курс нагоре. Ако попадате в тази демография, горещо ви го препоръчвам. Ако пък не, може въпреки това да дойдете и да видите за какво иде реч.

Първото събиране ще е във вторник, 1ви март, от 19:00 в зала 200. Ще се радвам да ви видя там.

Видео от 2010

През 2010 имах честта да говоря на три конференции – WebTech, OpenFest и WordCamp BG. Доволен съм и от трите. От две от тях има видео:

Слайдовете са на обичайното място.

През 2011 ще се опитам да се представя още по-добре.

Pragmatic Thinking & Learning

Като (добри) програмисти, отделяме сериозно количество време да подобрим работата си. Усъвършенстваме програмния език, текстовия редактор, работната среда, всевъзможните библиотеки и дори скоростта на писане. Но често пропускаме един от най-важните инструмени – умът ни.

Continue reading

Какво харесвам в pair programming?

Pair programming е една от по-скандалните практики в Extreme Programming. В нея двама програмиста работят заедно на един компютър. Клавиатурата е една и се предава от време на време. Подходяща метафора за това е двойката шофьор и навигатор. Диалогът е ключов – раждат се идеи, пречупват се през общия опит и резултират в код. Като практика, pair programming претендира за (1) по-добра ефективност, (2) по-високо качество и (3) по-малко дефекти.

За първи път правех pair programming през 2005. Това е страхотен начин на работа и горещо ви го препоръчвам. Има ред предизвикателства – да убедите мениджмънта, да се сработите с колегите и дори да си промените навиците (например никакъв IM). Ако се справите с това, резултати се виждат бързо.

Не целя да ви продам идеята или дори да ви обясня какво представлява. Искам само да разкажа защо ми харесва да работя така: Continue reading

Нагласа

Спомням си програмистски разговор отпреди осем години. Още бях в училище. Ползвах Windows, знаех (почти) всички особености на C++ и можех с лекота да разплитам спагети код. Или да го пиша.

Разговарях с един приятел. Бях прекарал последните няколко години в усилено писане на C и C++ (в училище). Занимавах се с OpenGL и линейна алгебра. Той пък бе открил Java. Водехме дълъг разговор кое е по-добро – C++ или Java. Спомням си как ми каза „Java има много добър garbage collector“, на което отговорих с „Е какво, не можеш ли да си управляваш паметта сам?“. Той отвърна „Мога, ама защо да се занимавам?“. Бях изненадан. Защо не разбираше, че garbage collector-а е излишен? Всеки адекватен програмист може да си управлява паметта. Пък и несъмнено е по-бързо. Не успя да ме убеди.

Continue reading

Dijkstra & Design Patterns

Дейкстра има много известни размисли. В On the cruelty of really teaching computer science той твърди, че студенти по компютърни науки трябва да прекарат първите си няколко години далеч от компютри и да се занимават единствено с формална манипулация на символи.

Доналд Кнут е несъгласен (из Coders at Work): Continue reading

OpenFest 2010

Беше минала седмица. Видях се с ред приятели, слушах интересни презентации и се порадвах на хубавото българско време. Хареса ми. Чакам с нетърпение следващия.

Както писах по-рано, говорих за MongoDB. Качил съм слайдове в SlideShare. Дори не се опитах да правя снимки тази година – Ники и без това се е справил в порядък по-добре, отколкото аз бих могъл.

Ето какво ми направи впечатление: Continue reading

Ще се видим на OpenFest

Не мога да повярвам, че мина година от последния OpenFest. Не знам дали ми се струва много или малко. Времето изтече толкова странно, че не мога да преценя дали бе добро или не. Но стига съм се разсейвал!

Конференцията е този уикенд. Входът е свободен. Надявам се да ви видя там. Ще говоря за MongoDB. Темата ми е интересна, особено след като ударих на камък с CouchDB преди.

Ето и списък с интересните за мен презентации, в хронологичен ред:

Презентация от WordCamp

Прецентацията ми от WordCamp-а е тук. Броят слайдове в Keynote е 150, но след експорт стават повече (заради преходите).

Ключови моменти

  1. Разписването на една идея я затвърждава. Когато седнете да пишете за нещо трябва да го подредите, да отделите същността от плявата и да попълните дупките в познанията си. От това се учи.
  2. Писането учи на комуникация. За да ви разберат, трябва да комуникирате ясно. Practice makes perfect. Комуникацията е важна навсякъде.
  3. Публиката ни кара да се стараем. Когато правите неща пред хора се стараете да ги правите по-добре. Публичните ангажименти ви карат да вземате по-насериозно плановете си.
  4. Позволява ни да споделяме. Ако сте екстроверт като мен, това да разговорите с другите за нещата, които ви интересуват, е полезно. Ангажират ви емоционално и придават по-голяма важност на информацията.
  5. От коментарите може да научите много. Получавате обратна връзка, разбирате за грешките си, разбирате за по-добри идеи. Учите се да комуникирате. Понякога участвате и в забавни спорове.
  6. Създава професионални контакти. Участвате в професионална общоност – давате (know-how и идеи) и вземате (авторитет и възможности). Създавате си публичен имидж пред колегите.
  7. Намирате съмишленици. Запознавате се с малко хора, които имат много сходни с вашите професионални възгледи. Завързвате с тях дългосрочни връзки, от които научавате много. Те са една от най-сериозните мотивации – мотивират ви да пишете и ви дават материал за нови постове.
  8. Учи да си честен със себе си. Публичните изяви учат на скромност и обективна оценка за себе си. Важна, ако имате високо мнение за себе си. Учи на скромност.
  9. Писането учи на ясна мисъл. Който пише ясно, мисли ясно. Подобрявайки стила си се учите на аналитична мисъл. Тя е безценна.

Apprenticeship Patterns

Книгата, която препоръчах. Страхотна е. Има безплатна версия.

Mind Maps

Това го споменах случайно, но няколко човека питаха. Хвърлете поглед на статията в Wikipedia. Има и книга.