Live data from Hacker News

Developer inequality and the technical debt crisis

alarmingdevelopment.org

81–90 of 105 posts

Re: Developer inequality and the technical debt crisis

#81

I think the reason there's so much technical debt is largely because the amount it would cost to actually build quality software... is too high. We could not afford it. Like, as a society. Our society is built on crappy software. I think it's just a utopian fantasy to think that if only the right hypercard-like tool could be created, then the cost of building quality software would go down. Or at any rate, actually:…

>>We see posts like this come up here from time to time, written by non-programmers who have some kind of belief that programmers _like_ complexity, that programmers are _opposed_ to making things easy and simple. I totally don't see "modern programmer culture fetish[izing] complexity" -- rather, on HN, I think it's pretty clear that modern programmer culture fetishizes simplicity. Programmers are people. And like mo…

I don't think I know/work with anyone who would have the fear-based reaction.

Re: Developer inequality and the technical debt crisis

#82

The web won because it has the least barriers to entry for a new developer and solves a lot of difficult problems that the old-school application stack had. This is all from my history and point of view so I'm sure a lot of people will disagree. Cost: The days when big companies developed tooling and platforms cfor developers where great IF you worked at a company that could afford to pay for them. They were expensiv…

Yes. This is the essential description of the situation.

Or, put more empirically, if the web is terrible, why did it succeed by orders of magnitude over what preceded it?

I have fantasies, like every other dev, of controlled, predictable, statically verifiable, friendly, elegant, safe systems that also reach billions of people, with instant distribution, nominal cost, and low barrier to entry. Maybe these things are not (a posteriori) compatible.

We used to call this “rich vs reach”. Still seems true, perhaps essentially so.

Re: Developer inequality and the technical debt crisis

#83
post #15

I think the reason there's so much technical debt is largely because the amount it would cost to actually build quality software... is too high. We could not afford it. Like, as a society. Our society is built on crappy software. I think it's just a utopian fantasy to think that if only the right hypercard-like tool could be created, then the cost of building quality software would go down. Or at any rate, actually:…

> written by non-programmers This is an interesting characterization of Jonathan Edwards... did you not do research on the author before writing this, or are you really claiming he's a "non-programmer"?

First page of google for Jonathan Edwards produces a 17th century philosopher and a singer. Adding "Jonathan Edwards programming" produces Subtext, which has a UI straight out of 1994 and no releases. So ... He's a not terribly well known academic yawning about how programming needs to be more academic?

Honestly, I have no idea who he is.

Re: Developer inequality and the technical debt crisis

#84
post #83
post #15

Earlier quoted context omitted.

> written by non-programmers This is an interesting characterization of Jonathan Edwards... did you not do research on the author before writing this, or are you really claiming he's a "non-programmer"?

First page of google for Jonathan Edwards produces a 17th century philosopher and a singer. Adding "Jonathan Edwards programming" produces Subtext, which has a UI straight out of 1994 and no releases. So ... He's a not terribly well known academic yawning about how programming needs to be more academic? Honestly, I have no idea who he is.

I'm not claiming he's an Super Well Known Guy, but that it's trivially easy to figure out the non-programmer ad hom is inaccurate.

> First page of google for Jonathan Edwards produces a 17th century philosopher and a singer.

Because all real programmers are on the first page of Google when you search for their name.

It's also worth noting the historical Jonathan Edwards is a pretty important figure in American history. The First Great Awakening set the tone for American religion; it's standard material in any high school History class. And if there's one person you teach about from that period, it's Edwards. In fact, I would be somewhat surprised if most Americans don't recognize the name. So being out-ranked by him isn't exactly unexpected

> Adding "Jonathan Edwards programming" produces Subtext

Right. So even if you haven't heard the name before, some very simple google searching turns up the fact that he isn't a non-programmer.

And even without that, you could flip through his prior blog posts and figure out that non-programmer isn't an accurate description.

> yawning about how programming needs to be more academic?

I mean, the article says basically the exact opposite of this?

> Honestly, I have no idea who he is.

Yeah, I don't know who most of the world's programmers are. So they must not be real programmers (well, unless googling their name turns up their github account? But self-hosted projects don't count!).

But in 10 seconds of Google you figured out that non-programmer probably isn't a great description. And in a few more you might've figured out he's a fellow at MIT's CSAIL, which isn't particularly well-known for hiring programming-illiterate people.

My point was that it's usually a good idea to actually research the author of a piece before firing off the ad homs.

Re: Developer inequality and the technical debt crisis

#85
post #73

Earlier quoted context omitted.

I think the reason there's so much technical debt is largely because the amount it would cost to actually build quality software... is too high. We could not afford it. Like, as a society. Our society is built on crappy software. I'm not sure that I agree. If by crappy you mean "not formally proven", then sure. Or if you consider floating point crappy, then we disagree on terms. I think our industry is in a state whe…

As a complete derail: Floating point, as IEEE standard? Beautiful. Elegant. One of my favorite technical standards. Other than the +0/-0 thing, it's perfect. Floating point, as implemented? Ugh. You've got processors which implement some subset of x87, MMX, SSE, SSE2, SSE4, and AVX, all of which handle floating point slightly differently. Different rounding modes, different precisions, different integer conversions.…

The "mess" reflects the fact that choices exist, that is, it is the result of the different goals of the producers of compilers or the processors, not of the mentioned standards. What's not standardized can vary.

Compared to the pre-IEEE754 state, the standard was a real success.

Re the article of the picture you link (0) still unless you're building games, and as long as you're compiling using VC your results haven't changed for more then a decade and a half. New versions of the compilers took care to preserve the results. And even VC 6, produced 1998 luckily selected the constants of intermediate calculations that were most reasonable and matched the ones in SSE2 hardware introduced by Intel in 2001.

0) https://randomascii.wordpress.com/2012/03/21/intermediate-fl...

