Live data from Hacker News

The collapse of complex software

nolanlawson.com

181–190 of 304 posts

Re: The collapse of complex software

#181

Earlier quoted context omitted.

As a big fan of rewrites (but not as big a fan as some), I think Linux has avoided needing big rewrites with a lot of very clever modularity in its design. Many corporate software programs do not have that level of modularity. Modularity has performance costs, is slower to develop, and "looks ugly" on a block diagram, but it pays dividends for open source projects and projects that need upgrades over time. Individual…

Linux IS corporate. It has been corporate for a long time - the heaviest commits come from paid, professional developers.

Not, I think, in the sense meant here. You're right, of course, but the distinguishing factor is that "corporate software" typically only involves a single corporation. There's no (or little) balancing of interests.

Re: The collapse of complex software

#182

This "software grows too complex" is certainly a culture issue, and not a software problem. It mostly comes from businesses throwing a bunch of under-skilled labor at the problem, and demanding more and more too quickly. Of course it will outgrow the ability of that team to work with, reason about, keep clean, and extend. They will get frustrated and move on, and a new group comes in, re-writes it from scratch, and s…

Linux doesn't rewrite? Is writing a completely new I/O scheduler from scratch and replacing the old one not a rewrite? How much does a 5.14 kernel have in common with a 2.6.8 one?

If anything, Linux isn't afraid to rewrite the parts that need to be rewritten, and that's one of its strengths.

Apache, Vim, and Postgres have been "rewritten." Nginx is an httpd written from scratch that sort of has the same features as Apache. Neovim exists. And newer database technologies that care about performance have been written.

Re: The collapse of complex software

#183

Earlier quoted context omitted.

As a big fan of rewrites (but not as big a fan as some), I think Linux has avoided needing big rewrites with a lot of very clever modularity in its design. Many corporate software programs do not have that level of modularity. Modularity has performance costs, is slower to develop, and "looks ugly" on a block diagram, but it pays dividends for open source projects and projects that need upgrades over time. Individual…

Linux IS corporate. It has been corporate for a long time - the heaviest commits come from paid, professional developers.

Final decisions are made by totally independent folks like Linus, Greg or Andrew. They set the rules and also the community, corporate has to adapt to them or go away.

Also, what happens is that rewrites happen progressively, in small steps.

Re: The collapse of complex software

#184

This "software grows too complex" is certainly a culture issue, and not a software problem. It mostly comes from businesses throwing a bunch of under-skilled labor at the problem, and demanding more and more too quickly. Of course it will outgrow the ability of that team to work with, reason about, keep clean, and extend. They will get frustrated and move on, and a new group comes in, re-writes it from scratch, and s…

> emacs, ... don't put artificial corporate constraints The historical record disagrees. See for example RMS squashing better clang+emacs integration: https://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01...

Weather you agree with this decision or not, it is consistent and clear. Something you generally won't get in corporate decision making. That is worth a lot. You know RMS isn't going to come back six months later and reverse it.

Re: The collapse of complex software

#185

Earlier quoted context omitted.

> What's the "right" way to store person names? struct Screenname { Matches _; // TODO: ensure it is illegal to ask for users' real names // for now we'll just do the right thing unilaterally }

Works for email, phone numbers and addresses, too.

Actually, it doesn't. All of those are, well, addresses, and have some mechanical structure necessary for routing (admittedly, for phone numbers, the structure amounts to "any sequence of 0-9, #, *, and possibly those four wierd extra symbols with the fourth DTMF column tone"). You probably don't (or least shouldn't) care about that structure as long as it routes correctly, but it does exist. (Ie, you'd still use a string for that data, but it's not inherently incorrect not to, just pointless and error-prone.)

Re: The collapse of complex software

#186

Earlier quoted context omitted.

Me too, and I definitely agree that it is time to move past thinking in "languages" to a more holistic view of programming systems. The fact that as of now, only ~1% of people can access programming and wield the magic of the computer is a tragedy akin to the comparable levels of literacy in the medieval era. At the present, there seems to be a minor renaissance of thought along these lines stemming back to the pione…

> The fact that as of now, only ~1% of people can access programming and wield the magic of the computer is a tragedy akin to the comparable levels of literacy in the medieval era. I don't know why programmers think this way. We don't expect everyone to be a doctor, a botanist, a novelist, or a musician but for some reason we think anyone can be a programmer. That's just not the case -- programming is a skill like an…

No, but we expect everybody to know reading, writing, and arithmetic. Programming may be more intrinsically difficult than these, but most of the reason it's so hard today is because of solvable problems that beginners run into, to the point of half of expertise is just knowing to avoid all these pitfalls. The downside of the open source developer ecosystem today is that putting it all together is typically a painful process, which is what Replit is aiming to solve. There is a world of difference between a good IDE and a bad one for a beginner, and a lot of that comes down to integration with the language.

Anyways, there's a reason programming should be made more widely accessible - it develops thinking skills and rationality when you learn it, as Mindstorms pointed out. Between the anecdotes in the book and things like [0], I think it's a travesty that we aren't pursuing this to its fullest extent, and instead try to teach children Python or JavaScript, two decent languages for software development but not exactly forgiving with beginners.

[0] https://medium.com/@stevekrouse/goodbye-seymour-cb712757264f

Re: The collapse of complex software

#187

> Simplicity of design sounds great in theory, but it might not win you many plaudits from your peers. A complex design means more teams to manage more parts of the system, more for the engineers to do, more meetings and planning sessions, maybe some more patents to file. A simple design might make it seem like you’re not really doing your job. “That’s it? We’re done? We can clock out?” And when promotion season come…

> The vast majority of companies I worked with recognized and rewarded simpler designs, the vast majority of software engineers I worked with would rather delete code than write code

What made up fantasy world do you live in, and are they accepting immigrants?

Re: The collapse of complex software

#188
In some sense this is the eternal question of life, the universe and everything, life being complex self reproducing software itself which adapts to environments and sometimes collapses when it changes. It's a fascinating subject, especially from the perspective of trying to push towards the limits of information and entropy. I'm not sure the root of the problem is solvable however.

Re: The collapse of complex software

#189

Earlier quoted context omitted.

> The fact that as of now, only ~1% of people can access programming and wield the magic of the computer is a tragedy akin to the comparable levels of literacy in the medieval era. I don't know why programmers think this way. We don't expect everyone to be a doctor, a botanist, a novelist, or a musician but for some reason we think anyone can be a programmer. That's just not the case -- programming is a skill like an…

No, but we expect everybody to know reading, writing, and arithmetic. Programming may be more intrinsically difficult than these, but most of the reason it's so hard today is because of solvable problems that beginners run into, to the point of half of expertise is just knowing to avoid all these pitfalls. The downside of the open source developer ecosystem today is that putting it all together is typically a painful…

When I was a kid we also computer class were programming was taught. And music class. And drama. And woodworking.

And like with these other things, you can make getting into them easier. With music, children start with simple instruments that no professional ever uses. And it's the same with programming, there are plenty of easier environments for children. But if you want to make programmers and you want to make musicians, eventually they have to use the real thing. My own son jumped straight into the deep end of Unity development knowing nothing because he wants to build something real. I neither encouraged or discouraged that environment and it's pretty unforgiving.

I don't think the solvable problems you speak of as are as solvable as you think they are. Also making software development out to be special both in terms of it's benefit to thinking skills and rationality and how it's merely some tools away from being professionally approachable to the masses is totally unfounded.

Post reply on HN