4 ms·
Just because uncle Bob says something doesn't mean it's true. Frameworks and stacks provide templates for building CRUD apps. Building CRUD apps (read: databas
by inglor 11y ago
Just because uncle Bob says something doesn't mean it's true.
Frameworks and stacks provide templates for building CRUD apps. Building CRUD apps (read: database skins) isn't a big technological challenge most of the times anyway. So picking a stack that abstracts most of it for you could be a great help to only focus on the parts you care about.
Not every project requires astronaut architecture and grand design. Half the internet runs perfectly fine without these considerations.
Scaffolding a project through the tooling of a framework (tooling matters!) and having something up in a day instead of philosophical debates about your data is huge. Having something up in production super fast because you didn't stop to think about architecture is perfectly fine for 95% of software projects that are just CRUD.
- dommer 11y agoMy inclusion of these two reading resources were only meant as examples. The reader is still required to make their own mind up. I haven't suggested astronaut architecture; the question didn't indicate the size/scale/importance either. 50% of the internet runs perfectly fine without consideration...wow! Have you looked at all the source code yourself to make such a ridiculous conclusion. Tooling does matter, but I'm suggesting the point of focus to start with is the requirements.
- inglor 11y agoAs a data point, 20% of the internet runs WordPress [1], think these people spent a lot of time thinking about architecture. A lot of time the problem being solved is in fact simple enough and easy enough to solve without thinking about architecture, not everything is a hard problem - and there is nothing noble about solving things over and over. The point I was disagreeing with was "Pick stacks as late as possible". If you have a large project by all means do that, if you're just building a REST API in microservice architecture, or you're building a blog or something that's fairly simple to model - you're perfectly fine picking a framework you like first. [1] http://w3techs.com/technologies/overview/content_management/all/ http://w3techs.com/technologies/overview/content_management/...
- dommer 11y agoI'll skip the flame about WordPress developers as I don't know any, or, viewed their work. If you think building micro service architecture can be done without consideration I'm lost for words. The question–as I've been rightly reminded–was 'CRUD Web App in JVM'; furthermore, we now know that the domain part of the application is already done, so my comment is moot. That just leaves CRUD, Web, and JVM.
- Scarblac 11y agoHe did start with the use case -- "a simple CRUD app". That is sufficient to start looking for a framework, in my opinion. Cases where that is wrong aren't simple.
- michaelmcmillan 11y agoIt seems to me that you intentionally misrepresent the argument to make it easier to attack. No one is claiming that Uncle Bob is always right or that an "astronaut architecture" is the correct design. On a different note, I would also recommend to not start picking the framework or stack: Instead I would start by creating a couple of basic classes that represent the business logic. I would also write tests for those classes. Furthermore I would probably introduce some repository classes that would interface with the database. Lastly I would try to find a library that handles HTTP routing - if the CRUD app was meant to have an HTTP I/O channel. Not everyone wants to "go fast and break things" or blindly let their codebase depend on a third-party framework. This is usually what ends up happening when you don't think about architecture. Check out the most popular Angular posts on HN this year [1]. Notice a trend? [1] https://hn.algolia.com/?query=angular&sort=byPopularity&prefix=false&page=0&dateRange=pastYear&type=story https://hn.algolia.com/?query=angular&sort=byPopularity&pref...
- Retric 11y agoI would start by creating a couple of basic classes How would you do that without deciding on a language/framework? Suppose the goal is a shared calendar and message boards plus some way to buy ski passes. Doing this using SharePoint is going to be vastly different than Ruby on Rails.