Fundamentals 5 min read

Should You Follow Proven Designs or Trust Your Own Ideas? A Practical Decision‑Making Process

The article proposes a three‑step approach—study best‑practice designs, evaluate them against your specific context, and select the most suitable solution—illustrated with a comparison of using a message queue versus Spring’s event system for simple order‑notification needs.

samdeepthink
samdeepthink
samdeepthink
Should You Follow Proven Designs or Trust Your Own Ideas? A Practical Decision‑Making Process

Reference Best Practices → Contextual Evaluation → Choose the Most Suitable Solution

First stage: avoid premature innovation; study proven designs from multiple real systems, incident experience, and complex modules before creating own solutions.

Absorbing outstanding designs builds technical judgment.

Best Practices Are Conditional

Adopting a practice without checking its preconditions is ineffective. The key question is which solution fits the current scenario.

Example: after an order is created, downstream systems need notification.

Many articles recommend a message queue (MQ). MQ enables the order service to publish an OrderCreated event, with inventory, points, logistics, etc., subscribing, allowing future consumers to be added without modifying the producer.

If the application is a simple monolith with no near‑term split, introducing MQ adds:

Operational cost of the middleware

Potential reliability issues

Duplicate consumption handling

More complex exception management

Additional instance expense

For a simple notification, the MQ layer can increase overall complexity.

A lower‑cost alternative is Spring’s built‑in event mechanism: publish an OrderCreatedEvent and let other services listen, achieving decoupling without the overhead of a separate MQ system.

Choose the solution that best matches the current constraints rather than the most advanced one.

Lacking Judgment Experience

If personal evaluation experience is limited, consult senior teammates to validate a self‑derived proposal rather than asking them to decide outright.

No Senior Mentors Available

Take responsibility: implement the design, ship it, monitor behavior, and revisit when requirements change. Refactor if the design proves inadequate.

Conclusion

Engineering focuses on finding the most appropriate solution within existing constraints, not on pursuing the most complex or cutting‑edge technology.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

architecturedecision makingbest practicesMessage QueueSoftware DesignSpring Event
samdeepthink
Written by

samdeepthink

Knowledge Planet: Old Dock's Tech Chronicles Zhihu: SamDeepThinking A technical manager who still codes heavily on the front line. From junior developer to tech lead, then tech manager, now leading the whole front‑ and back‑end development team—leveling up along the way. I have some insights on programming, career development, and tech management.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.