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.
- 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
What tools do I use daily at work?
- Notion.so I use Notion.so to track my day to day tasks and their progress. I also use it to write down any idea I have during the day that I would like to explore at some point in the future. I've described my task management system in more details.
- JIRA I work in a corporate environment, which means that we need to track tasks and assignments through a shared system. That system is JIRA. I don't particularly like JIRA after having used redmine for 5+ years and liking it. JIRA is slow, complex and cumbersome, which makes me avoid it at all costs. It's a shame, given that task management is one of the most important things in a software development business.
- Visual Studio Code I use VS Code to take notes throughout the day as well as to edit files from time to time.
- PyCharm My current job is mostly about writing python code, and PyCharm is the best IDE to do that. I use it to implement new functionality, write tests and debug issues. It is highly customizable which makes using it a joy. I also make use of the run/debug configurations regularly to test a variety of cases over the lifetime of the projects I work on. Finally, because I've used PHPStorm in the past, transitioning from PHPStorm to PyCharm was easy and painless.
- iTerm2 I spend a good part of my day interacting with various CLIs. I use a Mac and the terminal simply doesn't cut it for me and I prefer interacting with GUI tabs over having a tmux.
- Chrome Anyone doing software development spends a large portion of their time online looking for solutions to their problems/questions. I use Chrome mostly to use the Google suite, to use Jira/Confluence or to look at reports generated by the tool I work on.
- Google suite (Gmail, Docs, Sheets, Slides) I work in a collaborative environment which means writing and reading documents to share ideas, data, requirements and notes with others.
- Slack Working with others means communicating with others. While it's possible to talk directly to my teammates, sometimes it is more respectful to simply send them an instant message asking them to come to see you when they are available. Slack also allows communication with people in other teams, as well as people that are in separate offices.
- GitHub We use git exclusively at work as a way to do version control. We use GitHub as our central location to share our repository, as well as to do code reviews.
- Drone Whenever I push code to GitHub, Drone makes sure that a variety of tasks are executed to ensure code quality: linting, code formatting, type checking, unit/function/integration tests and documentation building. Having a build system reduces the time between faulty code is pushed to GitHub and the code being fixed.
Should I wear a face mask against COVID-19 if I'm not sick?
If you have masks already, wear one. It will protect you from others and others from you.
If you are sick and you need to go out in public, wearing a face mask will help reduce the chances of spreading the virus to others.
If you want to avoid being ill due to the virus, the best way to do so is to avoid being exposed to the virus. This means staying at home in isolation.
What do I look for in a library before using it in a project?
It has to be maintained so that I know that issues are addressed.
It has to be supported so that I know I'll get help if needed.
It has to be highly used compared to other solutions to ensure it's more feature complete and of good quality compare to other libraries.
It has documentation so that I don't have to read the documentation to know how to use the library for common cases.
It has to have a simple API that does what I need so that I don't have to deal with weird/incomplete API that do half of what I need.