One of the most important thing that I like about pair programming with other awesome engineers is you get to see their workflows. How they get things done? How they get find and make their way around tools, terminal, and editors?
After witnessing and getting awestruck by many such experiences I realized that having an effective workflow can increase your day to productivity many folds.
The next step was to take action, and while doing so, I have compiled few tips to make your engineering flow faster too.
1. Identify waste:
According to the Toyota Principles:
A waste is any hardship and drudgery that doesn’t align itself with what customer requires and is willing to pay for.
The First step towards developing a ninja workflow is to do an audit and identify waste.
Identifying waste is the first step towards eliminating it.
Ex. My workflow had many wastes like not automating enough, not harnessing the power of IDEs, waiting for the large codebase to reload etc.
2. Get proficient with your IDE:
Today, IDEs are super power packed. To develop an awesome workflow, we must learn how to harness the power of our IDEs.
I use PyCharm for my day to day work and have witnessed very considerable efficiency increase once I took steps to become proficient with it.
- Custom live templates
- Smarter code navigation
- Custom keyboard shortcuts
- Distraction free mode
All make you a power user. It’s worth investing time given the return on investment.
3. Get familiar with Unix shell commands:
Getting familiar with Unix shell commands is a game changer. First, it makes you look smart and second it helps you automate stuff.
I noticed that I used to do a set of repeated tasks every day when I started working.
- Login to office WiFi network
- Open browser
- Open Slack in tab
- Open mail in a tab
- Start the IDE
- Activate virtual environment
- Checkout VCS repository etc.
And now all it looks like is:
You get the idea. Invest some time and become a Unix power user.
4. Automate your manual workflows:
Developing skills to automate takes time. Whether they are using shell scripts, browser extensions or little code snippets.
Investing time in automating workflows is a high leverage activity.
Ex. You don’t need to manually follow a certain flow of the app to test out something every time, which takes 2-3 mins.
Can we automate this and do this in 2-3 seconds.
How much time will it save if suppose we do this 25-30 times on average?
Ex. Or automating generating search tags for blog posts 😛
5. Prefer keyboard over mouse:
We all will agree. Using mouse is slow. Using keyboard over mouse helps decrease the time it takes to perform actions by many folds.
The action that was buried under 3 sub-menus can now be performed just by pressing a key combination.
Personally, for this, I would highly recommend a plugin for JetBrains IDEs called key promoter. It’ll help big time in getting over our mouse addiction.
6. Learn at least one productive high-level language:
Getting things done in a language like Python is way faster than something like say, Scala.
Learning at least one high-level language allows us to quickly test out ideas and implement them.
No more resistance of writing a 20 line class just to test out an API call to a service.
Move fast and test out ideas on an interactive interpreter instead of compiling code files.
7. Make it easy and fast to run the unit tests associated with just your current changes:
Running the entire test suite or even the test suite of the module you touched can be time-consuming. Life is too short for that.
To quickly validate things, make it super easy and fast to run the unit tests of just your current changes.
Personally for this, I use the copy reference feature of PyCharm a lot, and obviously, I use the keyboard shortcuts to do so.
With this post, I wanted to share some ways that I’ve been consciously working on to making my engineering workflow as efficient as possible. Still, there is a big room for improvement, but hopefully, this article would’ve been of a little help at least.
That’s all, folks!