After part 1 I want to add some more rules about time management.
Unknown language or unknown framework takes 5 times longer, then something that you know and very proficient with. This applies for any feature you need to add to a legacy project.
There is never enough documentation. Examples always better than theory.
Services that allow to search for sample code are priceless. Learn how to do it on GitHub if you never tried that.
Focus on solving tasks, but not on code beauty. Make a list of tasks and strike them out.
Think about architecture looking ahead. Just a little bit. If you think too much, then you’ll end up with things that will never be used.
If time estimated wrong, that is not your fault, there is no such thing as “I’ll stay for ten minutes more”. First, you cannot be productive at the end of the day. Second, tomorrow you will rewrite all 10-30 last minute code with much better solution and slap yourself.