This post originated from an RSS feed registered with Python Buzz
by Rod Hyde.
Original Post: Productivity
Feed Title: The landscape.
Feed URL: http://www.bloglines.com/blog/RodHyde/rss
Feed Description: The technical landscape through the eyes of an occasional indie games programmer who now uses Python as his language of choice.
When I was younger, I was a more productive programmer. In recent years I have been frustrated and disappointed by not being as productive as I used to be, because my mind would remember the time when I could write 4k-5k lines of high quality code a month and would give me a hard time for no longer being able to do so.
Around the same time, I could also eat lots of very hot Indian food and not suffer the consequences. But I can't do that now. For ages I used to think that I could, but my mind has finally realised what my stomach has been trying to tell it. I still love Indian food, but now I steer clear of anything that combines the words Chilli and Jalfrezi in the same sentence.
The reason why I could once eat hot Indian food, and the reason why I was so productive as a programmer are one and the same. Practice.
I got to be good at eating Indian food during some trips to Kuwait in 1993/4. I was staying in a hotel which had an Indian restaurant on the top floor. Indian wouldn't have been my first choice, but a colleague who was already staying there recommended it. The first time I tried the food in that restaurant, I thought a mere Butter Chicken was hot. After six weeks, I'd tried everything on the menu several times and, with a couple of exceptions, didn't find it to be particularly hot. Practice. When I returned to Kuwait, I stayed in the same hotel and again was a regular at the same Indian restaurant.
I got to be productive as a programmer because that was what I did every day. I was paid to write high quality C code, so I wrote high quality C code. I also had the good fortune to be given the opportunity to work on a couple of side projects, and I used to find that I was also very productive on those. Another feature of the side projects was that I had less time to work on them so I had to plan my work very carefully. So, in this case, practice and planning.
In the last couple of weeks, I've been rediscovering that buzz of being productive. I won't claim to have written 4k lines of Python code, but I have had the advantage of having an interesting side project at work, involving wxPython. Because it's a side project I can't work on it full time. In my main role (UNIX sysadmin) I do things like writing DR plans, preparing AIX upgrades, patching HP boxes and solving the tricky technical problems that always end up in our team because there's no other home for them. So, to cut a long story short, as I can only devote about 60-90 minutes a day to my side project, I really have to plan how I'm going to spend my time on it.
I don't plan very far ahead. I'm not talking about a large project plan with milestones, dependencies, resources and all that stuff. Been there. Done that. Got the scars. Why do you think I went back to being a techie? Sure, I have a big long list of features that I would like to implement. But my planning is very very short term. I write a simple schedule for the next few hours of project time.
For example:
00:00 implement unit tests for 'Pieces' 00:30 commit to SVN 00:35 look at wxPython help to figure out how to implement custom events 01:00 write unit tests for custom events for task completion 02:00 commit to SVN
... and so on.
It may not mean anything to anyone other than me. But it is enough to keep me focused. I know what task I'm working on. I know roughly how long it should take. I know what's co
6d8
ming next. And at the end of each session, I spend 5-10 minutes (if necessary) making sure that the plan stays relevant. I'm amazed that in some cases I've overestimated the amount of time certain activities will take. When did that last happen? I would go as far as to say that I'm close to being doubly productive when I plan my time like this, and that's a shock.
At home, I'm still trying to write a game. I have similar time restrictions at home, in that I can only really do around 60-90 minutes work in the evening. I've taken to planning that time in the same way. My productivity levels have risen.
Now, after years of frustration I'm making progress, because now that I'm getting to be a programmer at work, even if it's only for 60-90 minutes a day, plus the fact that I'm using the same programming language for both my work and home projects, plus the fact that I'm planning both in the same way, I am able to walk away from my PC feeling like I've achieved something.
The planning enables me to get more out of my time, so I get more practice. As I get more practice, I get better at programming once more, which in turn means I get in more practice. The fact that I'm using Python helps. It is so pragmatic. Just try to implement the equivalent of copy.deepcopy() in C++. Yes, you could do it. But while you were doing it you wouldn't be getting your game any closer to completion.
So for me, programming productivity = regular practice * simple planning * python.