Успешный программный продукт обычно проходит за свою жизнь через руки множества разработчиков. Вы — лишь одно из звеньев в цепочке опекунов вашего проекта, и каждая строчка кода, которую Вы написали — это оставленный Вами артефакт, который когда-нибудь будет изучаться Будущим Разработчиком. Также, как Вы унаследовали решения разработчиков, которые были до Вас, другие разработчики унаследуют решения, которые Вы делаете сегодня. Они получат от нас в наследство все наши недоразумения, срезанные нами углы, примененные нами недопонятые паттерны и техники, наше невнимание к деталям, нашу лень, наши изменения, сделанные на скорую руку, наших скелетов в шкафах, наше грязное белье. И гораздо реже — выгоду от нашей дисциплинированности, наших обсуждений и подготовок.
Рубрика «проектирование» - 30
Работая в интересах Будущих Разработчиков
2012-11-20 в 15:09, admin, рубрики: cooperations, rails, ruby on rails, документация, командная работа, культура кода, паттерны, проектирование, Проектирование и рефакторинг, рефакторинг, Совершенный кодРазработка сервера мобильных клиентов
2012-11-11 в 4:27, admin, рубрики: java, аукцион услуг “Аукнем”, библиотеки, команда, мобильные приложения, проектирование, разработка, сервер, технологии, требования, метки: java, аукцион услуг “Аукнем”, библиотеки, команда, мобильные приложения, проектирование, разработка, сервер, технологии, требованияОбратная сторона мобильных клиентов — сервер.
Введение
Не открою секрета, что разработка мобильных приложений в тренде – этому способствует стремительное техническое развитие: мобильные устройства с каждым годом улучшаются по всем характеристикам и становятся доступнее для широкого круга людей. Почти каждый, кто имеет на руках мобильный гаджет (будь то смартфон, коммуникатор или планшет) пользуется приложениями: браузером, клиентом электронной почты и мгновенных сообщений, играми, бизнес или финансовыми программами. И зачастую от пользователей скрыто то, что многие из приложений взаимодействуют с удаленным сервером: обмениваются с ним данными через Интернет.
По роду деятельности (Java разработчик серверных приложений) мне в команде приходится разрабатывать сервера для мобильных клиентов (за последние 2 года участвовал в реализации 3-х таких проектов для зарубежных компаний). Определился набор Java-технологий для решения задач такого рода, который варьируется в зависимости от требований и целесообразности (другими словами — желания), благо свобода при выборе технологий позволяет экспериментировать. Сформировавшейся точкой зрения и опытом хотел бы поделиться с сообществом.Читать полностью »
Почему так много сертифицированных отказоустойчивых ЦОДов аварийно встают?
2012-11-02 в 7:08, admin, рубрики: Tier, Uptime Institute, Блог компании КРОК, дата-центр, ит-инфраструктура, методология, отказоустойчивость, проектирование, стандарт, хостинг, цод, метки: Tier, Uptime Institute, дата-центр, методология, отказоустойчивость, проектирование, стандарт, цод
Есть два основных документа, которые чаще всего упоминаются при обсуждении стандартов центров обработки данных: это стандарт TIA 942 и классификация по уровням от Uptime Institute. Оба этих документа регламентируют уровни (Tier), что часто приводит к путанице: например, Tier III по TIA 942 и Tier III по Uptime Institute — это две большие разницы.
TIA vs Uptime
TIA 942 — Telecommunications Industry Association — Telecommunications Infrastructure Standard for Data Centers:
- Этот стандарт разработан ассоциацией телекоммуникационной промышленности США и, в первую очередь, касается вопросов организации структурированных кабельных систем в ЦОД, и в меньшей степени вопросов отказоустойчивости и других инженерных подсистем.
- Носит рекомендательный характер.
- Есть пошаговые инструкции и рекомендуемые схемы (помощь инженеру). «Делай как тут написано и получишь хороший результат».
- Соответствие стандарту заявляется владельцем объекта или исполнителем проекта (на уровне «Я делал как вы сказали, честное слово»).
- Обычно, на соответствие стандарту проверяется только проектная документация.
- Однажды реализованный объект не теряет уровень.
Как вырастить программу из прототипа
2012-10-18 в 8:57, admin, рубрики: agile, DRY, KISS, unite, выставки, говнокод, методологии разработки, Программирование, проектирование, прототип, прототипирование, управление проектами, метки: agile, dry, kiss, unite, выставки, говнокод, методологии разработки, ооп, проектирование, прототип, прототипирование Каждую неделю на профильных блогах мы читаем как нужно использовать методологию X и фреймворк Y, чтобы написать хорошо спроектированный и легко поддерживаемый софт. Нам постоянно говорят, что, мол, говнокод — это плохо, рефакторинг — наше все, дают те или иные очень важные сферические советы в вакууме. В большинстве этих статей можно встретить абстрактные философские нравоучения, например, вот это я распечатаю и повешу при входе в офис:
А что, если я скажу, что не все проекты одинаковые, и некоторые из них не то что можно, а даже нужно тщательно выращивать из прототипа? Об этом я рассказывал на конференции Unite'12, а сейчас расскажу вам.Читать полностью »
Проектирование с помощью сторибордов
2012-09-28 в 6:34, admin, рубрики: интерфейс, интерфейсы, печеньки, проектирование, юзабилити, метки: интерфейс, печеньки, проектирование Наверное, многие из вас слышали про раскадровки. Их рисуют на первых этапах создания фильма или мультика. При производстве программного обеспечения дорого пропускать стадию проектирования, а при съемке фильма это не просто дорого, а очень, очень дорого. Джонни Депп не будет грызть черствые бутерброды на съемочной площадке, пока режиссер решает, что нужно добавить еще три сцены с русалками и вставить в сюжет приемного ребенка и поменять возлюбленную. Поэтому в фильмах все сцены заранее прорисовываются и утверждаются, иногда даже на них накладывают музыку и прокручивают, чтобы ещё на первых стадиях оценить зрелищность и сюжет фильма.
В проектировании такую роль выполняют вайрфреймы и прочие быстрые прототипы. Сториборды, сохраняя название и форму, как в киноиндустрии, при проектировании интерфейсов выполняют немного другие задачи.
Про сториборды я в первый раз услышала на курсе Human Computer Interaction
Преподаватель курса Скотт Клеммер рисует сториборд
Я не встречала ничего похожего в отчетах наших проектировщиков, а Клеммер говорил об этом, как о широко распространенной, всем известной практике.
Как оказалось, на западе этот инструмент довольно популярен, если интересно кем, как и зачем его используют, добро пожаловать под кат.
Читать полностью »
Как выглядит современная юзабилити-лаборатория
2012-09-20 в 9:21, admin, рубрики: Блог компании ВымпелКом (Билайн), дизайн, идея, интерфейс, лаборатория, продукт, проектирование, тестирование, юзабилити, метки: дизайн, идея, интерфейс, лаборатория, продукт, проектирование, юзабилити
Многие представляют себе юзабилити-лабораторию как пространство, где людям показываются прототипы продуктов, всё записывается и на основе полученных данных вносятся изменения в интерфейс. Да, это есть в лаборатории, но в то же время — это только вершина айсберга. Непосредственно тестирование — это уже зрелищный финал. До того, как вообще начнётся разработка первого прототипа продукта нужно сделать огромное количество разных вещей.
Юзабилити-лаборатория — это несколько помещений, в которых моделируются различные контексты использования услуг «Билайн». У нас три зоны: офис, дом и кафе. Все три зоны снабжены записывающим оборудованием, позволяющим специалистам точно увидеть и зафиксировать, что и как делает пользователь. Во все три зоны выходят «окна» из зала, где сидят наблюдатели — для участников исследования они выглядят как зеркала, для членов рабочей группы, пришедших понаблюдать за ходом исследования, они прозрачны.
Помещения лаборатории Читать полностью »
Иллюзия эффективной разработки: проектирование
2012-09-19 в 17:09, admin, рубрики: паттерны, Программирование, проектирование, разработка, Совершенный код, тренды, метки: паттерны, Программирование, проектирование, трендыЭтот пост является продолжением: Иллюзия эффективной разработки: управление
Все мы учились программированию, практически все из нас проходили стадию задания вопросов на форумах, в конференциях, бывало и в коллективе. Условно всех отвечающих можно разделить на 2 группы: те, которые знают ответ на ваш вопрос и те, которые знают как правильно. Они — пророки стандарта, они — апостолы правого дела, они и только они смогут безбожно затянуть ваш проект, прикрываясь совершенной архитектурой и вылизанностью кода. Они — мировая закулиса мира ИТ, которая, сама того не ведая, определяет, что будет в тренде в следующие несколько лет.
Если вам надоело читать, то просто скажу, что суть этого поста в том, чтобы вы думали своей головой. Или думали своей головой и держали мысли не высказанными, если планируете долго и продуктивно работать на текущем месте. Всем остальным добро пожаловать под кат.
Читать полностью »
Иллюзия эффективной разработки: управление
2012-09-11 в 18:41, admin, рубрики: agile, менеджмент персонала, менеджмент проектов, Оценка и экспертиза IT-проектов, проектирование, разработка, управление проектами, метки: agile, менеджмент персонала, менеджмент проектов, проектирование Я бы хотел обсудить неприятную для многих тему, а именно — ваши иллюзии. Иллюзии и убеждения относительно того комплексного процесса, который называется разработка программного обеспечения. Давайте сразу определимся, что такое иллюзия в данном контексте — это такое убеждение человека, не подкрепленное четкими научными доказательствами.
Разработка ПО пронизана такими убеждениями на всех уровнях, начиная от выбора языка программирования, переходя на технологию проектирования, и заканчивая технологией управления проектами. Интерпретация результатов результатов успешного проекта, если вы решите проверить какую-то методику на его примере, тоже может ввести вас в заблуждение, если вы не будете настроены максимально скептично. В этом цикле статей я попытаюсь дать вам несколько отправных точек для анализа эффективности той или иной методики разработки. В какой-то мере все, что будет написано далее является просто развернутым описанием основной идеи сайта programming-motherfucker.com.
Начнем пожалуй с управления проектами, как области, где поиск истины затруднен больше всего. И если хотя бы один человек, прочитав эту статью, откажется от внедрения в своем проекте Agile (в лице одной из его подметодик), то я могу считать, что время на написание этого текста было потрачено не зря.
Читать полностью »
Завяжите шнурки и подтяните свои штаны!
2012-09-08 в 23:51, admin, рубрики: архитектура по, никто не читает теги, проектирование, Проектирование и рефакторинг, разработка, рефакторинг, старпатИтак, что же замедляет разработку программного обеспечения?
Задумайтесь об этом вопросе на секунду. Как так выходит, что чем дольше Вы что-либо разрабатываете, тем сложнее и неприятнее добавлять в Ваше приложение новые фичи, попиливать архитектуру?
И почему раньше задачи решались так просто, а теперь выглядят запутанными и сложнореализуемыми?
Казалось бы, положение должно улучшаться, ведь Вы уже давно в проекте, разве нет? Почему всё происходит наоборот?
Читать полностью »
Интерфейсы классов и коллекции
2012-09-08 в 6:55, admin, рубрики: java, интерфейсы, проектирование, метки: java, интерфейсы, проектированиеВопрос о том, какими должны быть хорошие интерфейсы классов, непрост. Какие методы включить в интерфейс, какими должны быть их параметры, не надо ли вообще разбить данный интерфейс на несколько? Что будет с интерфейсом по мере развития проекта, потребуется ли его изменять? Наверняка подобные вопросы задавали себе многие. Я поделюсь своими мыслями об интерфейсах, предоставляющих доступ к коллекциям.
Предположим, у вас есть интерфейс для некоторых коллекций, которые помимо прочего функционала позволяют доставать наборы упорядоченных строк по ключу. То есть вам нужен метод типа
List<String> getElements(String key);
Но вы решили, что иногда эти наборы бывают огромными, либо трудно достать все строки сразу (например, некоторые реализации запрашивают их у какого-нибудь медленного веб-сервиса с дурацким протоколом). А применяете вы их, например, отображая на экране с постраничной навигацией или подгружая частями. Тут некоторым разработчикам придёт мысль расширить интерфейс как-то так:
public interface MyCollection {
List<String> getElements(String key);
String getElement(String key, int index);
List<String> getElementsRange(String key, int fromIndex, int toIndex);
int getElementsCount(String key);
}