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.

Most forwarded

Interview with Dave Mohyla, of DTIDATA

Dave Mohyla is the president and founder of dtidata.com, a hard drive recovery facility based in Tampa, Florida.

TM: Where are you based? What does your company do?
DTI Data recovery is based in South Pasadena, Florida which is a suburb of Tampa. We have been here for over 10 years. We operate a bio-metrically secured class 100 clean room where we perform hard drive recovery on all types of hard disks, from laptop hard drives to multi drive RAID systems.

Anybody up to writing good directory software?

Since the very beginning, directories (of any kind) have had a very central role in the internet. (I have recently grown fond of Free Web Directory. Even Slashdot can be considered a directory: a collection of great news and invaluable user-generated comments. As far as software is concerned, doing a quick search on Google about software directories will return the free (as in freedom) software directories like Savannah, SourceForge, Freshmeat and so on, followed by shareware and freeware sites such as FileBuzz, PCWin Download Center and All Freeware (great if you're looking for shareware and freeware, but definitely less comprehensive than their free-as-in-freedom counterparts).

Interview with Mark Shuttleworth

Mark Shuttleworth is the founder of Thawte, the first Certification Authority to sell public SSL certificates. After selling Thawte to Verisign, Mark moved on to training as an astronaut in Russia and visiting space. Once he got back he founded Ubuntu, the leading GNU/Linux distribution. He agreed on releasing a quick interview to Free Software Magazine.

Is better education the key to finding better software?

I read David Jonathon's article Anybody Up To Writing Good Directory Software? the other day, which got me thinking about software directories in general. As David mentioned, many of the software directories one finds when doing a quick google search are free as in beer, not as in freedom. But what interests me is the software directories that already exist, providing a combination of both free as in beer software, and open source software. Sites such as Freeware Downloads and Shareware Download don't advertise themselves as providing free as in liberty software, but each of them have a good selection of open source software available... if you know where to look.

Most emailed

Free Open Document label templates

If you’ve ever spent hours at work doing mailings, cursed your printer for printing outside the lines on your labels, or moaned “There has got to be a better way to do this,” here’s the solution you’ve been looking for. Working smarter, not harder! Worldlabel.com, a manufacture of labels offers Open Office / Libre Office labels templates for downloading in ODF format which will save you time, effort, and (if you want) make really cool-looking labels

Creating a user-centric site in Drupal

A little while ago, while talking in the #drupal mailing list, I showed my latest creation to one of the core developers there. His reaction was "Wow, I am always surprised what people use Drupal for". His surprise is somehow justified: I did create a site for a bunch of entertainers in Perth, a company set to use Drupal to take over the world with Entertainers.Biz.

Update: since writing this article, I have updated the system so that the whole booking process happens online. I will update the article accordingly!

So, why, why do people and companies develop free software?

More and more people are discovering free software. Many people only do so after weeks, or even months, of using it. I wonder, for example, how many Firefox users actually know how free Firefox really is—many of them realise that you can get it for free, but find it hard to believe that anybody can modify it and even redistribute it legally.

When the discovery is made, the first instinct is to ask: why do they do it? Programming is hard work. Even though most (if not all) programmers are driven by their higher-than-normal IQs and their amazing passion for solving problems, it’s still hard to understand why so many of them would donate so much of their time to creating something that they can’t really show off to anybody but their colleagues or geek friends.

Sure, anybody can buy laptops, and just program. No need to get a full-on lab or spend thousands of dollars in equipment. But... is that the full story?

Fun articles

Santa Claus - the most successful open source project

It dawned on me the other day, as I was shopping for the dozens of gifts it seems I have to buy every December, that Santa Claus is the most successful open source project in history. (Bridget @ Illiterarty would agree with that). Santa Claus is essentially a marketing development that is embodied by everyone who stuffs a sock, gives a gift, hosts a dinner or wishes Merry Christmas over the holiday season.

Most emailed

Editorial

When I first started thinking about Free Software Magazine, I was feeling enthusiastic about the dream. I had Dave, Gianluca, and Alan willing to help me, I had established members of the free software community willing to help me out, I had writers volunteering their time and energy for free, and I had a generous offer from OpenHosting for servers, all before I'd proved myself. There was a sense of excitement in the air, and I thought maybe, just maybe, I could make this work.

Free Software Magazine uses Apollo project management software and CRM for its everyday activities!