Note: This article was originally published in Laravel Factory Blog
"I wish there were more than 24 hours in a day to let me achieve more."
Have you ever desired to have more time available for completing your side-projects or meeting the deadline, just like me?
Both of us know there cannot be more than 24 hours a day; Better choice is to just use the time that we have in a most efficient way.
There are many habits that help programmers perform better and leverage the limited time. There are no shortcuts. Its all about good habits. Once formed, they can save a ton of time for you. Lets cover some of those habits very quickly.
Do you know how many minutes do you take to complete X task? And how much of your work time is actually invested in developing stuff? 80%? 70? Way less than you think it is if you’re not tracking time currently. What about your team? How many hours do they code every working day?
It is very important to measure each of your activities on a day-to-day basis. Only then you can provide estimates for future projects properly.
"When work time is tracked, efficiency improves. And when the tracked time is being reported, speed of efficiency improvement doubles."
Fruits of this habit are way beyond statistics.
Every now and then, we read articles on the 21st century gadgets distracting us every few minutes. Benefit of technology advancements is that we have easy access to an ocean of knowledge now
But, too many attention seekers in today’s social world are breaking our work flow. Focus is more important than information, talent or intelligence.
Practical tip would be to keep your phone away while working and turning off all those notifications to improve your focus and concentration. Using good quality headphones or ear plugs for noise cancellation is a no-brainer
I have been enjoying the fruits of this habit recently. You might say: "How can the time be saved if 2 people are working on single task together?" I had the exact same question before.
Still, to give it a try, I started coding the system for this site with a teammate and there are more PROs to this method than CONs. We could decide on the system architecture pretty quickly, solve issues faster and main benefit was that both of us were quite focused.
Our mind is constantly wandering but when there is someone watching you during the coding sessions, the peer pressure keeps your concentration intact. And that is why live streaming of coding sessions is getting popular as people are seeing the advantages of it.
Note: Pair programming may not help in all cases. Firstly, both the developers should be on a somewhat similar experience level. Maximum time is saved when the project involves complex logic and updates. I would just say - try and see if it works in your case.
A programmer’s work is completely a mind game. Only a sound mind can effectively achieve desired outcomes. Every one of us experiences a flow in work occasionally and wish to have it every time we sit in front of the computer, isn’t it so? And for that we need to train our mind. Its all about energy.
Every decision you make throughout the day uses the energy and brings fatigue. Be a morning person. Most of us have a vibrant mind in the morning time. (I know, few owls!..) Observe your mood timings. When do you perform at very low level? And when is the peak? Build a great routine around it and energy will flow throughout the day.
Just like we take our meal ‘bite’ wise, our work assignments need to be completed in steps too. Whenever you are about to start a task, first step would be to break it down into smaller logical pieces and execute them one-by-one. You would assign specific time to each task using the methods discussed above.
If not, you would, like I do many times, be staring at the screen, thinking about various future problems and their solutions for a couple of hours. No work done. Dividing the task into easy-to-digest pieces/sprints saves time.
And this habit is connected with one very important point -
No Multi Tasking. I can’t recommend this enough. There would be thousands of articles throwing light on this single term specially. Doing several tasks at a time is a badge of pride for many of us; it is one of the biggest barriers for higher productivity at the same time. Our mind if designed to do only one task very effectively. You may try both the ways and measure the results yourself.
Now that we have loaded our mind with lots of information and processed so many thoughts, lets talk about breaks. Standing up periodically is required for "office workers" to prevent back aches.
And just like your body, your mind needs rest as well. As we know, muscles do not grow while one is working out at the gym; They get stronger during the relaxation phase instead. Same is true for the brain. Let it repair and restore the parts after a heavy dose of work. In fact, we often get the solutions to our problems during the leisure time.
This habit can save time in 2 ways:
By doing some stretches during a break will lead to a healthy body. And yeah, we add lots of hours to our life span with that
Let me illustrate with an example:
4:40PM: You have been trying to troubleshoot a complex bug since 40 mins and still nowhere.
4:45PM: You decide to take a 5-min break finally to give it a last chance before you have to leave at 5.
4:55PM: 5 minutes after returning from a break, you have solved it. Bingo!
"The only way to learn a new programming language is by writing programs in it."Dennis Ritchie
This is the most common advice while learning a new language and probably the least followed one as well. In today’s world, we love everything to be fast; Be it cars, computers or mobiles. At the same time, our learning is becoming rapid day by day.
We like to just skim through the articles (if you read this, you are not skimming, cheers), documentations and videos when we are learning something new. While this is helpful in few cases, detailed learning is hardly exercised. Simply put, do _sample projects_repeatedly when you learn new tools/frameworks to master them.
At the same time, practise and mistakes go hand in hand. Never let the fear of mistakes stop you from acting. While acquiring knowledge, the more mistakes you make, quicker you become adept at the respective skills. Mistakes while learning are good.
Proper foundation of logic and programming lets you complete a project in half the time others take. 10,000 hours rule does have essence I believe.
In programming, there is no right way to do things. Every style is opinionated. You just have to pick one that suites yours and follow it. At the end of the day, the code should be
Readable, Maintainable, Well-tested and Well-documented.
This will save time in the future. A software is never done. There are constant bug fixes, features additions and requirements updates. If the code is readable enough, you can make the changes quickly. A maintainable code will be easy to approach while adding new functionalities. A well-tested one will boost your confidence and avoid the worries of domain level effects during code updates.
Finally, this habit is going to take you to higher levels in the long run. We get into the competition with co-workers, unconscisously sometimes. This wastes a lot of time. We throw away more energy while trying to win the game instead of focusing on actual work.
The other benefit of ‘being’ together is a long-term growth. Sharing is caring. When ‘I’ becomes ‘We’, each person of the group excels gradually.
"If you want to walk fast, walk alone. But if you want to walk far, walk together."Ratan Tata
Just like savings, working as a team is hard at first and very fruitful eventually. Try that and you will never regret.
These are the important points, among others, which can help us achieve our goals. I would appreciate you sharing them with others. You are welcome to share your tips below in the comments section. Thank you.