Everybody wants to be able to do their tasks in an easier and faster way. Of course, though, ease and speed are not always the characteristics needed to accomplish the goals. I believe that working for a decade in the public administration of a third world country has helped me see clearly the mistake of trying to do things the easy and fast way.
Lets start with the "easy" part. Of course, the best way to do a task is the easiest one. That doesn't mean that we know the easiest path and doesn't mean that knowing it will also be easy. Let's consider farming for example. The easiest way to farm a land is to use modern machinery, genetics manipulation, robots and so on. It was not easy to discover and build these things though, and it is not an easy task to learn to use them.
Now lets consider the "fast" part. We sure want things to be done quickly and this may lead us to start in a rush. However, one should consider that the fastest way is not the one that starts first, but the one that finishes first. When we start anything, each step along the way is a new commitment with that first step we chose. The earlier decisions in a project become harder and harder to change. A mistake in the beginning will be very likely the reason for not being able to meet the deadlines in the end.
Easy to use or easy to learn
I love specific purposes programming languages, and I think the reason for that is that they can help you to be better in that task than you would otherwise be. It's not simply a matter of being faster. They have a great deal of knowledge incorporated due to the fact that they were designed to be used by specialists.
Let's consider LaTeX, for instance. The language was designed to create documents like those we today would call rich text documents, with titles, summaries, footnotes, bold, italic and so on. One may wonder why someone would bother learning a language for that when you can simply use Microsoft Word or LibreOffice Writer. Well, while LaTeX is a sort of a hard core software to processing documents, Word is a casual software for doing the same task. Both will accomplish the task. Word is easier to learn, fast to master and widespread used. LaTeX is hard to learn, slow to master and has a much narrower user base. Why would one use LaTeX then? For the same reason one uses a tractor instead of a shovel: it is more powerful, faster, "easier to use" once you learnt it and it was designed for professionals.
When you create a LaTeX document you don't worry about how it will look like. LaTeX assumes that the task of writing a text is different of that of designing it. Perhaps these tasks will be performed by different individuals, or at least by the same individuals at different moments.
Notice that LaTeX comes with this embedded knowledge: writing a text is not the same task as creating the design. People have a name for this: separation of concearns. This is not the only one. Here are some things about text editing I have learned using LaTeX:
- separation of concearns
- the length of a text should not exceed a certain limit, in order to keep the reading comfortable
- the design of the font can make a huge difference on readability
- the space between words should be both small and constant as far as possible
- bibliography should be kept apart of the main document because you will probably reuse it
- tables should be small and contained in a single page
- the first paragraph after a title shouldn't be indented
LaTeX is by no means a casual tool, it is not easy to learn. But it is
certainly easy to use once you've learned it. You can create a
professionally looking article without worrying about it's appearance at
all. You can create a table of contents basically by writing
\tableofcontents and LaTeX will handle your footnotes
beautifully without you even noticing.
Quick decisions or quick results
In a third world public administration things are done in quite a hurry. Everybody is convinced that the inefficiency and corruption are due to the lack of good will and honesty of their predecessors and, as they are not like them, they will be able to do a lot of work easily and fast.
When facing the need to start a new project, the decisions will be taken almost immediately, the project will be started right away and those silly voices warning that this has been tried before will be ignored.
By watching this over and over I've come to realize that not starting a project and even abandoning projects is an important key to productivity.
Consider, for instance, that you want to learn to code, to speak French, and to spend more time with your family. A minute or two thinking about this issue will bring you to the conclusion that these things won't happen at the same time. Abandoning one of these projects or officially postponing it will help you being successful in the other ones. After learning to code, you may start your French lessons.
My point is simple: there should be no hurry to start a project or to make a decision, because this won't help finishing early.
Here are the tools I use in my daily job that I think help me be productive:
- this powerful text editor makes editing code so much easier. In vim you have a normal mode separated from the insert mode and it's commands feel like a language.
- this minimalistic window manager stays out of your way while providing a very efficient interface and user experience.
- bulk edit files using regex.Use -n and p to test. Carefully use -i to change in place.
- working with data is very practical with awk, you usually need minimum to no effort to start to work with you data in text files.
- understand your problems easier with the help of this diagramming tool: you write with a simple syntax and dot or nato will create elucidative diagrams that will help you understand your business problems and even your code.
- the python console is extremely useful. The simplicity of this language makes it ideal use as a helper console to experiment and test ideas.
- the web most used languages are not only useful for creating websites. If you think about it, they're a very good document editor toolkit that produces portable, lightweight documents fully integrated with anything you imagine.
- why use version control only for huge projects? Why not versioning your documents folder and avoid loosing anything.
- filter an output based on a regex (use -v to negate the results)
- Silver Searcher ag
- A quick way to search withing all files in a directory
- a fuzzy finder that allows you to quickly find something you are looking for in a fuzzy manner.
- processing videos