Becoming a free software developer, part V: When and where did you learn?

Becoming a free software developer, part V: When and where did you learn?


In my last article I talked about how interest leads people to program. Then life rose up behind me like a giant Doberman pincer and bit me on my backside; so, I didn't think of programming for over four months. However, just this week something happened that made me want to program again.

I was preparing to teach some students how to use dichotomous keys to identify organisms. Suddenly, while I was staring at a simple teaching key for identifying fruit, my eyes glazed over and I had a moment of clarity. I realized that I was looking at the basis of a very simple program.

It was a list of rules. Simple statements that said, "If this go here, if not go there." In the back of my mind I could see the "either/or" options and the "goto" statements of my coding past, and I knew in my heart that I must make this key into a program!

My problem was that despite my forays into programming, I still didn't know how to program in Python, and I was afraid that if I opened another one of those long tutorials, I'd be asleep before writing my first line of code.

Luckily, I had another option. I grabbed my captive python programmer, read husband, and said "Help me make this program now!"

I saw a need. I had an interest. I had the ability.

Now you may wonder why a simple key could create such a desire in my heart, but it's a simple case of convergence. I saw a need. I had an interest. I had the ability. I knew from experience that when opportunities converge, one must seize the day, and I did. My husband dictated to me how to write the program, and I typed in the commands. We wrote a simple command line program that asks questions and comes up with a result.

I can hear you "poo poo"ing even from here. "He wrote the program, not you!" You say. That is indeed true, but that's how we learn anything isn't it? The first time you write your name on a sheet of paper, it is likely that someone is holding your hand, guiding you to form the correct letters. In the same way my husband sat over my shoulder and told me what to type.

What comes next?

I will try my own hand, shaping programs clumsily like a child trying to form the letter A alone for the first time. It will take patience and a lot of practice, but eventually I will write a program on my own.

And now I understand what I have been missing. I've been missing a teacher. Someone who will sit behind me and help me with my first programs? Abraham Lincoln may have been able to teach himself law by reading textbooks alone, but for most people I think that having someone nearby to help you when you are starting out is essential. The programming world is so full of posturing and bragging that a newbie like me is afraid to ask stupid questions. Where can a new programmer go to have someone hold their hand?

Where can a new programmer go to have someone hold their hand?

And so I ask you gentile reader, tell me, where did you first learn to program? Was it a class? Was it a friend or relative? Or did you learn programming first from a book, and if so, which one? Did you have a place where you felt comfortable asking beginning questions.

How did you first learn to program? Please tell me. I want to know.

Category: 

Comments

http://phayes.myopenid.com/'s picture

“Where can a new programmer go to have someone hold their hand?”

My advice to a learner (and I wish it had been the way I'd got started) would be to get a copy of GNU Emacs and hang out in #emacs on the freenode IRC network. Emacs, apart from being an Aladdin's Cave of useful and fun stuff, is enchanted: you won't need to 'learn' programming and you'll never get bored or lack a source of motivation - it'll just happen naturally :)

ezsurfer's picture
Submitted by ezsurfer on

I guess I was extremely lucky in life. When PC's were fledglings, during my stint in the US Navy, an ex-IBM programmer came to our department. 3 years later a large core of us left very computer literate and fairly tech savvy.

So, literally, yes, someone held our hands during the learning process.

We all actually learn more by doing, and often the most painful mistakes teach us valuable lessons. Who hasn't learned NOT to access the working copy of a database or just how valuable a backup can be????

Anyway, luckily for newbies, computer classes in local community colleges exist, and are rather mature at this point. The skill set I see coming from these ranks is often nothing short of amazing. So I would point to the local colleges. Hours spent in peer study groups and lab time should pay huge dividends in the future.

pachelbel's picture
Submitted by pachelbel on

Hi Rosalyn,

well, first, congratulation for your new challenge. When you ask where we started studying: I did in a class and am happy about it. Having a teacher explaining you what mindset you have to adopt is definitely a plus and there are tons of mistakes that one makes at the beginning that you want to solve quickly. Going from newbie to expert takes a long time and a lot of mistakes. Having guidance is a safe route.

On the other hand, I happen to be on MentorNet and have a "protégé" as they call them. He's learning off text books and, poor thing, I don't wish anyone to go through the same experience. The tough bit about books is to make sure you select the correct one and it's not his case. To choose a good book takes a lot of experience... that you do not have when you just start so you usually end up with whatever the seller wants you to buy.

If your husband is willing to spend time with you to teach you, do not think twice and take the offer: he may be changing his mind and you would be the looser :-) Being a relative, try to separate studies from emotions: that's probably the biggest threat in your case but if he is patient enough, it's not a big deal.

