Live data from Hacker News

Developer inequality and the technical debt crisis

alarmingdevelopment.org

61–70 of 105 posts

Re: Developer inequality and the technical debt crisis

#61

Earlier quoted context omitted.

I think you're right. My problem with that problem is that it's some combination of naive, impractical and pie-in-the-sky. It'd be great for humanity if you didn't need any skills or training to make any kind of computing application you wanted. While we're at it, let's also have a replicator to make any kind of food we want, instantly and deliciously, without any culinary training whatsoever, beyond being able to pr…

"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 also, at some point this is moving the goalposts so far as to constitute meaninglessness. If what you're asking is, "why isn't there a simple-to-use WYSIWYG editor that I can use to build anything I want," then my answer is, "it's riding on the back of my unicorn."

Re: Developer inequality and the technical debt crisis

#62

Earlier quoted context omitted.

I think you're right. My problem with that problem is that it's some combination of naive, impractical and pie-in-the-sky. It'd be great for humanity if you didn't need any skills or training to make any kind of computing application you wanted. While we're at it, let's also have a replicator to make any kind of food we want, instantly and deliciously, without any culinary training whatsoever, beyond being able to pr…

"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?

I meant to say "new hotnesses like Macaw, old hotnesses like Dreamweaver" but now HN isn't letting me edit my post :|

Re: Developer inequality and the technical debt crisis

#63
The proliferation of shitty Javascript is crushing the web. J

Javascript is designed from the ground up to enable bad developers to write shitty code. It's fine for alpha work, terrible for production.

It is possible to write beautiful, elegant, maintainable Javascript- but I've never seen a "designer" or even a "JavaScript programmer" write code like that. I have a job as a code mechanic because so many companies are built on woeful Javascript.

Re: Developer inequality and the technical debt crisis

#64
The civilized platforms controlled by large companies who invested in developer tools are all gone, strangled by the Darwinian jungle of the web. It is hard for programmers who have only known the web to realize how incredibly awful it is compared to past platforms. The web is just an enormous stack of kluges upon hacks upon misbegotten designs.

This passage makes me remember that famous quote by Alan Kay:

The Internet was done so well that most people think of it as a natural resource like the Pacific Ocean, rather than something that was man-made. When was the last time a technology with a scale like that was so error-free? The Web, in comparison, is a joke. The Web was done by amateurs.

Re: Developer inequality and the technical debt crisis

#65

Earlier quoted context omitted.

Okay, me and you agree that most of the code produced is junk (not everyone in this thread does I think!). I agree that the junky code is going to bite us eventually. But what do you think it would take to change things so most of the code produced is not junk? Would it take more programmer hours? More highly skilled programmers? Whatever it would take... would it cost more? A lot more? A lot lot more? I think it wou…

As long as the job of a programmer is to be a business subordinate, it will not change and we'll see crappy code forever. Mainstream business culture conceives of management as a greater-than relationship. You're a lesser being than your boss, who's a lesser being than his boss, and so on... It also is inhospitable to the sorts of people who are best at technology itself. Finally and related, it conceives of "working…

"As long as the job of a programmer is to be a business subordinate, it will not change and we'll see crappy code forever."

Well of course that's the job of the programmer. The programmer is supposed to build something that does something useful. Most of the time, the primary value of the code isn't that it's GOOD, it's that it DOES THE THING. Oh, sure, at the level of (say) the Linux kernel you can almost think of it as code for the sake of code, but you walk back up the chain and you'll find a lot of people contributing indirectly because they want to do THINGS and they find that they need a kernel for those things.

But most programmers aren't at that far of a remove from doing things, they work directly for a company engaged in doing something other than selling code. Management at that company wants things done. They insist upon this at a very high level of abstraction, that of "telling you to do the thing for them." You are a leaky abstraction.

Re: Developer inequality and the technical debt crisis

#66
post #29

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:…

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 HTML, some general purpose server language, how to configure a web server (be it directly or through a hosting account or some cloud thing), how to package/deploy/whatever to said server. I must have some database to store the clicks and use SQL or JSON or some specific API. Interacting with the database from the general-purpose language is going to require a library. I might have to download it and put it in the correct place or use a package manager. If I want the interface to update immediately (like an old-fashioned app would) I also have to use JavaScript. If I want to control the position of things on the screen, fonts, colours, whatever I will also need CSS.

I understand how we arrived at this state of affairs, but claiming that it couldn't be simpler is just Stockholm syndrome.

Re: Developer inequality and the technical debt crisis

