The last couple months I've started keeping a journal relating to my software development. I've found that's it's been helpful for keeping track of software requests and the changes and discoveries necessary in fixing an issue or keeping track of system infrastructure changes. I've also found that it's a nice way to slow down for a moment and bookmark my thoughts in a day where there's always something that preempts what I'm doing.

I use a Moleskine journal since it's an escape from the keyboard and it forces me to slow down and write legibly.

I'd like to do something with Evernote but I haven't discovered the best way for me to sync with it.

What do you use?
Any tips/suggestions?

36 accepted

I've found writing a blog to be the best possible programming journal available - not only do you record what you've done but you can share it with people too.

I've found writing my blog incredibly useful even under the (fairly accurate in my case) assumption that nobody reads it - actually writing this stuff out clarifies it in my mind and forces me to think it through thoroughly which has turned out to be an incredibly beneficial thing to do.


I've found a personal programming journal useful for keeping track of my personal development and improvement.

Phase 1) Record problems/successes as they happen For example, if it takes longer than I think it should have do complete a task, I do a 5 Why's diagram (often they are trees rather than lists). For each root cause I add either a solution to prevent the problem, or a TODO item because I don't know how to prevent it. Beside each solution, in the margin, I add an asterisk. Beside each TODO, in the margin, I add a check box. (I do a similar process when a task goes better than expected.)

Phase 2) Process the results/implement solutions As my schedule permits, I go through the journal, scanning the margins for asterisks and check boxes, implementing the solutions and thinking more about the TODO items (and hopefully adding solutions). It is the results of this process that belong in a blog, not the journal itself.


I use the journal feature of TiddlyWiki for day to day entries ... and create wiki topics for specific items that I'm sure I'll want to refer to in the future.


Until recently, I've used a spiral-bound notebook to keep a journal of a number of thoughts, including programming lessons learned.

However, I have recently switched to a loose-leaf notebook, which I find much superior:

  • I can group together pages of similar topics
  • I can use any type of paper (lined, plain, graph), I just have to use a hole punch to make it compatible with the binder
  • I can also hole-punch and insert articles I print, or find in magazines
  • I tend to have a lot of notebooks; a loose-leaf format allows me to keep groups of related pages in a larger notebook, while carrying hot topics around with me in a smaller binder
  • Quality filler paper and binders are cheaper than quality notebooks

In addition to blogging I find it's pretty cool to use twitter. I have a lot of programmer contacts on twitter - some kind of famous once even - and strangely enough they all seem interested in me telling them what I just did :)


While i support - and personally practise - slowplay's and kronoz's suggestions for paper notes and blog entries for personal memory refreshments, I would also like to expand on Eric Asberry's suggestion of a wiki.

This time, not on a personal level but on a team level. As we advance into greater levels of knowledge and sophistication, group mentality and learning is very important. Why should we collect and "hide" treasures of knowledge and experience to our own silos? We ought to share across the team.

Use of a Wiki is probably one of the easiest tools with least friction for everybody to contribute their knowledge on difficulties and challenges they underwent. Folks experiencing the same can learn from each other and enhance the process (wiki entry) and watch it mature and evolve the group/team can efficiently and professionally draw upon and use.

Of course, one has to carefully choose the appropriate wiki solution to offer sufficient levels of material access and protection, so that sensitive and NDA content does not fall into the wrong hands.


I dont really keep a journal, but I do keep helpful blogs/articles/etc in a OneNote workbook.


It's not really a journal, but where I work we send out weekly status reports to our team, which for the most part do perform the same function. As an added benefit, the rest of the team knows what we have accomplished/issues we've run into, which allows us to help each other out when we have similar problems.

I've found that it's very useful to have a record of your projects just so you can look back and see trends in your work.


I have a business/programming journal (also a Moleskine) in which I can keep notes.

Primarily I use it to write down witty quotes, software and marketing ideas, and sometimes those "A-HA" moments where I discover something revolutionary and new.

I don't use it for software requests as I use a bug database for that purpose.


which are a type of quick notes of what we did for the morning and afternoon.

