DEV is in the process of launching a podcast and we'd love for you to be involved! We're recording the episodes in advance, and this week we'd like to know:
What is your top unpopular tech opinion?
If you'd like to participate, please:
- Call our Google Voice at at +1 (929)500-1513 and leave a message 📞
- Send a voice memo to pod@dev.to 🎙
- OR, if you don't want your voice recorded...just leave a comment here and we'll read your response aloud for you 🗣
Thank you!
Top comments (243)
Top unpopular opinion:
I can still be more productive and integrate web apps much faster when using vanilla JS and jQuery than literally ANY JS framework.
Top unpopular opinion 2:
People who only learn full-stack Javascript will have a biased vision on web development
Agreed, but it really depends on the project for me. If I start rendering a bunch of JSON lists I am not on board, but sometimes vanilla just makes things run faster. I was actually converting a vanilla ES6 app to Angular for a research team and noticed a bunch of choppy scrolling. Converted some Angular state management back to some simple DOM queries, and everything was back to normal. Something to be said for that!
Oh, but I won't touch JQuery with a ten foot pole. ES6 minus IE support all the way 😁
I agree, depending on the project. It's pure engineering. You have to weigh the advantages of a framework vs the overhead. Folks love to trash jQuery but the simple fact is you can have a project that meets all of your objectives for performance, security, and features with vanilla and jQuery and not spend a ton of time developing it. The end result is a quickly developed quality product. I respect people willing to make a choice like that.
You are 100% not crazy.
I do encourage you to check out Stimulus because it makes it so easy to ensure that your code is mutation-safe, but agree that vanilla really is the best flavor.
Stimulus is awesome!
Number 2 especially. The nuts and bolts of http are not going anywhere and you need to get your hands dirtier with that stuff than backend javascript points you towards. Also, back end architecture is a thing for a reason and it's exposed in different ways by more traditional frameworks.
I feel you about the JS / jQuery debate, haha. I ship way faster too, that way. I do feel, however, that I am not improving myself, just repeating tricks. React / Vue force me to organise my code a bit better. Takes longer though, but might be better for scalability and all that.
I'm not sure either of those are unpopular:
It's definitely quicker and easier to do things without a framework up to a certain point, at least.
Anyone who only learns X is going to be at a disadvantage when they play with the other alphabet blocks.
I meant unpopular in the sense that everybody seems to favor using a framework now instead of also understanding that the basic principles still hold. And well honestly I'm trying to learn Svelte now and well I could embedded a Google maps map on a page in 5 minutes using JS for example but in Svelte there's some restrictions on how components are mounted, how files are defined, etc... I wonder if in the end for a similar result, the code won't end up being harder to work with
cheers to the first one!
Python is overrated. It is a weird language, you spend more time organizing tabs than anything else. Not to mention the dependency management, having to do venv and all that. I don't use Python very often (I avoid), but when I have to, I sometimes forget the venv thing and once when using boto3 it messed with my aws-cli installation and I was "what?!". Now aws-cli wisely uses a embedded and completely independent copy of Python, now we know why.
I like python as a language but I’ve wasted so much time with its bad dependency management and environments. I’ve tried a bunch of tools that promise to make it better but they always fall short of something like npm.
but npm is even worse, when I'm forced to install npm I look back on python virtual env's fondly.
What don't you like about NPM?
That it routinely screws my whole machine up due to mismatched versions.
Yeah that's a fair point. I use nvm to quickly switch between versions, that makes it much more tolerable 🙂
venv
is weird haha, check out Poetry for dependency management the next time you're working with Python!I will definitely try it out, even the Python lovers where I work will adopt if it goes well. I don't think people are in love with venv. hahaha
How about Pipenv and Pipfile are overrated and over-promoted. (Actually, the creator of Pipenv and *for Humans, received a lot of criticisms on Reddit.)
Although I do agree that Python is overrated, I never really care about, nor do understand, the indentation hate.
It is overrated because data types and data structures are slow, unless you use some C/C++ bindings, like NumPy. So in the end, it just wraps another language.
Not to mention that the IDE is never as smart as TypeScript, Kotlin or Java.
venv is overrated or not, it might be better than polluting the global installation by default, like Golang or Ruby.
JupyterLab and Conda are cool, but I don't get why it is built into Python.
Small pedantic note: the data types and data structures are slow in CPython, the default implementation. Pypy, another major implementation of Python, is implemented in itself instead of atop C, and performs much closer to compiled languages.
Dude, I have programmed in python extensively for 13 years and I don't understand what "tabs" are that you refer to. What dependency management compared to C, C++, javascript, etc? NPM dependency hell makes anything in python look quite mild in comparison. I can tell you don't use it often given the shallow opinions expressed.
aws-cli and boto3 are the worst offenders for botching up an environment.
Working with CSS, especially Flexbox or CSS Grid is 100 times easier than figuring out Bootstrap/ overriding all the Bootstrap stuff you don't want.
Also Firefox > Chrome.
+1 for Firefox > Google chrome.
I do use Chrome but only for it's developer tools which is awesome and to be honest better than Firefox's.
Chrome is great for JS debugging, but Firefox' DevTools really stand out when you're working with the layout. Especially if you're using Grids!
The main thing I'm missing in Firefox Dev Tools is service workers debugging
Yes, this is why I love Firefox dev tools too! I do a lot with the visual side of Front-end and the grid inspector, accessibility, and animation tools in Firefox are great.
Yes I agree completely too, I like working with Firefox dev tools for the visual aspect
I've never tried coding with Bootstrap, but just speaking as a passive consumer of web content, I claim I can spot a Bootstrap website from a thousand kilometers away. Whenever I suspect it, I do some view source, and voy-la, right every time. It's a certain look and feel that is very cliché. Some websites simply scream "Bootstrap!"
I like Tailwind for styling these days - I find it's better for prototyping than Bootstrap and is less prone to making sites look "same-y".
+1 for both.
But about bootstrap, the design system sees important if you don't have a design to follow/need to create your own design.
Docker & Kubernetes are not solution to your scalability problems
I agree, but they're kind of helpful in other ways. Every idiot knows how to docker-compose up for one, and on a good k8s setup you can pretty much create end-to-end applications all by your lonesome even in an enterprise setting: create a new deployment, service, etc., get resources automatically allocated (to some limit), domains automatically configured in F5 (in our case). So instead of writing emails and Jiras for weeks to get dev/test/live virtual machines, firewall holes, permissions, whatnot, I can just get to building stuff.
This. It's basically kicking the can down the road by throwing more money at the problem.
So, it's about the use of strictly typed languages like TypeScript. I think that it's Okay to use JavaScript most of the time however there might be cases when you need strict typing but normally it's not required. Personally, I hate TypeScript.
I mean, if you're not ready to dive deep into Rust, TypeScript is an acceptable compromise for now. JavaScript is a pretty awful experience once you've been developing in Rust long enough, though. Frameworks like Percy, Iced, and Yew are amazing.
Iced lets you write GUI without needing HTML, CSS, and JS. It uses low-level GPU draw calls to WebGPU, Vulkan, and Metal graphics APIs. You can have desktop, web, and mobile builds all from the same codebase. The binaries are highly optimized and 10-100x smaller than Electron.
Percy should be familiar to React and Next.js users. The HTML macros are great, and it can run your application on the server, giving you the best of both worlds. Serverside rendering is one thing, but you can also hydrate and introduce state from your database using context from the request itself, just like the good old days.
WebAssembly is happening right now, and JS and compiled-to-JS languages will never be able to compete due to their reliance on JIT and GC alone.
There becomes a point where it's not realistic to expect your users to have a machine of limitless power to compensate for the deficiencies of your own technical decisions.
The industry is already adopting TypeScript for most new projects. It won't be long until we abandon JS completely.
github.com/Pauan/rust-dominator/ tho.
Looks neat, but I have concerns. One is, it's not usually necessary to need to install additional Node dependencies for WASM projects. Percy and Iced don't need this. I also don't see an isomorphic (frontend and backend rendering) example. Percy has this. Also, does it support Browser History API routing? I just saw the hashes in the routing file for the todomvc example.
Which dependencies are you talking about?
Just like github.com/ryansolid/solid, there is no support for SSR "yet".
My unpopular opinion for this article is that SSR is overrated.
You can use any router you want, the example uses hashes so that you can try it out with any static file server.
One thing that project desperately needs is better public relations/documentation, such as examples that serve out of the box with one command.
In hopes of which I am raising awareness :v
I recommend checking out Percy and Iced, also. SSR is important because it allows you to be more flexible with your infrastructure. It also helps you support more dynamic values in OG tags, and I'm not sure if Google and others support SSR with WASM apps. Additionally, starting with SSR in mind is just nice because SPAs shouldn't be the prescriptive solution to every problem.
OG is an interesting usecase. I currently spend more of my time thinking about deep web.
Injecting OG tags + standard payload as an alternative to SSR would be fun.
My mind immediately jumps to also injecting an "initial data" bundle at the end of the payload though, and I have to remind myself that that's overengineering.
SSR is a nice-to-have when it's completely free. But it's never free, is it? Even if you are forced to run servers for some other reason, it's all the development effort to keep your data sources isomorphic.
I am not (yet) in the camp of "oh my god, why are you sending that poor person with the metered connection all that markup that they could render themselves", just the "SSR is hard, and there are other, more 'organic' optimizations that you could spend your time on".
When will the time come?
I personally don't really care about JavaScript, although I do care about WORA for both desktop, tablet and mobile; and no-installation needed.
The future is now:
github.com/hecrj/iced
It seems to use WASM for mobile.
I am also looking for web browser alternatives, like Expo, actually. But Expo seems not to target desktop apps.
Cordova can integrates with Electron and also mobile, but it seems to reset every time mobile app is updated.
The project is early on, but there's actually been efforts to make it Native. Also, Expo (Fancy React Native) is a terrible compromise, similar to those made by Electron, but exacerbated by the limitations of mobile hardware.
Check it out:
github.com/iced-rs/ios-examples
Notice the build target:
github.com/iced-rs/ios-examples/bl...
This is clearly the darkest timeline.
I think it depends on the codebase and the discipline of the coders. If it is something large with many developers or old and bug-ridden, slowly converting parts to TypeScript may help to identify areas where types are a mismatch and are causing unexpected behavior. If it is a newer/small codebase with a small team and everyone is using a linting tool, then it may be overkill to use TypeScript.
JavaScript codebases can also get some of the benefits without having to rewrite code to use the TypeScript compiler to report on issues. It can be run from the command line or VSCode will report some of those issues automatically.
Yes, exactly that's what I think. Most of the time we have small projects in which we don't need TypeScript per se. I have seen some people emphasizing too much on TS for everything. That behaviour bothers me.
I thought I was the only one
Oh we are in the same party!
Sing it loud, brother.
I am saying it louder!
If you start your projects by asking which SPA instead of why SPA you're doing it wrong.
There's an entire generation of developers who are hive-minded about the idea that monolith = bad, React/Vue = good. They are being lied to because it's profitable for their employers. It's a hegemony and a cult. From the outside, it looks like the inmates are running the asylum.
Seriously: use your favorite stable and proven server-rendered framework, devise a caching strategy where Redis is hot with a >99% hit rate, use Turbolinks to make things load faster than the eye can see, and use Stimulus to manage what little client logic you truly need.
Software would be a lot less complicated to develop if you didn't have to use the "industry standard" approach that billion dollar corporations developed to serve billions of users.
And it's pretty clear that developers will martyr themselves for their religions.
I came down here searching for your comment. That's exactly my opinion.
I'd add that not only this generation of developers, but the not-so-tech and not-so-young managers generation (specially some business tech-ish decision-makers I had to deal with) is sometimes so toxic that I found myself having to throw a buzzword out of the blue, without making any sense, to be taken seriously or have my requests approved. It sounds absurd, but it's true and it works... and that's sad!
At this point, I don't even know if I need SPA <Link /> in my multi-page website?
Static hosting is cheaper and faster at every level and scale.
Why would you interpolate html on your server?
You're winning nothing, it's not even less complexity.
That sounds like a great strategy, if you're only hosting static documents.
Beyond that, I can loudly declare that I can cast all AD&D 2nd mage spells up to 6th level - but for some reason not the 4th level spells - and have the same amount of credibility as your assertion that I'm "winning nothing".
Seriously, have you ever built anything credibly sophisticated with a server app? I don't believe for a moment that you would voluntarily choose to use whatever nifty combination of Vue + Firebase or whatever you have convinced yourself is best if you could see how quickly we can build reactive applications using Rails, TurboLinks and Stimulus vs maintaining client state and serializing everything as JSON "because better".
Honestly, I don't think your position has a leg to stand on.
That is a view of nothing but pure inertia.
Imagine using last resort hacks like TurboLinks on a greenfield project and claiming you're "using the platform".
Will you have API endpoints? Yes. Will you have some interactivity on the client, including network calls (without a seamless page reload)? Yes.
Why add to that a third thing in a separate language?
And this scales from "one person updating both the API and the UI in one commit" to "here's the GraphQL/Swagger/gRPC spec from the team for that backend feature, use it to generate mocks".
You're paying extra money for servers just to have more things to worry about, avoid scary things like offline-first, websockets, p2p and for what? To say "look, mom, I am generating HTML just like WordPress"?
What's one thing that's easier to do on a frontend server than anywhere else?
That is a view of nothing but pure inertia.
Imagine using last resort hacks like TurboLinks on a greenfield project and claiming you're "using the platform".
Will you have API endpoints? Yes. Will you have some interactivity on the client, including network calls (without a seamless page reload)? Yes.
Why add to that a third thing in a separate language?
And this scales from "one person updating both the API and the UI in one commit" to "here's the GraphQL/Swagger/gRPC spec from the team for that backend feature, use it to generate mocks".
You're paying extra money for servers just to have more things to worry about, avoid scary things like offline-first, websockets, p2p and for what? To say "look, mom, I am generating HTML just like WordPress"?
What's one thing that's easier to do on a frontend server than anywhere else?
Mihail, you've been doing this since 2015. Is it possible that you still have some things to learn? Right now you're equating mature/stable == old/bad. You've come up at a time when it's been super trendy to push everything to the client, and I promise you that this works in a pendulum cycle. Meanwhile, if you keep drinking your own KoolAid, you'll convince yourself that you just happened to luck out and learn the methodology that you're going to fight to prove is the best. It's not a good look, and long term, it's not the hill you want to die on.
Also, this notion that everything has to be done with microservices and all-static front-end everything is just the regurgitation of propaganda. The massive pushback against this march towards the edge is already well underway. I've been building and scaling teams since the late 90s. You don't have to agree with me, but you don't get to squirt testosterone all over the carpet and bleat about how my views are "pure inertia". You're being a dick.
Straight-up, the first and best thing that comes to mind that is easier to do with server rendered UI is state management. You can suggest that Turbolinks is a "last resort hack" all you want, but frankly it's just not a credible statement. Using Turbolinks and a library like StimulusReflex, I can build reactive user experiences that load faster and smaller, render and update faster, and I drastically reduce the complexity of the logic by not keeping any state on the client at all. It's a breeze to develop, it's easy to employ Russian doll caching, it's actually a lot of fun, and gosh, it's good enough for 6 of the top 10 YC companies of all time.
Honestly, everything I do with Rails, TurboLinks, StimulusReflex and Stimulus, I can build it faster than a team of JS devs. I'm not sure that I believe you've ever actually tried these tools, or you wouldn't be saying what you're saying.
How about this one: Global variables aren't so bad.
(Controversial?) unpopular opinion: Linux is overrated. For regular end users, it is overcomplicated and not particularly useful. And Linux users many times behave like the tech version of vapers/vegans/CrossFit. 😳
As a Linux regular end user for years before programming and a vegan myself, I think you should meet new people. 😝
I should! I like meeting new people... especially if they like hating on Linux 😜
Now seriously, I don't have anything against Linux, I used it for years at a personal and academic level (Mandrake/Linex/Ubuntu). It is ok for servers/development, but I don't see it as an option for the average user.
Maybe it depends on the person and/or Linux distribution. I have never been great on system administration but once I got used to Linux it was more comfortable than Windows (which I find overwhelming!).
It is rather funny to see that assessment, seeing how many computer illiterates, many of them seniors, whom I've trained to use Ubuntu (in 15 minutes, no command line). They are not only proficient at using it even still, but vocally recommend it to others.
Not to say your opinion is invalid, Alvaro. :) Just maybe not wholly objective?
My opinion is completely subjective (and unpopular and controversial, seeing the comments 😊). It's more anecdotal, based on my personal experience, and heavily conditioned by the distributions that I used: Red Hat was a pain to set up (we even had a whole lab at school to do so); in Mandrake, when something went wrong, it went really wrong (and things went wrong often); Linex and Guadalinex were fun (there are some cool projects in Spain where they use them to introduce seniors in rural areas to technology); with Ubuntu everything was easy (compared to the others, it is the less Linux-like version of Linux); ...
Maybe if I had only tried Ubuntu first, I would have a different overview of Linux. But my first experiences with Red Hat and Mandrake were not that positive and they conditioned my view of it. There are a lot of distributions of Linux and not all of them are user-friendly.
Heh. Valid. Many distros really aren't user friendly, I'll give ya that!
Arch Linux is like an old car I know how to work on. When Windows breaks in a mysterious way, I have to look it up. I've tried to find the equivalent of journalctl on Windows, but it never seems to tell me anything worthwhile. When things break on Linux, half the time I don't even have to look it up to fix it.
Also, installing software from the terminal instead of having to go to a website and click the download link is a dream. Spotify, Discord, Telegram, all within easy reach with yay.
chocolatey.org/
I'm aware of it. It's nowhere near as good as pacman. Arguably, even homebrew is better. And that doesn't answer my question, where are the system logs? For example, Windows is awful to play games on, and sometimes they crash for no apparent reason. Sometimes the entire system resets. I've tried different graphics cards, taking the side panels off, upgraded to an 850W single-rail 80+ Titanium power supply, and it still crashes playing modern games. How am I supposed to develop on a system I can't even play games on, and there's no obvious way to see what the heck is happening?
Check this: en.wikipedia.org/wiki/Event_Viewer
Your issues don't happen to all people btw
"Your issues don't happen to all people btw"
... I don't even know what to say. Great sense of empathy there.
Software doesn't always work right for me all the time, but yeah, and maybe it's just me, and I'm just bad at computers, and I should just stop doing anything interesting with them and just stick with what I know.
Great attitude, kid. Hope that works out for ya.
I have never said you were bad at computers. Neither I meant to offend you. What I meant, is you cannot blame Windows just because you have an specific issue, because that's it, an specific issue, not all people have. Actually, the majority of people doesn't have it.
I hope it will eventually work for you, have a good day 😄
Well, it's actually underrated. The reason that it doesn't have so many GUI apps, just like windows does, is because it has fewer users, so companies don't bother to support Linux. And don't forget about how hard Microsoft has tried to win the desktop battle, by paying/convincing software/hardware companies for exclusive windows support.
Taking into account how spread it is on IT/servers, yes, it is definitely underrated. My comment was more directed at a personal computer level.
Not really overcomplicated, IMO. It just lacks commercial support, both on hardware and software.
But if you don't care about LibreOffice or web apps, and your hardware is perfect (not bad WiFi, mouse pad or graphics), it might be OK for non-techies. You might not even notice the distro, or you can use a highly localized distro.
Do you do any coding directly for linux use though? (eg. CI pipeline configuration, building docker images)?
Because if you're doing that anyway then using it for your day to day work, is actually simpler (because you don't have issues where it works on your CI but not on your local, and vice versa).
This is nuclear: I love to use HTML and CSS in a multi page application, the way they did it in the 2000s. It's simple, easy and fast for the user.
I can make buttons without JavaScript by using
<form action="nextpage.html">
, and Netlify Analytics doesn't require any JavaScript to be included in the page. Javascript is render blocking, but HTML is fast and beautiful. It's pretty easy for me to maintain a 100 on Lighthouse, PageSpeed, Pingdom etc. with an HTML first philosophy.I don't get why use
<form>
to make buttons? You can just style a<a>
with css to look like a button and not break accessibility.I run my website through the wave test for checking accessibility and it’s never said form action to change pages is a problem. Can you explain why this breaks accessibility in your view? I’d love to learn something new.
I'm not an accessibility expert. But the simpler the better for screen-reader.
vs
What's make you prefer the former one ?
Amen.
I really like this approach. No overhead whatsoever!
Microservices are not the future, nor the present... They are another good approach for some use case, not for all.
I've worked at companies that have a "megamicroservice". It's an API so complex, it is a thousand times more complex because they tried to split it up into a thousand pieces.
I work in a place where we had a monolith, they started to migrate to a microservices architecture, but this went so wrong that now we're thinking about migrating the monolith to a new monolith and just extract minimal functionality from it (something like the Citadel arch I read somewhere)...
Massive facepalm to the wasted time on those microservices...
This has happened literally everywhere.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.