воскресенье, 28 марта 2010 г.

Qcon 2010. День первый

Вводное слово было у Роберта Мартина, который видимо был призван задать позитивный настрой на все три дня конференции. Собственно, у него это получилось. Роберт с такой американской экспрессией рассказывал, как надо писать хороший код. Нового почти ничего не сказал, все те же прописные истины:

  • Функции - небольшой размер (1-4 строки - это нормально, больше - уже много :) )
  • Аргументы функций - в идеале 0. 1 нормально, 2 уже плохо, а 3+ вообще беда. Особняком стоят аргументы boolean - их вообще быть не должно (2 метода с двумя вариациями в названии замен)
  • Имена - чем больше видимость тем длиннее имя
  • Классы - 200-300 строк, 10-30 методов, 0-6 полей
  • тесты, продолжающаяся интеграция, парное программирование

Узнал, что моя обычная практика при внесении изменений в код (затронул класс - пофикси в нем все косяки которые там есть), затронул пакет - если есть что в нем улучшить - улучши. Эта практика небольших инкрементальных улучшений в "бэкграунде" - оказывается называется "Boy Scout Rule". Блин, может я еще что-то делаю, что как-нибудь прикольно называется, а я этого не знаю? :)

Еще новое слово, которое похоже будет все чаще звучать - Craftsmanship. В манифесте собственно все сказано, идея мне нравится, буду пользоваться.

В общем, было весело :) Запала хватило на весь день :)


Дальше я пошел в секцию функционального программирования на два доклада. Послевкусие после них оказалось не очень. Первый как будто бы рассказывал о функциональном программировании вообще, но по факту как-то больше о Scheme. Понравилась пара определений: функций (еще один тип данных) и замыканий (функции с их собственным локальным окружением, неизменяемым извне).

Второй доклад был больше о функциональном программировании в контексте параллелизма. По факту - о F# и о том, насколько лаконичнее в функциональных языках синтаксис. Презентация была достаточно информативна, правда ничего выделить не могу.


Интригующее название "The Craftsman Learns" заставило меня пойти на этот доклад после обеда. Докладчик сразу расположил к себе тем, что был босиком :) Узнал много нового:

  • Учиться это как плыть против течения. Если ты не плывешь вперед, тебе кажется что ты стоишь на месте, но по факту ты движешься назад
  • Спрашивать 5 раз "почему? зачем?" над каждой непонятной вещью
  • Проговаривать вслух вещи над которыми раздумываешь. Рассказать мучающую тебя проблему коту или мягкой игрушке - это может помочь не только сформулировать вопрос, но и тут же ответить на него :)
  • Думая над логическими/рациональными вещами, подключать нерациональную (правую) часть мозга - рисовать, говорить, дрыгать ногой :)
  • Делиться тем, чему сам недавно обучился - это поможет самому лучше понять (как в том анекдоте)
  • После изучения теории нужна практика. Причем внимательная и вдумчивая (я часто грешу одной теорией)
  • Ментальные карты - я даже на iPhone скачал приложение, которое их рисует. Чувствую, что такой техники мне не хватало, частенько бумажки просто исписаны без какой-либо структуры. С другой стороны возникает ощущение структурирования неструктурированного - то есть усложнение непонятного :)

Еще была пара исключительно программистских советов вроде учить по одному языку программирования в год или прочитывать одну техническую книгу в 2 месяц.

Не могу не отметить веселую презентацию. Рекомендую посмотреть.


Про отношения разработчиков и специалистов по развертыванию и сопровождению (людей следящих за системами в работе, следящих за ними, отвечающие за их работоспособность, горячую замену, системные апргрейды, окружающую среду и т.п.) я послушал в 15.00. Ходил собственно чтобы послушать, насколько в Дойче все плохо. Оказалось, что в Дойче всё замечательно. Ну или не всё. Но на твердую четверку. Итак, чего не хватает до пятерки:

  • отделять конфиги от бинарников (у нас не везде)
  • сделать конфиги легкодоступными для просмотра
  • проверять конфиги (имеется ввиду на рабочих станциях перед релизом)
  • показывать значения всех конфигов (значения по умолчанию, даже если они в коде)
  • failfast - быстропадающее приложение. Оно должно падать как можно быстрее, если конфиг некорректен


Больше всего в первый день я ждал доклада про Skype. Рассказывал молодой парень с таким прикольный акцентом. :) Оказывается Skype это:

  • С и С++ в ядре и транспортном уровне
  • Delphi (c ума сойти!) в интерфейсе для Skype клиента
  • PHP на сайте и онлайн-магазине
  • Postgre - БД и около нее

Лейтмотив автора был "функциональной архитектурой должен кто-то заниматься". И "всё гениальное - просто". Больше он ничем не запомнился.


Так закончился первый день. Доклад "мамы Smalltalk" я в расчет не беру - он был уже после пива. Главное, что запомнилось из него - все крутые вещи были придуманы в 70х. Просто тогда у них железа нормального не было :)

2 комментария:

  1. Boy scout rule. Как то сильны среди разработчиков (их) военные метафоры :) вот наткнулся сегодня на "тренировочный лагерь" для разработчиков аддонов для firefox
    http://design-challenge.mozillalabs.com/resources/files/extension_bootcamp.pdf

    ОтветитьУдалить
  2. Хех, забавный. Стиль выдержан )

    ОтветитьУдалить