Theory vs. Practice

Theory vs. Practice

“I know how to code,” I said, “but I don’t know how to Code.”

“Umm. You just said the same thing twice and said there was a difference.”

“Yes,” I said, “but I said it with different emphasis each time.”

“Please explain.”

 

So this was how I explained my frustrations to a sympathetic ear. See, I had dabbled and learned all sorts of programming languages: Basic, C, a little Java, Javascript, Scheme, a bit of 8086 assembly and even Zilog-80 assembly so I could try to make calculator games for my old TI.  I’d also managed to learn enough HTML and CSS to hack up my personal blogger site. I mean, I know about For loops, If/Then statements, functions, objects, quick sorts, and so on.

Despite all that, I was completely flummoxed if I wanted to make anything substantial or real. I didn’t know how to make standalone Windows executables, or set up a server, or write web apps or Android or iPhone apps. All I had really done was solve contrived classroom problems. I had no experience with a real development environment or making programs intended for a general audience of users.

But now I want to make real things. Maybe it’s because I’m curious. Maybe it’s because I’m jealous that Instagram just got bought out for $1 billion and I want to chase the dream, too. I’d at least like to have the skillset, if only to indulge my curious, creative side.

My approach right now is to try to get my hands dirty and start making mistakes as soon as possible. After reading the internet for a while, I decided that Django or Ruby on Rails would be good tools for getting a site up and running as fast possible.

Do readers relate to the experience of coding vs. Coding? What do readers do when they’re face with a problem the know is tractable, but they have no real world experience with?

 

4 comments

I can relate a lot to this! I started learning C about a year and a half ago at uni, but had dabbled with a few basics before. Still, we were only asked to make console applications and no large scale projects. It only started this easter, wher I started doing basic gamedev in my spare time, that my code ‘skillz’ have increased majorly. Still a long way to go though!

I am in the same boat. I have written code in many different languages and developed products for sale using my code, both physical products and software products. The languages include: GW Basic, Commodore Basic, Microsoft Basic, PIC Assembler, PIC C, HTML (3 websites between 1994 and 1998) and probably some I don’t remember. I don’t code much – I am mostly an op-amp kind of guy, so I am not adept at user interfaces and windows programs and handling data. I would like a way to get more exposure and practice and am working on that.

Most projects don’t provide the time or space to learn new things and usually there is a software guy to do the code.

The thing is, software engeneering is more a craftmanship than a science, so you have to «build up» your habilities, starting with very simple stuff, so you learn to manage the complexity of larger problems of the real world. You may have had lessons about modelisation, and if so, you will see where that can help, but that’s not enought at all. So my advice is, start with the langage you are the most confortable with, do the simplest code possible, and build the smallest thing you can imagine. 🙂 The rest, design patterns, good practices, data structures and everything, will come when needed, don’t try to learn it all, it’s a big world. 🙂

You might want to read «the pragmatic programmer» too, althought it may be a little early.

So yeah, get your hands dirty. I have still so much to learn too. ^^

Having a proper editor helps. I use Brief although it is a little long in the tooth, Crisp seems like a good replacement. Brief does code completion, automatic indenting, brace matching, invokes the compiler then tracks error. It also has a very talented macro facility and a C-like scripting language for user extensions.

Comments are closed.