One of the things I've learned from the production experience was the extreme value of getting feedback for your project as soon as possible. This might save you wasting a lot of effort, time and resources later on (or even save the project).
There is thing that I wanted to share for the same reasons - to get an early feedback.
As probably some of you know, in addition to my Lokad work (focusing on Windows Azure, Lokad.CQRS, high scalability and all sorts of fun stuff) I'm currently playing with various learning CQRS+Cloud projects in my free time (or of what remains of it). The goal is to learn continuously and keep personal development ahead of what is required by Lokad projects (this allows to work around potential problems and capture some nice opportunities).
Besides, real-world experience also helps to straighten the theoretical conclusions by polishing them with the practice. Some things might look great on paper and diagrams but be completely useless in the production. The only way to find them is by trying.
Preferably the first practice should not happen in high-importance production projects, so this is another reason to try and keep learning separate from production.
Each logical step or concept that is figured out, helps either to make the next step in scalability, complexity and flexibility of your projects. Or you can just make your existing projects simpler and less expensive. Salescast project, that I've been mentioning a couple of times in this blog, benefits from both. Just like a few others.
For example, compare concepts from xLim 1 of year 2007 (at the bottom of the xLim section) and the latest articles (xLim 4: CQRS in the Cloud). I think there was some subtle progress made by figuring out the theory, field-testing it in production and learning from it.
Right now I'm thinking about developing a few quick projects, that target some real-world business scenarios in a quick, dirty, but cheap and reliable way. Something like "Practical Cloud with a dash of CQRS". No complex ivory-tower theoretical constructs but rather implementations on top of this logic with hacks, where this makes sense. Eventually I'm planning to release these projects as open source.
In parallel I'm also thinking about composing an eBook on the subject with detailed dive into these projects, explanations of how, why, theoretical references and recommendations on handling extreme scalability and complexity cases (backed by the actual Lokad production experience). Basically, a quick learning course about practical Cloud/CQRS the way I would've given it if I were back at the university.
For the projects I'm deliberately trying to pick some niche where it's easy to get an application running and there is potential for lots of visitors coming for some free service (hence, creating real random stress, testing and verifying the underlying foundations of CQRS and Cloud development). It'll be probably non-Azure implementation as well (Azure is currently a perfect fit for Lokad, but for an ISV with extreme constraints on resources and friction it currently would not work out that well due to a number of reasons).
eBook itself will come for a price and will be more convenient, detailed and guided alternative to finding your way through the xLim/CQRS articles as they jump through various topics (original articles and materials will still be published and shared in the usual manner). Again, just like a learning course.
BTW, those that want to start learning CQRS/Cloud right now - you can just check out CQRS references section (links to various videos, blogs, articles and blogs that I've gathered), dive into first samples and tutorials from Lokad.CQRS for Azure and work you way through the xLim series (from bottom to the top). Greg's documents, video and project are probably the most valuable reference of them all.
Now these are just thoughts. Nothing is in motion (except for the first learning project which was an inspiration and foundation for the latest articles on CQRS and xLim series).
- What do you think? (even Yay or Nay would be helpful)
- What questions about practical CQRS/Cloud are the most pressing and important for you know?
- What do you think about projects? Would such samples (published as open source) help you out in your endeavors and how?
- Do you have any ideas about areas, where a simple CQRS application would help to solve some problem and would face a bit of scalability stress while dying so (preferably the stress would be dynamic)?
- There are quite a bit of materials on CQRS. Would you still be interested in such eBook that explains and walks over the theory, practice and experience in a structured and organized way fit for learning (focusing on practice and implementations)?