Monthly Archives: October 2015

How to build and launch your first simple website.

This post was previously titled “What (technical things) you should know to get started learning web development.” While my intention in writing this guide was to give the reader a leg up before joining a code school, it fundamentally isn’t more than a guide on building and launching a basic website.

Hey! If I sent you this link it’s probably because you’ve expressed interest in code schools. This article is adapted from an email I found myself sending out to many prospective students. I’m eager and happy to share what I know. You can read about my experience here, just for a bit of credibility. Feel free to reach out to me with any questions or feedback!

There are many more resources online than I list here. In fact, everything that you will learn from a code school you could learn for free somewhere online. HERE’S A GREAT LIST, but it is unordered and relatively unopinionated. It’s compiled by Zed A. Shaw, who produces a huge amount of good, useful, and correct work for people who want to learn to program. He’s also wrong about some things.

THIS IS AN OPINIONATED ARTICLE. I’ve worked for two code schools as a TA, but the writing here does not represent either of their admission guidelines. Most code schools will let you know what their prerequisites are before you even apply. A great many don’t expect you to know anything about programming before you get started.

This article describes fundamental skills for the true beginner learner (e.g. working with the terminal and text editor, HTML, CSS, basic JS, version control, static site creation), and lists resources for learning each of them.

Here’s what you need, like, in a physical sense:
A computer with OSX (Apple) or Linux. If you have Windows, you’ll really gain a lot by switching to Linux, which is a free operating system similar to OSX in many ways. Let me know if this is an issue and I’ll help you out, I’ve done this a couple times! There are many good guides out there, but here are some of them:

Here’s are some programming fundamentals, and resources to start learning them online
First, you must learn to navigate the command-line, which is how nerds interact with computers. The Command Line Crash Course is a great way to do this.

Cool, now let’s get you set up with a text editor. Microsoft Word and Apple Pages are word processors, not text editors. The difference is important for us. I personally use one called Sublime Text 2, which is good but will pester you to buy it. Atom is very similar but free; I recommend it. Download the Atom text editor here.

Now for writing code, the whole point!

HTML, CSS, and JavaScript
Web sites are built using three languages: HTML, CSS, and JavaScript (JS). Generally, HTML is the content of the site, CSS dictates its appearance, and JS is responsible for behavior. That’s the idea, anyways; it’s called separation of concerns. You’ll hear this a lot, but this framework doesn’t always hold true.

Languages like PHP, Ruby, Python, JS, and many others are used for server-side (back-end) code. You have a choice about which of those to use, but they are not the concern of this article. Web sites can only be built with HTML, CSS, and JS.

Khan Academy’s course is really quite good for total beginners. Creating an account to keep track of your progress might be a good idea, but is 100% not necessary. Do:

Much of it is either very simple or irrelevant, but make sure you are comfortable with the “Functions”, “Arrays”, “Objects”, and “Object-Oriented Design” sections specifically in the Intro to JS portion. Don’t get hung up on drawing shapes and animations, but take your time with the other things.

Once you’re comfortable with these three fundamental languages, you’ll be able to build static web pages. We’re gonna get to that real soon. NICE.

Version Control and git
Version control (VC) is how developers save their work. It’s allows users to save many snapshots of the state of a piece of work, so you can do a bunch of work without worrying about overwriting previously existing stuff. VC is weird and complicated, but there’s no way around it. The most common VC tool is called git.

Here are some resources:

You’ll need to be familiar with GitHub, a service that stores version-controlled code for you. Create an account at github.com.

Once you’ve got all this down, start building a Github Pages site. Practically all developers have one, and it can be found at [GitHub username].github.io. Here’s mine! It’s vcolavin.com, but hosted at vcolavin.github.io

To get started, check out Github’s guide to creating a page. Don’t use the automatic page generator as they do; instead create an index.html file in the repository; that file will load at the page’s root directory automatically. Fill that file with HTML, then link up some CSS and maybe even JavaScript to practice and show off your skills!

Here’s some extra credit stuff for HTML and CSS which you may find useful when building your site.


If you’ve done the above and are comfortable with the material, you have, in my opinion, a solid foundation. It is far from being everything you need to become a web developer.
************************************

Here’s some other stuff if you finish that and want to continue learning, or get bored, or want more variety. It’s pretty unorganized.

The request-response cycle, which is the fundamental way computers on the web communicate with each other.
https://en.wikipedia.org/wiki/Request%E2%80%93response

An introduction to Ruby, a nice language for the back-end:
https://www.codecademy.com/courses/ruby-beginner-en-d1Ylq/0/1
 
Object-oriented programming, the principal paradigm used in Ruby:
http://zetcode.com/lang/rubytutorial/oop/
http://ruby.bastardsbook.com/chapters/oops/

