DEV Community

Cover image for I Bet You Don't Keep A Developer Journal: 3 Reasons You Should
Simon Barker
Simon Barker

Posted on • Originally published at careerswitchtocoding.com

I Bet You Don't Keep A Developer Journal: 3 Reasons You Should

"Do you know how to get rid of this weird primodials issue?" I was asked across the office once.

Something about it sounded familiar so I did a quick search through my work journal and sure enough unearthed a note from 3 months earlier where I had seen this issue myself and jotted down the solution.

"You're running the wrong node version for that application" I confidently reply.

I looked like a super hero for remembering, when in fact all I did was look back through my external store of knowledge where I jot things down every day and regurgitate it. It helped in this case that the issue had a cool name in it (which is why I use this as my main example) but if it was something I had come across in my career, pretty much any relevant search term would work.

The value in keeping a work journal is huge, here's why.

It's not for you to read

It's tempting to think that a journal is for you to go back and read. In reality it's not, it's a searchable store of knowledge where one of the pieces of information is the date it happened on. Don't worry about making it interesting to read or feel like a story, it's a series of notes, events, error messages and solutions from your day that could be useful in the future.

It's a database

It's really a database, a loosely structured, highly searchable database that enables the value of your developer experience to compound over time. The more you put into it the more valuable it becomes because of how bad our memories are. Each nugget of information makes connections to other morsels of information highlighting links you may have missed. Searching for .htaccess in my database brings up rewrite rules for old projects, reminds me of old projects I had forgotten about and highlights bits of tangential information that can unearth memories, like the terror of ftp'ing on to a live server and hot fixing a PHP bug without a git commit or line of yaml insight, good times!

It gives you confidence

We often forget how far we have come, we focus on our current point in space and time, rather than the line and trajectory we are on. Having a store of knowledge, no matter how disorganised and seemingly disparate, lets us see how far we have come, how many problems we have solved and struggles we have overcome.

As digital creators much of our work is invisible ๐Ÿ™

When my wife sees a car from particularly high end sports car company drive past she is reminded of the work she put into that car's development, when my friend drives over certain bridges he can see the physical manifestation of his work.

I on the other hand don't see the database migrations or api rewrite that took months of my time at my first job. I can, however look at my journal and see the things I learned, techniques I mastered and best practices I applied during that work because I noted it all down.

Anything will do

Don't sweat the tool you use, text files work if you have a good way to search them. Notion is my favourite app of choice at the moment. Evernote was all the rage for a few years there and no Obsidian is the new kind in town. So long as it's quick to jot something down, has good search and doesn't get in your way then it's good enough to get going with!

So, go forth and journal!

Top comments (38)

Collapse
 
omril321 profile image
Omri Lavi

Hey Simon, thanks for the interesting article! Usually what I do is keeping a note on notion with various useful things I learn. In addition, I maintain a "scripts.sh" file with aliases of all the commands I see myself using in the future. It's a major time saver!
I have a question about your notes thought - how do you organize/format them? Is there an example of a note you can share?

Collapse
 
davidsgbr profile image
David SG • Edited

Hi @omril321 , your scripts.sh called my attention. Iโ€™ve built a CLI generator that might be very useful for you, it can simplify your scripts and document them to make easier to share with other people.
Please consider having a look on that: aux4.io
Feel free to reach me out if you have any questions.

Collapse
 
omril321 profile image
Omri Lavi

Hey David, that's some cool project! How does it treat environmental variables? I didn't find a reference to it at aux4.io/learn

Thread Thread
 
davidsgbr profile image
David SG

@omril321 , thank you for checking that out. You can use environment variables like you are using in the command line. I've added a section providing more details at aux4.io/learn. Please check that out once you have a chance.
I am pretty sure aux4 can be a game-changer for your scripts. It would mean the world to me if you could let me know in case there is something else stopping you from starting using that. Please feel free to DM me at any time. I will be glad to help and have your feedback.

Thread Thread
 
omril321 profile image
Omri Lavi

Thanks David! If I'll speak frankly, I'm yet to find the advantages over well organized shell scripts, and using aux4 does seem to require some learning. Tell me please, on which cases would you recommend someone to start using aux4? What problems will it solve after which amount of effort?

Thread Thread
 
davidsgbr profile image
David SG

Sure, I understand your point, you have something that is already working. So let me try to point some benefits.

The aux4 learning curve is low if you are already familiar with JSON. I know it's not your case, but for another person who is not familiar with bash scripts, they can easily write their scripts but just following the structure.
You also can organize in whatever structure makes more sense to you use that. e.g:

aux4 my-project-a delete-kafka-topics /* it can delete all the kafka topics related to your project */

aux4 my-project-b s3 upload-configuration /* copy a file from your local to a specific bucket/path related to your project */
Enter fullscreen mode Exit fullscreen mode

You can share the script with your co-workers, you can create a package for each project, for example, and they can install it. It's great because it's common to have people in the team not familiar with bash, so they can just become users from what you created.

aux4 aux4 install my-project-a.json
Enter fullscreen mode Exit fullscreen mode

Instead of adding a lot of comments to your scripts to remember what are they doing, aux4 structure already allows you to document the parameters and commands, and it generates documentation in runtime, listing the sub-commands in each section, and also describing the parameters.
When you share it, you don't need to explain to the other people how to use that, they will know by just typing aux4.

I would challenge you to migrate two or three commands you have in your script to aux4 and see how you like, I am pretty sure you will end up migrating everything there in the end. It's addictive :)

Thread Thread
 
omril321 profile image
Omri Lavi

Thanks for the explanation! I understand it better now. Next time I'll need to write many scripts to a shared project, I'll remember aux4. Well done David! :)