#67
One thing this article completely ignores (as do many of the comments on the site) is that expectations have also drastically changed. Yes, Hypercard was dead simple to get something useful actually working, but nobody would accept a web app that looked and behaved like a Hypercard app.

I think the author is right: there is a none-to-healthy culture of increasing complexity surrounding web development. But there is also a large amount of real complexity around it. Many of the complexities we deal with today are the result of attempting to put an abstraction layer over deeper, larger complexities. Unfortunately, few abstraction layers work without leaks, and those leaks add their own complexity.

With powerful browsers, APIs-as-a-service and single-page apps, we are almost to a point where the web itself has been abstracted. But, even with that, expectations are still incredibly high. Nobody wants to look at blocky, course web sites; they want beautiful, smoothly animated sites. And that takes complexity.

Re: Developer inequality and the technical debt crisis

#68
"This Archaeology of Errors is no place for the application programmers of old: it takes a skilled programmer with years of experience just to build simple applications on today’s web. "

I'm not sure HTML + JavaScript is any more or less easy than HyperCard + HyperTalk. I agree that nobody would design the web to be what it is right now if they had the chance to start over, but there's also something to be said for the force of Darwinism in selecting out decent technologies. And every major web technology right now is just that - decent. Not great - decent.

Re: Developer inequality and the technical debt crisis

#69

Earlier quoted context omitted.

(1) You actually do meet a developer from time to time who fetishizes complexity. More frequently, you'll find developers and managers who'll fight any attempt to reduce surplus complexity. (2) I don't think the root cause of crappy software is the cost of quality. Quoth Phil Crosby, quality is free, it's the screw-ups that are expensive. Nobody has suggested that the federal and state Obamacare sites failed because…

I think it's important to distinguish up-front cost versus long-term cost. In more than just this discussion. For example: plenty of people in the Bay Area would, long-term, find it cost-advantageous to own rather than rent -- if they could get together a 20% down payment. But they can't. So it's kind of irrelevant whether they'd save money long term. The same principle can apply to software. Sure, you'd save money l…

That's the language of failure.

Technical debt strangles many products before they even get to market.

The status quo of software development is that management won't face the facts of what software will cost so they chronically underestimate what an efficient software development effort would cost by a factor of two or three.

Instead of laying out a realistic plan that will succeed, they embark on a hopeful plan that will certainly NOT succeed, and you end up with a 2/3 chance of failure and, if there is success, it costs a lot more than efficient development.

Screwing around leads to going in circles, not delivering a product in the next month. If software managers focused on compressing the standard deviation of the schedule they'd come very close to least cost development, because screwing up is incredibly expensive.

Re: Developer inequality and the technical debt crisis

#70
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…

Actually, from your basic set of requirements, you just feature creeped your design to death.

Let me take a shot at it:

Learn enough HTML to make a GET request. Know enough PHP to receive the GET request, and then update a textfile of entries on disk. Use a second file to store the top ten clicks. Return the second text file.

Thats it. In your example, you did what is generally expected of today's current "web trends": you take a super simple use case, and demand it be highly scalable for millions of users with instant and immediate feedback. And why are we using CSS at all? Its a button and some text, no styling is needed. And why are we using a database? Do you expect millions of concurrent users? Hundreds? Your requirements didn't say that. What do you mean package/deploy/whatever to the server? Sure, there are some basic routing needs and maybe Apache, but those take minutes or less to setup. Also, right in the middle of your solution, you changed the requirement "If I want the interface to update immediately...", right there, you are adding complexity.

While at the face of it, I understand what you are trying to say, but I have to point out that you are the primary cause of the increase of complexity, not the technologies involved. I actually think deploying a simple counter website like this is easy. But as soon as you want immediate feedback? Alright, more complexity. Millions of stored records? Alright maybe some large memory cache, like Memcache (or a large array). Persistent records? Alright, fine, get a DB. Millions of concurrent users? Alright, we are going to need some more complexity to handle throttling. Thousands of requests per second? Even more complexity, maybe we have a distributed system.

In the end, you took a simple problem, and turned it into an awfully complex one. Yes, designing an application for that kind of load is complex, because it is actually a complex task. Doing all the things we want to do today is hard because there isn't some turn key solution, not because we are working with tools that are too complex.

As an unfair little poke at your solution, there are in fact turn-key solutions, like Yahoo webhosting, where you just design really high level basics and it does the rest.

Feature creep is bad. Identify it, and kill it.

Post reply on HN