Recently Choon Keat introduced me to David Heinemeier Hansson’s latest thoughts in developing software. His thoughts stem from his interests in HTTP resources and that of a CRUD-constrained approach in application development. Of course, it’s Rails, but there’s nothing stopping us from applying the same principles in Java or any other platforms.
So what is the CRUD-constrained approach in application development? In essence it is that in all that you design, it needs to be constrained as a CRUD operation on a an object (Create, Retrieve, Update, Delete). That sounds pretty limiting — only CRUD? What about all those fancy business logic that is the heart of the application? Nope. Everything must be in a CRUD. If you have some logic (verbs) that doesn’t belong to a CRUD then you need to have a new object, and operations on it needs to be … you got it, CRUD. Radical.
I was quite thunderstruck when Choon Keat first explained this to me because I saw the similiarity between this and what I have always believed in. Simplicity, modularity and maintainability. It’s easy enough to understand why this is simple. Modular? The design is object-oriented (can it be not object-oriented?) and operations on the object are ONLY CRUD. What else can it be but modular? Maintainable? Since everything is expected to be CRUD, it is VERY easily to maintain the code.
But does it work? I don’t know actually. But it is a very compelling philosophy that twists things around. To me it’s like being analog all your life and suddenly this newfangled thing called digital comes along. It’s all 1’s or 0’s. You’ll feel uncomfortable as hell — what?? only 1 and 0? How limiting! But there’s a LOT of 1s and 0s.
Gotta try this.