Producer-consumer problem, revisited
Anyone who has learnt basic "operating system" concepts in their Computer Science engineering knows about the producer consumer problem. It is a classic synchronization problem, where there are 2 processes, the "producer" and the "consumer", both sharing a fixed size common buffer. The producer produces something that is consumed by the consumer. The problem is to make sure that the producer does not try to add to an already full buffer and that the consumer does not try to remove from an empty buffer. But today I am not going to discuss this problem from a Computer Science perspective, but from a completely different angle.
I had mentioned in one of my previous articles, here, I am trying to write 1 new story every day, or atleast every weekday. Now you might ask what has that to do with the producer-consumer problem. Well, let me explain.
Before I started writing stories everyday, I was a pure consumer. I would only consume posts/stories/articles, really data, from different sources (blogs, forums, email, social-networking sites, etc). But now I am slowly making a shift towards being a producer as well. Obviously, one cannot become a pure producer – one who only produces (articles/data) without consuming (articles/data), because for the human brain to perform it's magic, it needs a lot of input. A creative mind is one that takes to (apparently) unrelated things, and combines them in such a way as to create something new and coherent out of it.
Having laid out the background of "producer" and "consumer" in my story, let me now get to the "problem" part. Well, I notice that as I am making the move from being a consumer to trying to become a producer, I am falling short of things to write about. There are days, like when I was writing the "git week" series (see here, here, here, here and here) when writing was easy. But once the series concluded, I am finding it difficult to find new topics to write on.
I have noticed that I feel comfortable writing about technical things (eg, git-week series, svn-unmerge, environment variables in crontab, etc), than non-technical (different between learnt and learned, don't break the chain, etc). But sometimes, when I have written part of a post, I feel like either I am not able to reach to a good ending, or like the post is not feeling coherent enough. At such times, I tend to give up much more easily on the post, rather than struggling to complete it. My mind seems to be eager to jump off to a different topic, leaving an unfinished mess behind. And this is the "problem"!
Although I have done some homework on this subject and read techniques to maintain steady writing, it is easier said than done. I think the only way to solve this problem is to have a plan and keep it simple:
- Don't break the chain
- Practice makes perfect
I believe that the 1st rule "don't break the chain" will take me a long way till the gates of the 1st part of the 2nd rule "practice", which will eventually take me to the 2nd part "perfection". What say you?