Use a Decision Journal
blog.trello.com
blog.trello.com
Since we can only ever learn from our mistakes, a Decision Record helps us be honest with ourselves when we are evaluating things when they don't go as expected.
I agree that's not a very strong argument when making a tech choice, but still, it has more merit than a lot of resume-oriented-development I see: "we will use new tech X for this project because if we use the same old tech Y as we used for the last project, that will bore us, and there will be better job opportunities with other employers for the people working on the project if we gain experience in trendy new tech X". ... which is a pretty rational way for an individual to select tech, but not at all aligned with the interests of one's employer, or acting professionally & attempting to help one's employer make good decisions.
And what's more important, even if you write something embarrassing like "i don't know of any other tool, but this tool seems to be good enough" in the journal, that is very useful information to know in the future, vs "we did thorough evaluation of 4 different libraries and found out the others does not support important use case X".
I want to read about what you ended up having to do after making contact with the real world, not what you thought you were going to do at the whiteboard stage.
Of course you cannot expect a hundred percent accurate picture with all the nitty gritty details beforehand, but unless you are working solo having clear goals is really important. Programming really is about the decisions one takes at each step and the domain specific knowledge one encodes within the project. That is why reflecting and documenting every once in a while really makes sense.
Companies bigger than a typical seed-stage startup usually come with an added level of bureaucracy. Products, tools, documents and others are usually created or pushed forward by different teams as a cross-functional effort. If you are the leader of such a project, the creator of a tool, methodology or document used by others, you will be expected to keep everyone in the gallaxy up-to-date with the details. Failing to do this will lead to certain personalities giving you a hard time. Suddenly people may start questioning your decisions in calls, emails and threads. You'll start wondering where all this skepticism comes from and will be forced to repeat yourself over and over again wasting valuable time. "Yes we did test whether to use X or Y architectures", "yes, we did test and consider this tool but it lacks feature Z".
I'm likely not alone in considering the above a less than ideal situation to be in. Having a well organized and detailed decision journal allows you to stop the noise almost completely. Also, as others mentioned, it gives your thought process structure, keeps you honest, committed and makes evolving a deliverable overtime easier.
I'm paper trading the stock market while I work on a couple of investment ideas (and still feel like I'm learning, so no real money yet). Every time I "buy"/"sell" a stock (logged in one tab of Google Sheets), I enter the date and the rationale I used when making the decision (logged in another tab of the same Sheet), as well as some context around the current state of the world. It's been useful already (a few months in), but will only get more useful, I believe, as I begin to note patterns in my own behavior.
I’m going to whip up a web app for this.
What I found from my (currently) small circle of users, is that ease of use to enter the decisions was key. The SMS input has been key, and I'd recommend you consider it as a way to appeal to folks who would resist installing "yet another app with who knows what kind of data/privacy practices."
> Here is the refutation being referred to in the article, the article author did a poor job explaining it, and the reason to reject isn't "effect is too large", because the effect is real -- but this study explains it: http://journal.sjdm.org/16/16823/jdm16823.html
> 1. Prisoners are ordered by whether they have an attorney (so those going last in a session are self-represented)
> 2. Judges order prisoners often by "complexity of the case", so the ones taking most time are first (and therefore most likely to have a favorable decision, a short/easy case is probably a no-parole situation)
> 3. Statistically, the cases that gained parole take longer than those that don't, so even if they are random/normally distributed, then if one falls at the end, it will come back to the beginning of next session. A simulation shows that even with random ordering, you still get the same graph (because the long/complex cases that could be paroled tend to be moved to next session when the session is almost out of time).
> So after reading this, the graph means: Ratio of cases with a lawyer that can be finished in the remaining time in the session.
> Both values are decreasing as the session continues, so it produces a heavy down sloping graph that resets each session to some approximately random value (.65).
[1] Extraneous factors in judicial decisions | https://www.pnas.org/content/108/17/6889
[2] Here is the refutation being referred to in the article ... | https://news.ycombinator.com/item?id=14703990
[3] Impossibly Hungry Judges | https://news.ycombinator.com/item?id=14701328
Decision record templates are here: Template: https://github.com/joelparkerhenderson/architecture_decision...