Coding, Hackathon

The Mysteries (and Subsequent Thoughts) a Newb Encounters When Learning Web Development

(This was initially an e-mail I  sent to a friend who was putting together a class on Scala. I’ve decided not to censor the language; I think it adds, let’s say, personality to the piece.)

“These are questions/mysteries/thoughts/realizations I’ve had through teaching myself web development over the last year. I’ll just take you through my thought process at different points in time.

  • I want to teach myself Ruby on Rails because you can build web apps with that really fast, and it seems to be a good way to go.
  • I bought a Mac because I had previously tried to install ruby/rails on a PC and it was a fucking disaster
  • I start by buying a book on Ruby (Chris Pine’s “Learn to Program”)
    • Wait, why am I writing things in the terminal?
    • When do I make a dynamic site?
    • How do I make a dynamic site with ruby? What does the implementation look like???
    • What the fuck is the terminal?
    • I know how to write loops and create functions!
    • Sorting? Fuck this.
    • Fuck this book, I’m going to dig into Rails.
  • I buy “Rails 3 Tutorial” by Michael Hartl
    • This setup is crazy. I can follow directions, but what the fuck am I actually doing?
    • What the fuck is git?
    • What the fuck is github?
    • What the fuck is heroku?
    • What the fuck is active record?
    • What the fuck are gems?
    • What the fuck is bundler? Why am I typing bundle install and bundle update? What is going on here?
    • I thought I use mysql for database stuff. What is this sqllite?
    • Why am I setting dependencies?
    • What is this DS_store shit?
    • Why am I writing stuff in the terminal again?
    • When do I write code?
    • OK, I’m writing code, I’ll finally get to use some of my ruby skills?
    • What’s this embedded ruby?
    • Shit, I hardly even know HTML/CSS. I should probably learn HTML/CSS.
    • OK, I’ll come back to Rails maybe.
  • I build a simple 1-page site by brutally hacking my way through it and googling absolutely everything. I do this in HTML/CSS and use a GUI FTP to push files to the server.
    • It fucking works!
    • I need people to contact me though. So I need to make an email form.
    • Uhhhhh. How does that work? That’s PHP, huh? Google. Google. Google.
    • Copy and Paste code, change some variable names, and when people submit their email, it sends me an e-mail with their form input!
    • I’m awesome!
    • PHP is cool!
    • I should learn PHP.
    • Wait, what’s javascript?
    • What’s jquery?
    • Oh! I can use javascript for stuff that happens visually on the front end. You mean javascript is the language of web browsers?
  • “I should learn HTML5!”
    • OHHHHHHHHHHHHHHH. So the browser is what you are commanding when you code stuff on the front-end. OHHHHHHHHH, so that’s why you should update your browser! It’s because developers of the browser build in updates that let you code things easier. Aha! That’s how some attributes and styles get deprecated.
    • Javascript, Javascript, I want to learn this.
    • Oh, but I want to learn more PHP.
    • What’s jQuery again? Take a tutorial. That was EASY, AND JQUERY IS AMAZING!!!!!
  • I’m going to build a commenting system
    • I’ll use PHP. This makes sense, I can see all of my files and I never have to write anything in terminal. Jeese, what was that github shit, anyway? A thing of the past!
    • Lots of copying and pasting.
    • Fuck it, I’ll start from scratch.
    • What the fuck is MAMP? Ohhhhhhh, it’s like localhost:8000. It’s a local server! How does that work? Whatever, it works. This is cool.
    • Functions are neat. Nevermind, functions are amazing. So that’s part of programming? Manipulation of the functions that someone else already wrote?
    • Oh, so that makes sense, a language is written by someone, and you learn it by figuring out the functions and other capabilities of the language.
    • AJAX. This is magic. Fuck, it’s hard to write. Wait, not hard when you use jquery .ajax {} to write it.
      • So, AJAX lets me make server calls and take actions without ever loading up the script’s result in my window.
    • I can create a mysql database locally?
    • How do I move that to a live server?
    • Thinking back, what the fuck was sqlite anyway?
    • I set up a live mysql database.
    • I’m writing queries! Things are saving in the database!
    • I’m awesome!
    • I still want to learn javascript
    • APIs? AP WHO?
  • I’m going to go to a hackathon, I think I can hack something together.
    • Shit, it’s all in JS.
    • At what point does the server-side stuff come in?
    • You mean I don’t have to use PHP here? I’m not following
    • Oh, hi Toby, nice to meet you!
    • win_and_slide(); (We win the hackathon.)
  • I wonder if ruby/rails would be easier if I looked at it now.
    • git/github make sense!
    • heroku makes sense!
    • installation makes more sense, but not complete sense!
    • Setting gem dependencies, kinda weird. “Gem,” really? That’s the word you chose? That’s still a little confusing to me.
    • ERB. Hmm, not so bad.
    • Scaffolding, this is interesting. I can build an app in like 10 minutes?
    • Where’s the database in this mix?
    • Hmm. How do I write js/jquery in this to make things work?
    • I’ll have to do more tutorials.
  • I go to the coke/spotify hackathon.
    • I write this e-mail.
    • GitHub is back. Dang this is really neat! I see what’s happening here.
    • Our team wins the hackathon.”

… and the learning never ends.


One thought on “The Mysteries (and Subsequent Thoughts) a Newb Encounters When Learning Web Development

  1. Pingback: How a Copywriter Becomes a Software Engineer | Sweet as Tandy

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s