Live data from Hacker News

Does the software industry learn?

tomrenner.com

41–50 of 102 posts

Re: Does the software industry learn?

#41
We live in the age of shipping. Immediately. Not in the age of carefully considered best practices, architectural considerations, or sound engineering. Even top notch companies ship broken software, so it's not even about money. It's about speed.

The problem is not with developers, it's in crappy foundational computing layers.

NPM is somewhat the result of JavaScript itself being so bare bones. The cost of this community-based pseudo standard library is enormous: fragile, insecure, unstable. This doesn't mean we have to drop it, it means perhaps we do need a JavaScript standard library. Possibly mixed with NPM vendor packages that take responsibility of large clusters of functionality as a single dependency that is maintained over time.

Almost all software now requires very frequent security updates and we even dispose physical products like smartphones because they no longer get security updates. Instead of accepting this reality, why is nobody working on a foundational software stack that isn't this damn insecure to begin with?

Almost all websites on the web do not meet accessibility standards. And then we beat developers over the head in needing to learn proper accessibility best practices. Which doesn't work. Progress is near zero. So we might as well ask: why are our tools so primitive and bad, why do they not lead to accessible UX by default?

We complain about performance, or the lack thereof. But the problem is mostly in the stack itself, crappy and slow abstraction layers.

I could go on, but I hope you catch my drift. In development, you need to take the lowest common denominator. An average "bread programmer". We expect this person to personally dodge the many gaps in our crappy computing layers and it's far too easy to go wrong. This single individual is expected to be a top engineer, architect, security expert, performance expert, accessibility expert, and so on. And they also need to ship tomorrow.

We basically expect 28 million software developers to all be super heroes. They're not, they keep making the same mistakes not because they suck, instead because we have computing layers that suck. No amount of "awareness" will fix that.

Re: Does the software industry learn?

#42
post #27

Earlier quoted context omitted.

Ignoring the fact that basing ones opinion on an entire industry based on two "fiascos" seems drastic at best, who can we trust if we suddenly can't trust organizations like Apache? Do you trust the Linux Foundation? It's almost like the issue is not that code is available, but how people use the code that's available, and no one seemingly likes funding open source code.

> and no one seemingly likes funding open source code. I’m not sure how this meme got started but it’s toxic. Why does free software need funding? Free software needs contributions . Big corporations make contributions by paying engineers. Everyone benefits in this ecosystem.

I find that usually there's just one person (or a very small group) with a vision, motivation, and the skills required to take the project in a good direction and keep maintaining it. Contributions from others tend to be fixes and features of limited scope, essentially drive-by contributions, not enough to keep the project going.

Funding would help ensure that those who have the skills and motivation and vision can keep working on it.

Re: Does the software industry learn?

#43
post #4

Another story on the front page right now is "how I built a date picker". In 2022, people are still building date pickers. Imagine the progress our field could make were it not for the navel gazing, NIHing and pointless reworking.

What's exactly wrong with reworking old things? I find that it is your kind of thinking is what leads to bad software, bad reinventions of the wheel and security issues.

People in our industry need to know how to make the fundamentals from almost-scratch. In electronic engineering I learned how to bias transistors and build RC-filters. Heck, in chemistry class we even learned how diodes and resistors are made. When I studied music I learned scales, chords and rhythm... why should I, if I could just download some WAV loop off the internet, or sample some old song?

I don't see why software has to be special. Haven't we commoditised the profession enough?

Re: Does the software industry learn?

#44
post #8

Earlier quoted context omitted.

Is that navel gazing? Is a carpenter talking about making a table in 2022 navel gazing? Maybe not the sexiest topic but I'm not sure that's the term I would use.

Software engineering isn't equivalent to carpentry, it is equivalent to CAD. So you can ask if designing new tables in Solidworks is a waste of time. And to this, I'd say the answer is not so clear-cut.

Designing tables in Solidworks is a great idea if you're trying to learn CAD.

Re: Does the software industry learn?

#45

Given the number of times we have failed to learn the lesson "downloading code from untrusted sources and running it is a bad idea" -- the log4j and NPM colors fiascos spring to mind -- I think it's fair to conclude that this industry is completely incapable of learning anything, ever.

Not only that, but we're now creating devices that depend on remote servers. It's completely obvious what the downsides to this are, yet we embrace it without question.

And why are moving to apps that only work online? Networks are slow compared to desktops. Programming seems to be the art of doing the worst thing possible. Our computers are getting faster and faster, but we're relying on communications that are vastly slower.

And another thing: Windows updates, or even Firefox for that matter. Software shouldn't be so full of problems that you need to constantly update it. Just update it every 2 years. Sure, you get the supposed latest and greatest, but updates are a messy process.

Perhaps the difference between programming and "real" engineering is this: parsimony. In engineering, you have to do more with less. In programming, the attitude seems to be to shovel more spaghetti onto the plate.

Update: I'll add a further point. It's not just parsimony, it's also cost of errors. In physical products, a flawed design that makes it into production is costly. So you have to get it right. With software, you can afford a slap-dash approach. And that's what we see.

Re: Does the software industry learn?

#46

