It’s funny how things go!
I’ve spent months putting together the new version of the Software Factory (SF). I had a plan: I added fantastic new features, upgraded my tools, and fixed many of my productivity issues. I made things flexible and extensible. I could see it all come together. It was all working. It was going to be the most productive toolset ever. I was excited.
Then I released it. Things were much better, but they also were suddenly quite different. And I was stumbling for a while. I wasn’t sure what to do next?!
I went from 2 model types to 13 model types. I do not actively use all of them yet; in reality, most of them are a work in progress. But I want to use them. I want to find the best way to express the problem space without incurring limitations like I had on my legacy model type. Because once you start using a model type, it becomes challenging to modify it.
So far, I already have over a hundred models created using the original Component model. And I already have a lot of stuff built on this model type. Most of my templates are for this model type. While this model type has limitations, it mostly does the job.
This makes moving forward with new plans difficult. I plan on migrating most of my earlier models to the new model types, but to get there: I need to write converters and re-write my templates entirely.
I am still working on building and using the new models. But there is a long way until they are ready for use, and in the meantime, I still need to use and support my original models.
Managing volume of information
Making it easier to create and edit things is that you make many more things. The potential is fantastic, but now I need to figure out how to use it and manage that volume of information.
So far, I’m re-organizing my template management structure. Because I can now import template functionality from one project to another, I am building shared template project libraries to group functionality. This reduces duplication and makes it much easier to fix library issues in one place, where it was all done by copy/paste.
This provides me with a better structure. I reshuffled my existing templates and went from 5 template projects to 37. But, now, the system is more flexible. I have access to shared functionality, and I can support code generation for multiple languages.
But now I have to deal with 37 template projects and a total of 1095 templates, and I’m just beginning. And I’ve been working primarily on 1 model type so far. I’m just starting! But, at the rate I’m going, I will have hundreds of template projects in a couple months.
For example, this is my plan for the next couple of weeks;
Those are all different template projects (for 2 models only). Then, once all the templates are done, I need to create the gensets to map those templates to model elements. Already, I’ve moved from 5 genset to 13 genset, from 6 build definitions to 18, from 4 builds to 13, and again, I barely started.
And I have not even mentioned the build results. Now I can clean up my build results as I go, but I still have to find a reasonable way to manage all the generated source code. And there’s a lot of it…
The volume of information I need to handle is becoming a challenge. The new tools allow me to create a lot more information. I will need to be much more organized and structured in how I plan and execute my solutions.
The silver lining
I’m developing capabilities that I could only dream of, faster than ever.
All this is exciting! But it’s also a little bit daunting…