Skip to content

Instantly share code, notes, and snippets.

@olivierlacan
Last active December 21, 2015 09:29
Show Gist options
  • Select an option

  • Save olivierlacan/6285054 to your computer and use it in GitHub Desktop.

Select an option

Save olivierlacan/6285054 to your computer and use it in GitHub Desktop.
Tandana Mtegha is a high school pupil from South Africa who contacted Code School support about a feasibility study he's conducting about learning to program. His requirement is to "conduct an interview with someone experienced in this field"

Tandana Mtegha's Questionnaire

  • What is your name?
  • Are you able to program? If so in what languages are you fluent?
  • How long did it take you to learn those languages?
  • How did you learn to code? Who had taught you?
  • Which language do you enjoy coding in?
  • Which language do you think would be the best for learning?
  • Which language was the hardest/easiest, in your opinion to learn?
  • Do you think it is important for people to be able to learn how to code?
  • Do you think a program that people would be able to download and use anywhere that teaches them how to program would be useful?
  • How did you stumble upon your job at Code School?
  • What personality traits or characteristics do you think are needed to be a good programmer?
  • What is your biggest achievement in the programming/technology industry?
  • What advice do you have those who want to learn to program/code?

Note from @olivierlacan: please substitute Code School for the company you work for.

@chadmiller
Copy link
Copy Markdown

Rather than answer individual questions, I'll answer what you don't know to ask. All this assumes you want to be a great programmer one day.

languages

Languages do not matter a whit. There may seem like there are many languages, but there aren't. There are, maybe, four families, and if you learn one or two in that family, you can use any in it with almost no effort.

Do not learn languages. Learn ideas. Some languages can express ideas well, and can't express other ideas at all. Program in one language, and when you no longer dream about it, abandon it and move to something new and scary. in 5 years, you can be employable anywhere. In 10 years, you can be an expert in whatever you like most. Never settle down until you know ten bad ways to do a particular task, because then you will be qualified to pick the good one.

Of languages, don't skip the Forths, Lisps, Erlangs, and Prologs of the world. Knowing them well will make you much better in the Pythons, C*s, Rubys, et c., that you will use most of the time.

starting

To start, you need something that bothers you, and you need to make something to fix it. It's like writing a novel, at first. You need a story to tell, before you can start hitting a keyboard.

personality

To be a programmer, you have to be curious enough to learn answers to "why?" on your own. You have to be okay on your own for hours at a time. You have to be able to think like other programmers, because you will read a lot of their code, far more than you ever write on your own.

You should be the kind of person who seeks out an environment where you feel like the stupidest person in the room. If you find you're smartest, you should get out, and find a place that pulls you to grow more. Computing changes by the day. Stagnation is death.

@olivierlacan
Copy link
Copy Markdown
Author

What is your name?

My name is Olivier Lacan

Are you able to program? If so in what languages are you fluent?

I am able to program. I program in Ruby, CoffeeScript and JavaScript fluently.

How long did it take you to learn those languages?

It took me a couple of months to learn the basics of JavaScript and write simple web applications with it during an intensive (40 to 60/hours per week) program at Full Sail University. It took me several (6 to 8) months to learn Ruby in parallel with my school and freelance work (which took up about 70 hours/week of my time) enough to write my first large Ruby on Rails application.

How did you learn to code? Who had taught you?

I learned to code after having taught myself web design (HTML & CSS) over many years since middle school (14 years old) after an initiation to web design lab (using Microsoft FrontPage) in a Technology class I took in my last year of middle school. Over a period of about 9 years I worked on amateur and non-profit websites that used either static HTML or PHP which caused me to learn bits and piece of MySQL (database language) and PHP along with some fragments of atrocious JavaScript code.

Nobody really taught me anything during that time. A Technology teacher in middle school was enthusiastic enough to make me realize that I could have a voice on the Internet. I was lucky enough to have a dad who was excited enough about technology that we had a computer (and later several) and eventually the Internet at our house before most kids I knew had even played with a computer before.

That allowed me to experiment, copy, look at the source of my favorite websites and try to replicate what they were doing. Read good and bad tutorials on graphic design, web design, PHP, MySQL, HTML. Discover blogs and books created by the web design and development community. Up until late 2008 when I decided to make web design and development my sole professional focus, I really learned by osmosis and self-guided learning.

In 2009 I joined Full Sail University in Winter Park, Florida because it was the only school I had ever wanted to attend. It had the best Web Design & Development curriculum I had ever seen. Most similar programs in my native France were either too focused on theoretical programming or graphic arts. Full Sail's program appeared (and was) extremely well-rounded. From graphic design, to usability and user-centered interface design, to web standards and practices, to programming (using ActionScript, a language originally developed for animation) then object-oriented programming, to animation, to web-based functional programming with JavaScript, to server-side programming and database systems with PHP, MySQL and CouchDB, to web application frameworks like ColdFusion (I also discovered PHP-based web application frameworks and Ruby on Rails at the same time, thanks a friend I met in school, @fullsailor), to video and audio editing (which I had done on my own in the past), to streaming media servers, to non-native mobile applications (using poor technologies like PhoneGap and jQuery Mobile instead of Adaptive and Responsive Web Design or native iOS application development), to a full-fledged Ruby on Rails application encompassing almost all those concepts as a final projects.