Earlier quoted context omitted.

The few I know is the language tried to be so easy to read by anybody that it made creating abstraction impossible. If the problem fits cobol, you get a nanoSQL like DSL to manage on disk records nicely. If it doesn't (controlling multiple sub systems, ad-hoc state, graphs) it becomes a monstrosity. Over the years IBM and others tried to fix that by making tooling or having nicer languages transpiling down to COBOL,…

You see, this sounds really cool. So what kinds of problems fit COBOL? And why did "we" conclude from this that general purpose languages were the solution, rather than building many different languages for specific problems? Did "we" even conclude that, or is that just my impression, 50 years later?

From what I remember of the times, it was the PC that killed COBOL.

COBOL was considered a "serious" language, for "serious" business problems running on "serious" hardware that lived in a server room.

PC's were not "serious", and lived on people's desks, running Lotus123 and other such trivial tools.

Then VB/Delphi/etc came along, and a generation of developers writing "little" applications directly for the desktop (of which I was one, and it was fun). You could consider these as specialist DSL's for user interactive applications. But that was not the general view.

Writing an application in VB was several orders of magnitude cheaper than writing the equivalent in COBOL, and if you squinted hard enough from a non-technical point of view they did the same job. Non-COBOL developers started writing server applications that lived on a PC in the server room for a fraction of the cost of a COBOL application living on a mainframe.

And that was that.

Except, of course, for the large institutions (banks being the obvious example) who had invested millions in developing their core applications in COBOL running on mainframes. The cost of rewriting this for no reason (because the original still works) is prohibitive. Y2K gave them a shock, but also added to the sunk cost. They still run COBOL on mainframes, and still train up new developers in COBOL.

Re: Does the software industry learn?

#47
post #4

Another story on the front page right now is "how I built a date picker". In 2022, people are still building date pickers. Imagine the progress our field could make were it not for the navel gazing, NIHing and pointless reworking.

I would be with you, but the default date picker in Android is soooo shit that I agree we need to think about this more.

Re: Does the software industry learn?

#48
post #34
post #31

Earlier quoted context omitted.

Why do most users need to contribute? The value is the ecosystem. The point is we don’t have to contribute to everything we use. We can build on the work of others and they can build on ours. Even developers of common libraries are relying on an amount of open code so immense they couldn’t possibly make contributions to all of it. This is the beauty of free software.

> We can build on the work of others and they can build on ours. This only works if both parties publish. Otherwise it's "we can build on the work of others"

Every individual in the open source community is receiving more benefit than they could ever personally contribute. Keeping score is pointless. The fact is large corporations use open source software and also contribute to the ecosystem, just like anyone else. This is fine.

Re: Does the software industry learn?

#49
I think learning is subjective. The NodeJS world is learning a lot about backend development I guess.

So, disclaimer, I am new to Typescript-NodeJS and the npm world but have a significant background in the JVM / Spring backend world with Kotlin and Java. I am also too young to be this cynic but I am honestly just baffled.

To me the entire NodeJS backend movement seems like they are "Java sucks!" hipsters jumping into the trendy JavaScript ecosystem of the modern web era just to show how cool and progressive they are (???) - all while rediscovering and reinventing backend features that have been invented and in widespread and battle-hardened use for 2-3 decades now.

Wow we are using NestJS, Jest, annotations, a dependency injection module and Typescript... congrats, you just rediscovered type systems, mocking, Maven and Spring Boot as they are very handy for backend development.

All while bloating your fresh hip ecosystem to an even uglier Frankenstein monster than you can find anywhere in the Java enterprise, transpiling back and forth with 10,000 config files to make framework XYZ interact with each other.

And then, JavaScript is running underneath with all its limitations and quirks that will reach feature parity with Kotlin with ES2048. But yea, I guess now you can send JSON natively between systems because it's first-class.

Re: Does the software industry learn?

#50
post #21

> As a result of how young the profession is, there are few universally accepted practices and standards. I wish the meme of "software engineering is young" would die. This profession is not younger than any other technical profession, in the modern sense. It was born out of prior practice and is still taught using the same techniques and philosophy. We are not special. Furthermore, modern engineering is a mid to lat…

Good point that software "industry" is not new, but I would argue that it is not an industry in a literal sense or at least it is a special industry. The special thing about software is that it is governed by the social aspects a lot.

And because of this, software has poor standardization practices.

Engineers in other sectors could prove their qualifications by showing certification diplomas, even education and years of experience would count. In software your qualification would be determined by some random dude and how well you fit his CS fetish of the month and that is it. Experience and education is only important while filtering CVs. If you designed a chip, an aircraft or skyscraper it is immediately impressive. If you built an FX trading platform it means almost nothing if you are a bit skeptical about pair programming.

It also applies the other way round. If project uses microservice architecture, what exactly does that mean? The result would be a wildly different if you compare such projects at FANG and some investment bank. How software is tested and released will be different in any team. And how that affects the poor developer will vary too. What is a good software? We can have an opinion, but there is no formal definition.

And because of this fragmentation and fluidity software as and industry is doing very different things. It will learn in some cases in others it will be incredibly ignorant.

Post reply on HN