Does anyone else have the feeling that solutions for simple projects are often overengineered? –

Application Programming Interface (API) Problem:

In a way, I have the feeling that many projects are overestimated so that all possible change requests can be dealt with, with the result that the change requests that have taken place can only be executed with great difficulty.

Almost every project I’m working on right now, I get this feeling. It is as if everyone is thinking about the api, the framework, etc. that we can add to the project to address this or that aspect without evaluating whether it is practical or necessary.

Does anyone else feel that way or what is the opinion of the community here?

How do you solve the API problem?

Solution 1:

I find that some older companies with senior management tend to be very inflexible about creating company code, while newer companies don’t have the backbone of the software they use to do this work at all.

The problem you describe seems to be on too high a level and they want to find a way to solve it all at once. The creation of a toolbox (think of standard libraries) will be useful for them in the long run.

I especially like UNIX: A few small utilities that do one thing and do it very well.

Solution 2:

Yeah, yeah, yeah, yeah, yeah, yeah.

– MarkusQ

Solution 3:

Absolutely – I think people too often confuse reliability and modularity with over-commitment.

Solution 4:

I think Dave Weiner captured the cyclical nature of this phenomenon:

The trick in each cycle is to counteract the complexity of
so that the growth can hold
. But you can’t hold back,
technicians love complexity, not only
because it gives them job security,
also because they really love it.
But as soon as the stack becomes too cryptic, the next generation
raises its hand and says
: We’re not gonna take care of
of this mess.

Solution No 5:

Guilty. Three levels of abstraction and six configuration files are simply more exciting to implement than a simple flow control branch.

Solution No 6:

Over-engineering is a hazard in any project, large or small. When writing code for an extension, there is always an interaction between writing code that is generic and extensible enough to allow further development, and code that is specific enough to facilitate it.

Each future hook has a cost and must be weighed against that cost, the probability that it will ever be used and the cost of reworking the hook later. More generic isn’t always better.

Regarding the use of a new framework or a new API, I believe that project managers should be carefully involved. With such a rapid development, practical self-study is part of the price of doing business (but of course it has to be reasonable).

Solution No 7:

I’ve only had this experience with people from Java: Let’s use spring! And hibernate! I also found this great validation package! And this one will create an XSLT to create XML forms to create javascript!

By the time I’ve found all the banks and can play it right, there are dozens of courses I should know about. And then they want to abstract all those parts! We can trade places. Or they don’t use hibernation, so we have to ignore them. Add a dozen additional conditioning classes.

By the time it was all done, 50 lines of pseudo-code had turned into a few thousand lines of cool stuff, and a hundred lines of business logic were trapped in his hairy, insect-infested hell.

I’m guilty of that myself, but only because I’m bored and I have to kill time.

Solution No 8:

The most important thing is the timing. A simple project that produces an Excel spreadsheet or website from day one can quickly expand, both in audience and size, and become an untenable mastodon.

Sub-technology is also dangerous. The world is full of practical people who will laugh at any attempt to contradict their opinions. Nobody remembers a year later when a simple decision cannot be enforced.

The trick is to find the right balance between the right amount of technique and the ability to adapt as things change.

Solution No 9:

I was bitten several times by applications that I quickly set up and which then became critical applications. Then I’d almost have to rewrite the thing. I just assume it’ll be critical now, so I’ll write it right the first time. This saves me time and effort in the long run. It’s so weird it’s lazy.

Solution No 10:

Today’s xkcd is absolutely true:
Signs that your programmers don't have enough work.

I think excessive mechanization is a byproduct of boredom. I think Jeff and Joel talked about this in the podcast, but the idea is that programmers who often integrate too many technical elements are in a rut and need a change of pace (Jeff and Joel suggested letting them do other tasks, like quality assurance).

Good luck!

Related Tags:

over engineering software,over engineering meme,is overengineering bad,over engineered synonym,over-engineering reddit,over engineered cars,over-engineering examples,over engineered code,why oop is bad,is object oriented programming dead,oops definition not found epic,oop vs functional,procedural programming vs oop,disadvantages of object oriented programming,full stack overflow meaning,full stack engineer salary india,full stack engineer degree,full stack engineer interview questions,full stack network engineer,full stack engineer job description,software cannot be over engineered,how to avoid over engineering,over engineered software,overengineering meme