Keeping things simple
Keeping an application simple by design is not an easy task.
Features which might seem simple at first glance make an application significantly more complex over a period of time.
Features which used to take 2 days to deliver now take 2 months, and are still riddled with bugs.
The more complex a system gets the easier it becomes for a developer to introduce severe security issues or major system bugs.
Complex systems are difficult to analyze impacts across the board and have wildly inaccurate estimates and very complex code merges.
Another hallmark of a complex system is the fact that the time it takes for someone to review a merge request is inversely proportional to the complexity of the change.
In such cases, the code reviewer generally approves a request on the basis of how much they trust the developer or how far behind they are on the release deadline or how impatient the customer is.
Here's what you can do to keep things simple -
Don't accept solutions from product/operations/customers/etc. Try to understand why they came up with that solution and then arrive at the actual problem that they want to solve.
Every problem doesn't need to be solved. Ask or try to figure out if it's a real problem or is it the case where an existing feature is being used in the wrong way. Some problems might be temporary and might go away by themselves over time.
Every problem doesn't need a tech solution. The more code you write, the more code you will need to maintain. Try to figure out if it's a problem which needs a tech solution, or can it be solved by improving the process.
Every problem doesn't need to be fixed right away.
Use the Eisenhower matrix to prioritize urgent and important problems.
If someone comes up to you asking for an estimate to a solution they've already not really discussed with you – ask them to take a step back and discuss the problem they want to solve.
Ask why. 5 times. And if you don't get a good answer, don't be afraid to say No.
Apply first principles thinking to arrive at a solution which seems natural. Remember, no man-made system is perfect. Perfect, and harmonious systems exist only in nature.
Make sure that the solution doesn't add more problems than what it's trying to solve.
Don't strive for perfection. Good enough is usually good enough. The long tail for perfection is usually not worth it, unless your system could lead to loss of life or cause some sort of material harm. Self-driving cars need to be perfect, Billing solutions don't.