4 ms·
By deliberately selecting your objectives and evaluating possible solutions based on those objectives. If the objectives are unclear when you start (e.g. your o
by orisho 6y ago
By deliberately selecting your objectives and evaluating possible solutions based on those objectives. If the objectives are unclear when you start (e.g. your objective is achieve a certain level of perfomance but you don't know enough to know what you can adjust, or how you can measure, or what delivers the most gain for least effort), I just get started and revisit it once I have something basic going.
Often, a basic, naive solution will give you the understanding and domain knowledge you need to be able to read what others have said about the same problem.
It also allows you to more easily dive into the solution as implemented by popular open source projects. Even if they don't write about it, you can often learn a lot from the code -- even more if the rationale is written in comments in the code.
For example, let's say you're contemplating how to implement an audit log for your product. You've never done this before, but you're experienced enough to know that you might hit unexpected hurdles (such as features that are difficult to implement) well into development, or maybe after deployment. Something you might do is research commercial open source products which have an audit log, and read their code to understand how they did it and perhaps why. Another way you can figure out the rationale is by looking at their full set of features and asking yourself how might each feature be implemented in an alternative implementation. If alternative implementations don't work well with this feature, this could provide an answer for why they chose this implementation over the other. And then finally, you can ask yourself if you need these features, which brings you answers to the original question of what are your objectives.
Or the short version: there are indirect ways to learn from the experience of others. Looking at a battle-tested implementation of a feature you want to add is one -- and it's perhaps even better (= more enlightening) than reading some blog posts you might find.