Ask HN: What’s your current hot take in software engineering?
1> Because no current OS is based on capabilities, no current OS can be trusted to secure an application. This void is being filled with containers and virtualization as a stopgap. Eventually, capability based operating systems could fix this, and become a trillion dollar market.
2> There should only be one logical task per line of code. The right density is that of basic or pascal. Clever use of compound assignments, macros, etc. cost more than their worth in the long run. It makes code harder to read, and easier to misunderstand, even when you're writing it.
3> Moore's law gave us a nice boost in hardware, but the ride is coming to an end. If your software doesn't distribute across cores, you're going to be stuck in the slow lane compared to that which does.
4> Accounts with usernames and passwords are going away. Capability tokens that can be revoked and renewed are going to be the next big thing. Think Flickr's guest pass to look at an otherwise private photo album, for example.
Agree with point 2. But 2&3 are somewhat orthogonal.
Well, the written density of source code has to match the impedance of the programmers that deal with it, not the computer, which deals with binary executable just fine.
It seems to me the more clever you are, the harder it is to understand and debug code. Breaking things down into logical steps, but not too far, works best for me, and I suspect, but can't prove, the general case as well.
The frontend "stack" has become unnecessarily complicated in the last ~5 years.
What an unusual take to see on HN.
I love my modern frontend tools: frameworks that put state first and let me work with lots of data instead of endlessly fiddling with the dom, linters and code formatters that eliminate the need to think about whitespace and optional parens, build tools that let me target old browsers without writing additional code, intellisense that tells me what types of arguments a function accepts.
I still build a lot of things in vanilla JS, but ease of getting going is a tradeoff, because eventually I miss having prettier and typescript.
Sometimes I've had the impression that new FE frameworks (or libraries) arise to solve the complexity problem to then become a big complexity problem themselves.
Want to use modern syntax? Easy! just:
- switch to a new language
- add a new framework
- use a build tool / bundler and polyfills since all of those modern features aren't actually supported across your user's browsers / versions
- use web components... sorta, but not directly
- use a modern front-end shadow DOM-y framework with a dependency tree so deep that it could never be audited
- while you're here, take all of your CSS and abstract it to a meta language using template strings and jam it inside your JS / TS component files directly
- i know we are using all of this cool modern stuff, but... jQuery and Bootstrap still exist, so fallback if you feel like having fun and why not just add them to the mix too
- web app? no, no, no, this is a micro-frontend
- oh yeah, btw your SEO is going to suck with all of that client-side rendering in the single-page app, but not to worry, server-side rendering to the rescue
- so amazing how the future just works!™
[On a more serious note, I do actually appreciate some of the sane and simple modern frontend tools (we need more of those!) But going through all of this crap feels like overkill for an average run-of-the-mill CRUD web app. Just my 2¢.]
The Trouble with Tribbles
Only if you make it. If you use React without trying to maintain state it's quite simple.
There's way too much bloat in modern web dev.
Not everything benefits from being a SPA (quite the contrary).
The benefits of Kubernetes aren't worth its immense complexity in most organizations. If you want to put things in containers, just use Docker Swarm.
Sometimes even single host + docker-compose solves the problem.
I work in DevOps and would argue this view is very reasonable and commonplace enough now that I wouldn't even consider it a hot take (and I also think it's correct). [Besides perhaps the Docker Swarm recommendation part specifically vs a managed service.]
Some backend frameworks (of various languages) have way too much abstraction and configuration. This usually means coding a small non-standard feature takes lots of time. But coding only standard (e.g. CRUD) features is fairly quick if you don't have a big framework too.
Also, lots of developers never know what happens below that stuff. Don't get me started on how many people I've seen despairing over "configuration debugging".
Some really big projects can be exceptions to this line of thought. But most teams don't work on those really big projects.
There's not enough data in the practice of software engineering. A lot of software engineering "best practices" aren't backed by any kind of evidence.
Any examples of what best practices that would be?
Most single-page apps shouldn't be single-page apps. Start with server-rendered HTML and forms. Maybe sprinkle in some jQuery or Alpine or HTMX if you really need to.
That is how websites used to be made. jQuery's imperative nature means it can get complex pretty fast. It also doesn't really have a recommended way to structure code. Bringing new devs into an existing large jQuery project is pretty tough.
Svelte
I don't trust any software involved in safety critical applications that can be updated after manufacture.
To clarify, I find that engineers rely too heavily to let their users find bugs in the field and most engineers tend to think "oh, I'm sure it isn't a big deal, and if it is we can just update the firmware/software".
Start with a monolith, not microservices.
Many of the problems frameworks are trying to solve were solved many years ago. People just like shinny new toys.
Offshoring is a real threat to software development and salaries are going to drop in numbers reminiscent of 2001
My current hot take is that RedwoodJS has solved most issues with web app development. It's so good to use.
Software can be shipped on time. Professionals meet deadlines. Deadlines are beneficial for creative work.
Most places build their software using incredibly subpar tooling. This will not change anytime soon.
I'm curious as to what do you consider being subpar tooling, or on-par tooling for that matter.
Software & software development will suck this year too, exactly like last year.
hypermedia is a better architecture for most web applications being built today
There are no real Full stack developers
It depends on your definition of full stack.
What do you make of solo-preneurs, who handle every single thing in their business including the technical/coding side?
Most important software is done already.
Computer science
Watch your back.
Sounds like a frontend framework.