I don’t know how to create a website
mortoray.com
mortoray.com
While I disagree with the premise (that using old approaches should still take you just as far (and further) 20 years later), I do agree with this particular quote.
Often on SO I see well-supported answers like, "that's because you're doing it wrong" without going into detail on what doing it right would mean, or better yet, suggesting alternative frameworks or patterns where what's "wrong" over here is "right" over there.
If programming in 2018 has become more like plumbing, then plumbers in 2018 have become more dogmatic, and less willing to steer novices that prefer tools like 'x' towards approaches that use tools like 'x' more often.
Do you think that real plumbers are excited to teach novices how to do their own plumbing? Plumbing is boring, and novice technique 'x' is even more boring. And in programming tools change so fast, that you'll be explaining the same thing again in six months from now.
The remaining problem to solve is getting experts not only to weigh in, but to model patterns or point to alternatives that incorporate (rather than deride) the novice's original approach.
Disagree, but that might be because we frequent different territories of the StackOverflow space. I admit I don't often delve in to web-dev topics. For .Net questions, I'm continually impressed by StackOverflow's answers.
The worst area seems to be JavaScript, since that world is full of trendy new options. The most common one I see here is where someone wants a solution to a JavaScript problem and gets a JQuery response; even though a JavaScript solution would be trivial and the OP's not mentioned JQuery. That has a tendency to push people into using libraries where they're not required.
For .Net questions most of the issues seem to be in the ORM space; i.e. the boundary between .Net and SQL; where people asking for help with SQL are pointed to LINQ, and people wanting to do database-first are pushed towards code-first solutions.
It's not really an SO problem (or at least not a problem that I can think of an easy way they'd be able to solve); more there are so many solutions and no best way; and giving the full context of the developer's experience, preferences, and situation would take several essays, then matching that to those qualified to supply a suitable answer for that particular scenario would require really intelligent filtering; assuming that such people exist and are active on SO. So the current solution of having lots of answers to pick from, and allowing people to up-vote and comment to help remove bad answers and help show which answers are the more generally preferred (thus driving those who don't have a preference to follow the general consensus and thus move towards some form of standard approach within the community) seems a pretty good one.
That's just SO reflecting the culture of JavaScript developers, right? As you say, not really SO's fault, and a forum can't hope to correct for a dev community's vices.
> .Net questions most of the issues seem to be in the ORM space
Disagree. There's plenty on .Net concurrency and asynchrony, for instance, with answers from top experts from Microsoft. That's a field where it's quite common for someone to be 'simply wrong' though, which as you say, isn't universal.
It's a mixed bag, really. Since at least an year if jQuery is not mentioned either in the question or in the tags or in comments from OP, usually users suggesting to use jQuery get told off and, sometimes, downvoted.
Recently I ran into the 'why Boolean.toString returns an odd "True" value', I visited SO to find a terrific [1] but outdated [2] answer.
Nowadays I shift my teams away from SO. My piece of advice would be to stay away from it (especially junior devs), until they reach a level were they can evaluate and cross check what they are reading.
[1] https://stackoverflow.com/questions/491334/why-does-boolean-... [2]https://msdn.microsoft.com/en-us/library/atahsch6(v=vs.110)....
The correct solution remains `b ? "true" : "false"`, no?
If the XML spec requires exactly those strings, why do anything cute with `ToString`?
https://blog.jetbrains.com/dotnet/2015/02/12/string-internin...
The StackOverflowers note that the implementation technically doesn't match the spec, but in a way which can only be observed by using reflection https://stackoverflow.com/questions/491334#comment34617036_4...
The tech I know may no longer be suited to do the things I want...
The old tech that the author knows doesn't work for the modern web. He says as much. If you want to build the new shiny you have to use the new shiny tools. You don't have to make a website that does all the fancy reactive, responsive, Web 3.0 stuff. You can make a site exactly how we did it 20 years ago today and it'll work fine. But if you want to build a modern website, you've got a giant pile of things to learn first.
No customer ever asked for React, or Angular, etc. I have never heard someone say "I wanted to buy your product/service but I'm not going to because you use boring HTML instead of React".
Use the good old proven stuff until you can't, and then look at your options. There are scenarios where using React/Angular/etc makes sense. But for 99% of websites, it doesn't, especially if your website is a way to showcase content/goods instead of being an application itself.
The "new" Reddit completely kills my 12-inch MacBook when I load a page, and it still feels sluggish afterwards. That pile of garbage literally loads more code than content.
YouTube's crap navigation system is the same - if you click on a video it will actually load it & update the page within the client using JS, and in my case it's considerably slower than just loading the server-generated page from scratch. I often find myself opening videos in new tabs (and closing the old ones) or hitting refresh as soon as the URL bar is updated just to avoid this shit because fetching & loading a brand new page is actually faster than their so-called "improvement".
Source: https://www.reddit.com/r/redesign/comments/8smbob/an_update_...
Why?
I'm not talking about "app"-like sites (like Gmail), where it -somewhat- makes sense to use Javascript, but blogs or information sites (i.e. text + images).
The worst is that when you look at the domains to unblock, you often get dozens (not counting the Ads networks that I have already marked as untrusted)! This is crazy, a pretty simple page should NOT require all that complex (and slow) architecture.
And don't get me started about the comments sections! Not only do they usually require Javascript to see anything (which is stupid since just reading them should not require it), but ALL their UIs seem to compete for the title of "most aggravating interface ever". They always seem to try their hardest to be slow, confusing, and once you get more than a few dozen messages on the page (as they load on demand), they become simply so difficult to use that it's a chore then a torture to try to reach the last (or first) one.
I could also rant about the loss of bookmarking functionalities (because of infinite scrolling for instance), and of the previous/forward browsers' buttons...
In summary: in many cases, if not most, Javascript is used in a way that kills the user experience instead of enhancing it. And I don't see things getting any better, quite the opposite.
Works pretty well.
On the .NET front MS is even bringing back a saner script management for Web devs.
https://blogs.msdn.microsoft.com/webdev/2018/04/17/library-m...
The problem is that every site out there thinks they need one while in fact only 1% truly needs one.
Loads of mine have, but I write things for other software companies.
If someone want to learn to do a simple website I recommend Grav CMS. No database, just edit your pages with markdown and off you go.
An actual website (meaning text, images and little more) doesn't really need all the fancy frameworks OP's talking about. The sooner we re-learn this, the better.
I keep reading this and it was probably true 10 years ago, but JS has evolved quite a bit since. Browser differences are now marginal (yes I've seen the outline hack) and now these funny little VM-s are designed for the applications.
Sure, but you still need:
- a server/reverse proxy (h2o, apache, nginx, httpd, etc.), in which you correctly set tons of things, such as headers [0], https (acme.sh? or acme-client?)
- haproxy for IPv4/IPv6 if you want to live in the future, but still be available to people living in the past century [1]
Default versions and settings are still broken (SSL still enabled in 2018, etc.)... Mozilla does help though by publishing some sane templates [2].
In the end, it's not quite as complex as webapps, but still very far from trivial.
[0] https://securityheaders.com/?q=try.popho.be&followRedirects=... for my own static blog, https://securityheaders.com/?q=https%3A%2F%2Fwww.hellobank.f... & https://securityheaders.com/?q=particuliers.secure.lcl.fr&fo... for French banks...
[1] https://try.popho.be/https.html
[2] https://mozilla.github.io/server-side-tls/ssl-config-generat... and https://wiki.mozilla.org/Security
My point is that this whole post reeks a bit of YAGNI. Or, at least, that we're not talking about "simple websites". If it's the latter, of course, it's a whole different story. But we should call websites "websites" and web applications "web applications". This would also avoid those "the web sucks" arguments that make comments think an article is thinking about the web as "a way to exchange information" instead of "a platform to distribute system-agnostic applications".
Honestly part of me still feels like that would be good enough for most businesses these days still, but that’s just not what developers want to build.
Javascript, single page apps and React are all the hype, but outside of a few unicorns (Facebook, Airbnb, etc), the "boring" way is still where most of the money is being made. A lot of businesses still rely on Wordpress for example, and while that platform is garbage from a maintenance & security perspective, it does its job and proves that customers don't actually care about your site being powered by hype technologies.
A lot of mileage in the "boring" frameworks!
They looks like doing something. They use the famous tool and write seemingly similar code we write. But it's not correct. It's not just correct, It's also wrong in all aspects. They don't understand anything. They just imitate the activities and believe it just work somehow.
When facing it, the only answer we can give them are:
> “Why are you doing this at all?”
or
> “Yuck, you’re doing it all wrong, but I won’t tell you why”
Because, these people don't want to learn in the hard way or listen to the advice anyway.
So the last advice,
> “can you produce a complete working minimal example, deploy it somewhere, set up an issue system, accept code reviews, feed my dog, and then maybe I’ll help”.
is actually a kind advice, because these cargo-cult programmers blindly believe that, they are doing it right, it should just work, and the reason it's not working right now is a very tiny trivial issue caused by one wrong setting or something.
Since they don't listen the honest advice(you're doing it wrong in everything) and believe it will work, let them fail and let them know they are doing it wrong is the most kind advice.
Better for everyone involved IMO.
This is all obvious at the start of the project, but the moment you see a rabbit hole it's very hard to resist going down it. For that, keep a list of what's important nearby, and each time you get back from a break check that list and ensure you're obeying it. That list will start with a bunch of don'ts; to keep you away from bad habits, followed by your priority task list of what you need to create your MVP / the MUSTS of your solution. Once you have a working solution and have ticked off all the musts from your list, you can then play safe in the knowledge that you've got a checked in working version; and the remaining time is just experimenting / tweaking / playing.
Anyway, that's the theory... I've not managed to stick to it yet; let me know if it works for you though ;).
I was in the web dev world early enough to also be uploading pages and files via FTP to production for high profile clients.
In the last 3-5 years with the addition of gulp, sass, npm, etc. it has all become way too complicated and saturated. I found myself with way to many options and worse - opinions - to filter through, learn, and master enough to use in production. Mostly this learning would be done in my own time outside of work and I really started to lose interest/drive to do it.
If you wind up with something successful you can always switch to modern technology if it provides a solution which your old school tech cannot fix.
Then Squarespace came and I've been so impressed with it. It is the first and still only CMS that makes creating and maintaining* a blog super easy.
* images were always a problem with Wordpress and other sites... uploading, resizing, and more so moving and placing images on a page was always a "problem" for the non-tech-savvy but Squarespace handles this perfectly
You do, but you are suffering from analysis paralysis. Fuck it and stick to what you know, your _web app_ will be fine.
For websites you need VSCode, type ![tab] and you are ready to go.
I feel it's easier than ever to get started with frontend frameworks since there are tons of resources to learn from (youtube, course platforms, blog post, official tutorials, etc.) compared to 10 years ago.
As a footnote, I could write a similar blog post about Haskell, but I feel I could use that time better to watch a 1 hour long video and write a fibonacci function.
> I don’t know why this attracts people to programming — imagine trying to be a chef where the only source of ingredients is scouring the city for restaurant scraps.
I feel this is so untrue - there is a wealth of information on web-dev. The hard part is choosing what resource to use or what topic to study but in terms of learning content available - I think there is oceans.
I agree with what you said. The pace of change is daunting, but as long as you keep an eye on where it's headed and what's working, things get easier.