Productivity
The effects of overworking
Overworking cause burnout. You spend more hours working, with less time to relax and recharge.
The cost of overworking:
- Learning new skills
- Gaining new knowledge
- Buidling your network and relationships
- Getting certifications
The activities that get you promoted and progress your career are not working more on projects.
Setting the foundation
Chasing passions
Don't chase money. Chase your passions, pursue the areas that you love working. Motivation is a giant productivity.
There are things don't go your way. Don't forego thing you love in order to do thing you have to do. Take less money to put yourself in a better situation
Invest in yourself
Myth: Learn a little about everything Maintaining breath, but developing depth. Where you have deep expertise in one or two areas and proficiency in others. Expertise is what make your future tasks easier
Nobody is an expert instantly, and it does take an investment in yourself. But don't overwhelm yourself through excessive time trying to learn everything and staying up to date on everything. It takes time at one point to try develop expetise, it really pays off later.
Thinks about what you're going to explicitly ignore right now, a new shiny framework, programming language, technology. Don't get caught up in those. Develop expertise in certain areas and develop some depth.
Build expert network
Myth: Be a lone genius
- Letting go of egos, asking questions to other smart people when you don't have the answer, and not wasting time trying to solve problems that other people already have.
- You will get your things done faster because you get access to a broader set of advice givers
Blog, twitter, linkedin account will expose you to a lot of people who have directly impact on your carrer
Eastablishing a Frame of Mind
1. Learn to say no
Know you limit, know how to handle it when you're at your limit. Cutting out meetings with no agendas, unproductive relationships. If you don't value your time, no one else will. It's about being smart
2. Decompose the problem
This is actually how to tell a good architect from a bad one during interview. Good architect will decribe a big problem into different things that can be solved easier.
Dont write books, don't write a bunch of chapters. Write content for a bunch of section. See daunting tasks as something that can be composed into sections and other sections. It help you brain around the work easier. By solving pieces at a time versus viewing this massive task you have to do.
When you write a book:
- Identify which modules might be there
- Break out what sections make sense in the module
- Add the research to each section, then start writing
In a tech system:
- Write stories, requirements
- Design component, architecture, API
- Write docs
- Setup development environment
- Write code
3. Check multiple boxes
Do things that can be used multiple times.
When you do something, think about hopefully you can use it later. It's not just a one off demo. When you're doing those things, make sure that the tasks you're doing potentially can be something that can be leveraged later on by something else.
4. Countinuous improvement
- Constantly looking for efficiencies that can get your activities done faster.
- Invest in tools that help you refactoring code and debugging.
- Reflect on what you did after every projects. Looks for inefficient things where you could improve better
Rules for being productive
Get into the flow
Principles of flow: Everything important will find its way to you many many times; don't worry if you miss it.
Remain in your flow: be wrapped up in the thing that has captured your intention.
Plan every day in advance
- Spending 10 minutes planning the evening before can save you 1- 2 hours in execution the following day
Design before you implement
A common beginner's mistake to jump right into writing the code.
Giving more emphasis on the design and structure may increase the time taken to write the code. It can save you a lot of time wasted on later refactoring and chasing
the bugs
Have a superb communication
Make sure you understand what is required and what is not required. A lot of times, we as engineers make so much assumption about the requirements and we end up over-engineering the product
Document your work nicely
Be it code, architectural design, some magic tricks for your compiler, etc. This is really important when you work in a team. A lof of the times, your co-worker will ask you for things that you have explained zillion times to the other coworkers but him. If you have to keep explaining it to everyone, it will suck your time like a black hole. You don't want to spend too much explaining the same thing over and over but at the same time, you want to be helpful and get respects from your peers.
Do creative work when you are in the Zone
In positive psychology, being “in the flow” or “in the zone” means performing an activity while fully immersed in a feeling of energized focus, full involvement, and enjoyment.
Don’t listen to music
unless it’s absolutely necessary, lyrics = distractions.
If your peak productivity hours are in the morning, don’t waste them doing menial tasks.
Instead, you can leave those for after lunch or at the end of your shift, when your focus is lower.
Minimize distraction
If you are distracted, it will take you 15 minutes to regain focus.
- Don't check social media, news, youtube when you're supposed to work.
- Don't listen to music. If you constantly get distracted you will get pulled out of your zone and productivity will go to zero.
- Turn off notifications for your phone.
Procrastinate When There Is Nothing Else You Can Do
At some point you’ll hit a deadend, and there’s no point in denying it. So, instead of kicking yourself for not being able to find a solution, and keeping up with the work even though you’re obviously not up to the task, procrastinate.
Take the time to relax, watch an episode of your TV show, take a quick walk, go to the gym
More often than not, the solution will present itself very quickly. You should do the things that help you rest and refresh. If you can, take a power nap - that’s probably the best option.
Gamify Your Mind
Dealing with repetitive tasks, or with too much work can cause you to procrastinate.
Invent some rules, or create goals that will make you feel like you’re playing a game.
For example, challenge yourself to complete your daily tasks in six hours. Make it a big deal! Reward yourself with a night of binge watching of the new season of that TV show you really like, and if you don’t reach the goal, don’t check your Instagram for 24 hours.
Take full advantage of automation, DRY, & KISS
If you need to compile the code or may be Automate everything that you do repeatedly, including command lines, text manipulation, log mining, refactoring, building, deploying, and integrating:
- code generation
KISS: keep it short and simple
Work on other projects and learn new skills
Work on new projects can be an excellent way to keep your mind fresh. Hoppy projects can reflect more on your own ideas and help you grow as a coder.
Results, results, results are how you keep yourself motivated. Create a minimal prototype. Then if it's not fun, scrap it. Repeat until you have something you like enough to keep working on it.
Use good tools. Don't use a language/framework that forces you to do too much like C++ or Java.
Don't optimize prematurely
Premature optimization is a serious issue among the coding community.
Read books
“Internet has everything, and I don’t need a book.” Yes, But it doesn’t show the full picture.
Books, on the other hand, offer a unique view on managing projects or understanding programming language or technology. They're generally written by veteran engineers who have served the industry and who are sharing their experiences and offering tips on how to avoid the pitfalls.
Get proper sleep
Working fewer hours can help you remain productive. In the meantime, you also need to get proper sleep. Without proper sleep you can easily hamper your productivity to a great extent. Not to mention, improper sleep can also hamper your health and cognitive capabilities.
Don't multitask
- Don't review some other developer's code while you're in the middle of writing a piece of code. Focus on one task at a time
Optimize your IDE
Installing snipeets. Snippets can save you a lot of time while coding since they allow you to not keep writing the same code over and over
Take more breaks
Although it sounds counterintuitive, it's actually true. If you want to get more things done, you should take a break more often
Working too long without breaks will eventually make you less productive.
Work on the command line
Create aliases for commands that you find hard to remember or to shorten very long commands
Be less random/ Consistent schedule
Structure is extremely important if you want to be more productive. Don't just take things as they come. Try to start working at the same time every day
The same applies when it comes to taking breaks. If you have a certain routine in your workday, you'll find yourself being much more productive
Invent whatever rules suit you, do what feels right.
Scope every tasks
Know how much time you have for something, aggressively time boxing your activities to prevent gold plating when there's not time or it's not necessary. You can ask for help, simplify the task
Don't procrastinate
If you think of something are you're capable of doing it right now because you have the free time, without derailing something else, do it.
Reduce the number of haft-completed things.
References
8 Tricks for Improving Developer's Productivity Levels The Indiscipline of overworking
- Steady development is smooth, smooth is fast development
| The difference between successful people and really successful people is that really successful people say no to almost everything — Warren Buffett