Re: Developer inequality and the technical debt crisis

#86

The author is kind of all over the place, and it's hard to read it without thinking of counterexamples to a lot of his points. If his general point is to bring computing to more people, I think a modern, web-based version of MS Access would be a huge step. Everyone needs databases. Everyone needs forms to access them in a way that makes sense for their business. Right now you have to actually program to make that hap…

  > The author is kind of all over the place,
Yes. His article's intent is to describe a problem.

He then tries to give examples of solutions, and they're bad suggestions. Still, he's right about the problem. We are in a kind of dark age at the moment, and the technology web stack is an unnecessary horror.

Regarding databases, I think what you're proposing is a step in the wrong direction. Databases is one of the major problems of our age, and cause of software being so difficult to get right. Many programmers will use a database to solve any problem.

There's an endemic problem of developers exposing databases as APIs, and then getting immediately bogged in complexity. We need less of that.

Re: Developer inequality and the technical debt crisis

#87

> Attempting to simplify and democratize programming will attract only scorn and derision (as did COBOL and Visual Basic). The reason COBOL and Visual Basic attracted scorn and derision is that they were awful. The problem with them is quite simple: You can use them to create something improperly in 1000 hours that you could create properly using other tools in 2000 hours. That thing will then work until you have eno…

My guess is that you have not written a line of COBOL code. I have seen great systems written in COBOL. My guess is why COBOL never caught on in the PC world is that COBOL is very much suited for batch programming. There were a few tries with a visual form of COBOL, but the tool set was very expensive and the alternatives were cheaper and more suited to events (for instance Turbo Pascal, Turbo C, the Microsoft products).

Re: Developer inequality and the technical debt crisis

#88

Earlier quoted context omitted.

"My problem with that problem is that it's some combination of naive, impractical and pie-in-the-sky." Is it? We had simple yet general-purpose tools for end-users at various points (eg. Hypercard). Why can't we have them again?

We have shitloads of them. Squarespace, Blogger, Wordpress, on to new hotnesses like Macaw, Dreamweaver, on and on and on and on and on and on and on and on...it's really pretty insane to argue, in 2014, that we have some kind of lack of simple-to-use website-creation things. If your response is, "Sure, but they can't do anything complex/building interactive experiences is still hard" well, we had Flash, etc, but als…

We aren't talking about sites (that would be the equivalent of DTP), but apps. Hypercard was used to author content, sure, but also create games, tools, and so on. I don't think that is moving the goalposts at all.

Re: Developer inequality and the technical debt crisis

#89
post #72

Earlier quoted context omitted.

I guess the question is, where are the equivalent partial solutions for the web?

I think there's not nearly as much agreement on how a "web app" might look or work today as there was for a desktop app even as early as the early '90s. For "classic" (content-based) web apps (forums, CMSes, blogs), there's already fairly sophisticated, end user-targeted tools that fill that role. For a lot of people, WordPress is the Visual Basic of the web. Some wiki engines could be said to resemble Hypercard. But…

I think I'd be fine with an opinionated partial solution, even if it wasn't too popular. But I don't really see anything like that.

Re: Developer inequality and the technical debt crisis

#90
post #29

Earlier quoted context omitted.

The software itself is usually no more complicated than it needs to be; the issue is that the things we want to do with the software are themselves very complicated. If you tried to do anything remotely complicated in HyperCard, you pretty quickly ended up with something approaching the complexity of a modern application. There is also the idea of "default" versus "custom" and how the definition of the two can change…

> The software itself is usually no more complicated than it needs to be; the issue is that the things we want to do with the software are themselves very complicated. Ok, take these requirements: I want a web app that counts the number of times users click a button. Users should be able to see the number of times they clicked and I should be able to see a top 10 of the highest click counts. To do this I must know HT…

You're not properly identifying your requirements then. If we were to break down your "requirement" into user stories, I count the following user stories:

1. As a user, I want to access this application through my web browser.

2. As a user, I want to know how many times I have clicked the button.

3. As a user, I want to know how many times the top 10 users have clicked the button.

4. As a user, I want the interface to update immediately when I click the button.

5. As a designer, I want the ability to easily change fonts, colors and layouts.

6. As a product owner, I want the ability to push updates to my users automatically.

Your technical requirements all roll up to these user stories. If you wanted to do this as an iOS app, it would be pretty trivial: you could almost build the whole thing in InterfaceBuilder. But the web browser is an abstraction layer we've built because it carries with it certain architectural advantages.

The web browser makes simple requirements much more difficult, I will grant you that. But it makes other requirements much simpler: rather than having to provide a mechanism by which to upgrade users' compiled applications when I want to add a red button and a blue button, I just push the changes out to the server and every user sees both the red and blue buttons. I also no longer have to write network code to connect to a server: my web browser does that. When is the last time anyone wrote a network stack for an application? Everything is REST services and JSON now.

Yes, writing web applications is very complex. But that complexity allows us to do things that were very, very difficult only a decade ago. The cost of being able to do hard things easily is that trivial things are somewhat less trivial to do than they would be in other environments.

Post reply on HN