Good luck and let us know how you go
Cheers
Olivier

Jose_X's picture
Submitted by Jose_X on

Everything is hard until it's easy.

I started with BASIC. I did not do much programming for a long time afterwards however.

The key is to have an itch. All programming (and most things really) that I have learned have been learned to gain something that really interested me (or itched). This includes learning speaking, reading, 'riting, and 'rithmatic, I suppose. So the key is to have a comfortable environment where learning X will mean to acquire a new power. Carrot to be preferred over stick. Glass half full rather than half empty. I tend to use stick when I already have found the motivation but am faced with some other obstacle.

I like the combination of javascript and html/css because the html/css is declarative in nature and is visual and accessible from common web browsers. The javascript becomes the logic the builds the majority of the program.

Turn your program code into javascript and then put it into a webpage. You might for example, have options open up (or become highlighted or enabled) as you add restraints or new information. You can even use pics next to words as necessary. But, this won't be easy to learn to do by yourself in a very short time.

How about you post some code here of what you already have and maybe we can help you get started on js/html/css? Maybe even add in a visual description of what you might like to achieve visually. *Glance* at http://en.wikipedia.org/wiki/Event-driven_programming (that wikipedia page is horrible for a beginner to understand.. and googling some more didn't help). The javascript/html model makes doing this easier than in those examples because the looping code is implicit. The nutshell is that when the user clicks or selects something, we recompute based on that selection and the current state. Then we redisplay the new state.

From http://nerds.unl.edu/Pages/preser/sec/skills/dkeys.html example, one possibility is to have all the end results visible, and then selectively erase them as you progress along the steps. This is rather easy to do (without bells and whistles) on a webpage. You may even have the noise made by that organism (eg, if it's a farm animal) sound out when it has been determined uniquely (ie, at the end). Or maybe have it flash and then open up a page with a full description of that organism. You can also try to construct some sort of progress (0-100%) meter.

Some sort of online group with your students may even help out more. Coming up with a program *alongside* of them (so that they savor the journey) may motivate them to the subject more than will motivate them simply using your example at the end without having taken part. The best might be to get the point across with a simple example and then invite them to improve it. [That's probably what you are doing or were considering or would eventually do anyway.]

Programming is not for "computer programmers". Programming is for anyone that can use a computer as a tool and wants to take control.

alandmoore's picture
Submitted by alandmoore on

I have spent years reading books on languages and APIs, taking classes at community college and reading online tutorials. I know "hello world" in ten languages. But I don't consider myself a programmer, really.

I think the hardest thing for a new programmer to find is a good project -- one that's not too hard, but challenging enough to stretch you. One where you thoroughly understand the problem and the logic that needs to be done.

Being a programmer is a lot like being a writer. You can learn how to put words together, but you can't be a writer until you have something to write about. And you can't be a good writer until you're knowledgeable about what you're writing about.

And maybe that's where mentoring really comes in. Your husband probably doesn't know a lot about identifying organisms with dichotomous keys. But you did, and since he was there to help you with the programming, a program was born. Without his grasp of Python and your grasp of the problem domain, there would be no program.

Rosalyn Hunter's picture

Thank you everyone for such kind and thoughtful responses to my post.

Learning is a slow process, and it takes lots of effort and thought to figure out what to do. It's nice to know that there are others willing to lend a hand when it gets confusing and hard.

Author information

Rosalyn Hunter's picture

Biography

Rosalyn Hunter has been on the internet since before the web was created. Born into a family of instructors, she has made it her life's goal to teach others about the important things in life, such as how to type kill -9 when a process is dead. She lives in a little house on the prairie in the American West with her husband, her three beautiful children, a cat and a dog.