Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have done C and C++ and now I want to start my career as a web-developer. I read a lot about web-development and came to know that there were two types of developers on the web,

 1. Client Side Developers.
 2. Server Side Developers.

I want to keep my focus on server side development. I thought that it would be best to start with the basics so I started doing HTML and CSS. I found out that CSS was too large for someone to completely master easily. I want to know that what basics should a server side developer know and should he be a master of HTML and CSS or just do away with it?

share|improve this question

closed as too broad by gnat, GlenH7, MichaelT, Bart van Ingen Schenau, Dan Pichelman Dec 23 at 17:38

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Would a web services developer be a 3rd type of developer or would that person be counted as a server side developer? –  JB King Jul 25 '11 at 16:36
    
@jb-king IMO that would be server side –  BlackICE Jul 25 '11 at 19:23
    
@Jb king,@David: How about calling it a server side developer who knows how web works. –  Shen Xu Jul 27 '11 at 13:42
    
Someone that develops web services may not need to ever use CSS or HTML if the service just returns XML or SOAP. Thus this is far from the same person that develops an ASP.Net website or web application that has a lot of UI features that use HTML and CSS to give a contrast here. –  JB King Jul 27 '11 at 14:39
    
Speaking as a client-side now full-stack-ish dev, everybody should know HTML. When I run into server-side devs with years of experience that broke functionality because they didn't know that IDs should be unique on a page, I want to slap them. FFS, it's called an "ID." How do you even trust a guy to go near the SQL after that? And it only takes a few hours a year to have a clue about the latest HTML. Also, IMO, anybody expected to touch a template page should also be able to explain all of the YSLOW recommendations because they know how browsers parse and render pages. –  Erik Reppen Feb 6 at 18:46

9 Answers 9

up vote 15 down vote accepted

It will heed you to know them well. If you are a web developer, then you are a web developer. You should be able to independently write web applicactions, and that includes client side technology.

share|improve this answer
2  
+1 I'm a lousy designer, but on a few applications I have no partnership with a real designer. –  Michael Jul 23 '11 at 11:24
2  
You, my friend, are not alone. I don't have much of an eye for a great UI but I rough through it so that I don't NEED another developer in order to make a fully functionable web application. –  user29981 Jul 23 '11 at 11:49

I consider myself a "server side" developer.

Despite being on the "back side" of web development, I think it's extremely helpful to know HTML and CSS fundamentals. I work on typical "web content management systems" (WCMS), such as Drupal, Day CQ, and Liferay, and most business requirements and requests revolve around changing the look and the feel.

There's no need to become a "master" at HTML or CSS, but at a minimum, you should know how to make a static web page, styled with CSS. You should know the basics of forms, and the various input mechanisms. For CSS, understand the difference between the ID and CLASS attribute, and how selectors work. A lot of this you'll pick up over time.

Finally, build up some knowledge of the common browser differences. Again, this is knowledge you'll pick up over time, but recognize that browser differences exist and be prepared to recognize it.

share|improve this answer
1  
+1 on "here's no need to become a 'master' at HTML or CSS". I'm a designer turned programmer and there is an incredibly sharp dimishment of returns in CSS knowledge after learning basic CSS for layouts using floats. Front End nerds have the craziest arguments over CSS3/IE support/etc, and a lot of it boils down to dogma or religion. "Tables BAD!," "Screw IE!" "Microformats will cure CANCER!" A lot of those arguments have no impact in the real world whatsoever, so if you DO learn some CSS, make sure to avoid the dogmatic circles and just focus on learning how place stuff on the screen. –  Graham Jul 25 '11 at 20:18
    
Yes I have been to such debates like "Should tables be used?" then "Why Google and Twitter uses tables?" Seeing such questions, I just think it has become hard to choose from the tags available/ –  Shen Xu Jul 27 '11 at 13:47
    
