4 ms·
Engineers are supposed to simplify complexity, taking something complex and making it simple. There are many engineers though that like to over-complicate and
by drawkbox 8y ago
Engineers are supposed to simplify complexity, taking something complex and making it simple.
There are many engineers though that like to over-complicate and add complexity because it makes them look smart or they think they are expected to create complexity.
Complexity through simple parts is ok, but overall the job of an engineer is to take complexity and break it down to simplicity and simple parts.
In the game dev world for instance, Unreal used to be needlessly complex, still is a bit, then Unity came along and made things simple, so Unreal then looked to make things simple.
Or in the web dev world, a framework might abstract away the underlying standards and add complexity on top to seem simple, but actually make the domain more complex with more to learn and push for developer lock in to the framework over basic standards and simplicity. The first version of .NET with WebForms was an example of this, other web frameworks can be seen as this as well.
Lots of engineering people like to look smart by managing complexity but it doesn't always need to be so complex. Sometimes time pressure can create complexity and thus technical debt due to the complexity. Some simplification is misguided, a one liner that isn't understood 6 months later is not simplifying.
An engineer that takes something simple and makes it more complex for no reason other than job security or to look smart is the worst kind of engineer.
- BigJono 8y ago> Or in the web dev world, a framework might abstract away the underlying standards and add complexity on top to seem simple, but actually make the domain more complex with more to learn and push for developer lock in to the framework over basic standards and simplicity. The first version of .NET with WebForms was an example of this, other web frameworks can be seen as this as well. I've been saying for years that this concept, that abstraction has a cost and isn't just a free simplification, is one of the primary misunderstandings that is holding the web ecosystem back. If every JS (and Python, and PHP etc) dev understood this, we'd be in a much better place, building much better software.
- flukus 8y ago> An engineer that takes something simple and makes it more complex for no reason other than job security or to look smart is the worst kind of engineer. I don't think most people set out do do this, most complexity comes from attempting to simplify things. A develop will see two similar bit's of code and try to stuff the commonality into a base class. In their minds it's simplified because there is less code but then when someone else picks up the maintenance it's more complex because now the logic is distributed. Then the requirements of each diverge slowly and over time each simple change is hacked into more code paths of this distributed logic. Eventually most simple changes take time because you have to be sure you're not breaking other potential code paths. On a more macro scale, complicated architecture is another symptom of this over optimistic pattern matching that humans are susceptible to.
- pdimitar 8y agoWe the programmers sometimes get too caught up on extracting seemingly common code that we don't stop for a minute and think "but does it really make sense to extract it?". It's a very classic problem and it's something that code reviews and pull requests for anything you do are such a good idea -- provided that your team is not a total echo chamber of course.
- stan_rogers 8y ago"The ERE [Enterprise Rules Engine] truly represents the absolute worst kind of software. It was as if its architects were given a perfectly good hammer and gleefully replied, 'neat! With this hammer, we can build a tool that can pound in nails.'" - Alex Papadimoulis