Model-View-Controller (MVC) architecture, which Ruby on Rails employs:
Wikipedia
Coding Horror

Ruby on Rails:
Rails for Zombies
Rails Guide

Testing:
Rails Guide

Regex (a horrible language for finding patterns in text):
A good regex tutorial from Zed Shaw.
Rubular, a tool to test your regex as though it were running in Ruby.

Non-technical resources

 

Advertisements

Leave a comment

Filed under Uncategorized

My experience with code, work, education, and code schools.

or:

An opinionated summary of my singular and tremendously privileged experience that I feel may be relevant or useful for people looking to enter the industry through a code school, so that they (my experiences) may provide context and credibility to any other posts I write on this subject.

I majored in East Asian history and minored in East Asian studies at UC Santa Cruz. My background is not technical. I learned how to analyze and communicate ideas, which are very valuable skills. I took a couple lower division programming (Java and C) courses in college, and one BASIC class in high school. I didn’t learn any OOP or FP, which are popular and useful methods of programming.

After college, I worked like 5 or 6 pretty awful jobs in and around San Francisco as a barista, jeans salesman, and “document processor”, among other things, all within a year. Actually, being a barista was awesome but didn’t pay enough. Working in the financial industry paid enough but was unsatisfying. I was late to work every day. I was unhappy.

During this time, I met a wonderful man named Silas who introduced me to Django, which is a toolset for web development written in Python. He also told me about Dev Bootcamp, a company which bills itself as a “coding bootcamp” or whatever. It’s really just an intensive vocational school for web development.

I did my research, applied to DBC, and got in. My parents loaned me $15,000 to pay for the school and cost of living. It was an awesome experience. I learned many things, but the specific languages were: Ruby, JavaScript, HTML, CSS, and SQL. We also covered a soft skill set including compassion, teamwork, communication, issuing and receiving critical feedback. Also yoga and meditation.

It did the trick. After graduating, I worked for DBC part-time as a TA. It was a contract position that lasted about two months. I found a full-time job as a junior Ruby on Rails (RoR) web developer in Portland, Oregon. That was about six months ago at the time of this writing.

Job hunting was difficult and psychologically taxing. Dev Bootcamp didn’t hand me a job, it taught me the skills I needed to apply to junior developer positions, with the understanding that those companies would continue to train me.

The company I currently work for, Notch8, is a web development consultancy specializing in Ruby on Rails. We build web apps for clients. It’s wonderful. I’m still learning, and I have a long path ahead of me, but I’m a web developer! I am happy.

Notch8 also runs a great code school in San Diego called LEARN. I spent a few weeks working there as a TA, and one of my co-workers graduated from there.

Two of my co-workers went to Epicodus, a wonderful code school here in Portland.

That’s basically it, as far as coding, code school, and employment things are concerned!

However:

=== BEGIN EDIT
Note: I was feeling combative when I originally wrote this section. The original text is included later in a postscript, but I’ve rewritten it here to communicate my point more clearly and less politically. Railing against libertarianism is fun but tangential. Also, I thought it might be a good idea to mention that my wonderful employers have nothing to do with this article and do not and probably would not endorse it at all. It is my own invention.

Tech / startup culture, especially in San Francisco, is repulsive. I mention this because it has played a very big part in my journey as a developer. It is exclusive and hypermasculine and obsessed with money. This was a surprise to me.

Tech is not solely responsible for the Bay Area’s economic and racial disparities, but it’s telling that the industry thrives in such conditions. Be aware of this before joining.
=== END EDIT

The wealthiest city in America has people freeze to death in its streets. It addresses chronic homelessness by applying urine-reflecting paint. I took my labor and left San Francisco. Now I am a gentrifier in another city, the one with the fastest rising rent in the nation. I haven’t been able to not participate in this system.

This post isn’t *about* these issues in particular, and many people have written about them more eloquently and effectively. Further, I’m not an expert, and my voice as a white man is not vital to them. But they are relevant to my experience in this industry.

This has been an opinionated list of my experiences and observations on becoming a web developer, from a non-technical starting point.

Vincent

[PS Here’s the original text of that paragraph:

One of the hardest things about coding for me is tech and startup culture, particularly that of San Francisco. I say this as a young white man. I was literally repulsed by San Francisco’s insidious libertarian attitude that everyone gets what they deserve. There’s an intentional ignorance there, especially in the startup scene: blind to privilege, blind to our systematically oppressive society, blind faith in the “free market”. Disbelief in the experiences of people who do not resemble them. The consistent laying of the burden of proof on victims of destructive systems. This is the just-world fallacy rephrased as a set of high-minded political ideals, and its purpose is to extend rich white male comfort. It made for an environment in which I felt very uncomfortable.]

Leave a comment

Filed under Uncategorized