

Ask HN: Teaching a non-programmer web development? - ddemchuk

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).<p>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.<p>He wants to learn about web development.  He doesn't have any experience with it (hasn't even done HTML/CSS).<p>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.<p>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?
======
mechanical_fish
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.

------
iamelgringo
I wrote this a while back in response to that question.

[http://iamelgringo.blogspot.com/2008/05/teach-yourself-
you-t...](http://iamelgringo.blogspot.com/2008/05/teach-yourself-you-to-hack-
in-6-9.html)

------
russell
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.

~~~
ddemchuk
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...

------
mixmax
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
:-)

------
hs
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)

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

I dig it. Thanks.

~~~
hs
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

