Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are KISS and YAGNI at odds with the trends towards increasingly more sophisticated patterns and practices like SOA, DDD, IoC, MVC, POCO, MVVM? [closed]

It seems to me that Agile methodologies encourage us to keep things simple, and lean, and not add complexity and sophistication until its needed. But the pace and volume of technology change encourages the use of increasingly abstract, complex and sophisticated tools and patterns to solve problems that we may not have yet (and may never encounter) in complex ways with significant learning curves and significant investments of effort.

like image 306
JNappi Avatar asked Nov 29 '22 05:11

JNappi


2 Answers

Are KISS and YAGNI at odds with the trends towards increasingly more sophisticated ...

A car has an accelator and a brake, and a steering wheel that can turn left and/or right: it's up to the drivers to decide which to use when.

like image 99
ChrisW Avatar answered May 16 '23 08:05

ChrisW


I'll keep my answer short and let the experts lay it out better...

I think that KISS applies to everything you listed. You mention increasing abstraction and complexity, which, I think, balance eachother.

The systems we are developing today must be complex, because, most of the time, the solution to a complex problem is inherently complex. However, to keep things simple, we use abstraction. Even if our complex system is built with, say, eight layers, we can follow KISS by keeping each layer simple.

For instance, to pick an item or two off your list:

  • SOA is not complex because we can wrap service calls in a wrapper object. This object handles the connection and makes calls, which are pretty easy to do because they simply pass parameters on.
  • MVC is not complex because we clearly separate our logic. We have a simple controller for directing requests and setting up data, a simple model to represent our domain, and a simple view that displays whatever data is passed to it.

However, in both of these cases, the pattern as a whole (or the system, if you will) is complex and non-trivial. It is the fact that we consider small, simple parts one at a time, and then fit them together, that lets us maintain our mental model as we work.

like image 22
JoshJordan Avatar answered May 16 '23 07:05

JoshJordan