We also have a task program that keeps task as atomic entities.

Between those two and my legal pad that i scratch math and quick notes on I find my thoughts, and actions are well kept. They are a bit scattered for my liking, but for a non technical person like my boss the progress report is justification for developers being paid.


I tried a variety of method and finally settled on a "NEXT.txt" file. Just a simple text file that lists what needs to be done next, somewhat GTD style, but interspersed with notes, links, etc. I'll often sketch a design in this file first before moving it to its own separate file / blog post.

I keep the top of the file up to date with the current state of what I'm working on; when I stop or get interrupted I note state there so it's easy to pick up again where I left off.

Items that are done go into a "Done" section at the bottom of the file, providing the journal functionality.

Before this I used to use Trac and be diligent about creating tickets for every task. I could generate a journal of sorts by selecting the tickets for a given period of time.


In at least three of my posts here on SO, I've mentioned InkSeine. If you have a Tablet PC or a digitizer+stylus (think Wacom), then InkSeine will change your life. I thought the Tablet PC was a novelty until I found this application.

It's essentially Windows Journal with extra very effective "mashup" features. Using InkSeine, you can organize your own thoughts (written in your own handwriting) along with clips from the web, links to documents on your computer (via the built-in search), drawings, and anything else you can imagine.

To answer your question, yes: I use InkSeine to keep track of what I'm working on and that becomes my programming journal. For example, I can look at a notebook entry I made for a Windows Workflow app I wrote a couple of months ago and see the questions I had. State or sequence? What's a lambda? And so on. Now I know the answers to those questions and have a context for them.

InkSeine isn't the only way to do that, of course. It's just the most effective for me.


I use a nice spiral notebook that I carry everywhere. Used to jot notes, ideas, etc. When I'm online I use Google Notebook to add snippets, links, and what not. Works great and helps keeps things organized.


Perhaps I'm old fashioned, but I carry an honest to God pen-and-paper Day Timer planner with me wherever I go. I use the two-page per day pages, so for each day I have one page to put down to-do lists and scheduled meetings (ug), and another to write down any notes I need for the day. At my desk I have archives (binders) of all my old planner pages going back to when I started doing this in '98. This rocks for me, as when someone comes asking about a 6 year old job, I (Mr. No Memory) can look up all sorts of information on it.

I've had more than one person comment on how organized I am, even though I'm actually a guy who can't even remember what day his own kids' birthdays fall on.

I used to use plain old notebooks like some of the other posters mentioned. However, I found the appointment calendar, organized to-dos, contact lists, etc. rather useful, as is having a nice durable leather cover. The portable calendar became particularly vital after I had kids. They all have their separate after school activites, doctor appointments, etc, and once you get 3 no meer human could possibly keep it all straight in their own head.


For my day job, I use Roundup issue tracker. The search and keywords help me go back and look at why I made certain decisions. It's especially handy when revisiting an area that I haven't looked at in a while. I update on an almost daily basis which lets me spend just a few moments when it's fresh in my mind. I found that my project documentation is much better now that I have a record of the evolution of the project.

For everything else, if I'm away from a computer and just have an idea, I jot it down in a Moleskine (large reporter squared).

If it's something I want access to everywhere, I then transfer it to a text file based system that I have organized in folders by project, programming language, and/or topic. I sync all of these notes using dropbox so they are available anywhere.

I like text files because they don't require a specific piece of software to view and they are easily searchable. It's also handy to keep code snippets that I don't use that often but need on occasion.


I use one Google Document per project, layed out blog/journal style with a heading for each day, new entries at the top. Writing helps organize my thoughts.

I always capture "why" over "what" as it's more helpful later. As concepts develop I often note the last day I made notes on the same topic, so I can go back later and see how a design developed over time. (I should create a better way to automate this.)

My project notes are filled with hyperlinks--somewhat difficult in a notebook. ;-)

