Hacker News new | past | comments | ask | show | jobs | submit login

> making a website != programming.

I hear this a lot. While I would not call most basic work on websites very complex, I struggle to figure out why it's not programming.

You are writing a series of inline presentation commands mixed with content, not unlike how Knuth preferred to write (a technique he called literate programming and that frequently went double-meta when he'd embed TeX documentation for the Tex source code using TeX). This document structure can then be further augmented by directives in one of a few (common, many exist in the margins) ancillary languages, two of which have variables and loops, one of which is Turing complete.

Making websites is programming by any reasonable definition of the word. Usually the people I find saying it isn't then make arguments that are basically design to exclude anyone who hasn't been at it as long as they have. Usually, because they're a little insecure about the slow erosion of the barrier to entry to the field.

There are plenty of things in our modern world to get your jimmies rustled over, man. If you wanna take on a really scary-bad-idea issue in this sector look at how a very good embeddable Javascript engine is being misused for sub-par, poorly designed distributed systems programming.




This is a nice, comfy thought but it's just not true. Programming and web development are entirely different things, and it doesn't have anything to do with barriers to entry or how apparently "difficult" each of these things are. They're just different.

Any suitably competent and experienced programmer could pick up a new programming language in a week or two of focused study, but they'll basically be starting from scratch if they're learning HTML + CSS for the first time. Meanwhile, a web developer who only knows HTML and CSS is entirely unprepared to do any serious work in any real programming language, and would be starting from scratch if he decided to pick up C. This doesn't mean one is smarter or stupider than the other, but it does mean that the process of telling a computer what to do and the process of telling a computer "here's some text, and here's some guidelines about how you should display it" don't inform each other.

> one of which is Turing complete

Turing-completeness is not difficult for a piece of software to achieve (HTML5+CSS3 is basically Turing-complete by accident) and I'm sure you'd admit that HTML5+CSS3 is not an appropriate language for performing any serious computation.


> This is a nice, comfy thought but it's just not true.

Actually I think most people found it profoundly uncomfortable.

> Any suitably competent and experienced programmer could pick up a new programming language in a week or two of focused study, but they'll basically be starting from scratch if they're learning HTML + CSS for the first time.

This has nothing to do with your point. Most programmers struggle to pick up Lisp, Haskell and ML for the first time, but those are unambiguously programming. TeX is usually a bit tricky too.

> Meanwhile, a web developer who only knows HTML and CSS is entirely unprepared to do any serious work in any real programming language, and would be starting from scratch if he decided to pick up C.

Much as it pains me to do this, I cite Node.js as a counter example. People can and do write systems software using their understanding of Javascript as a basis. They may not do it well, but I know for a fact I could write certain types of servers acceptably well with it (I would prefer other tools, though).

Note that just because Ryah and co do not know how to write systems software, the basic principle is not invalidated. With some serious hacking to the node.js vm, it could be a viable competitor to Erlang.

This argument is incredibly weak, and basically self-refuting. But we have to repeat it every now and then.

> but it does mean that the process of telling a computer what to do and the process of telling a computer "here's some text, and here's some guidelines about how you should display it" don't inform each other.

You keep re-asserting this but haven't given any quantitive metrics for how it is different. You just keep saying it like I'm supposed to agree.


> Much as it pains me to do this, I cite Node.js as a counter example. People can and do write systems software using their understanding of Javascript as a basis. They may not do it well, but I know for a fact I could write certain types of servers acceptably well with it (I would prefer other tools, though).

Well, Javascript is a proper programming language. If you've got a web developer who knows Javascript, you've already got a web developer who knows programming. For the record I'm not making a distinction between systems software and higher-level programming here.

> You keep re-asserting this but haven't given any quantitive metrics for how it is different. You just keep saying it like I'm supposed to agree.

I think I've made my case pretty clearly (though this discussion is qualitative rather than quantitative). If you only know HTML and CSS, you aren't a "programmer" because you don't have the tools and knowledge it takes to write programs that do any nontrivial computation. If you only know Python, you don't have the tools and knowledge it takes to make an attractive static website. Of course, you can learn both, and having experience with computers makes learning one somewhat easier after you've learned the other.


> If you only know HTML and CSS, you aren't a "programmer" because you don't have the tools and knowledge it takes to write programs that do any nontrivial computation.

This is not a requirement for being a "programmer." It never has been.

> If you only know Python, you don't have the tools and knowledge it takes to make an attractive static website.

Nor, um, do you necessarily have the tools to do anything...


> This is not a requirement for being a "programmer." It never has been.

Programmers program computers. We call them programmers because they program. If you can't write programs, you're not a programmer. What other definition of "programmer" could you possibly be using?


Why won't you acknowledge that web development is not about HTML+CSS only? Why are you insisting that web developers know these technologies and not JavaScript, and in effect do not program?

You're obviously not very familiar with web development. The one who you have in mind is called designer. He's as you say, although it's still very hard and important job.

Web developers are programming all day long. They use JS almost exclusively with occasional excursions to HTML-land, without (in principle) ever touching CSS.

I'm a backend developer, so you will probably agree that I'm a programmer and I know what programming is. Just last week I had to fix/rewrite something on a frontend. It was a routine which retried an AJAX request until it either succeeded or failed a given amount of times, but with a twist - it cycled through a list of URLs while retrying. That's a very simple problem, I know, but I really felt as if I was programming while doing this - don't tell me I wasn't. And given JavaScript peculiarities it was full of surprises and overall a rather pleasant experience.

Now, design and programming are really two different skillsets. One is clearly programming, another is maybe-somewhat-with-HTML5-and-CSS3-almost-programming. You're confusing them both into one and so your conclusions are equally confused. To summarize: I know too little about design to really argue, but web development is, of course, programming.


Still you are not writing a program though. Sure you are using algorithms, data structures but it is not a program. You are writing a helloworld.py while the real program is /usr/bin/python. I don't think you could a text file program unless it actually runs. Thus, not a programmer. If I write some code on paper, is it a program too?

Difference is just a word, I believe main issue is despising scripting languages.


> I don't think you could a text file program unless it actually runs.

So you only have a program when it has no compilation errors? What were you doing up before then, besides the obvious typing?

> Thus, not a programmer. If I write some code on paper, is it a program too?

If I print a program on paper, does it cease to be a program. This is some philosophy of mind here.


> Programmers program computers. We call them programmers because they program.

You've yet to give a definition of "program" I cannot satisfy with HTML, CSS and Javascript. The notion of "non-trivial" is not rigorous.

> What other definition of "programmer" could you possibly be using?

This is what I am wondering, because by any rational examination of what you've presented you've refuted your own claim. HTML+CSS is turing complete, which in practice means I can "program" arbitrary logic in it. It is a dialect of computer programming heavily focused on displaying content, but clearly it can do things.

Clearly explain to me: why is making a modern webpage any different from writing a simple modern Ruby script? Or a trivial iPhone app, for that matter? Open up a nib file and you'll see a serialized object graph, heavily biased towards the presentation and its structure. Callbacks are annotated into the system. But you could make a "dumb" iPhone app without ever writing a single line of code, using drag and drop components and GUI clicks. Oh my, that seems even less like programming, but in many cases it's indistinguishable from programming.

You really need to step back and ask yourself, "What is the actual difference here?" Your primary justification so far has been about people, but your original claim was about what "programming" is. If a "programmer" is someone who programs computers and we cannot cleanly and clearly explain why webdev is not programming, then what?

And to be honest, it's sort of patronizing and discouraging to new users. HTML+CSS+JS is the most widely deployed, used, programed, customized, and maintained programming environment in human history. Most people will find their way to the discipline via web browsers now, just as most kids in my childhood did via BASIC (also a victim of aspersions like what you cast).

Methods change and evolve. Environments change and evolve. Most of all, requirements change and evolve.


> If you only know Python, you don't have the tools and knowledge it takes to make an attractive static website.

1. Pelican 2. Frozen Flask 3. Many more!!




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: