3 ms·
DNS, Javascript, JSON, TLS and certificates, client side frameworks. I always find it amazing that people recommend web programming to beginners. The amount of
by anon1385 11y ago
DNS, Javascript, JSON, TLS and certificates, client side frameworks.
I always find it amazing that people recommend web programming to beginners. The amount of stuff you have to learn all at once as a programming beginner is really overwhelming when you are just writing a simple local program, never mind adding all the complexity of networking and deployment and server config and the half dozen web techs.
I think a lot of people forget just how overwhelming it is to first learn programming, either because it was so long ago for them, or because they learned it gradually as a kid. They take it for granted that everybody already understands DNS and CSS and server configuration and conclude that getting started on the web is easy because all you need to do is learn a bit of python/ruby/php/etc.
- giancarlostoro 11y agoSetting up something like XAMPP is not as friction filled as setting up something like a *NIX development / production environment. In some cases you could get away with using shared hosting or spinning up a simple DigitalOcean LEMP box to some degree. On another note: I personally prefer to recommend Python due to a lot less friction, and semesters of helping students with learning C as their first language: "Don't forget the semicolon, don't forget the parenthesis, don't forget the curly brace." All things Python lacks, and with a good editor, their white spacing would be automatically formatted, and at least when they get to their next language they format their code a lot nicer. But that's just my experience helping out students. A lot of wonderful languages are perfect for first time programming languages. One of our teachers uses Processing for his Intro to Programming course. It's so easy to just download and install Processing, compared to downloading and setting up Java (at least in Windows).
- tim333 11y agoAs a beginners thing for web dev, Meteor is pretty good. Although it can get complicated when you get in to it like most stuff.
- oriolid 11y agoThis. Now, the thing with web developers is that most of the Web developers I have worked with don't know anything of this in depth. They manage to get something done by copypasting together examples, tweaking code at random until it works for the single case they are trying manually, telling users to ignore certificate warnings, etc... and when the application finally crushes under its own impossibility, the consultants are called in. The most beginner-friendly part about Web programming is in my opinion that you can get visible results quickly, especially if you can ignore the complexity of all the dependencies you are using. Back when I was a kid, I could write "mode 2" in QBasic and immediately start drawing stuff on the screen. When more structure was needed, you could add it until you hit the limits of the language... which weren't very far. I don't know if there is anything as simple available today. Edit: Reading other comments, Processing looks like a modern and much, much better language for the same use.
- raziel2p 11y ago> The amount of stuff you have to learn all at once as a programming beginner is really overwhelming when you are just writing a simple local program, never mind adding all the complexity of networking and deployment and server config and the half dozen web techs. You don't need to know more than HTML, CSS and PHP to "get started", and you can learn those one at a time, in that order - and once you know those 3 you can keep progressing, learning one thing at a time. When I was younger and learning programming, I had an extremely hard time seeing what I could do with it. I was working with C and Python, which lends itself to simple command-line programs - but at the time I had no experience using command-line programs, so I had no idea what sort of thing I'd want them to do. Things I had experience using, GUI programs and games, had a far higher barrier of entry and/or a much steeper learning curve. Now, I'd have a much easier time, I could separate the UI from the logic and write unit tests to have a sense of progression, but as a beginner, those things are out of reach. The first really useful thing I wrote was an IRC bot in python, but even that was incredibly difficult. I had to work with sockets, threads, events, character sets... I don't even think I had a server to run it on, so I just ran it on my desktop machine that was on all the time anyway. Compared to when I discovered PHP a few years later, it was immediately clear to me what I could do with it. I had experience using a lot of different websites, so there was a lot to draw inspiration from, and the barrier of entry was really low.
- joesmo 11y agoI think JS in the browser is a great way to start developing these days. The setup is close to zero (a script tag), the dev/build/deploy cycle amounts to saving the file and reloading the browser, and the language itself, while far from perfect, is quite typical of many widely used C-type languages. I'd say this is probably the optimal environment for someone looking to learn programming. On the server, something like PHP is so ubiquitous, that even though the dev/build/deploy cycle is a little more complicated because it involves a server, it's still a good candidate. With preset stacks like XAMPP/MAMP, all the user has to do is write some code and upload the file to the right place and reload their browser. I think that can be manged. True, the beginner will not know about servers and things like that initially, but that knowledge is not essential or even important to starting out. I think the big reason for suggesting web development to beginners is interpreters and their ecosystem. Learning an interpreted language is much easier, IMO, for beginners than JIT or AOT compiled languages because the tool chains dev/build/deploy are simpler and many times invisible to the user. Web development does use a lot of interpreted languages. Finally, getting real results on the screen is huge. Showing people they can build real things with only a few lines of code is very powerful and something that is much more powerful in a graphical web environment than on the command line. In web development, the product is graphical by nature, so that is also a huge plus.
- anon1385 11y ago>I think the big reason for suggesting web development to beginners is interpreters and their ecosystem. Learning an interpreted language is much easier, IMO, for beginners than JIT or AOT compiled languages because the tool chains dev/build/deploy are simpler and many times invisible to the user. If you want to do web dev in python then you need a local python environment setup (which is actually trivial on desktop Linux or OS X), and that is no different from somebody using python for local programming. Except their code will be far simpler since they can just read standard input and write to standard output, without having to worry about parsing https requests and constructing valid HTML just so that the results of their basic fizzbuzz code is visible. And they won't need to worry about deploying a server, setting up the domain names, setting up a web server and so on. Setting up a server is also more intimidating because you move into the world of things costing real money and your mistakes being publicly visible. If there's bugs in my small local programs that I write to educate myself then nothing happens the fact majority of the time (rm -rf style bugs can happen of course). If I screw up deploying my server, or do something insecure in php etc, then there are public facing consequences of that (my site gets pwned).