Thoughts on other approaches I've tried:

  • Yellow notebooks. I used these for many years. I liked being able to scribble down quick diagrams, but this is all I miss from physical notebooks. Being able to search is more important than diagramming convenience.
  • Word docs. Google docs work better for project notes because it's easy to share them with others on your team, they're instantly accessible on any machine, and the app is very minimal (forces you to write useful stuff instead of dorking with formatting).

Twitter has less mental overhead than writing a blog. Good writing takes time and effort, which is a luxury that I don't always have.

With twitter, I can tweet problems and solutions as I run into them, and don't have to worry so much about organising my thoughts as I would have to for a cohesive blog post.

Plus, you'd get interaction happening around it now, rather than have someone stumble upon it in 6 months time, when you don't really care about it as much.



I use bug-tracking software to accomplish some of these things.

When working on, for example, a complex bug, I add comments to the issue as I go along, recording what I've been doing to try and fix the bug, and any relevant thoughts and ideas.

Since these things tend to be web-based, anyone else in the team can see what I've been doing, and contribute as necessary.

And of course, once the bug is fixed, the records are available for ever more, and searchable, in case something similar comes up in the future.


I'm using OneNote to keep a journal. In it, I'm putting any thoughts which I think I'll think interesting in the future or may need to recall. I'll put some design decisions in there. I'll put links to articles that I read while searching for a solution. I chose something private because I don't really want to put all my raw thoughts in a public blog. I know I can just make the blog private but I keep a lot of my other notes in OneNote anyways.


I use FreeMind to sort my thoughts. While on meetings I can write down stuff, and as the picture gets clearer it's a piece of cake to rearrange and create new headlines.

It looks gorgeous too.



Notes help a lot. They help me remember what I did, what the issues are/were and help me get organized and keep focused. I try to write a note to myself every morning, containing the current problems and things to do today.

I actually use my Google Mail account for these notes. I set up a filter so that mails to myname+notes@gmail.com automatically get filed under "Notes" in my account and excluded from my inbox. (Yes, anything after the plus is ignored, and the mail lands in the myname@gmail.com account. Try it with yours!)

That way, all notes are filed under the correct dates, and they are easily searchable in my Gmail account.

I don't really know why many people write a blog instead. My notes are just for myself, and I don't want to have to write it so that it's readable and usable for other people. It may also contain local file paths, file names etc, so I don't really want anyone else on the Internet to see it.

(I like to compose these notes and other e-mails in Emacs, so I use the "It's all text" extension for Firefox.)


I tried paper, but then it becomes a pain to search, index etc. I have used notepad for quite some time. Finally I persuaded myself to get myself a wiki. I installed mediawiki, locked it down. It works great. Everything is organized. I can search as well as paste code into it (with auto highlighting). Its worth it. Once you do it, you will never go back.


I like Basket Note Pads


I use a NetVibes page, with todo list and webnote widgets for daily scratch, one page or tab per project/project block. Then I transfer useful bug fixes or 'lessons learned' to a wiki for long term storage (currently I use DocuWiki due to a bunch of plugins that give me the layout/presentation I like.)

The only drawback I see in this is as it's all company related any code I put up is an issue unless the wiki is behind company security measures... and then I can't take it with me. I keep thinking about using a physical notebook but I'm too lazy to write it all down or print and cut/paste it to the notebook. I even considered using PrintFriendly to make selective printouts of important things but it can't handle netvibes (or SOFU for that matter so...)


I personaly plan to program a simple python module to make journal entries in a format that can easily be accessed later on. I'll use it at my job to keep daily data about what I do, in case the boss asks. It will also be great to be able to look back into it, looking for special tasks I did and where I decided to put the files, etc.

For simpler tasks, maybe a mindmapping software could be enough? Consider trying Freemind and Xmind. Both have free versions that work under Linux and windows (maybe mac, not sure).



Add one vote for OneNote. I put blog clippings in there, nasty bug resolutions, SQL queries I don't feel like finding a folder for, etc. Also commonly referenced documentation pages like the .NET RegEx / XPath examples, the syntax for WPF PropertyPath, a list of Windows Desktop Search property names, etc. All goes in my "Development" OneNote notebook.