Keep it simple

IMO, software development often suffers from 2 aspects:

1- unexperience engineers re-inventing the wheels, which they didn't know it was existing.
2- Experience engineers making things more complicated than necessary.

Point once can be avoided by reviews.
But how can you prevent point 2? If the guy making the decision is THE specialist in its field, far more than you or anyone else in the company?

Maybe by sharing the experience and philosophy of very smart engineers:

"Keep it simple, stupid"
Kelly Johnson  - American Aircraft Engineer, known as an organizing genius.
"The principle is best exemplified by the story of Johnson handing a team of design engineers a handful of tools, with the challenge that the jet aircraft they were designing must be repairable by an average mechanic in the field under combat conditions with only these tools. Hence, the "stupid" refers to the relationship between the way things break and the sophistication available to repair t…

SOLID - OO Design Guideline

Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle

Clean your lambda's

Steps towards REST

OAuth / open protocol for simple secure authorization

"An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications...."
Further links:
OAuth Introduction
Create your own REST API Using OAuth Authentication - DevX
OAuth for REST APIs - Atlassian

Spring Boot ... best practices