On the client-side, tables-as-layout or continuing to use floats exclusively for horizontal positioning in 2011 or 2014 are not a rejection of dogma. They are signs of somebody who has decided to put an expiration date on their career. A designer or exclusively ad/marketing/interactive-agency front end developer might be able to get away with that. If I saw that in somebody's recent work, I'd recommend against a hire anywhere I've worked where the end-product wasn't ultimately disposable. –  Erik Reppen Feb 6 at 19:11

I would actually identify three segments:

  • Server side developers
  • Client side developers (JavaScript programmers)
  • Designers

You will need a thorough knowledge of both HTML and CSS. The division of labor between server side and client side/design developers typically requires that the server side developer supply the HTML produced by database and programming interactions. That HTML carries CSS identifiers as well, so that it can be manipulated by the client side developers or designers.

Your job as the server side developer is usually to supply the HTML/CSS markup to the other two. Aim for a full mastery of both HTML and CSS.

share|improve this answer
    
"server side developer supply the HTML" HTML generated should be a union of 3 roles. Everyone needs to be involved with the HTML. Also a server-side developer has no involvement with CSS. –  Raynos Jul 23 '11 at 14:28
    
@Raynos Server side developers do not define CSS rules, this is true. They must, however, understand how to assign classes in markup for semantic groupings. –  Michael Jul 23 '11 at 15:04
1  
@Micheal that's different, HTML and CSS are indeed related. Ideally server-side developers just expose a XML/JSON REST API and the front-end devs / designers write the HTML/CSS though. Server-side developers still shouldn't write CSS for the web developers to use. –  Raynos Jul 23 '11 at 15:18

+1 for the question. I also always thought that coding a server side is more interesting and important than doing html+css+js+ajax+.. and ton of things. Anyway, if you're alone and you wanna create your own web application, you have to be both server-side programmer and designer+(client-side programmer). That's why now I'm learning html5 and css3.

share|improve this answer
    
Thanks Sergey. I am doing HTML 4 and CSS and I would try to move to HTML5 and then PHP soon :) –  Shen Xu Jul 23 '11 at 14:04
    
Which side is more interesting depends on the application. Many web applications are about 90% user experience and 10% data design. –  kevin cline Jul 23 '11 at 18:30
    
If you do the data design right, the user experience will be simple too! –  Christopher Mahan Jul 25 '11 at 16:26
    
"If you do the data design right, the user experience will be simple too!" - I'm sorry, but that is SHOCKINGLY wrong. The Ipod had the same basic data design as 100+ other MPG players on the market, but its revolutionary user experience has resulted in Apple being the company we all know today. –  Graham Jul 25 '11 at 20:21

Actually, it depends. In most cases, you have to know HTML & CSS. In rare cases, you can ignore both.

Case 1

In my company, there are projects with strict separation between HTML & CSS and everything related to server side. This allows to bring the best C# or PHP developer on one side, and the best HTML, CSS & JavaScript developer on the other side. Concretely, the server-side developer produces for every page server-side objects containing everything we need to display the page; those objects are then serialized to XML. The client-side developer picks those objects and transforms them into XHTML with XSLT.

This being said, I never saw this approach in other companies. Also, it has a lot of limitations and even if it's perfect in some cases, it doesn't work at all in many others.

Case 2

When, on small websites, developer and designer work together, there is no consensus on who writes HTML & CSS. You have to decide for every project, according to the skills of both people involved. Even if in many cases, it's the developer who deals with HTML & CSS, you can also find some designers who know HTML & CSS very well. In this case, if your intent is to work on small projects and only with such designer, you don't have to learn HTML/CSS.

Case 3

On larger projects, it is not unusual to hire a dedicated person to write HTML & CSS code based on the work of designers and server-side developers. It is usually a good idea to do so, since you don't want to pay $100 per hour for an experienced C# developer to actually write HTML; it's just a waste of time and money.


This being said, those cases are not the most frequent. So focus on server-side development, but try to learn HTML & CSS too. Additional knowledge never hurts.

share|improve this answer

You need to know HTML + CSS, as they are essential and not hard to learn. You will face pitfalls while trying to set the CSS for all the browsers, but You have to know it, cause You sometimes need to generate HTML using server side.

