I learned this in the late 90s. Up until that time, I was convinced that frameworks were where all the true value was, and that, for example, languages were completely unimportant.
Then I started to work for a company making a content management system. One that actually worked, which at that time absolutely was a USP. Anyway, we were on various Unixes, mostly SunOS/Solaris, but also AIX and others. The code base was "object-oriented C" and workable, but puh.
I got approval to try to get us on Objective-C + a Foundation (first GNUstep, later libFoundation) and it not only worked, but worked out spectacularly well for us.
Of course there were essentially no frameworks, no Enterprise Objects Framework, no WebObjects, just the Foundation (and we had to contribute to those as well). This turned out to be much less of a problem than I had feared, and in fact. In fact, I would say it worked spectacularly well.
That made me realise that frameworks were not nearly as important as I had thought, that a lot of technology problems are easier than we think and that we overcomplicate the solutions, particularly with huge libraries and frameworks.
I still think that frameworks can be extremely helpful, when applied well, but we are not very good at applying them well. I recently saw someone describe this as abstraction vs. indirection. We often aim for (and claim!) abstraction, but in most cases we just achieve indirection.
Real abstraction is wonderful, but rare. Indirection, on the other hand, is fairly easy, usually quite detrimental and very common.
So: if there is an actual domain you can abstract usefully, there is potential for a framework (though there are architectural issues). Your framework may require some indirection, but only if it allow more directness in expressing your solution.
Then I started to work for a company making a content management system. One that actually worked, which at that time absolutely was a USP. Anyway, we were on various Unixes, mostly SunOS/Solaris, but also AIX and others. The code base was "object-oriented C" and workable, but puh.
I got approval to try to get us on Objective-C + a Foundation (first GNUstep, later libFoundation) and it not only worked, but worked out spectacularly well for us.
Of course there were essentially no frameworks, no Enterprise Objects Framework, no WebObjects, just the Foundation (and we had to contribute to those as well). This turned out to be much less of a problem than I had feared, and in fact. In fact, I would say it worked spectacularly well.
That made me realise that frameworks were not nearly as important as I had thought, that a lot of technology problems are easier than we think and that we overcomplicate the solutions, particularly with huge libraries and frameworks.
I still think that frameworks can be extremely helpful, when applied well, but we are not very good at applying them well. I recently saw someone describe this as abstraction vs. indirection. We often aim for (and claim!) abstraction, but in most cases we just achieve indirection.
Real abstraction is wonderful, but rare. Indirection, on the other hand, is fairly easy, usually quite detrimental and very common.
So: if there is an actual domain you can abstract usefully, there is potential for a framework (though there are architectural issues). Your framework may require some indirection, but only if it allow more directness in expressing your solution.