This is the second part of an article listing simple tips which can improve your performance as a programmer. Most of them I'm using on daily base while other can be applied when you are starting new job or have multiple projects. There are some tips which are indirectly related to programming but could have huge impact on the working process and your creativity. My advice is to save this list somewhere and to apply only few tips at a single moment. In my opinion you need persistence and good will in order to exchange bad habits for a good ones.
Let's continue to next 12 productivity tips!
- 13. Use filters and folders in your mail client
- 14. 4 actions for new mails
- 15. Organize your desktop and applications
- 16. Create good documentation
13. Use filters and folders in your mail client
As a programmer I'm meeting many different people (working on different positions) and I have a simple way to distinguish good from bad from productivity point of view. Mailbox and desktop of a person is a really good indicator if he is trying to be efficient and clever(of course there can be many exceptions of this rules). I remember once when we had to do a quick meeting of 15 minutes(due to time constraints) and the chairperson searched for the mail with the plan 10 minutes. He has tons of mails and received hundreds of mails every day - all of this is placed in one single folder - inbox. For me this is not acceptable and here is what I'm doing:
- Create folders and subfolders
- Create filters and rules
- based on the recipient
- based on the subject
- move the mail
- forward to another person
This is the structure of my mail:
- Project A
- Person 1
- Person 2
- Project B
- Person 3
- Person 4
- Review Later
I'm doing this organization when I'm starting in a new company or a new project. Later on I'm doing maintenance if needed. Check in the next tip how this organization saves me a lot of time.
14. 4 actions for new mails
All we new the amount of mails that we receive each day and the drama of unanswered important mail for a long time. You can manage thousands of mail without a delay and only one unanswered can create a conflict with your manager. In the past I was reading all new mails and marking them as read nevertheless if I didn't do anything on this mail (but an action was required for me).
One day a friend of mine told me about the famous rule - 4 actions for new mails. And after that I'm applying it with great success. The rule:
If you have a new mail you have 4 options after quick read:
- Important mail and my action is required - immediate reaction - stop other task and switch on the new one
- Important mail and my action is not required - move the mail in a special folder Important and read it carefully later
- Unimportant mail and my action is required - move this mail to folder ToDo and move to it later
- Unimportant mail and my action is not required - do nothing for this mail
Sometimes I can decide whether to read a mail or not based on the organization of my folders. For example when I'm back from vacation and I have hundreds of mails received ( starting with most important is crucial) I'm reviewing my folders:
- Project A (5 new)
- Manager (2 new)
- Developer (7 new)
- QA (14 new)
- HR (1 new)
- Important (1 new)
I would start with mails in this order:
- Manager mails
- Project A
This can save of you huge amount of time.
15. Organize your desktop and applications
Another annoying part of working on unorganized person computer is how to find the right file. You can find files everywhere with many versions and extras to their names. Having 4 browsers and different versions spread between many other shortcuts. I know that some people prefer to work in chaotic environment but this seems to me very ineffective way of working.
Even I prefer to work on empty desktop without any shortcut. I'm creating Toolbars for Windows and shortcut applet for Linux. The structure is similar to all of my PCs so I'm able to change the PC and OS without any side effect to my work. This is the structure of my Toolbar folder:
- File transfer applications
- links to special places
- links to network drives
- IDEs - Intellij, Eclipse, PyCharm
- For restarting a driver
- Working scripts
16. Create good documentation
All we know that good and clear documentation could be the game changer for many projects and products. But how to create and what is good documentation? When I started to work as a programmer I searched for this answer of this question but I was not able to find the answer for a while. This motivates me to start from zero and this lead to birth of Lab Diary or my of documenting projects and organizing my professional knowledge. You can find more information on this link: Complete guide to develop a powerful documentation
You may ask why this matters for your productiveness - because the quantity information is what makes the difference in the modern IT world. Let's face it the one who has the right answer in less time he is winning the modern competitions. Nowadays there are plenty of sources of information and answers, most of the time even contracting to each other. You need to have a way to distinguish what is working in your situation and how to apply it. So this is where Lab Diary - your documentation - is going to help you:
- put important links and resources
- save all technologies and applications
- put the tips and tricks that you use in your everyday work
- put all scripts and solution there
- it's OK to put also the source of the your solution or additional info
You have a problem with proxy while connecting from your office PC using framework like Django. Then you find several answers which can be applied to your situation and only one of them is working. You can write down the steps which you applied to solved the problem and then to save the link to the working solution. So next time when you need to solve the problem to follow the exact steps.
This will give you also an overview of your knowledge and technologies. Think for this as a map of your professional expertise.
17. Do a learning plan
Learn from best in sport industry like Messi and Ronaldo. As you know they have special training programs and teams which are involved in their professional development.
So you can create a learning plan for yourself and keep to this plan for your career path. In this plan you need to have short term and long term goals. You can measure the goals and change them if you need. The plan can be based also on steady principles used by most sport stars. Here you can find some of the principles which can be applied also for programmers.
Learn something new everyday
Everyone has days when they are less motivated and I do too, but I know that in order to continue to work with the newest technologies, I must learn something new and push myself even on the days I might not feel like it. I love what I'm doing and I enjoy my days in programming and solving differing problems.
Tune into a solving mindset
I set goals to learn and solve problems in my mind as well as my body. In order to do high level mental work you need to be in a good physical condition. Despite many people beliefs - mental strength is just as important as physical strength and it helps me to achieve more on and off the office. I always make sure I have good music to listen to – it helps me get motivated and do my best.
Focus work is more than work
You should focus on important tasks and high-priority problems in order to manage complicated situations in optimal way. One hour of focused code analyses can be more than weeks of staring in front of the PC without any idea in mind. In order to have better focus you need to spend time in improving your focus skills.
18. Watch Youtube videos and screen casts
There is an extremely powerful source of information and how to do knowledge in Youtube. There are many benefits of watching Youtube videos about your programming area:
- you can learn new things very easily
- this is a way to find new or better solutions
- you can follow the trends
- specialized channels are the way for long term improvement
- huge and responsive community with similar interest
- Youtube can be used as free Learn by example source
There are many other benefits and use cases of watching youtube channels. Lets have a look on the next use cases:
You have an technical interview about programing
So you can find a good youtube video which summarizing many aspects of programming like OOP, design patters, algorithms and watch it before the interview. This will refresh your memory and prepare your in less than 15 minutes for many questions. You can prepare a bunch of videos for your interview preparation.
You need to improve your code quality
In order to improve your coding skills you will need to invest time and efforts. Reading books is one of the ways to do this. You can include also youtube videos as a complementary way to improve your skills. The advantage of using youtube videos is that your sound memory works with visual memory while you are watching. Another thing which is important is that the presenter of the information is giving emotion which can strengthen the memory process.
There are several risks related to watching youtube videos:
- losing focus on your work - be careful to not click on clickbait titles
- watching a video with wrong information
- watching too much instead of coding ( theory instead or practice)
19. Join Open Sources projects and contribute to communities
Open source is crucial for the modern software industry from the smallest companies up to the big corporations. Open source code is used for commercial products and services because provides great value and knowledge of the whole world. You can try to use all benefits of Open Source projects and learn a lot from them:
- Best practices - You can learn many good and best practices from Open Source community. They are responsive and the best way to test your current level and knowledge with the best amongst the programmers.
- Team spirit - working in a team can be much different in comparison to working solo. If you are lonely programmer or freelancer who wants to try working in a team without joining a company this will be a good alternative for you.
- Learn how to manage project - The biggest reason for failures and problems in software projects is project management. Getting a PMI certificate is not enough if you want to know how to manage and what errors to avoid. In order achieve practical experience in project management you can learn from Open Source projects.
- Security in IT world - security is very delicate and difficult are of software development. Software security is a topic with long history in OS world.
- Version Control - another important part of the Open Source software is versioning. In order to understand it and learn how to use it, what should be and what shouldn't be done join an OS project.
- Read other people code - you will become much better in reading and analyzing the other people code. This will boost your coding skills a lot.
Enjoy the Open Source project and sooner you will find yourself a better programmer and professional. For me the Open Source is the future not only for software development but also for any product development.
20. Participate in online competions
You can participate online games and competitions related to programming. This is another funny way to improve your skills. Lets list some of the possible option online:
- Project Euler - A website dedicated to the fascinating world of mathematics and programming.
- Halite AI Challenge - An AI programming challenge for all levels Users code bots to compete on a virtual board in a range of languages, strategies, or using machine learning.
- Coding Games and Programming Challenges - CodinGame is a challenge-based training platform for programmers where you can improve your coding skills with fun exercises (25+ languages supported)
- Check IO - Check iO is a browser-based game where you need to solve problems in Python in order to advance. (It requires you to log in)
- Codewars - Support several languages and it's a good way to check your skills and level while solving code puzzles.
- Code Monkey - more suitable for kids and their parents who want to start or improve their programming skills
Coding and playing games is interesting combination which will give you different point of view for coding. Sometimes you will find really interesting problems or facts like:
A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.
I didn't know this :) And I found it when I was solving a problem in Project Euler. The other benefit of learning while playing is motivation to complete all your missions. The only problem is that finishing with score 100% requires good level of programming and strong analytical thinking.
21. Do frequent breaks at work
5 - 10 minutes on every hour is a good option to refresh your mind and stop thinking about programming. Best is if you can walk on outdoor and enjoy the fresh air. This will improve your blood circulation and will clean your head. In the times when burnout is a real treat we need to have a way of reducing stress levels.
The need of taking breaks is well researched area which is under estimated by most programmers. Constant sitting at your desk never mind how good is your chair increase the risk of heart disease, depression and impact productivity in negative way. What to do? You have plenty of options and here I'll describe my way of dealing with this problem:
Set up alarm on your machine to on every hour - play a song or just as reminder. Another way is by getting smart watch or wristwear which can inform if you are sitting too much.
Setup an alarm like this post: Automate tasks in Windows and Linux
One every hour get up and walk - take water, use staircase(no elevator), visit a colleague
Once or twice per day - stretch, do yoga
Several times per week do workout with elastic resistance band
Just several 10-minute active sessions every day can improve your health, productiveness and confidence.
According to my self-experiments creative and mental work requires different approach and it is best done when you are relaxed and in good shape. Changing the environment and doing frequent breaks will boost creative process. On the other hand 8 hours sitting on a chair in front of the monitor are equivalent to creative suicide. Often solutions to toughest problems come after sleep or when I'm outside the office.
22. Start working immediately
Set a time for the start of the working day - let say 8. And when the time comes just start working. Do not begin your working day with watching Youtube videos or reading posts in Facebook, browsing endless meme-s and gif-s. Time for work is time for work. Don't waste time and use it clever.
Spending 1 hour every day for 1 year would be equal to the time for an average online course in something. For example artificial intelligence or big date. Then why to waste time doing nothing when you should finish your tasks and then be free to do what ever you want.
Several tips in order to be able to start immediately with work:
- create a TODO file each evening and start working on it next day
- have clear priorities - every task should be prioritized and manage according it's priority
- if someone/something is blocking your progress on a task then switch to another
- have breakfast before your working time
- avoid small talks early in the morning
- have a clear goal for your working day
Sometimes when you are not in a mood for work or there is a huge distraction in the office (like a colleague who is complaining for something) you can clean your desk, arrange files and documents.
23. Separate your PC on working and fun area
All operating systems can separate working space in a different ways. For example in Linux you can have several workspaces or Virtual Desktops in Windows 10. There are also other ways of separating your working environment. This will stop the temptation of staring Dota 2 or Star Craft every time when you see the icon. I bet that most of the programmers will be tempted to do something else when they have really tough problem to deal. If the temptation is in front of your eyes then you will be game over. So you can avoid this by doing clear separating of working and fund area. Another tips how to increase your performance are:
Add shortcut menu with most used commands and applications
This can be done very easily in every operating system. Your rule should be how can I start the a given program or software with less clicks. The same ways is for folders, paths and links. You need to have clear and organized structure in maximum 2 clicks. This is my sample structure for Windows 7:
- Applications - most used applications
- Projects - all my working projects, paths, folders, reporting
- Links - links to the different paths which can be often frequently
- Documentation - documentation which is important for my work and I use it frequently
- Scripts - code snippets or scripts
- Anything else which matters for you
You can do the same in your browser - instead of keeping 40 tabs open all the time. Just organize them in favorites.
Organize your Files and Folders
Have a clear organization for your files and folders is essential if you want to be more productive. Many people are tempted to have a bunch of useless files on their desktop or in folders like Documents, Downloads. And every time when they need to find a file they are searching and searching .. Avoid this by creating well structured file system. If you organize your files you will have a better view on your work and your professional experience. Let say that after 10 years you are searching for a new job. Then you can simply open your project folder and see the used project and technologies in the past.
24. Discover what is eating your time
You can try to find the leak in your work day. For example you may spend too much time in Facebook or Youtube. Tracking extensions are good option to catch time leaks related to web surfing:
If tracking time is not working then you can try with dropping activity. For example you can drop Facebook for one week and measure your performance. Or stop gaming for one whole week.
Time is one of the most important resources in professional and personal aspect. Wasting time for nonsense and stupid activities will destroy your self-improving process. Just think for this example:
A guy who is playing games on his phone everyday for 2 hours will spend roughly 730 hours or 91 working days per year. Not only this but also his mind will be obsessed with his games and his performance will be worse. He will slow down his career with life progress just because of a simple addiction.
I'm not saying that you shouldn't play games or have fun but to manage your time in a better way. First things first, do your job and then have fun. Having fun before work could result in a bad work.
Bonus Practical Performance Tips for Programmers
- Depend only on yourself and knowledge
Many programmers don't believe in their skills and knowledge. They depend largely on sites like StackOverFlow and guru-s. This is a mistake for me. If you want to be a good programmer, if you want to write software with good quality then you need to become:
- confident and self-reliable
- try before ask
- use your head
2.Follow trends and best practices from your knowledge are
3. Socialize with Authority Programmers
4. Visit conferences and forums
5. Automate boring tasks - you need to automate everything which is able to
6. Organize and Reuse ingenuine solutions
7. don't be tempted to use bad variable names or without comments
8. No programming, No Internet for 2 weeks in summer 1 week in winter
9. Find motivator, mentor, friend who share you passion for programming