Everyone is different, so what works for me may or may not work for you. But since I started working on my current project I've been experimenting with a new way of increasing productivity by being conscious of flow state and its conditions and it's working quite well for me.
Optimize for being in flow state as often as possible and for as long as possible. I aim for at least two long periods per day (morning, afternoon). It doesn't always work, but it's a good goal. Making it happen isn't easy, here's how I made it work for me:
plan coding tasks ahead of time so you can spend a long time just cranking code.
use technologies that you're already familiar with, or that have good documentation so it's easy to learn without major interruptions
get fast feedback: invest on good tests and avoid slow builds. Don't tolerate flaky tests!
avoid meetings like the plague! In my experience, a meeting will basically disrupt a whole period of work (say, a meeting at 10am will destroy my productivity from 8am to 12am!)
find a distraction-free work environment. I like to work from home when kids aren't around, or from a coffee shop or a public library. Some level of background noise actually helps concentration. Same for music.
Use a desktop app to track your productivity, how much time you spent doing work or slacking off. Having a report of how much "productive" time I spent on a week works great for my own personal accountability. I use timingapp.com but I'm sure there are others.
Make it harder to keep bad habits:
Remove social apps from mobile phone
Block twitter.com, etc on the laptop's /etc/hosts.
Things that don't work for me:
I don't use pomodoro techniques, personally. It goes against the goal of being in flow for a long time. I like to work with full-concentration, in the zone, uninterrupted for long hours and just forget about the world around me.
our team avoids slack, telegram. We have an arrangement to avoid distracting each other (because it interrupts the flow), so we prefer asynchronous forms of communication (e.g: Trello).
After graduating with a Law Degree, I decided to stick with my passion for software engineering. Currently focused on learning Javascript. It’s a dream to be able to master it enough to teach it.
Everyone is different, so what works for me may or may not work for you. But since I started working on my current project I've been experimenting with a new way of increasing productivity by being conscious of flow state and its conditions and it's working quite well for me.
Things that don't work for me:
I hope this list is useful for someone out there!
WOW, thank you Yves, for such great detail and introducing some alternative concepts. Things that I can try in the coming weeks.