The day to day life of a software developer involves consuming, creating and recalling a lot of information. Code, research, feature requirements, documentation, code snippets, project details, etc., sooo much information!!!
Organization is critical to find and recall the information you need, when you need it. This is not only true for software development, but also life in general.
However, organization and attention to detail doesn’t come naturally to everyone. That may leave you wondering… does that mean only Type A personalities can succeed in a development career?
I would debate that. No, that is not the case. I believe that anyone willing to put in the work can succeed in software development, as long as you find a way to work on those qualities that do not come naturally to you.
I have fooled my co-workers into believing that I am effortlessly detail oriented, organized and have excellent memory and recall. The truth is that none of those qualities come naturally to me.
That is why, over the past 7 years, I have spent considerable time refining how I work. I have found tools, tricks and tips that help me emulate the Type A qualities that I lack with as little energy as possible, and I will be sharing those with you in this post.
The Tools
(Disclaimer: I am in no way affiliated with any of the software mentioned in this post. They are all applications that I have stumbled upon organically, and I only ever use the free versions.)
Considerations when Choosing Software
Some questions to ask yourself when deciding on which software to choose:
- Do you need to access your notes on more than one device? (I do. I have a work laptop, a personal laptop, and a smart phone. I need access to my notes on all 3.)
- Do you need to access your notes on Windows and Mac? (I do.)
- Are you willing to pay? (I am not)
Note-Taking
The note-taking software that I have used in the past includes Evernote, Bear, Notion and Notable.
The clear winner for me has been Notable, which is an open source Markdown-based note-taking application that is compatible on both Mac and Windows, and I have been using it exclusively for the past 2 years.
In fact, I’m writing this blog in Notable!
Here is a quick comparison of the features supported in the note apps I have tried. I only tried the free version of each.
My Favourite Notable Features
- notes are stored on disk in /notes directory as .md files, and attachments are stored in /attachments.
- multiple data directories are supported, so you can store notes separately
- you can use store your notes directories in git repos for version control
- upload to github private repos for remote access on any device, and search functionality (GitHub now supports unlimited private repositories!)
- pasting an image into page copies attachment to /attachments directory and inserts image on page
- code blocks with-syntax-highlighting supported
- preview, focus, split mode for viewing notes
- uses same Markdown editor as VS Code so multi-cursors, line numbers, code blocks and syntax-highlighting are all supported.
- organize notes with tags and group related Notes in Notebooks
I use Notable to store things like code samples, step by step instructions for myself, meeting notes, feature notes, testing data.
I also use it write notes for development courses that I do, which you can see on my personal note website, which I created so I can easily access those notes without logging into GitHub!
Bookmarking
If you have ever stumbled upon a website which you wanted to save for reference later, such as a stackoverflow post containing an answer to an obscure problem you are trying to solve, then a save-for-later service is something you should consider integrating into your daily workflow.
I personally use Pocket, which refers to itself as the leading save-for-later service. It allows you to save articles, videos, and more from the web for later viewing. The content can be view offline as well.
This tool is indispensiible to me because I am very cost-concious (aka cheap 😉), so offline access to articles is critical because I do not have a phone plan with a lot of data.
Pocket does have a paid version, which I have not tried because the free features are so robust and meet all my needs.
At the time of writing, they currently offer: Pocket Premium, Pocket for iPhone, Pocket for iPad, Pocket for Android, Pocket for Kobo, Apps & Integrations, Pocket for Web, Pocket for Firefox, Pocket Browser Extensions, Pocket for Mac. I personally use the web version, Chrome extension and iPhone app.
It is extremely useful if you are like me, and seem to google the same things over and over again. I have been using it for years to access the same article that contains the git command to merge a specific file from another branch.
Shortcuts
These save you a ton of time! I use keyboard shortcuts to help speed up my workflow and to automate mundane copy/paste/replace tasks that I have no patience with (and neither should you!).
It is worth taking the time to learn VS Code shortcuts to manipulate text and multi-cursors and do things like find and replace. This is useful for every day coding, I used it probably 15 times today for different things. I also use it in my personal life daily.
It can be very discouraging and frustrating to learn shortcuts when you alternate often between Windows computers and Macs. They do not share the same keyboard layout or keys, so shortcuts differ between the two.
To help solve that frustration, I created a small React application that takes in a JSON file containing all the shortcuts and displays them visually. I uploaded this to a server, so I can access my shortcuts from any device. You can see that at https://shortcuts.anjagusev.com.
You can take a look at the source code on Github and fork it yourself if you would like to use it.
Warning: this is my personal project and I have not updated it in a while, so use with caution.
I suggest you find a similar solution to remembering shortcuts. Before I created the application, I simply stored them as a note on my hard drive.
Screenshots, and Screen Captures
Screen recording software can save you a lot of time, especially in the times of COVID when almost everyone is working remotely. I typically use this to help the QA team work through something, or for bugs, to show the steps it takes to recreate an issue.
I personally use the free version of CloudApp which works on both Windows and Mac, and have had good success with it.
Some of the features include:
- screen record
- gif creation
- screen capture
- annotate
- upload and share file
- download directly to computer
- browser based app and desktop app
Reminders
At RedBit, we use Slack for our daily chat and messaging.
I personally use slack as my own personal reminder engine. I set reminders for things that I cannot give my attention to immediately, but I need to revisit at a later time.
Setting a reminder allows me to set it, and forget it, so my mind is freed up to remember more important things.
I also of course rely on my Calendar to help me remember important meetings, events and milestones.
Task Managers / To Do Lists
Task management software and to- do list managers can help you free up mental capacity by setting and forgetting things that are important, but are not time sensitive enough to require a reminder.
I personally use the free version of Todoist, which is compatible with both Mac and Windows, and offers a browser-based version in addition to the mobile and desktop applications for both Android and iOS.
I have not explored all the features of Todoist, but it’s basic features have become indispensable to me.
I hope this post has helped you get ideas about tools that you can integrate into your workflow to help you overcome your own limitations, and make organization as effortless as possible. If you have any questions, tips, or alternative software options to share, please don’t hesitate to reach out to me at anja [at] redbitdev.com.
Thanks for reading!