I have adopted this practice over the last year and have found immense value in the practice. I believe this practice is one of the cheapest ways to help leverage your previous experience on the job as you keep yourself from having to repeat previous learnings over and over again as you try to remember what those compiler flags you used 6 months ago actually were :).

My system is quite simple. I have created a github repo called journal and an alias which opens vim to a markdown file for today's date. If I leave the file and come back later vim will drop me in at the end of the journal. I intend to add some vimscript in the future to automatically add a timestamp when I reopen the file but haven't gotten there yet.

This system has been quite helpful to me as it is resilient to data loss as I can push to multiple backup systems. Easily searchable (grep). And can support prettier documents if I want to open my Markdown formatted journals in tools like Macdown.

TL;DR I use vim to manage this. See alias below.

alias journal='vim + "/Users/username/journal/$(date +%Y)/$(date +%Y%m%d).md"'

If you're looking for a more structured version of this, I'd highly recommend checking out vimwiki[1]. Its diary feature does exactly what you mention, plus it will autogenerate a nice index file for you (among many other features).

[1] https://github.com/vimwiki/vimwiki