2012-08-31

В потоке

Отпуск опасен: появляется куча времени поразмышлять на тем, действительно ли ты хочешь продолжать заниматься тем же. Дважды я менял работу после отпуска. На текущей работе первый отпуск чуть было не стал последним - настолько стало скучно. Но к моменту выхода в команде появился опытный разработчик: рубист и фанат гита, я еще написал тогда про идейного противника. А это предвещало море фана.

Поначалу были терки на почве слишком активных изменений: к моему выходу команда уже переехала с только начинавшегося ant-проекта на maven, а с Eclipse на IDEA, и на горизонте маячил JEE. Наконец, начали внедрять тестирование и реально использовать CI на Jenkins. Много криков было по поводу переезда с единой тестовой базы в mysql на кучку мелких yaml файлов - в итоге это оказалось не так страшно. Да и вообще тесты писать не так сложно, как казалось: стоило только начать. Интересно было делать ревью друг другу: после длительной работы вырисовывается среднее арифметическое в стиле и подходах, а новый человек приносит новый, альтернативный взгляд. К сожалению, продержался он с нами недолго и уехал покорять локальную столицу.

На этот же период пришлась доработка функционала, разбитая на двухнедельные спринты: неделя разработки и неделя тестирования и исправлений. К этому моменту выкристализовался адаптированный git-flow. Мы начали загонять все, что написано на железку и результат многомесячных усилий стало можно пощупать руками и увидеть, что все это действительно работает - это избавляет от страха "не взлетит".

Сейчас жесткие сроки по доработке к середине сентября, когда наш продукт должны пощупать первые пользователи. Желание услышать фидбек от реальных внешних людей мотивирует на работу, а там будет видно.

Стайл гайд написан деньгами

В каждой профессии есть набор прописных истин с разными последствиями при не исполнении. И если искра в забое может стать для шахтера последней, то в программировании все не так очевидно.

Не используй гото и глобальные переменные, комментируй код, не доверяй вводу, PEP 20, java code conventions  и прочее - все эти истины раз за разом повторяются новичкам, до полного усвоения. Если нарушать правила, код будет пахнуть, а с техническими долгами никогда не рассчитаетесь и стоимость изменений вырастет до бесконености.

2012-08-30

Как я мигрировал систему

На десктопе семерка стояла на IDE, причем рядом имелся SATA жесткий диск с достаточным количеством свободного места. Неудавшаяся миграция никак не давала мне покоя, и вооружившись жестким диском для бекапа всего нажитого, я таки решил осуществить этот процесс.

2012-08-25

Шок будущего. Часть 6

Продолжение статьи: Шок будущего. Часть 4.

 

Часть 6. Стратегии выживания


Управление временем


Огромный поток информации отчасти объясняет наш специфический выбор развлечений — чтение, фильмы, телепередачи в часы досуга. Иногда мы стремимся к высокому коэффициенту новизны, богатому потоку информации. В другие моменты мы активно сопротивляемся когнитивному возбуждению и тянемся к «легким» развлечениям.

2012-08-22

Шок будущего. Часть 4-5

Продолжение статьи Шок будущего. Часть 1-3.

Часть 4. Многообразие


Отличительной чертой массовых производств было жесткое единообразие и огромные партии. С развитием технологии и автоматизации эти требования отходят на второй план. Станки с цифровым управлением делают широкое разнообразие изделий малыми партиями экономически оправданным.

2012-08-21

Шок будущего. Часть 1-3

Элвин Тоффлер. Шок будущего. 

Монументальная трансгуманистическа книга, написанная в 1970 году в попытке сделать прогноз на ближайшие десятилетия, на фоне ускоряющихся перемен. С анализом проблем того времени, автор рассматривает возможные варианты их решения. По широте охвата различных сфер жизни, книга соперничает с “Суммой Технологии” Станислава Лема. Но при этом в “Шоке будущего” анализируется ближайшее будущее. Книга читалась фактически с маркером, для выделения наиболее интересных мыслей. Прогнозы, зачастую наивные, не так интересны, как анализ проблем и крисисов того времени: волна изменений с запазданием на десятилетия докатилась и до нас. Многие кризисы из описанных автором за сорок лет так и не были предолены. Из-за объема информации книга читалась очень тяжело и долго, но это того стоило.

