When I was a little bit younger I programmed all the time and did never stop. I thought that in order to get better at programming you have to programm.
This is of course true. But today I would have one advise for me: "Stop fucking programming all the time, thats just ONE way to get better."
The mind is a complicated beast and by doing unrelated activities, you can hugly increase your performance while programming.
Here are some things that I tried out - of course there are other benefitial activities, I just want to give you some ideas what you could try out.
Image source: "racorn/Shutterstock""
3 years ago, I started to take extended walks around a lake nearby. They take about 90 minutes. I had some of my best ideas there. My mind is so underwhelmed that I process all the stuff that happened during the day.
If you do not have 90 minutes, you could also buy yourself a FitBit and deliberatly start to walk 10.000 or more steps every day.
It is easy to reach this goal. I walk circles during wating for the train or I take the stairs instead of the escalator.
Walking does help me to fall asleep and to maintain a relaxed and focused mind the next day, please try it!
Play with Lego
Playing lego is similar to programming: You have endless possibilities of combining the basic elements.
"Pragmatic Thinking and Learning" mentions building blocks as a tool to think about your designs. So you might even want to buy some for the office.
Take long vacations
I think to not programm for extended periods of time (weeks / months) is really benefitial. You have time to slow down and think about what you are doing on a higher level.
When I was cruising along the Antartic Peninsula and saw the mases of ice for instance - I feelt insignifant. Work is not the most important thing on the world any more. This can be only benefitial.
If, at the end of my trips, my fingers are itching and I want to programm again - maybe I am doing something right. If not - I try to find out why I am so reluctant.
Image Source: " maxpro/Shutterstock"
Currently I am doing one strength exercise each day. I am not sure if these things have any mental effects - but I guess it can only be benefitial if your body is in a good shape ,if you try to sit in front of a desk all day long.
Play / Learn an instrument
Image Source: "igor.stevanovic/Shutterstock"
I play the guitar. I am not good at it - but that is not the point.
I love listening to it, it relaxes me and I also think it bosts my creativity.
Also improvisation feels a lot like being in the flow during programming. Playing good requires playing economical and mastering the technique. It's a long way to mastery. Sounds familiar?
Image Source: "S.Dashkevych/Shutterstock"
I write 30 minutes each day. Mainly about work related stuff.
It help's me sort out all my experiences and ideas. It helps me to reflect and share my knowledge. Last but not least it helps me to improve an important skill, that every good developer needs: To communicate clearly.
If you do not feel comfortable to write for other people - try a tech diary first.
Image Source: "ollyy/Shutterstock"
I am practicing mindfull meditation for some time now. You concentrate on your breath. Whenever a thought or feeling comes up during this you acknowledge it and concentrate on your breathing again.
Mediation helps me to realize ,when I get angry or exhausted at work and helps me maintain a relaxed attitude.
It also helps me to relax me after a hectic day. Unfortunately it is not easy to practice because during mediation I often realize, that my mind is everything else but calm.
But nontheless - I highly recommend giving it a shot.
Learn a new language
Image Source: "Alfredo Ragazzoni/Shutterstock"
As with programming languages: Learning a new language is a benefitial undertaking. Recently I read that brains of programmers are bilingual. This might be true. Learning foreign languages seems more enjoyable to me, than it was in school.
Here are language learning sites that I tried out. All of them are great! And all of them have IPad-Apps ;)
Of course it helps you during your voyages if you choose to go on vacation. I speak German, English, some French, a bit of Russian and I also tried to learn german sign language (which failed - but hey maybe later)
Read random stuff
Image Source: "violetkaipa/Shutterstock"
If you only read computer books until now, I recommend that you start to read books that are only slightly related to programming. Here are some books that I found great:
- Universal Principles of Design
- A pattern language
- The society of mind
- The design of every day things
- The power of habit
- The information diet
- The lynchpin
- The 4 hour chef
These books helped me to think about programming from new angles.
Change the way you eat
Image Source: "Bottaci/Shutterstock"
For a while now I try to eat a high fat, no carbs diet. I can not even begin to describe how great I feel with the new diet. This is something that you have to try for yourself in order to believe me.
No low after lunch, consistent, relaxed energie during the day and some of my health problems are far better now.
What is also nice - I learn how to cook. It still tastes dubious but at least I do something about it ;)
Train your brain
Image Source: "Eanpictures/Shutterstock"
The effects of these trainers on programmers is not really proven. For me they seem to work at least a little bit - and I like the challenge ;)
It also gives me feedback about my lifestyle, especially how rested I am. After a night with not enough sleep I suck at these games, when I play them at the breakfast table. I also suck at programming of course - but at least I know in advance.
Do stuff that you do not like
Often I deliberatly do stuff I do not like. I give talks. I listen for an hour to music I absolutely hate. I go somewhere that seems boring. I finish reading a book that seems stupid. I ride on icelandic horses.
Often at the end of the activity I am not so sure what was the reason for me hating the activity. I might still not love it, but I have pushed myself and grown a little bit.
So after you have read this random list of what I do - you might ask yourself what my point is.
My point is: do not microoptimize! The stuff that I do, might not be what you might want to try out. But you should really try to improve yourself in some other means than only be focusing on programming.
As a side effect you can also improve your health, your mood, your communication skills and might learn something interesting on the way, that feeds back into your programming.
I am really interested in more stuff that I could try out. What non-programming activities do you do, that feed back into programming?