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.

many people say that html/css is something easy, it looks easy at first sight but when i worked on some projects i noticed that :

  • same value works differently depending on other properties and on the targeted element.
  • we need to know default values that browser affect to every property in every element.
  • we can't be sure how the page will be rendered until we test, even if we are experts.
  • we can't say we really know html/css until we know the algorithm used by the rendering engine and it's a huge responsibility for the engine to work with such complicated recursive layout.

shortly, i have worked on desktop & web development for about 3 years and i have never seen such complicated thing to learn (html/css)

question : Is html/css really hard to master ?

share|improve this question

closed as not constructive by gnat, Glenn Nelson, Blrfl, Kilian Foth, PSU_Kardi Feb 21 '13 at 20:00

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

CSS is extremely difficult. Anyone who says otherwise does not understand it. –  user16764 Feb 21 '13 at 17:16
Modern web pages need more than html/css you will also need to learn a front-end language (javacript) and a back-end language (lots of choice here PHP/Ruby/Java etc...). Also some knowledge of data storage and retrieval (SQL) is a nice to have. –  Loki Astari Feb 21 '13 at 19:11

3 Answers 3

up vote 8 down vote accepted

Nothing is easy.

From Teach Yourself Programming in Ten Years:

Researchers (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.

There is nothing special about html/css that makes it easier or harder than any other concept. While I consider Java 'easy', I've been working with it since a college class in 1998.

When asking around Programmers.SE you will find that we are programmers. We have had a decade of ruby, or python, or perl, or java, or C, or C++, or what have you. These are things that are easy for us. Front end work is the icing on the cake, but we have built the bulk of the cake in something else... but we are bakers, not cake decorators.

If you find someone who is a UI person who has been working with HTML since the early days and kept pace with CSS and HTML5 and such... html and css are as easy to them as our preferred programming languages are to us. They have a tool set to work with, they know what to do, what to look for and how to do it.

The biggest challenge for a programmer to pick up HTML and such is that it isn't programming. There is not a significant foundation for a programmer to build on (switching from C to java is less of a transition).

share|improve this answer
"Nothing is easy" false, to drink water is something easy, but most of times we use "easy" in the meaning of "how much time it takes to learn", thank you –  user2080105 Feb 21 '13 at 18:33
@user2080105 depends on context. It can be rather hard to drink water if you have a hole in your neck. –  ryan Feb 21 '13 at 18:56
@user2080105 How many years have you been practicing? My niece has a bit of trouble with cups still... but that's more of a parenting.SE question. –  MichaelT Feb 21 '13 at 19:09
@user2080105 web technologies from one year, desktop from 3 years –  user2080105 Feb 21 '13 at 19:27
@user2080105 I meant drinking water. –  MichaelT Feb 21 '13 at 19:39

Yes, it is

Neither HTML, nor CSS are programming languages, and when being compared to programming languages, they require less skills and time to be learnt.

While comparing HTML/CSS to programming languages feels strange, it's mostly done in a context of a hiring process:

  • A person who claims to know two programming languages would make a better impression compared to a person who claims to know HTML and CSS.

  • Every web developer is expected to know HTML and CSS aside her primary programming language. For example, there is no such a thing as a PHP programmer who have never wrote HTML and doesn't know what it is.

Aside human resources department and "I'm better developer then you" stupidities, HTML vs. programming languages comparison wouldn't be used, but as far as we accept to compare for example HTML vs. Python or CSS vs. Haskell, HTML and CSS appear easy.

As a side note, I always find funny that among developers I've interviewed, nobody, never mentioned that she knows, say, HTTP, or IPv6, or RFC 822, or the XML format Microsoft Word 2007 and later are using to save the documents. Is it because the candidates don't believe this knowledge is useful, or because understanding those protocols and standards are ways more difficult then understanding a programming language?

No, it's not

  1. Thanks to the differences between browsers and the issues some well-known browser had for years following the standards, HTML and CSS can become tricky.

    While HTML 5 pretends to bring something common to every browser, I'm not buying this argument. Especially when I have to write something like:

    .twoStopsGradient(@color, @stop1, @stop2, @orientation: top){
        background-image: linear-gradient(@orientation, @stop1, @stop2);
        background-image: -moz-linear-gradient(@orientation, @stop1, @stop2);
        background-image: -webkit-linear-gradient(@orientation, @stop1, @stop2);
        background-image: -o-linear-gradient(@orientation, @stop1, @stop2);
        background-image: -ms-linear-gradient(@orientation, @stop1, @stop2);
        background-color: @color;

    Especially when I think about all those previous versions of Internet Explorer we have to support for years and which will not start themselves to support magically HTML 5 and CSS 3.

  2. The fact that there are lots of different versions make things even more difficult.

    For example, what about the difference between XHTML 1.0 Strict, XHTML 1.0 Transitional and XHTML 1.0 Frameset?

    What are the differences between XHTML 1.1 and XHTML Mobile 1.2?

    Also, technology evolve. A few years ago, you had to know HTML 4 and maybe a few variants of XHTML. Today, you have to know both those old versions and HTML 5 and CSS 3.

  3. Tools matter. Writing plain HTML is not enough, and one should also learn LESS or Sass/SCSS. This is not making things easier.

  4. Goals matter too. Large-scale websites require specific techniques, like CSS sprites or other optimization tricks, which have their roots in HTTP itself.

    A person who qualifies herself as an expert in HTML and CSS should be able to explain:

    • why JavaScript declarations should be put at the end of the body tag,

    • or what is CSS minification,

    • or why most large-scale websites don't care about minifying their HTML code,

    • etc.

As non-programming languages, HTML and CSS are quite difficult, compared, for example, to Markdown.

share|improve this answer
On your side note: Nobody mentioning knowing these protocols probably comes from the fact that hardly anybody ever needs to do any programming for those protocols. Most of them are abstracted away by network protocol libraries. You would only mention knowing those protocols if you were involved in programming those types of libraries. –  Marjan Venema Feb 21 '13 at 18:41
@Marjan Venema: I see. Of course, knowing things like XML definition of Microsoft Word documents is much less valuable for general programming than knowing Haskell. This being said, knowing HTTP is often extremely useful for a web developer. Things as RFC 822 can be useful as well, just to know that "special, 123@abc[12].com"@example.com is a valid e-mail address. –  MainMa Feb 21 '13 at 19:03
Yes, those parts can be useful, but I don't need to know the entire protocol for that. Stuff like network communication, storage, specific file formats etc. really are secondary in nature. They are the nuts and bolts in programming. Libraries are to a programmer what a tool set is to a carpenter. When a good library is available, any programmer's time is better spent developing primary business functions than implementing protocols or storage definitions. –  Marjan Venema Feb 21 '13 at 19:15
Why should i learn old versions of html & xhtml, html5 is enough. –  user2080105 Feb 21 '13 at 19:37
@user2080105: if not supporting people who don't use the latest browsers capable of HTML 5 is acceptable for you and if you are sure you would never have to maintain older projects, then don't learn older versions. So far, I have never seen any web developer in this situation. –  MainMa Feb 22 '13 at 2:07

HTML/CSS is very difficult to master.

html and css are both about a significant amount of memorization on how specific things behave in specific scenarios. This context sensitivity is so onerous that the most experienced UX engineers (html/css guys if you don't know what UX is) I know still spend most of their days debugging these contexts.

Above all else I think the largest problem other than the significant context-sensitivity is they both have the largest vocabularies of any languages I know, by a significant portion.

They are simple to do ultra-basic things, but the amount of each languages vocabulary you must know before you can start doing anything correctly is huge.

Many engineers with significant experience (I have 12 years in industry, and this is true for me) will tell you that html/css work is that which gives them the greatest deal of trouble. So don't feel bad for having difficulty.

share|improve this answer
(12 years) I respect that sir. –  user2080105 Feb 21 '13 at 17:37

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