views:

174

answers:

10

I am an OOP programmer and have been it for almost two years now. I know Java and C#. What I don’t know is web programming. I know what HTML is but have never really worked with it. What is the best way to get started with web programming?

HTML, CSS, javascript, php, ASP.NET. What should I start with?

The reason I want to learn web programming is mostly because everyone knows how to do it, so as a software student I should too. Friends often ask if I can do a webpage for them, but I don’t even know where to start, which annoys me.

How hard/easy will the transition be?

A: 

Web programming as in frontend or backend? For frontend there's only one choice: HTML + CSS. Backend you can use pretty much any language you like as long as it spits out HTML.

Good book for getting started with HTML + CSS: Learning Web Design

+9  A: 

There are essentially five layers you need to know about.

  1. HTML — describes the structure and semantics of the content. Start here.
  2. CSS — describes the presentation of the page.
  3. JavaScript — allows client side programming. One of the last things you need to worry about.
  4. HTTP — The delivery mechanism
  5. Server side programming — you can use Java or C# here (or just about any language you like, including postscript)

(I would not recommend using postscript though)

Opera have a good introduction to the client side of things.

David Dorward
+1 for the HTTP part :)
robertbasic
HTTP should probably be emphasized above the other though.
troelskn
Every answer has been really good and helpful. I choose this one as the correct answer since it got most upvoted. Thanks to all answering!
bobjink
+2  A: 

Web programming is divided into two parts: client-side and server-side. The first one is HTML/CSS/JavaScript. HTML and CSS are the fundamental of entire Internet (in websites meaning) and you need to know them both very well. JavaScript is used as client-side programming language and in theory it's not required to build website. But these days dynamic websites are so popular that you "have to" know it as well.

Server-side is more differential. There are dozens of technologies including Java and C# used to generate HTML/CSS/JS code.

Crozin
+1  A: 

It depends what you want to do.

Do you want to present static content, or generate it dynamically?

You should learn HTML and CSS. These are the building blocks that will allow you to present content.

If you want client-side scripting, you should learn javascript.

If you want to generate content dynamically, you should learn server-side scripting. The choice may depend on the hosting environment available to you, or general language preference. You mention php and asp.net . If you already know Java, jsp might be a natural choice.

+3  A: 

The quickest way is to do the HTML > CSS > Javascript tutorials from

http://www.w3schools.com/

It will quickly covers the basics and save hours reading textbooks. Then you can spend hours reading textbook.

Yada
W3Schools is packed with examples of worst practice and errors.
David Dorward
+1  A: 

If you're already familiar with Java and C# I would suggest diving into one of the web frameworks written in these languages. Really learning a framework will help you understand how web applications work, while learning HTML and CSS won't. Many of these frameworks auto generate much of the HTML and CSS anyway, allowing you to quickly get a site up that you can play with.

Zach Bialecki
A: 

Here's a link to a good StackOverflow discussion on how to get a smart developer up-to-speed on web development.

Stephen Harmon
+3  A: 

In fact, the main problem is this: "I know what HTML is but have never really worked with it."

First of all, get familiar with HTML. Pure HTML. Feel, how it works.

Write your first HTML page, very simple, with basic tags - just to see how it will be displayed in browser. Then add more and more features, every step check in browser what it looks like, until you build your first web page. It would be better to do it in Notepad.

Then move to any web design application - Dreamweaver or Expression Web. CSS and Java Script are your next steps. Implement something. Most important - immidiately to see results in browser.

After this, it will be much easier for you to decide what direction to move on. Taking into consideration you current background, there will be no problem to start adding some ASP.NET features in your first web project.

rem
Definitely. Just do it. As with any programming language, it will begin to make sense as you try thing and see what happens.
Mike Chess
+1  A: 

I agree with the answers above. I started web programming about a year ago and coming from traditional programming, the hardest thing to grasp was data lifetime and dealing with data transition from click to click. Like anything though, start with the basics, in this case HTML then add CSS, javascript and so on! Best to get playing with it and immerse yourself. That is always the fun part.... "hmmmmm what does this do" and so on.

sdmiller
+1  A: 

One major difference to other domains of programming is that web programming involves a lot of different technologies, even at the most basic.

At the very least, you need to understand the HTTP protocol. It's the essence of what the web is. Reading the spec a few times might be a start. It may appear a bit dry, being a technical document, but I promise that it's fairly readable. Come back to it once in a while, as you gain knowledge - You'll find new things. Read also stuff about REST - It's a buzz word, but it could be loosely translated to HTTP-used-as-it-was-intended.

Another very important technology is the browser. You generally deal with a suite of three distinct languages here: HTML, Javascript and CSS. HTML is by far the most important to understand and it also forms the foundation for the other two.

On the server side of things, you need to deal with language choice, web servers and databases. On top of this there is frameworks that ties it all together. You can program web applications with very minimal frameworks (plain PHP at the extreme end) or with very sophisticated (and complex) frameworks. I'm of the belief that starting with something minimalistic is better, since it'll make it easier to learn. It doesn't have to be PHP though; ASP.NET may be fine (I don't know it first hand, so I can't really recommend on that) or perhaps Ruby on Rails.

troelskn