Ask HN: Teaching a non-programmer web development?
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 ] threadhttp://iamelgringo.blogspot.com/2008/05/teach-yourself-you-t...
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.
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...
- 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 :-)
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.
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)
I dig it. Thanks.
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