Ask HN: Do you keep a developer diary?
I recently was struggling with an design/architecture issue all day, and when I was finished I thought about writing down some thoughts about the what/how/why aspects of my solution for future reference. I then stumbled on the term 'developer diary' for this kind of thing (for ex. https://www.smartics.eu/confluence/display/PDAC1/Developer+Diaries), that apparently some software developers hold in high regard.
I will be trying to keep my own (though a bit more light/free form than that in the link) in order to bring a bit more structure to my day-to-day.
Do you have any experience with developer diaries? Have they helped you become a better developer, and if so, what kind of effects did you notice?
60 comments
[ 4.6 ms ] story [ 127 ms ] threadMy team also do standups on Slack, and I've got into the habit of writing detailed Slack stand up bullet points with links to commits, documents I've created and so on - almost a semi-public developer diary. I don't check back to these very often myself, but they do spark some useful conversations.
I've also gotten into the habit of writing extremely details commit messages - often multiple paragraphs for a few lines of code change - that record the background and reasoning that lead me to the change. I do most of my code reading through the GitHub web interface, frequently referring to blame and history, so the more context I can find for historical commits the better.
A nice side effect is that weekly status meetings are easy.
A simple markdown formatted file is more than enough.
I have headings as: "Working on", "Will be soon working on", and "Worked on" to mark my ongoing, todo, and done tasks.
The only standalone artifact I keep, though, is an excel spreadsheet tracking rough office hours, project, caffeine consumption, and choice of lunch. This helps me reassure myself that I'm not slacking off (especially when I'm considering a short day), a top level rough timeline, keep my caffeine intake in check, etc.
Why ?
I noticed after 43h in a moving window of 5 days my focus, irritability is up to the roof and I make way too much mistakes that can lead to a dramatic mistake.
My work contract is 37.5 so everytime I reach too much overhead I talk to my manager ask him if he will need me one day to make extra efforts in case of emergency?
He says yes, I say I will abide but if we are working under normal load, than he needs me to rest and give me my time back.
He then picks on me, saying it is my responsibility to not stay to long at work, I make him notice it is because of the company management I have to stay late and the deadline.
He grumbles says it is not the right time.
I go to see the CEO say the same thing
They give me my family time back. I stay quite rested (add 2h30m / day (when the rail company has exceptionally no problem) of commuting with the worsts train lanes of Europa (1M commuters/days)) so it actually feels like commuting is working. Teleworking is denied for lack of control.
Oh! and lunch time is not counted as worked hours except for the other managers. (so I stay away from my family 10hours per day, I see my wife 5 hours a day).
That is the only diary I am keeping.
If I get overworked/burntout, it costs nothing to the company, but I will certainly get fired sooner or later and have a hard time finding a job with a sort of depression running.
Ideally, look for a job with a smaller commute or better attitude to remote work, and get out now. If you can't do that and need to stay in this job for a while, think about changing your mindset to empathise with your managers, even if you dislike them. Be helpful, think about what they are 'actually trying to achieve', which might not necessarily be what they asked for. Remember this is only a stepping stone til your next, better job.
If you're never going to like working 8-10 hours a day you need to figure out the necessary stepping stones to move into working for yourself.
But whatever you do, don't spend years in a me-vs-them mental battle with management at your current role. I made this mistake and deeply regret the lost years (though I did teach myself JavaScript in that time so now I'm massively employable, fuck that employer, har).
My thought would be that if you can manage a way to increase that 43h by just 10% or 20% then over time and transport delays will not be as worrying.
Can you incorporate stretching exercises or walking into your work environment? Try and keep a diary of the positive things that can help you cope with work.
[0] http://bulletjournal.com/
I can't believe nobody made this already!
The context of discovery is often not relevant for the context of fix.
I find it really handy to figure out how your thought process about the project has grown over time.
After I moved to a full time role in my chosen industry, I had less time to focus on personal projects and less motivation to keep blogging regularly. I try to keep up with it but blog posts are few and far between now so I would no longer call it a diary.
The last technique especially helps me a lot. When thinking through a hard problem, type out your thoughts in a semi-structured way, never deleting anything. Makes it easier to deal with problems that can be too large to hold in your head at once, to think about the aspects of something step by step, or to retrace your thought process and see why you made certain decisions earlier and maybe explore a different route when you get stuck. When finished, it can be used as a foundation for a design doc I share with the rest of the team.
I start the day with:
and which just appends the current date to the file and positions the cursor, all ready for typing. Dirt simple.I used to have macros and whatnot for carrying forward lists of TODO items and important tasks, but that was overkill and keeping things simple seems to be the key to success. Likewise, apps like OneNote and so forth just got in the way and wanted to own a piece of me.
I have a man page repository that is just a simple folder that gets tab completion (basically ls fed into the complete function). aliased to `mm` as in myman(pages). that gets opened up into emacs though so it's basically a repository of files that you can grep through.
Care to share your emacs/shell setup for what you are doing?
Everything goes in one big "scratch.txt" file, with headers like:
...at the start of each day. These are generated by a function I run every day: "scratch.txt" is always an open buffer in Emacs. You can search through the file with isearch, helm, or whatever you use. I use the "desktop" library to save and restore all open files when I close Emacs.That's really it, just one big unstructured text file.
I don't put a lot of prose in this diary. Only todo items, code snippets, and errors / log output.
Our setups have slightly different goals: yours is to create daily nuggets of documentation, while mine is to archive whatever thoughts and code were running through my head each day.
The problem with applying a bunch of structure is that you start to screw with the structure, maybe try to turn things into JSON or whatever, pivot by date or technology or location, and a few hours later you've wasted a bunch of time mucking with stuff that you'll probably waste more time mucking with later. Just slamming text into a file and having a minimal syntax for dating things is, I've found, sufficient. I want notes and a little support for continuity ("what the heck was I juggling when I left on Friday?"), not a blog or a platform for deathless prose.
It'd be nice if there was a rich text system similar to Emacs that didn't force you do write markup or handcuff you to a proprietary data format. Truthfully I haven't looked that hard (multi-platform is probably difficult to achieve). I have notes files strung back over twenty years, and simple text is a hard habit to break.
Currently, I'm sort of split between three tools. Omnifocus (a GTD manager) for tracking all the tasks, quiver for notes through the day, and then I use [emergent task planner], a paper based task planner for the days tasks. As much as omnifocus/gtd helps me track things, I found using paper to block out each hour of the workday ahead of time really helps me focus. If I find myself losing focus, I can refer to that and (usually) get myself back on track.
What finally made it into a working solution is writing plain markdown files, one per day, automatically synced to bitbucket via tiny bash scripts that initiate a new file for the day (aliased to 'j' for minimal hurdle to start writing), opens them in an editor, and committs to the repo after closing the editor.
It is available here: https://github.com/samuell/mdnote
The nice thing with markdown, if you make a level-1 header for each new file, is that you can concatenate the file into a long file, and run pandoc -i allnotes.md -o allnotes.epub, and get a formatted and searchable notebook for offline use, when you want to read it, with the Level-1 headings denoting chapters - so, one chapter per day!
(I have a script for this too of course: https://github.com/samuell/mdnote/blob/master/as_epub.sh).
Share the wealth! :)
Initially I kept notes in Evernote, but eventually switched to Quiver (http://happenapps.com/).
Something that is yours and walks out the door with you, every day.
When the system or someone starts to screw you, such a record can be useful and actually viewed with some validity. Better yet, can be meeting minutes and internal communications that document the situation.
There's a reason Comey is known for writing memos about problematic situations.
What I do keep is a large file of projects or snippets of projects, sometimes with extensive notes.
I refer back to these frequently to see how I did something or look at code samples.
But, as time goes on this has become a bit of maze to wade through. I spend time trying to remember what project it was etc. etc. Grep helps a bit :). It would be better to organize this somehow. Not sure I'm interested in a full blown diary though. DRY.
You can create checklists. You can share anything from your mobile with trello so I keep track of everything I read.