Когда-то я пришел к внутренней потребности оказаться внутри своего 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