You can start learning those by creating Your own blog. If there is nothing to blog about, You can blog about Your lessons.

share|improve this answer

Sometimes, especially in the beginning, you will be working by yourself on a project and will have to do front-end and back-end. In this case, you will need at least a rudimentary knowledge of HTML and CSS. You don't have to be a great designer, you just have to get the information from your backend visible in your browser so that you can test things.

share|improve this answer

Actually, it all depends. If your getting in the muck in regards to server software programming, just make sure you know the standard ways the really high level (HTML/CSS) web devlopers should be able to interface with your application. However, if you plan on doing a lot of work closely linked with the HTML/CSS then you'd need to know HTML and CSS reasonably well. Either way, it's always good to know some extra technologies. I'm a native programmer and even I know HTML/CSS enough to create a decent looking website. That being said, I only learned it so I could learn AJAX to write some Chrome/Firefox addons.

share|improve this answer

Uh, I don't understand why people don't understand. There is no front-end code with websites. It's all back-end code. The front-end code is the browser, so unless you work on Mozilla or IE or Chromium/google or safari, you're writing server-side code. Here's how it works: The browser requests a file from the webserver. The webserver outputs a file. The browser interprets that file and may request additional files (images, javascript, css, etc) and interpret those files, until all files have been interpreted.

Now, this first file the browser requests is a html file. The html file is parsed and the browser decides how to render its content. So one of the important concepts to retain here is that the html file is consumed by a parser.

The web server is a software that listens on a port and processes requests for files. If the file is a static file (we mean static here in the sense that the file is already created) then it is just copied as-is to the requesting client. If the file is dynamic, meaning that it is created each time the file is requested, the web server requests the file to be generated by the software that generates the file (either a running process, a loaded library, or spawning a process) and that software generates the file and sends it to the webserver, who, in turn, sends it to the client.

Once that file has been "served" to the client and parsed, the client may request other types of files, such as json files, where it can bypass the parsing by the html renderer and instead have the file returned to the javascript interpreter running in the client, and these are parsed (eval is a form of parsing) by javascript. These are what AJAX is based on.

Now, how does this affect you? If any file on the server is dynamically generated, then there is software running on the server that tells it how to generate the file. The people who program these software are considered "server-side" programmers.

These html files, generated on the server, will tell the browser what other files to include, so the javascript and the images and the css need to be imported, arranged, and otherwise organized by the generated html file.

Many web frameworks, and dare I say, methodologies (MVC et al) have been developed to create a boundary between the pure "server-side" work, and the "client-side" work.

I forgot to mention, oh dear, the data people. The data storage people are even more server-side than the server-side html-file generating software writers. The data storage, whether relational database, NoSQL, or otherwise, are another thing altogether. I mention this because the Big-Vendor-touted frameworks and methodologies (MVC et al again) seemingly make it easy to just "simply bold that on".

Woah, what a longish answer.

I make this seemingly rambly answer to challenge your statement that there are server-side developers and client-side developers. If you deliver your information system through a web site, everything has to be stored, organized, and managed on the server. And it's a big mess, and unless you really learn how it all works, you're going to have a hell of a time making it work well. So it's all server-side.

share|improve this answer
    
NOT SURE IF SERIOUS? This is silly. "Client side" refers to software that RUNS on the client machine, not the delivery platform. HTML, CSS and JavaScript are STORED on the server (duh) but RUN on the client. So their development is considered "client side". –  Graham Jul 25 '11 at 20:25
    
The software that runs on the client machine is interpreted by the rendering engine in the browser, which is what runs on the client. The rendering engine first renders the html, and then, after rendering that, renders any of the associated resources, in the context of the html file. –  Christopher Mahan Jul 25 '11 at 20:38
    
@Graham, Yes, it's complex, thus the appeal of Silverlight and AdobeAir. –  Christopher Mahan Jul 25 '11 at 20:47

Not the answer you're looking for? Browse other questions tagged or ask your own question.