You can find more details about the program I went through — the WDD — at Full Sail here but it has changed enough (as it should) since I graduated (in June 2011) that I couldn't reliably recommend it to anyone. And I certainly wouldn't recommend their online equivalent of the degree which I hear pales in comparison of the on-campus degree — according to several students and Full Sail employees I've talked to over the years. It is however substantially cheaper than the on-campus degree which cost me and my family over $75,000 (excluding living expenses). That alone makes it completely unrealistic for people who are not as wealthy as I am (or was ;-)) to consider.

The reason I made this costly investment was that I had already gone to a (nearly free) University in France and that I felt I needed to acquire skills as quickly as possible (Full Sail's degree is a 4-year bachelor's degree compressed into 2 years, which explains the intensity) since I was already 23 years old and that most people in the web industry get a much earlier start. It's also difficult to acquire all the skills I wanted to acquire through self-guided learning because no one can guide you and force you to focus exclusively on it, especially when you have a job and other duties to attend to. I know many people who have managed to join the web industry without having gone to school for it but they often have an ability to focus that I sadly lack if they managed to learn as many things as I did in two years. Moreover, I have learned ten times as many things during my two year stay at Full Sail University (and my freelance work, reading, and )

Which language do you enjoy coding in?

Ruby is my favorite language after English. It's clear, concise, and allows me to express myself through code better than any other language I've ever used — which includes PHP, JavaScript, ActionScript, and CoffeeScript.

Which language do you think would be the best for learning?

I think Ruby is the best language for learning because of how simple it is, just like English. It doesn't have complex conventions, and you don't need to know the convoluted concepts behind Ruby to learn how to use it to do simple things.

This is something most of my peers (and teachers) don't agree with. They believe complex and verbose languages are better for beginners because they require repetition and strict conventions. I'm not one for either of those things, which is why repetition and what seems like useless conventions has always bothered me even when I didn't know much about programming.

I think machines operate in fundamentally different ways than human beings and that forcing yourself to think like a machine is not a way to make good programs for humans. I'm sure it's a great way to understand machines, and there's always a curiosity there from most of the programmers I know, but in the end what we produce — programs — exist to serve humans. Learning how to think like a machine makes us worse at understanding and solving the needs of human beings. That's the exact opposite of what we should be doing. I think this explains in part why software programs are often so excruciatingly hard to use for most humans. They are not designed with humans in mind. Instead of being user-centered, they are machine-centered.

Do you think it is important for people to be able to learn how to code?

Was it important to learn and understand mathematics before machines existed to help us do math? I think learning how to code is exactly as important as learning how to write and speak a second language after your native language.

As a billingual French/English speaker, the advantages of being able to think and reason in two different languages with different concepts, different idioms and different cultures are quite obvious to me.

People who doubt that software will revolutionize the way the world works sound to me like people looking at a steam engine in the 17th century and shrugging because "after all, it's only water!". Everywhere I look I see problems that could be better solved using software, but despite the fact that computers have been around for decades, most human beings don't know how to use them let alone make them do what they want.

After all, software is only text!

Do you think a program that people would be able to download and use anywhere that teaches them how to program would be useful?

That program already exists. It's called a web browser.

Of course such a program would be useful, but the problem with learning how to program has more to do with the What and the How than the Where.

Most people who try to teach how to program still focus on teaching you how to think like a machine, instead of focusing on teaching you how to reason and think critically and logically. At Code School we spend a lot of time making it easier for people to start learning (the How), but most of our work is invisible, it's the time we spend deciding what to teach.

How did you stumble upon your job at Code School?

I didn't really stumble upon my job at Code School. I decided what I should spend my life doing, because I was doing it every moment I could spare over the last ten years. I then took every decision I could to help me get closer to the kind of work I wanted to do, and the kind of people I wanted to do it with. I told you earlier about Full Sail. I met many of the people who work at Envy Labs (the company that created Code School) while I was a student at Full Sail, after going to a web conference in Miami.

I did some work for Envy Labs with some friends, and after that I did everything I could to make it obvious I would like to work for them and that my work would be useful to them. It took some patience and persistance.

What personality traits or characteristics do you think are needed to be a good programmer?

Curiosity, laziness, intolerance for inefficiency, attention to details, and a fiery passion for solving yours and other people's problems.

What is your biggest achievement in the programming/technology industry?

I write prose and code that helps tens of thousands of people all around the world to learn how to solve their own problems and anybody else's using only the power of their brain. Better yet, they recognize how valuable it is to them and voluntarily pay me (through their Code School subscription) for it.

I'm proud of many things I've done over the last few years, but not a single one compares to that.

What advice do you have those who want to learn to program/code?

Learn by doing. Don't settle. Don't compromise. You have one life, spend it wisely. If you think this is how you want to contribute to the world, the only person standing in the way of your dreams is yourself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment