How to code without trying.
There’s a huge difference between trying to do something and actually doing it. If you don't see it, imagine asking your partner, "Do you love me?" and hearing in response, "Honey, I'm trying to love you as hard as I possibly can." How different that is to, "I do love you!"
When we do something naturally, effortlessly, without actively trying, we usually get much more enjoyment out of it, and the outcome is usually better. When you execute a perfect golf swing, tennis shot, ball kick or throw, dance move, etc., it just happens. You don't force it or seem to control it in any way. Things just happen when you do them naturally, without trying. The book "Trying Not to Try" by Edward Slingerland explores the early Chinese philosophers’ approaches to harnessing the power of spontaneity. It’s a very interesting read.
But how do we, as software developers, create beautiful code naturally, without trying to artificially push it out? Another book – "Flow", by psychologist Mihaly Csikszentmihalyi – might offer some answers. From his extensive research, Csikszentmihalyi postulates three main conditions that must be met to achieve "the mental state of operation in which a person performing an activity is fully immersed in a feeling of energized focus, full involvement, and enjoyment in the process of the activity" – a state of “flow”:
-
We need a clear set of goals, and progress. That's where user stories come in. Great user stories give us a clear understanding what needs to be done. A Kanban board is awesome at providing visual feedback of the progress we make.
-
The task must have clear and immediate feedback. Test Driven Development and Continuous Integration provide this feedback.
-
The task should match our abilities. If it's too easy, it becomes boring; if it's too hard, it's overwhelming and leads to procrastination.
By creating these conditions we have a chance to get into a state of flow, where the hours just fly and we gain immense joy and satisfaction from the work we produce. In the end, that's why we code, right?
"In the end, that's why we code, right" - we code to solve a problem don't we? Code is just a means to an end. Great post though Alex!
Sometimes we need the perfect life as described and we're looking for it... Human nature.
I saw many trying to do the task instead of fighting to achieve.. Thin line difference, well explained..
You described euphoria. We live in reality. The stories are never perfectly clear, the tasks are never perfectly balanced and you are in and out flow throughout the cycle. It's the belief in delivering the best product you can and ensuring your product meets the end user expectations.