Systematically apply processes
History / Edit / PDF / EPUB / BIB / 2 min read (~372 words)How can I be systematic in applying processes?
The first step is to always make your processes explicit. Write the various steps you go through while doing something. First, simply write down those steps as you do them. Then indicate the dependencies between the steps. You may notice that some steps can be done earlier in the process if all their dependencies are already completed.
As you write down more and more of your processes, make sure that you can easily refer to them. If possible, keep them in a centralized location where it is easy for you to edit them. In my case, I write my processes in this blog.
When you begin doing something which you've never done before, create yourself a document and write down the steps you are doing as you do them. Once you are done with the task, save your document.
When you begin doing something for which you already have a process in place, open up your process document and quickly glance at it. Start going through the process without using the document and jot down what you do. After you are done, look at what you did and compare it against the existing process. Is it the same or has something changed? Did you forget to do something? Did you do something new? Did you change the order of some of the steps? Apply the changes you think are useful to your process and repeat this discovery phase a few times.
After you've established a process, you can simply open the process document and follow it. If you notice that some steps are still missing, do add them to the document. If you version control your processes, you will be able to observe how it evolves over time.
One benefit of making your processes explicit is that it allows you to stop doing them for an extended period of time. When you need to do them again, you can simply look at them again and know what you need to do. It is also beneficial if you work in a team where you could delegate some of those processes to other people.
- Define what is it you want to communicate
- Define why it is you want to communicate what you want to communicate
- Write down all the topics you want to cover
- Organize the topics in a structured manner (i.e., an outline)
- Write a draft
- Expand the points of the draft
- Review the grammar with https://www.grammarly.com/
- Use keywords services to find topics that may be related and interesting to cover
- Define the audience
- Define the purpose
- Define the assumptions
- Provide a way to contact the author
- Provide a way to ask additional questions
How do I improve my processes?
First and foremost, to improve any process you need to start by writing the process down. All the steps or things you need to consider should be written in a document. This will allow you to review this document over time and improve it as you find ways to make the process better.
When you perform the process, look at your document and see whether you are applying all of the steps you wrote down. Identify the steps that are more critical than others, in which order you complete them, how long it takes you to accomplish them, whether some steps are sometimes relevant, etc. You want to capture information about the process as you are going through it in order to identify sources of improvement. If a step takes the majority of your time in a process, ask yourself whether this is expected and whether it would be possible to optimize or automate this step in order to reduce the time spent on it.
If possible, share your processes with others. Have them share with you how they would go about doing the same things you do and take notes. Some of the things that may be different between you and others are the order in which you accomplish the steps, which steps you consider critical and how much time is spent on each step.
Even though some of the processes you follow on a daily basis may appear trivial to you, you might end up realizing that those processes are quite complex in nature, especially if you need to write them down.
Try playing around with doing steps in parallel vs doing steps sequentially and see which one is more efficient.
In order to improve your processes, you need to define what it is you want to improve. In my case, I want my processes to be efficient (doing things right) and effective (doing the right things). Compared to myself, a process is improved if I need less time to accomplish it while producing the same quality of results or if for the same amount of time I produce higher quality of results.
Run your program with python -m cProfile -o profile.cprofile my-script.py
Install snakeviz
(pip install snakeviz
) to visualize the generated profile.
snakeviz profile.cprofile
Alternative approach
Install pyprof2calltree
to convert the cprofile to a kcachegrind compatible profile.
pyprof2calltree -i profile.cprofile -o callgrind.profile.cprofile