Ask HN: Teaching a non-programmer web development?

6 points by ddemchuk ↗ HN
I have an old friend who called me last night to tell me about an idea he had for a web application that he would like to pursue (it's an interesting idea in itself but that's not the point of this post).

My friend has a marketing and business background and is the president of a networking group at his college and is actually majoring in Entrepreneurial Studies so that is clearly his strong point.

He wants to learn about web development. He doesn't have any experience with it (hasn't even done HTML/CSS).

My background includes HTML/CSS, Photoshop, and Rails so I have a good grasp of start to finish development, so I could help him in that direction, but I'm not sure if that should be the path a person completely new to all things programming should take. I'm tempted to start him on PHP and find him some good screencasts to follow along to.

What path do you think I should push him along and what resources do you think would be valuable to a non-programmer who wants to learn web development?

8 comments

[ 4.9 ms ] story [ 34.5 ms ] thread
HTML first. Do it yourself HTML is better than using web design software or prepackaged templates. Hand coded HTML gives you an understanding of what is going on. Start first with a static web site to limit complexity. CSS is next, but it can be a major conceptual leap, particularly with browser incompatibilities, so I would suggest that you create some simple style sheets, and let him experiment with it.

JavaScript is the next step. I recommend JQuery as a fundamental library. He should concentrate on simple aids for the user, until he gets a feel for it. JS is a bigger hurdle than HTML.

On the server side, I am a Python fan, but since you know Rails, that might be a good way to go, if you are into helping him. PHP is relatively easy, but it encourages really bad code. I would recommend against it.

Photoshop is a huge monster. Unless he needs it, it's a distraction.

As far as learning resources, there is lots online or get highly rated books from Amazon.

Yeah I'm kind of steering away from giving him all of the tools to learn web development in addition to Photoshop as I think it might just become discouraging for him at first.

I'm curious about your JQuery recommendation: why not just the core Javascript language first? Quicker results? I ask because I only have hacker level knowledge of both Javascript & JQuery and am looking to improve my skills but was unsure whether to attack the main language or just focus on JQuery itself...

I have a background in business as well, and decided to learn programming around 1½ years ago. So my situation is probably similar. Looking back at my experience here's my two cents:

- Start by learning HTML to get the basics straight. This isn't hard once you grasp the basic concept.

- PHP is a good place to start, since you can almost always find help in the huge PHP community. I used www.w3schools.com for reference, and google would always point me to an answer when I had a stupid question.

- Do a real project, it's the best way to learn. I did a HN clone just to learn how stuff worked, how to deploy, etc. (www.deloghersk.dk)

The one thing I missed was a real person I could ask whenever there was something I conceptually didn't understand. Google isn't very good at answering these questions. Seems like our friend is in a better position here :-)

Send him toward a toolkit that's ostensibly usable by "non-programmers". Have him put up a Wordpress blog. Hand him a copy of Using Drupal (but certainly not Pro Drupal Development yet, unless you want to scare him witless).

The advantage of these things is threefold. First, getting a basic Wordpress or Drupal installation up and running is excellent practice in the boring but essential skills of web development: Knowing what a server is, renting a shared host, using SSH and FTP, editing text files, debugging, searching Google, learning how to find and question your local guru, appreciating how much work it's all going to be and why it's going to take you years to learn. ;)

Second, there's always the chance that one of these toolkits is all the guy needs. These systems are actually used to build production sites. They have logins and stuff! They have nifty looking themes that look like real websites! That makes them more rewarding for a beginner with business aspirations than some primitive-blog-in-fifteen-minutes demo app. It's even possible that the guy will find that he doesn't need to learn to build an entire site from scratch in Django. He might be able to figure out how to assemble his site from open-source components -- or, once he learns about the existence of the components, he might rather spend time coming up with new business ideas that leverage those, rather than spending time learning Python syntax.

Finally, it's generally easier to tinker with an existing toolkit than to write a webapp from scratch. And, even if you really are better off writing your webapp from scratch, it pays to understand why you're doing that instead of building on top of a toolkit. Which in turn requires some experience with toolkits.

ordered by importance:

touch typing: 10 fingers + numbers

a decent editor: vim

html+css

jquery (i guess it's the lispiest framework)

server-side: lisp / scheme

unix command: piping, awk, grep, find, xargs (a 'mapping' equivalent)

gimp: script-fu (tiny-scheme) and imagemagick of course

os: openbsd (i find it easier -- altho more stern -- than linux)

So many ideas that I never would have thought of, AND all open source...

I dig it. Thanks.

i'm more into fp and using lisp so for my experience-based suggestion the dev technologies are all aligned (lisp, jquery, script-fu)

a less parallel could be erlang, jquery, python-fu where one needs to learn 3 distincts techs -> takes more time

for oop, it could be ruby, prototype, <insert ruby for photo>, and of course sql

i didn't put sql because i don't use it now since my data structure (linked list) is not easily mapped into tables shrug and i use a lot of regex on top of it ... but it would be sqlite if i have to use sql again

abundant open source options ... choose the smallest set