6 ms·
Imagine we build the ideal programming language that both technical and non-technical humans alike can understand. What does it look like? I'm thinking about E
by ohduran 7y ago
Imagine we build the ideal programming language that both technical and non-technical humans alike can understand. What does it look like?
I'm thinking about Excel spreadsheets. Let me elaborate: a non-technical guy creates a monstrosity: one of those spreadsheets that "works", and tasks the programmer with maintaining it. At every level, the non-technical understands what's going on, because he is familiar with most formulas (that's the beauty of Excel IMO). He just wants the programmer to focus on making sure that everything works "just fine".
Forget for a moment about what "just fine" means. Let's say they can go back and forth until they can convey what they mean to each other.
My point is that the very first sentence of the post is not correct.
> “The world’s been divided into people who can make software, and the people who use software all day, and basically we think that that paradigm is not a good one. It feels kind of broken,”
A non-technical person CAN indeed make software... he just can't make maintainable software, and eventually his incompetence backfires.
If I'm correct, then Corda and other tools aimed at "making the laymen build software" are solving the wrong problem. The spreadsheet, and before that a piece of paper, just solved that problem. What the laymen need are the mental tools that a programmer uses to "speak" about software, in the sense that what a human can see on the screen isn't the whole picture of what technical people mean by "software".
Hope I made myself understood. Can anyone assist? Am I wrong?
- ohduran 7y agoOne possible explanation for why non-technical people "can't" build software is simply that they don't want to learn how to do it. But that isn't the problem that Corda is trying to solve, I gather. The client avatar for Corda is, I reckon, the guy who wants to "hit the ground running" and become able to speak "software" to a programmer.
- PeterBarrett 7y agoIt would depend on the scope of what people are trying to achieve, at a certain point of complexity you pass from being a "non programmer" to being a programmer due to all of the inferred learning you get from experience. I know a handful of non programers who can automates tasks in their everyday workflow but as you say they're not maintainable pieces of software or particularly transferable, they are custom tools they create for their own flow.
- ohduran 7y agoYour input makes perfect sense! Is Corda the tool they need to "upgrade" their capabilities? Or is it something deeper that comes from "actual programming". We seem to understand what a programmer is and what is not, but the "blurred line" between the hackers and the paper pushers is unknown.
- wruza 7y agoOne of the worst type of projects we did was migrating overgrown excel bookshelves to a real database/app. The level of inconsistency and bare errors you’ll meet there is fubar. 90% chance of an integration failure because an entire business is not ready for that much to change and formalize. That said, I believe that “dumbness” and non-evolution of excel (as a biggest player) is a root cause. If it wasn’t just a bunch of cells with chaotic references, but suggested a user to think in a strict “tabular datasets with comments, RLS and history” way, things could be much better (or worse, depending on how you use it). Basically, in “show me your data, not code” excel is the latter, and that’s pushed to an innocent user. The result is pretty obvious.
- AstralStorm 7y agoYou mean turn it into a different tool called Access or formerly FoxPro?
- wruza 7y agoI see. Iirc, Access was too much developer-oriented last time I checked it around 20 years ago. As a developer you can just step up and try to take control, but users have no such courage. If excel merged parts of access later into a single product, suggesting, but not forcing users to maintain at least a partial scheme, then maybe. Sort of in-place gradual migration without “work here or go back” next morning ultimatums.
- datavirtue 7y agoAccess is not, nor was it ever, FoxPro
- jimbo1qaz 7y agoFrom what I've heard, Lotus Improv (1991, failed 1996) was intended as a spreadsheet where each data set was stored in a separate namespace/object/table, which had named columns/rows, or even more than 2 dimensions. Apparently Quantrix is a successor used in the business/financial world, but is unfortunately not free or open-source. That's a shame, as I want something of that sort for casual scientific computation or statistical number crunching. Maybe I can use Python pandas or R dataframes, but spreadsheets have the useful trait that they're functional and side-effect-free, unlike scripts or notebooks.
- friendlybus 7y agoI agree with you, it's a basic problem for any skill. Anybody can draw, but drawing fine art requires the knowledge of the structure and tools used to draw it. I suspect trying to build a programming language to stop having to think like a trained programmer, is a doomed project.
- pbhjpbhj 7y agoBut, I can well imagine an art assisting program that I can feed my doodle to that can return a photographic (or other artistic) rendering of a person in that pose, even such that I can rotate the image, alter the pose, perhaps even animate it. I still perhaps wouldn't understand why I should have chosen other poses, or why the lighting doesn't work, or why my material choice for the clothing fabrics hampers the expression I was seeking ... but it seems like an artist could come and touch up those elements. Surely a similar level of thing could be done for programs (eventually)? I'm a non-programmer in a new work environment where I'm feeling like I want to modify all the programs and add some functionality. In particular I've a lex-parse process I'd like to automate, relatively easy to describe sufficient to do it (with time I'll probably do it myself in PHP/python). But, doing that "doodle it" routine for such a simplistic app would be really useful.
- friendlybus 7y ago>but it seems like an artist could come and touch up those elements. I don't think you can have artists or programmers 'touch up' a generated model post-facto without making compromises on the valuable bit of the project. Programmers will always be needed to understand the program inside and out, so it can be tweaked and controlled. Artists will always be needed to define the piece from top to bottom, so it can be controlled. Either that or lots of hair being ripped out trying to control why the top lip on the 3d model keeps moving up and down when technically there's no muscle in your top lip, and it makes the one scene your big dramatic moment look janky as hell so you have to spend nights trying to figure out why the ML program made that, and it turns out nobody knows except the guy who made it and he's off in the bahamas helping take care of his sick wife so you have to scour the tech support community for hours... Or that perfect line you drew across the face of a landscape painting is now pushed off to one side from running it through an art-style-transfer ML program and that destabilizes all the hidden geometry you were relying on to make the piece feel alive and now you have to know why the program did that, if you want to change it. >Surely a similar level of thing could be done for programs (eventually)? Yeah I think so. It's coming quite rapidly. Two minute papers is a scary youtube channel. Any generative painting, cg model or computer program is going to fill the "kinda good enough" category and change the job of the trained professional to be controlling all the assumptions built into the generative program. You will make a super-powered tool, which is awesome, but alas human knowledge/skill/brains remains different to computers.
- sam_lowry_ 7y agoA personal experience of a programmer who worked in a dozen different industries and in different roles up to CIO level is that non-programmers do not need tools but training. Once people raise to the level of their incompetence, they do not go back to school but persist in the old way of working or find comfortable workarounds. Catching the moment when someone can not do their job efficiently anymore is an HR problem, and businesses can not rely on introspection and self-evaluation to work in this situation.
- rustybolt 7y agoHah, most programmers can't make maintainable software. I see programming mostly as a mindset. Like doing algebra. You couldn't do it as an infant, because you just didn't understand the concept of using letters instead of variables. Of course, there usually is a level of complexity that you need to get used to as well, but you can also see this as a defect of most API's, or as an inherent quality of doing anything nontrivial.
- ppseafield 7y agoIndeed, making maintainable software is difficult. To share your analogy: many folks have trouble with algebra. It's not that it's categorically impossible for them to do it; there could be any number of factors (bad math education, home troubles making school more difficult, etc.). With a lot of time and dedication many of these folks could eventually get pretty good at doing algebra. I've tutored these folks before. Some of them have enough time and dedication to get better at it. But without that (and at least time is outside most of these folks' control), many of them will struggle. So I don't think the parent comment was saying "Most people can't program in the same way a gorilla can't speak English", but instead "Most people can't program because they don't have the acquired skills to program." I would add that these folks' goal is often not programming but their original job.
- XuMiao 7y agoMost people have their own domains and don't want to make softwares. But their jobs depend on softwares sometimes. When the software developers don't understand the domain, it's reasonable to provide a DSL for users to customize by themselves. If the programming language is as natural as the human language, DSL is just the regular language. After all, language is for the precise and concise communication, human to human or human to machine.
- ppseafield 7y ago> If the programming language is as natural as the human language, In my experience, it isn't. Computers are much more pedantic and less forgiving than other people. Computers won't understand "what you meant to say". Additionally people often have trouble communicating effectively with other people in their natural language. So a DSL being in that language doesn't necessarily guarantee the user's success in using that DSL correctly.
- steve1977 7y agoThe word technical in the original sense means being skilled in a craft. So anyone who can make software is by that definition "technical". Where would you draw the border between technical and non-technical persons?
- dsr_ 7y agohttps://en.wikipedia.org/wiki/Javelin_Software https://en.wikipedia.org/wiki/Javelin_Software tried that; the people who liked it loved it, and then it crashed and burned.
- olah_1 7y ago> Imagine we build the ideal programming language that both technical and non-technical humans alike can understand. What does it look like? I think it would look like a component architecture, with Elm syntax. As someone that barely programs but still hacks on open-source, I just want the code for one thing to be in one place, not spread out across 4 different files. And I want one action/object to have just one name. Not three names like createServer, newServer, server, etc
- agumonkey 7y agoI think you're wrong. System thinking and abstraction are required, unless the users have some mileage in it or a natural talent, they will hit a wall real quick.
- TheOtherHobbes 7y agoI think you're right. System thinking and abstraction are natural talents. Not everyone is good at them. I used to know someone who didn't get basic algebra. She wasn't stupid in other ways, but she just couldn't make that leap from arithmetic to the first level of symbolic abstraction. If you spend all of your time working with people who find abstraction easy, it's hard to understand that a lot of people really don't.
- agumonkey 7y agonote that I said training or talent, I don't think these topics are secrets only accessible to few, but thinking the tool is the craft is misguided. Even in college, I'd use C or Java blindly and made a mess. Anyways, you need to ensure some ideas are understood before letting people "program".
- deleted 7y ago[deleted]
- deleted 7y ago[deleted]
- ptah 7y agoI think you are wrong. excel can be evil and cause immense pain and suffering https://qz.com/119578/damn-you-excel-spreadsheets-jp-morgan-edition/ https://qz.com/119578/damn-you-excel-spreadsheets-jp-morgan-...
- sanderjd 7y agoYep, more people should be starting from spreadsheets and figuring out how to make them more capable of correctness and maintainability, instead of starting from programming concepts and figuring out how to make them more accessible. Most people who work in businesses already know how to program, they just do it in formulas in spreadsheet cells.
- jkfikro00n 7y agoYou’re assuming such a language is necessary is where this goes wrong. Non-technical people should be able to use their native cultures language to query for answers. Or in the case of scientists & mathematicians, the well defined symbols & glyphs of their field. Programming is the act of organizing information for a specific context, ideally efficiently to the computer, but that’s not a requirement. Clearly organized results are the only real requirement of software. All the rules we add on these days are to the benefit of corporate keeping things tidy by pretending making software is like building a car. As someone getting into data science as a hobby, I have no interest in Python or R syntax. Like with PGP & a host of other issues, terrible UX is an impediment, and an artificial shield for those that slog through learning what is really superfluous crap given their actual task of making sense of business data. Give me an app where I can select a database, and compose a math equation with nothing but plain math, as like React components, or a word processor with scaled up Unicode symbols, or use a game engine like Unreal, for all I care. And for day to day life things like Siri are fine. This is my huge beef with the tech world is believing everyone needs to fetishize source code to use a computer. The “design is life” era has resulted in a ton of boring/limited business “apps”, and over designed one off UX that lacks broad application. Software as a marketplace in general is suffering the App Store problem: it’s so easy to copy-paste SOMETHING out the door via Github or however, we’re socializing around the most visible, IMO, well known concepts, minor iterations on known information. Often wonder if there’s a theory there that might explain why society is where it is lately: we’re not generating enough emotionally unique information. Just fetishizing minor improvements to well known emotional norms.
- m463 7y agoI have a friend, an engineer but not a programmer, who wrote a fortran program he's been using for decades to solve real problems. But then recently he had to solve it for 10 different things instead of one. So he copy/pasted his calculations 10 times. He said the problem he was running into now was when he tweaked something, he had to change something in 10 places. I think that's how normal people solve problems. They just bumble ahead doing what they know will work, but it's not pretty.
- airstrike 7y agoAs a programmer and every day user of really advanced Excel shenanigans, I can confirm your view is pretty spot on. The fact that I have the mental model of a programmer means I instinctively follow best practices that non-programmers simply can't get into their heads. Namely: keeping data and presentation separate, DRY, the concept of named variables, understanding how array formulas work and why you can map functions to intermediate in-memory vectors, the list goes on...
- ken 7y ago> A non-technical person CAN indeed make software... he just can't make maintainable software, and eventually his incompetence backfires. Sure, and then they just pass it off to a competent technical person. It sure would be convenient if these people used the same language! Right now, when a non-programmer starts a project in Excel, and then hands it to a programmer to make into a good, maintainable version (perhaps as a native application, or a web application), the programmer has to start from scratch. That's an awkward discontinuity. There's no reason I see it always has to be that way. We just haven't prioritized the ability for a non-technical person to make something, and also for a technical person to be able to pick it up and turn it into a full system.