A Compiler, an Editor, and a Shell – Done

A good friend of mine tweeted this post from Joe Armstrong, the designer of erlang, about what it takes to get started with a new language. It's most interesting to me that I agreed with everything in the post before I even knew who had written it. What makes it so wonderful to me is that it is so incredibly spot-on is... well... everything!

He tells the starting developer to type in a simple little Hello World program and then run it.

Thats all it takes - typing three lines of code into a file with a text editor - then typing two lines into the shell.

That's all it takes. 95% of all the fun can be achieved with a simple text editor and the erlang shell. That's how most of the erlang system was implemented.

Which I get as that's the way I've evolved my erlang programming. But he goes on to say:

Me I use
     - a shell
     - makefiles
     - emacs
for all know programming languages under the sun.

98% of all the fun can be had with the compiler alone - all the rest is hype.

But the real gem is just after that:

After 30 years you will get the hang of this and be a good programmer.

and that's the thing I think most people are missing these days - things take time, and there's no guarantee that after that long you'll be some expert, but there's no way to become an expert without putting in the time.

He's right:

IDEs and build tools are the single biggest obstacle I know of to getting started.

I'd just add "...and becoming good." You can't let some tool do things for you that you don't understand. If you understand how to do it, then it's OK to have a tool that helps you, but you have to have the eye to be able to detect when the tool has gone wrong, and be able to correct it easily.

I'll never forget in high school when my Trigonometry teacher insisted we learn the half-angle, and double-angle formulas for trig functions, and then the 30-60-90 and 45-45-90 triangles. I thought What a waste - we'll always have calculators!

Fast forward to my junior year in college on a test in Mechanical Engineering. I'm doing the trig functions on my aging calculator and the numbers just didn't look right. Sure enough, the cos() function wasn't returning correct values. How did I know? You betcha, those triangles and formulas that I knew I'd never need. Yeah... right.

With those same formulas, I was able to convert them into sin() functions and finish the test, but had I blindly followed the calculator, I'd have messed up the test something horribly. Same with IDEs - nice, if you know how to do it already, but they really do get in the way of learning the language. The syntax is important. You can't short-cut the learning of how to code in a language, you just have to do it.

Maybe I'm old school as well, but I'd much rather be in this boat than the Learn Anything in 21 Days crowd.