Дальше идут закладки сделанные мной, при чтении книги. Курсивом выделены цитаты, квадратными скобками - сноски.

2012-08-18

Пешки 2

Ура, случилось то, чего мы все так долго ждали! Старики вернулись чтобы показать, каким должны быть боевики. Тонны патронов и всего два попадания.

Ходил на премьеру Expendables 2 в "правильном переводе". Фильм отличный, для полной картины боевиков детства не хватало голоса Володарского. Впечатление от просмотра не смогло испортить даже вступительное слово Гоблина с тупыми шутками и гоготом зала. Чака и Шварценеггера встречали аплодисментами. Рядом сидящие девчонки яростно негодовали, когда Билли захватили козлы Ван Дамма. Особо порадовал шутки актеров, над предыдущими ролями. "Ты достал со своим Я вернусь", "Крепкий орешек" и другие.

Надеюсь, будут еще фильмы со старой гвардией.

2012-08-14

Лучше бы не вспоминали

Ходили давече на “Вспомнить все”. На римейк не тянет, лучше бы не трогали классику. Титры в начале, обрывки в конце. Кино - попкорн. Половину фильма сидел в позе Джеки Чана.

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

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

Третий вопрос движение сквозь центр земли: как они бурили, как они ездят и не сгорают внутри, почему невесомость только в центре. Взлетать они должны были сразу по отправлению.

З.Ы. Борн, кстати, тоже ничего не вспомнив, был гораздо более поражен своим суперспособностям.

З.З.Ы.  Не смотря на бластеры, и прикольные хлысты стрелять спецназовцы так и не научились. Как синтетики, обладая компом в мозгах и идеальной моторикой, не могут не попасть в цель для меня так и осталось загадкой.

2012-08-11

Больше тестирования

Суть статей про Юнит-тестирование:

В правильных тестах не должно быть [1]
  • ввода-вывода
  • обращения к ресурсам
  • доступа к базе 
  • доступа к другим приложениям
Печально, что все этим же и заканчивается: если вы не можете протестировать ваш класс, то, скорее всего, он неправильно спроектирован. Для сложных случаев придется использовать магию моков, стабов и фикстур.

2012-08-04

Зрелость тестирования

Подумалось, что зрелость тестирования похожа на CMM и тоже разбивается на несколько стадий.

Начальная стадия


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

Повторяемая стадия


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

Установленная стадия


Тестирование автоматизируется. Сложный функционал вносится без опасения сломать систему. Архитектура системы начинает адаптироваться под тесты и, как следствие, понижается связанность между модулями.

Уровень 1.

Пишутся тесты для простейших классов и методов. С одним входом и выходом.

Уровень 2.

Тесты выполняются на единственной большой тестовой базе. Тесты очень хрупкие: важен порядок выполнения, регулярно возникают коллизии между тестами.

Уровень 3.

Тестовые данные разбиваются на фикстуры и каждый тест запускается в изолированной среде.

Уровень 4.

Взаимодействие с внешним миром тестируется при помощи стабов и моков.

Уровень 5.

Тестируется пользовательский интерфейс?
Пишутся интеграционные тесты?

Управляемая стадия


Видел одним глазом. Запрет на внесение нового функционала без покрытия тестами и документирования внесенного кода.

Оптимизированная стадия


1. Magic
2. ???
3. Profit

2012-08-01

Темный рыцарь: возрождение легенды


Сходили вчера на “Темного рыцаря”. Фильм был долгий, и, вцелом, понравился, на часы я не посмотрел ни разу - одна из моих главных метрик.

А дальше будут спойлеры.