| Pre implementation - Identify and document possible solutions. Think hard about why each solution is good and each decision is bad. - Within each solution, attempt to find common patterns in that problemspace (when working with Sharded databases, this approach brings these results, etc) - Try to match your personal and organization requirements against the various patterns you find and the pros/cons you defined previously During implementation - Keep a running list of things that seem weird, or things that seem great, or things that turned out to be untrue - Don't stop implementing, but for each thing you found that wasn't great in step 1, try to find a better way to approach that thing (while moving forward) Post implementation - Compile all the notes you made in pre/during into a manageable list of goods/bads. - Use this to drive A.) iterations of your solution, and B.) future solutions If you do this enough times, you'll have a pretty decent list of your experiences in a space, and you'll start to notice patterns as you try different things and become exposed to problems, their solutions and their tradeoffs. Eventually you won't even have to look at your previous notes very often, as you'll have built up a pretty decent amount of experience in various problemspaces such that you can predict what goes well/doesn't go well. Also worth noting, this type of behavior doesn't really have to be applied to software, but will also gain you big points with future employers when interviewing. You'd be surprised to find how many candidates never stopped to reflect on the work they'd done, why it was sub-optimal, or how it could be corrected moving forward. Response like "We did it ____ way because that's how we always did it." Which, from a progress standpoint, is basically a none-answer. Note: this is obviously just my opinion, and I'm no expert in "Becoming a Master of Stuff", but these are the methods that I have used and seen my peers use (in one form or another) over quite a long time. Sometimes not as obvious (doing these things in your head vs. writing them down), but the shape is always pretty similar. Ultimately I think being reflective is one of the best skills a person can possess (with respect to employment and I guess also relationships). Acting without thinking is reckless, I think. |
As they say, pain + reflection = progress. If you don't wanna reflect, good luck enjoying that pain without progress.