nicla driven development

Разработка 3.0

img

Когда-то я пришел к внутренней потребности оказаться внутри своего IDE, тонко настроить его для себя и расширять на лету по потребности под конкретный проект. Провозившись несколько месяцев с eclipse (прочитав пару книжек и написав тестовый плагин) я стал VIMером :) Простота, модальность, уникальный подход основанный на понимании человеческих особенностей, легкий интероп (unix way) с linux shellом ... После пары месяцев пищания и фрустрации - сплошной Joy.

В последнее время я думал над гением DHH, границами Ruby on Rails и каким может быть идеальный для меня web-framework и процесс разработки:

  • Простота в основе - минимум Accidental complexity
  • Ориентрованность на программиста и эффективную разработку с удовольствием
  • Плавный переход между фазами проекта и адаптация под текущий уровнь сложности

Eще части пазла

В нашем медицинском проекте мы уже пару раз замахивались на встроенный редактор некоторых частей проекта (customer extensions) - все выбросили конечно, но некоторые интересные результаты были достигнуты!

Как-то в общении Евгений Хлызов описал идею интерактивного фреймворка интегрированного со средой разработки (в духе smalltalk).

Hа первом питерском clojure митапе мы с ребятами рассматривали админку web-frameworkа caribou, в которой можно создатвать модели на лету.

Есть интересный проект Light-Table. Это интерактивная ide в браузере - позволяющая в реальном времени модифицировать и взаимодействовать с приложением.

DevOps - infrastucture as a code.

Работа с amazon и соприкосновение с firebase & nitrous.io.

Мой юзер экспириенс полученный в процессе освоения clojure в режиме (test & repl)-driven-development.

Фантазия

Вы нажимаете плоскую и цветную кнопочку и за несколько минут в облаке вам разворачивается окружение для разработки (например по шаблону - web). Создается приватный репозиторий, issue tracker & wiki на github.com или в другом месте. Какой-нибудь configuration-management настравиват staging, production & CI.

Вы заходите в админку уже запущенного приложения и прототипируете интерфейс, описываете сущности, потом в web-IDE (a-la Light Table) подключаете библиотеки и правите код внутри запущенного приложения постоянно его ощущая. В соседнем табе оно само перегружается. В веб-консоль дают обратную связь тесты и логи. Расширяете админку и web-ide под специфику вашего проекта - например добавляете свои генераторы и проектные соглашения. Добавляете в инфраструктурном проекте разворачивание riak - тестируете - потом все ставиться в dev, test & staging окружение.

На следующий день к вам подсоединяется второй разработчик: вы форкаете dev окружение для него и через несколько минут он приступает.

Весь стэк вам понятен и доступен, все есть живой код (он в основном декларативный и его не очень много), который вы можете прочитать, поправить, протестировать и перезапустить - от инфраструктуры до IDE.

Итого основные характеристики

  • Виртуализация
  • Все есть код живой и в тестах (application, infrastructure, ide ...)
  • Live coding (REPL & autotests)
  • Встроенный гибкий процесс (все фазы: Prototype, CI, CD, Acceptance Tests, Staging, Production, Monitoring)
  • Глубокая и постепенная эволюция среды, библиотек и приложения под проектную действительность

16 Jan 2014 niquola


comments powered by Disqus