As we follow the zig-zaggy quest of me trying to learn to program, I discover the next significant step, "Interest". I started with a goal: to learn to program. Next I came up with a plan: Learn Python by writing a program called PT (period tracker) but I lacked the last bit, interest.
You see, there was very little that period tracker did that a calendar didn't. Spending hours to make a program to do work that I could do in five minutes with a calendar and a pencil seemed like a waste of effort.
Now don't take this the wrong way. I spend lots of time on trivial things. I am an obsessive fan of TV series like "Doctor Who" and "Buffy the Vampire slayer". I write online Biology textbooks for fun, and I sometimes run "top" on my computer and watch as the screen refreshes every three seconds for no good reason. I'm pretty accomplished at wasting time, but I can't abide doing work "for fun" that bores me.
This gets to the heart of free software programming. People don't program just because they want to learn. They don't even program because they have a need. People program because they are interested in getting something done, and they are willing to do it themselves. Learning to program is time consuming and requires effort, but the effort means nothing if you're having fun, just ask anyone playing racquetball. Programming is best when it is play.
So my goal now is to play with programs. I'm trying to pick projects now, and it isn't as easy as you think. My first programs that I wrote were database programs. I wanted to make an address book for my sister. That was ages ago. My program never did work right, and before you know it I left that computer behind; but I still was interested in the problem.
Since then, I have occasionally done database scripting, but never programming, and I have often wondered if I should try to work with databases again. But database theory has changed a lot since I last tried to understand it, Recently I read a web page about database programming and the terms alone scared me.
But then again, most people consider databases beyond boring. The fact that I've been interested in them for decades is probably a quirk of mine that's not going away, so what can I do? How can I find an environment to learn how to program about something that I find interesting without feeling that it's a total waste of my time? Luckily such opportunities are plentiful in the open source community. You just join a project.
I decided to tentatively try my hand at helping with a free database project. How do you do that you ask? The best way is to join an open source project as a tester or developer. I decided to join the Kexi project (http://www.kexi-project.org/).
Kexi is the database bundled in Koffice. I have a copy on my desktop. Do I know how to use it? Almost. I may understand it better when the documentation has been translated from Polish to English. They say that's coming any day now. I looked online and they have a developer's wanted advertisement. It says Requirements C++, Qt development skills, and KDE libs development skills welcome. Do I have those skills? No. plus I was planning on learning python rather than C++, but learning is all about starting from a point of not understanding and doing your best. So I decide to volunteer as a software tester.
The page says that the requirements for a tester are Linux, an email address and KDE 3.3 or newer. Got that nailed, so the plan is this: I join the tester and developer mailing lists and watch how the program gets changed. When I feel courageous enough, I can even take a look at the source code. Then maybe I can copy some of it into a file, get a C++ compiler, and try playing with data myself.
Will this work, or is this a stupid idea? Is the program too big and advanced for me to ever understand? Will I get bored again and put it away? I don't know, but anything worth doing is worth doing badly the first time, so I'll take a chance. Who knows, maybe it will actually do someone some good.