среда, 3 февраля 2016 г.

Асинхронные постусловия в библиотеке Code Contracts

На прошлой неделе я выкатил релиз-кандидат новой версии библиотеки Code Contracts (v.1.10-rc1). В этом релизе было поправлено довольно много, а главной «новой» возможностью стала вменяемая реализация асинхронных постусловий.

Для начала стоит напомнить, что такое постусловия вообще, и асинхронные постусловия в частности.

Постусловие метода – это некоторое условие, которое должно быть истинным при успешном завершении метода. Например, постусловие может гарантировать, что возвращаемое значение не будет равно null, что перед завершением метода Start, состояние будет равняться определенному значению (например, Starting) и т.п.

понедельник, 11 января 2016 г.

О книге Барбары Оакли «Думай как математик»

DISCLAIMER: если вы проходили курс Learning How To Learn на Coursera, то в книге не будет толком ничего нового. С другой стороны, если вы курс таки проходили, то знаете, что space repetition – это весьма полезная техника, а значит книга может быть полезной даже в этом случае.

image

Любопытно, что мы, программисты, как и представители многих других профессий, тратим существенную часть нашего времени на обучение. Мы учим всяческие новые технологии, новые концепции, паттерны и парадигмы, или просто подключаемся к новому проекту на десятом году его жизни. Это значит, мы тратим много времени на обучение. Поскольку мы учимся большую часть нашей жизни, мы должны быть весьма хороши в этом. Правда? Ну, как вам сказать, чтобы не обидеть…

среда, 6 января 2016 г.

Ретроспектива 2015

Недоеденный салат оливье, ошметки мандарин по всему дому и елка, намекают на Новый Год, а значит пришло время подвести итоги года предыдущегоJ

Прошлый год оказался довольно насыщенным на события: я дописал и опубликовал книгу, сменил команду, начал активно пилить Code Contracts и у меня родился сын! Интересно? Еще бы! Подробности под катом.

понедельник, 28 декабря 2015 г.

Критика книги Боба Мартина «Профессиональный программист»

У меня со стариной Бобом складываются довольно сложные односторонние отношения. Когда-то, он был моим чуть ли не кумиром, но после внимательного прочтения его книги «Принципы, паттерны и методики гибкой разработки» мое мнение сильно изменилось. Теперь же любой его труд мне читать стало заметно сложнее, поскольку явно начал проявляться «баг» под названием «подтверждение предвзятости». Я стал находить все больше и больше непонятных мне моментов и все меньше полезных советов. Но поскольку большинство книг «дядюшки» Боба весьма известны и обладают высоким рейтингом, я не могу пройти мимо и не поделиться с вами своим впечатлением от прочтения очередного его творения.

Книга «Профессиональный программист» (Clean Coder: A Code of Conduct for Professional Programmers) относится к жанру, который я называю «философией программирования», по названию одноименного форума на rsdn.ru, где было принято обсуждать вопросы стиля, кодинга, гайдлайдов, технического флейма по поводу языков программирования и тому подобных вещей. Популяризаторами этого жанра были такие замечательные авторы как Хант с Томасом и своим «Программистом-прагматиком», Джоэл Спольски со своими записками о программировании и многие другие.

Я вижу две ключевые пользы от таких книг:

  • Расширения кругозора
  • Повышение мотивации

Например, читая книгу Энди Ханта и Дейва Томаса вы узнаете о «теории разбитых окон»; правиле Деметры; вы узнаете о пользе и сложностях общения в коллективе; поймете, что важно говорить «нет»; убедитесь, что сбор требований – дело сложное и пользователь сам не знает, чего он хочет; узнаете о трюке с резиновым утенком при отладке и будете с осторожностью заявлять о багах в компиляторе и операционной системе и станете больше уделять внимания своим собственным ошибкам. Вы познакомитесь с десятками разных концепций и пополните копилку книг для чтения в будущем.

четверг, 24 декабря 2015 г.

О трудозатратах на саморазвитие

У меня к вам внезапный вопрос: а сколько вы тратите времени в неделю на саморазвитие? Час? 5, 10, 20? Я спрашиваю не из праздного интереса. Мне самому довольно часто задают этот вопрос и мне бы хотелось собрать некоторую статистику.

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

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

вторник, 1 декабря 2015 г.

О дружбе значимых типов с ООП

Камрад @ViIvanov в своем блоге поднял интересный вопрос о значимых типах и ООП. По сути, это был развернутый комментарий к моему посту «Пишем простой анализатор с помощью Roslyn», в котором я упомянул, что структуры плохо дружат с ООП. Вячеслав высказал очень разумную мысль, что наследование не является ключевой особенностью ООП, а значит ограничение значимых типов в этой части не должны делать из них граждан второго сорта. Ну что ж, пришло время развернуть мою мысль поглубже.

Начнем с того, чем же для меня является и не является ООП. Мое ИМХО в том, что ООП, как и проектирование в целом, основано на двух китах – абстракции и инкапсуляции (а не только на инкапсуляции, как выразился Вячеслав). Абстракция позволяет выделить существенные аспекты поведения, а инкапсуляция является тем инструментом, который позволяет спрятать ненужные подробности и детали реализации с глаз долой.

воскресенье, 29 ноября 2015 г.

Анонс конференции DotNext 2015 Moscow

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

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

Итак, поехали.