Evernote: Especially Kick-Ass for Developers
People who know me well know that I'm an evangelist for Evernote. I try to be casual about it by asking, "Do you use a note-taking app?" but I make an effort to sound super-rhetorical.
A lot of people will insist that they take notes, or they have some equivalent system. I venture to say that whatever they're doing could be better.
Enter Evernote
- note-centric app for organizing information
- desktop and mobile clients sync notes
- content management basics like notebooks, tags
To fully embrace Evernote is to admit that its not possible to remember all the things. I get a sense of relief when I put something into Evernote because I don't need to worry about remembering it anymore. I just need to remember that I put it in Evernote, which I do with everything. This system works pretty well. Like many things: you will get out of it what you put into it.
Of course, to put something into Evernote is not to learn it, or even to actually remember it. It's like cold storage for information that you might need to recall but won't be able to memorize.
Tips for Developers
1) Outsource Your Memory
Developers have to keep track of an insane amount of details. Any given project might include:
- dependencies/version numbers
- credentials/keys
- server names
- error/log output
- urls
- complicated CLI commands
- documentation ( hopefully )
By nature our work requires organization. It requies more organization than you can accomplish in a bunch of txt files. Email is not a place for storing important information ( both gmail and Outlook have evernote clipping extensions ).
Suggestion: When working with an API, take a pretty-printed copy of the response and save it as a note. This will be easier to pull up and reference while you're parsing the data - or troubleshooting it in the future if the API goes down or the response changes.
2) Keep It Organized
The best developers are the organized ones ( whether they agree to write documentation is a separate issue ). While Evernote offers several ways to categorize your data, it's up to the user to actually do the organization.
Notebooks are the most major level of organization, but are really just arbitrary buckets.
Notes can also have multiple tags. I often add a few tags to group notes by a particular technology like: docker-compose, express, webpack. This makes it easier to lookup my own notes by subject, when they're generally specific to a project.
There is a feature called 'Search Grammar' which can help build more complex queries, which becomes useful after you've got a ton of similar notes in your account. Its kind of like SQL for your notes:
wildcard is supported:
memcache*
multiple word search:
any: esp8266 dht11
tag(s) search:
tag:drupal solr
The 'created' operator can be used with a YYYYMMDD format:
created:20170704
or with a relative time format. Finding notes from the past ten days:
created:day-10
Combining multiple statements allows more complex expressions. For example, finding notes updated within the last month mentioning 'docker-machine':
updated:month-1 docker-machine
Your need to use this search syntax will depend on the size and complexity of your archive. I rarely need this level of querying power as a human, but I notice that 'Search Grammar' exists in their API as well. If I were creating/querying notes with the API, this would seem like a no-brainer.
3) Index Everything: Multimedia / OCR Search
Evernote can index and search the text inside screenshots and images that you've added to notes. ( Also inside PDF & MS Office documents if you pay for Premium )
The optical character recognition in images is really impressive. Taking a quick snapshot of a document, recepit, manual, contract, diagram, etc - will make the text indexed and searchable! Take screenshots of those meeting whiteboards.
4) Stay On Task
When the open internet is your workplace, it can be easy to get distracted by any number of stimuli that are not the job at hand. Evernote can help you out here also, allowing you an organized place to stash away information for reading or using later.
Even when information you encounter online is relevant to the task at hand, the process of correctly filing it for later reference can disrupt your flow. The Chrome Web Clipper Extension is really helpful here, and can even suggest under which notebook a note should be stored. It can extract in text-only mode, or with more media included.
I have a notebook named 'Read&Delete', which is just a container for things that I intend to read someday. The Chrome extension does a pretty good job of retaining all the various syntax highlighting and screenshots used in development blogs. My favorite way to pass time when traveling is to catch up on all the reading that I filed away to avoid being distracted.
5) Share The Info
Shared Notebooks allow multiple users to access and edit the same notes - similar to Google docs but not as snappy. This is a great way to give another user(s) access to an easily maintainable subset of your notes.
There is also a feature for sharing 'one-off' links to individual notes. Similar to sharing a gist or codepen, this provides access to some information that might be dynamic.
Which Plan Do You Need?
They've re-arranged their tiered pricing a few times, but the fact remains that the most useful features are available in the most affordable tier. ( 'Plus' is currently available for $35/yr )
https://evernote.com/get-started
My Evernote Wish List:
While it is highly convenient and reliable, Evernote can seem a little bit 'closed' to developers who have worked with open source software. Every time I wonder if Evernote has a particular feature, I wind up on their forums where a bunch of smart people have already asked about it and nothing has happened. The pace of feature development feels cautious and methodical.
1) Plugins Please?
I understand that they can't support every niche feature request, but this seems like the perfect place for a plugin architecture. Developers love plugins. Plugins are possibly my favorite thing about Sublime Text. ( Developers also write plugins for free all the time - because they want them )
A few plugins I would love to see are:
- Markdown syntax support
- Syntax highlighting for various software languages
- git/gist integration
2) Linux Matters
The single feature request that I would want before anything else is a Linux desktop client. The Windows client provides a powerful user interface that really boosts productivity ( especially when working between multiple notes simultaneously ). The web client is the only option for Linux users, and leaves a lot to be desired.
Conclusion
Don't kid yourself, you can't remember it all. Embrace a digital note taking solution and find out how much more information you can retain by keeping it outside of your head.
Consider how Evernote might help you organize your other personal/artistic/financial goals.