Thread Thread
 
davidsgbr profile image
David SG

Thank you!

Collapse
 
allthecode profile image
Simon Barker

Hi David, this is a cool idea - well done

Thread Thread
 
davidsgbr profile image
David SG

Thank you Simon!

Collapse
 
allthecode profile image
Simon Barker

Hi Omri,

Your scripts.sh sounds good as well! Yeh, here is a note that comes up when "Ionic audio" in the search field. It deal with an issue I had with ducking audio with a Cordova plugin. Not all that structured, just enough that I can find it again and give me context.
note

Collapse
 
omril321 profile image
Omri Lavi

Hey Simon, thanks for the example! It sounds like a good practice writing such notes.
It's really awesome that you find the time to organize the note each time. Do you write a summary at the end of your day? Or straight ahead when you have something to write?

Thread Thread
 
allthecode profile image
Simon Barker

Depends how engrossed I am I guess. If it's an obvious "this will be useful" then I pop in a note ASAP. Otherwise I tend to take a short note when task switching or a summary at the end of the day. I try to make it as easy as possible to take a note so that it's just part of my natural flow.

Collapse
 
ishaan001 profile image
Ishaan

Rtr morshed rrr FF ttr f rre

Collapse
 
yoursunny profile image
Junxiao Shi

I have a bunch of text files for how I setup each server and deploy applications.
When I need to setup another server that runs the same software, I search existing files for the commands.
Files about cancelled servers are kept in an old folder for future reference.

Not for coding, but similar.

Collapse
 
thumbone profile image
Bernd Wechner

I used to do that. But Joplin (among many other options) supports markdown (hugely nice for lists and links and even screenshots) and syncs across platforms (desktops and my phone) so has proved fare more useful over time than the text files I used to keep.

Collapse
 
allthecode profile image
Simon Barker

Sounds like a great system, also by popping them in old you know that they aren't active but may still give value in the future.

Collapse
 
thumbone profile image
Bernd Wechner

I use Joplin. And yes keep all manner of notes in it. Not least pretty much what you'd call a devop journal (as I devlop and operate servers full schemozzle - which is my word for full stack - Linux and up - to include routers, LAN and gateway as well).

Collapse
 
allthecode profile image
Simon Barker

Joplin looks great - sounds like you are using it just like I describe ๐Ÿ˜€

Collapse
 
brandoncharest profile image
Brandon Charest

Great article and I couldnt agree more. Personal Knowledge Management (PKM) does seem to be getting a of talk around it recently. I personally use Obsidian, and while I am relatively new to the whole taking notes, writing down ideas, and documenting things I have learned and done, I am already beginning to see the benefits.

I agree taking notes and having quick access to them is great, I would also suggest looking into some of the note taking/storing methods out there and try to gain further benefits.

There are things like Linking Your Thinking, P.A.R.A Method, or even the Zettelkasten Method. Some of these might have paid courses to try and teach you how to use the given method, but there are plenty of free online resources out there that you can learn from. Just need to find the one that works best for you.

Collapse
 
allthecode profile image
Simon Barker

These are all great resource - thanks for taking the time.

Obsidian is installed on my system, I've just not had the time to play around with it yet sadly.

Collapse
 
dsebastien profile image
Sรฉbastien D.

Totally agree with you. Actually, Personal Knowledge Management (PKM) is super interesting for all knowledge workers.

I've just created a new community focused on this very subject, in the hope to regroup people interested in the subject and/or willing to share their experience, knowledge, tools, and workflows.

You can join over here: join.slack.com/t/personalknowl-bwm...

Collapse
 
allthecode profile image
Simon Barker

Sounds awesome, I imaging the listeners of the Cortex podcast would love that slack ๐Ÿ˜€

Collapse
 
dgloriaweb profile image
dgloriaweb

I keep my notebooks always. I keep one for the standup, with dates, that lists the summarized tasks for that day and what I told the team to finish by EOD, and one for doodles and planning. Like a whiteboard that's not erased.

Collapse
 
allthecode profile image
Simon Barker

Nice, almost like a bullet journal?

Collapse
 
stutteringp0et profile image
Michael Richey

It's a good idea... I had an application that I wanted to build for a hobby project. I had planned for months, and left it sitting on the back burner until I decided - today is the day.

So, long story short, I went into my development server to create the project folder....and it was already there. So I opened it up, and the project was already done. Apparently, 3 months ago I had some wild hair and wrote the code and didn't remember doing it.... To be honest, I had been really busy and the idea of working on my own stuff was just a distraction....but apparently it was a distraction I had already taken.

So I found something else to do. Had I kept a journal, I might have.....i don't know....written something down about it,

It's a good idea, but journaling is a hard habit to start....maybe it's worth putting some effort into.

Collapse
 
dvddpl profile image
Davide de Paolis • Edited

I looked like a super hero for remembering, when in fact all I did was look back through my external store of knowledge where I jot things down every day and regurgitate it.

Happened to me yesterday. Perfectly describes it.
thanks for sharing.

Collapse
 
allthecode profile image
Simon Barker

It's nice when the system helps more than just yourself right ๐Ÿ˜€

Collapse
 
brpaz profile image
Bruno Paz

Nice article.

If you are familiar with VS Code, you might want to try Dendron. I found it the way they structure the content using hierarchies really good, and itยดs similar to the concept of packages/namespaces in coding. And can use the entire feature set of Code like search or extensions.

Collapse
 
allthecode profile image
Simon Barker

Thank you - will check it out

Collapse
 
ntlyaraujo profile image
Nataly Araujo

Great insights about a functional journal! I've been trying to nail down a Notion template that I'd actually stick to every day, but it's been a bit of a struggle. Not having a structure sounds more workable.