DEV Community

Discussion on: Why You Shouldn't Use A Web Framework

gypsydave5 profile image
David Wickes

I've been meaning to reply to this comment all day, because it really stuck in my head. Thanks Samia.

I've never really considered people moving in to development via CSS as their first step. Yes, in this sense Sass makes a lot of sense - a more complex language with more things to use. I wouldn't want to get in the way of a pedagogical technique - it's great.

But I guess my counter point would be that I would want to demonstrate some of those principles you mention above in a more general purpose programming language like Ruby or PHP.

But it's really about what interests people sometimes; if you're very in to your CSS, Sass could be a wonderful thing to learn and use. I think I'll have to think more.

snowbell92 profile image
Samia Ruponti

You're welcome. Since we are talking about newbies and people slightly more experienced than that, I hope this comment gives you some more food for thought.

a lot of people, including programmers who are experienced in other fields, starts their web programming with HTML and CSS. Now, an experienced programmer knows how scope and inheritance works (really, once you know some basics of management; yes, management; it's common sense. so newbies can know it too) and it's very natural to them by the point they start web programming (I only know PHP and not a lot of it, so I may be wrong) and they absolutely rebel (ok, I exaggerated, but bear with me) at the idea of having a global scope for gasp everything. They then think of conditions, but oops, CSS doesn't have it either. but they can't escape CSS, their site won't look so nice and shiny without it, so you get three different classes that do the same thing slightly differently. If you are teaching someone, scope and inheritance can absolutely be demo'ed using general purpose language,but in the context of web programming, specially if you are not going the js heavy route,it's perhaps not a very good idea. Because, well, debugging. Debugging a global-variable-gone-wrong in any semi-complex code is very, very hard in javascript (YKJS has some very nice examples). In PHP, either you look at your screen, baffled at why your program is behaving that way or you get an error. But CSS? it's easy. it's not a programming language, but you can make it behave (somewhat) like one. Add Sass to the mix and you get an almost programming language, loop and if-else is back in business and you can finally write proper local scope without the code looking like a pile of a random-language-dictionary. Debugging is still difficult, but now you don't have to go through all the code you've ever written and while debugging, a light-bulb goes off in your head and you realize global scope is "actually" very useful in CSS, perhaps a lot more than in any general purpose language. it goes the other way around too, someone who doesn't know the first thing about programming principles can quickly catch on because they can see the problem (the entire language is the scope problem) and the solution, all in one place.

Also, let us talk about CSS variables. They are incredibly useful, but they don't really makes sense, not yet. I know it is controversial, but read on. I say this because there's no "operation" on them, not yet. CSS has no loops, no if-else, no functions (I'm not counting calc()). So I get this question a lot "but, I can just write them there, right? won't that be easier?" It's like the new shiny gold heels in my wardrobe, it complements my dress fabulously but I could just as easily have worn the dress with another pair. But variables in Sass makes sense. you can just hold a value or you can hold a value and run operations on them. So when you write "You don't need Sass, CSS has variables now." it does not show the whole picture. CSS feels restrictive to a lot of people, which in result makes them want to use frameworks to "just get it over with". Sass can make them learn the fundamentals, which is the whole point of your article.

So my point is, even though general purpose languages can be used to make someone see the programming principles, when you are web programming, CSS and Sass are the easiest choice. And CSS by itself, is not very interesting to programmers who already had a lot of freedom with other languages, which in turn, encourages them to "bootstrap their site to death". Sass can actually make CSS interesting and in turn, they learn how it works, write better code and don't use unnecessary frameworks.