6 ms·
The problem with programming and how to fix it
- repsilat 8y agoHah, I was nodding along with the article and then got to this bit: > What reason is there to believe we can improve programming technology to be vastly easier and more accessible? To start with, spreadsheets. Spreadsheets are by far the most popular programming tool, used by far more people than “real” programming. Surely it must be possible to carve out other domains like that of spreadsheets without taking on the full complexity of programming. As someone writing a spreadsheet app with magical programming powers (https://6gu.nz https://6gu.nz) no wonder the author seemed to be sweet-talking me :-). And yeah, I think we can do a lot better. Some low-hanging fruit: backslashes in strings, "what is Unicode", "what is a hash function and why do I care?". Etc. There's a crap-tonne of essential complexity in just about everything we do, but most tasks for which "programming" should be the right answer are not the sorts of things programmers actually do. Part of the problem is, we have all the best tools because we are the tool makers. There isn't good version control for Excel. Linting is mediocre. And the language itself sucks, because the programmers who work on it don't think spreadsheets are programming, and don't think the people using spreadsheets are programmers. I do think the conclusions of the article are o ff-base, though. I have no faith in professional societies, and I don't think the answer is "institutions". The answer is business -- bringing programming to the masses is worth trillions. Programming is the biggest force-multiplier that exists. It's what the FAANGs (widely disparate companies in different industries) have in common -- they (as companies) "know how to program". Maybe businesses are short-sighted, but the value here is so big it just has to happen. Magic of capitalism and all that.
- mjevans 8y agoProgramming for spreadsheet like things is something a DBA does for /databases/. No, they don't look like spreadsheets, but THAT is the industrial strength tool being used by a professional chainsaw juggler.
- repsilat 8y agoAirTable looks kinda like a spreadsheet, and it's a MS Access clone at heart. Not terribly programmable, though it does look pretty usable. I think "traditional" databases will fail to reach a general audience (or rather, much expand the definition of "technical audience") because SQL is not really easier than Python etc. Maybe the problem is environments and not languages, though. Personally I think the relational model is just a little too limited. It's possible to build abstractions in SQL (views, temporary tables, `WITH` etc) but it's hard. And repetitive. Basically I think functions and variables are great little building blocks, so I'm pushing them. And then, having not backed myself into a corner with by having chosen a limited computational model, I'll make relational stuff easy too :-).
- mbrock 8y agoI wonder what you would get if you crossbred Postgres and Haskell, for example. Basically adding indexed tables to the Haskell data model, maybe? Some hybrid of relational tables and algebraic data types? Sometimes even when writing compilers I’ve had a feeling that relational queries and update would be really nice. There seem to be four main data paradigms: (1) objects with pointers, (2) algebraic data types, (3) relational tables, and (4) Prolog-style clauses. Some Haskell programs seem to partially reimplement 1, 3, or 4 using 2...
- lisper 8y ago> backslashes in strings There's a simple solution to that: use «balanced quotes»
- repsilat 8y agoDoes that help if those characters appear in the string? My bet is on editors that let you "type your string into this text box".
- lisper 8y ago> Does that help if those characters appear in the string? Yes, that's the whole point. «With balanced quotes you can have «embedded strings» without escapes» The only time that doesn't work is if you want to embed a quote character as a character rather than as a string delimiter. But that is extremely rare. There are also “different styles” of balanced quotes to choose from, so you can embed a quote character of one style inside a string delimited by a different style. There will always be perverse situations where a backslash is needed. But you can make them much less common with balanced quotes.
- arkh 8y agoPostgreSQL allows dollar quoted strings. $whoohoo$this is a string $whoohoo$. A really good way to include strings in strings as the tag can be almost anything you want. I think it is more flexible than heredoc and friends. https://www.postgresql.org/docs/9.0/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING https://www.postgresql.org/docs/9.0/static/sql-syntax-lexica...
- iainmerrick 8y agoI agree, but even there you can have problems if you want a string containing a newline or tab character!
- vanderZwan 8y ago> There isn't good version control for Excel. Linting is mediocre. And the language itself sucks, because the programmers who work on it don't think spreadsheets are programming, and don't think the people using spreadsheets are programmers. Since you're writing a spreasheet app, I presume you are familiar with Feliene's work on this topic? http://www.felienne.com/publications http://www.felienne.com/publications Also, you probably will find Edwards videos about his own experiments interesting: https://vimeo.com/jonathoda https://vimeo.com/jonathoda
- repsilat 8y ago> I presume I'm not! Thank you! I've been pretty heads-down writing my thing, but I'll be sure to set aside my evenings to go through both sites exhaustively, and probably try to get in contact with both to ask for feedback.
- shalabhc 8y agoAlso check out Flowsheets by Glen Chiacchieri: https://tinyletter.com/Flowsheets/letters/flowsheets-v2-and-welcome-to-tinyletter https://tinyletter.com/Flowsheets/letters/flowsheets-v2-and-...
- dragonwriter 8y ago> What reason is there to believe we can improve programming technology to be vastly easier and more accessible? To start with, spreadsheets. So many failed efforts to make programming vastly easier and more accessible have started with almost this exact line. I think it's possible that there is a seductive trap there. We see spreadsheets and we think, “programming that doesn't have the downsides we associate with spreadsheets could be just as accessible”. But maybe the problems are intimately tied to what makes it accessible, and wheb you try to make programming that accessible you either fail or end up with something that doesn't offer any advantage over the spreadsheets we have. > Unfortunately application programming got trampled in the internet gold rush. No, it didn't. Oh, sure, it's not getting chased around by venture capital, but there's plenty of it going on. > As a result the internet age has seen an exponential increase in the complexity of programming, as well as its exclusivity. It really hasn't; we may often be solving far more complex problems, but we do it with languages, frameworks, and platforms that allow casual programmers to do so more easily than at any time in the past. Programming is “more exclusive” only in that: (1) in working environments, IT policies restrict programming (other than spreadsheets) to the high priesthood more completely than ever before, and (2) lots of simple problems that would be solved by casual programming in the past now have end-user tools that allow them to be solved without anything we recognize as programming.
- david927 8y ago> Unfortunately application programming got trampled in the internet gold rush. No, it didn't I think if you don't rely on memory but examine the history as Jonathan Edwards has done, you would be surprised to find that the late 1990's was, indeed, a big cliff in terms of application development innovation. You can argue the reasons -- maybe it's not about the internet gold rush -- but you would have to do a small fraction of his research to start to convince me. > As a result the internet age has seen an exponential increase in the complexity of programming, as well as its exclusivity. It really hasn't Frankly, I'm not sure you know what you're talking about. Before the web was popularized, designing a layout meant a using a simple layout tool. Now it's a stack that is at least HTML, CSS and JS, and often more. We're doing more, to be sure, but you can't honestly claim, without a deep ignorance of the past, that it's easier or more inclusive.
- lifeisstillgood 8y agoI believe that software is not a professional practise but a new form of literacy (in fact the book I am writing is all about this (Real Soon Now, thanks for asking)) And when you see software as literacy a lot of the stuff he moans about simply goes away. Yes it is seen as exclusive and a priesthood - imagine what illiterate serfs thought of those who could write. It took years of practise. No it's not a good idea to make programming more accessible. We don't have easy literature, we don't think someone who reads and writes solely with fridge magnets (#) has mastered the language. It is a good idea to invest more in education and that is being done reasonably well, but as in all things more is needed. Yes the results can be a car crash at times - my favourite analogy for this is our management structures. Would we ever take a literate organisation like the Washington Post or Harper Collins and put a layer of senior management in place who were totally illiterate from birth? If we did do we think they would make sensible decisions, empower those organisations? No. Yes there is a lot of shiny new thing, going on. But that's because there are a lot of people doing software - and many of them select for being good at marketing too. The real big software projects tend to select for conservatism married to pragmatism- look at Linus on a mailing list or the PEP process, or Debian. So yeah software needs to sort it self out - and professional bodies will start to solidify (personally I feel a lawyer like body, concerned with managing the course of OSS code used in government is the most beneficial), and until then don't try and fix the world or boil the ocean - just focus on making your coding practises as good as possible, even if your boss is making crazy calls. (#) Wanted: Better analogys - can you write pithy phrases that sizzle like ice cream on a griddle? Contact the author in complete confidence today.
- jspash 8y agoI was quite pleased with your analogy! But perhaps I misunderstood. I was reading the subtext as a very clever dig at the "hashtag generation" by likening their preferred method of communication (140 character thought bubbles, txt-ing, snapchat etc.) to something as banal as fridge magnets.
- lifeisstillgood 8y agoI am not clever enough for deep clever digs. I just do me. :-)
- Ace17 8y ago> Programming today is exactly what you’d expect to get by paying an isolated subculture of nerdy young men to entertain themselves for fifty years. You get a cross between Dungeons & Dragons and Rubik’s Cube, elaborated a thousand-fold. This is vague and insulting. Many of us programmers spend a lot of energy to keep systems simple, to a point that one could mistakenly conclude that they were easy to write. We don't dream of having to maintain complex machineries reminding us of Rubik's cubes. We consider maintainance nightmares and hard-to-understand systems as failures, not goals. We don't love complexity, we hate it (but the less experienced of us haven't got the chance to fully develop this hatred).
- stcredzero 8y ago> Programming today is exactly what you’d expect to get by paying an isolated subculture of nerdy young men to entertain themselves for fifty years. You get a cross between Dungeons & Dragons and Rubik’s Cube, elaborated a thousand-fold. This is vague and insulting. As someone who can solve a Rubik's cube and has programmed and played D&D since the version predating the "Advanced" ones, I think it's spot on! Many of us programmers spend a lot of energy to keep systems simple, to a point that one could mistakenly conclude that they were easy to write. I've seen code like that. It's the exception, not the rule! We don't dream of having to maintain complex machineries reminding us of Rubik's cubes Really? Because I've seen lots of 20-something programmers trot out a bit of code because it's "neat" without regard to cost/benefit within the project and within the current codebase. We consider maintainance nightmares and hard-to-understand systems as failures, not goals. I see lots of programmers who blame the skill and intelligence of their fellows while not demonstrating self-awareness by examining how everyone's participation in the system creates the mess in an emergent fashion -- then go on to fail to solve it. We don't love complexity, we hate it (but the less experienced of us haven't got the chance to fully develop this hatred). Plenty of the younguns just straight out fetishize complexity. Overtly. Enthusiastically!
- vanderZwan 8y agoWhen someone points out a painful truth, it's better to take a good look at oneself, be honest about our flaws, and accept their advice, than to just reject it and consider the other person as mean-spirited. > Many of us programmers spend a lot of energy to keep systems simple "Many" is not good enough (and makes me think of the cringy and problematic #notallmen thing on twitter). Ask yourself: who introduces the complexity to those systems again?
- hsljekskfh 8y agoi definitely agree with the points this article makes, however it’s such an unhappy tone. i would recommend whoever wrote this to stop working with other coders for a year (either work a job not involving coding or work as the sole coder somewhere) and then rewrite the article less angry.
- cogs 8y agoProgramming for beginners is just as accessible as it has ever been, there are good languages (some specifically for beginners: Logo, and game making languages and so on) and good courses. Where do I think programming has stalled is in the business environment. There, as the article correctly points out, it's much harder to automate your job unless you work in an IT department. Most business end-users do their work in Microsoft Office, and this is one area where I think the tools have stalled. Visual Basic and its object models are a painful hurdle for a smart non-programmer who is trying to get things done efficiently, or who wants to learn programming for its own sake. There have been some attempts to wire up Excel with Python, but until Microsoft decides to bundle an easy tool with every user's MS Office, programming is going to remain an arcane art.
- bobthepanda 8y agoMS recently added support for JS in Excel: https://developer.microsoft.com/en-us/office/blogs/azure-machine-learning-javascript-custom-functions-and-power-bi-custom-visuals-further-expand-developers-capabilities-with-excel/ https://developer.microsoft.com/en-us/office/blogs/azure-mac...
- arkh 8y ago"Just" use an automating tool: AutoIT if you're ready to do coding or Sikuli if you like their picture based system.
- alexis_read 8y agoI'd suggest that the perfect tool here is Zeppelin (notebooks), basically a centralised multi-user sandbox with built-in versioning and scheduling. Deployment of a json notebook to different environments can be handled easily while security can be done at the data layer (ie. SFtp, file access, database, API level).
- deltron3030 8y ago>Where do I think programming has stalled is in the business environment. There, as the article correctly points out, it's much harder to automate your job unless you work in an IT department. Depends on your business. Ecommerce can be automated without needing to code. Many use a central product repository (e.g. Amazon), and build their web frontend (CMSs, shop engines, landing page & app builders) around that, interfacing with it through easy installable plugins and other automation tools. They're already "coding", without code, but "business components". To have successful funnels, they also need to know UX basics that they can reproduce with those tools, or pick tools with those basics already baked in. They're basically full stack developers who don't code. The downside to that approach is that you're totally dependent on all those other businesses. But many who start out this way, employ devs as they grow, or start with programming themselves, and transition to their own infrastructure.
- deleted 8y ago[deleted]
- 0xBA5ED 8y agoSimplifying software is a fantastic goal, but blaming the situation on an "isolated subculture of nerdy young men" is the opposite of helpful. Also, I would seriously consider the fact that some things are simply complicated and there's no conspiracy behind it. A lot of very smart people work very hard to find ways of taming this beast. It's just hard.
- randomsearch 8y agoI’m interested as to whether there really is complexity that can’t be simplified in general. Here’s an obvious example where it could be: web apps are mostly conceptually simple: a thin client which is basically a UI framework talks to a process on a remote server. So you need something to develop the UI and something for the server. But instead of the “web UI toolkit” (which could mostly be a graphical tool) we have JavaScript, CSS, HTML, jquery, a gazillion hacked front end frameworks trying to (imperfectly) fix the mistakes of everything below it, a whole system for preprocessing, packaging, running tasks, deploying - just for a UI. And all those tools need customising, rely on knowledge of a bunch of random tools and languages and file editing. So we could definitely improve 10x in making “web apps” or whatever you would replace them with something much much simpler (even if for a subset of use cases). And that’s just one example.
- Animats 8y agoWeb apps are mostly conceptually simple: a thin client which is basically a UI framework talks to a process on a remote server. So you need something to develop the UI and something for the server. But instead of the “web UI toolkit” (which could mostly be a graphical tool) we have JavaScript, CSS, HTML, jquery, a gazillion hacked front end frameworks trying to (imperfectly) fix the mistakes of everything below it, a whole system for preprocessing, packaging, running tasks, deploying - just for a UI. Exactly. So what do we have coming next? WebAssembly.
- randomsearch 8y agoWebAssembly sounds great, although you could argue that running things in a sandboxed JVM in the 1990s was basically there already. But it doesn't magically remove the problems we have made, for no real reason, at the front end in terms of UI.
- mike_honcho 8y agoI disagree. The world we have today couldn't be built on simple tools like Spreadsheets and Visual Basic. The amount of complexity in programming is necessary, and the outcome has been tremendous and miraculous if you think about it. And we don't want to build a future where the masses should be programming! You want my mother to be programming? My sister? Why? I work as a software engineer and most of the time programming is the last thing I want to do when I get home! Sure it can be overwhelming at times with all the new technologies coming out, but in the future technologies are going to be completely different, with AI and VR becoming more widespread, programming is going to have to change again. And good, because that is what will allow us to build the future!
- zbentley 8y ago> And we don't want to build a future where the masses should be programming! You want my mother to be programming? My sister? Why? I work as a software engineer and most of the time programming is the last thing I want to do when I get home! I think you may be part of the problem. Why gatekeep your loved ones if it's something they want to do? That implies crass arrogance at best, cruelty at worst.
- reacweb 8y agoIn my utopian world, I would like to edit the source code of my microwave so that it stops its annoying bips as soon as I open its door. I would love to remove the stupid nag screen that appears each time I start my nissan leaf. I am not an electrician, but I can fix basic electric issues. Sometimes, I can fix broken furniture. I am a programmer and I can fix almost nothing. When we can program, we are in control. I want to be in control of the objects I own, or at least to know that it is possible if I really want it. When I see all what already possible in the 90s with so simple computers, I do not think that the complexity is necessary.
- AstralStorm 8y agoSometimes you can... We did fix a few issues with a washing machine controller once. But that took a lot of work on an undocumented software in machine code in 8051 and had the best tools. The issue is that is not easily traceable from machine code representation. Even electronics are easier.
- a_imho 8y agoAfter reading the article I don't get the author's problem or the proposed fix.
- randomsearch 8y agoAn ironic answer would be, yes that’s his point. I think the problem is: Programming is designed for and by a small group of programmers who enjoy making it difficult. The solution is to create industrial societies / institutions / guilds etc. who can encourage a transition away towards simpler and more accessible programming approaches.
- AstralStorm 8y agoPlease describe some of those "more accessible" approaches and I'll probably tell you that they are already here and/or have already failed. Otherwise the idea is completely not constructive.
- randomsearch 8y agoI'd say your comment is not constructive: you're asking me to name all the solutions, otherwise my observation has no merit? I'll expand a little. Let's take a single example: developing a single page web application. To know how to do that, I need to learn HTML, CSS, JS Frameworks, web pack or whatever. Linters, preprocessors, package management .... Contrast that to building flash app where a designer could use a GUI to produce a beautiful interactive app in no time at all. Yep, we all hated Flash, but in terms of accessibility to creators, it was beautiful compared to the mess we've made. A little off-topic but good for perspective: https://www.youtube.com/watch?v=lKXe3HUG2l4 https://www.youtube.com/watch?v=lKXe3HUG2l4
- randomsearch 8y agoAlso, pretty much anything Bret Victor has done. e.g. https://www.youtube.com/watch?v=8pTEmbeENF4&t=11s https://www.youtube.com/watch?v=8pTEmbeENF4&t=11s
- teknico 8y ago"When do we start throwing obsolete things away?" We started already: work is afoot to throw away C, C++ and JavaScript, the main culprits. Rust is a good stab at all three.
- throwaway648 8y agoLemme use an analogy: Why is building a house not accessible to all? Surely house building could be more like building with legos. Building a proper house is so much more that just piling rocks mixed with mortar. You have to take into account the ground composition, moisture, light, ventilation, red tape, usability, safety, etc. In other words: it takes a huge set of skill. You can use advanced tools, like a tractor shovel for digging the base but that requires even more skill. We just have to accept that doing complex stuff requires lots of training to do it properly. The more advanced tools you use, the more specific training you need but the more complex stuff you can build in shorter time. As for programming. Abstract thinking and clear, explicit communication of ideas is not trivial to automate. This is problem even between two persons (just think about trying to decipher what your sales person or customer actually wants), let alone between a human and a machine. It’s a form of art, not some mechanical process you automate using an array of boxes.
- TuringTest 8y agoNot all programming is akin to building a house. Some of it is similar to hanging a shelf in the kitchen. Why should it take an architect to drill the holes and fasten the wall plugs to hang a spice rack? Sure it might need some training, but it should be the kind that can be explained in a DIY TV show.
- throwaway648 8y agoTrue that, but those do-it-yourself people use different tools and methods compared to professional architects and builders. So maybe the original article should be read as ”why there are not more dedicated, simple tools for non-educated do-it-yourself tinkerers”. A sensible question as such, but I don’t buy the conclusion that we should blame the nerds / academia. If some business owner finds a way to monetize such tools, nerds will be happy to implement. Just as those do-it-yourself fix-your-home books and tools have been monetized and implemented.
- stcredzero 8y agoWhy should it take an architect to drill the holes and fasten the wall plugs to hang a spice rack? But the person hanging the shelf should have enough of a grasp of mechanics so it doesn't fall down. They should know enough basic physics and chemistry so they don't install something prone to corroding. If they encounter asbestos or old lead paint while installing, they should know enough to know what to do about that, and what not to do.
- sgillen 8y ago> There is something unique about software that exacerbates these problems. Unlike every other technology, software doesn’t wear out. The traditional cycle of replacement and renewal is halted; there is no evolution. I do understand what he's saying here, but saying that software has no evolution is just wrong. Like yes we still have C code kicking around everywhere but we also have new technologies languages (rust, go, etc etc), new philosophies on how to write code (TDD?), and new tools (jupyter notebook for interactive data munging for example). Furthermore how many people have been through a rewrite? developers (try) to replace and renew all the time, although yes this is difficult. also: > Unfortunately application programming got trampled in the internet gold rush It seems to me like application programming is alive and well, although admittedly I am younger and am probably considered an application programmer myself (I.E. I don't develop software as a profession, but I write code all the time to help with my work).
- nicodjimenez 8y agoThis is like trying to suggest we need more women in the NFL. Programming is an extreme sport where geeks excel - men and women, but mostly men - who else has the patience to deal with the minutia? Maybe I'm just biased towards rhetoric that suggest we should remove extreme variations between populations of humans, as segmented by occupation (or whatever). Let's embrace our differences. If programming was easy to do at high levels of excellence by anyone, you wouldn't have programmers anymore - just an army of product people who can also code. Specialization is a good thing.
- ModernMech 8y ago> who else has the patience to deal with the minutia? Women. What the hell is this? > If programming was easy to do at high levels of excellence by anyone We're not expecting programming with high levels of excellence from no programmers. Just some basic programming would be nice without having to spend a week setting up a dev box before "Hello World" even can be attempted.
- AstralStorm 8y agoUh, you have Visual Basic host and Powershell in Windows. No setup required and have an OK manual. You have VS Code which is trivial to install and easy to use. Batteries included (unlike Python in Windows)
- nicodjimenez 8y agoThat's like saying it would be nice for women to learn how to tackle linebackers. Not everybody needs be a geek who codes, just like not everybody needs to weight 250lbs and run a 4.4 40-yard dash. If you can't figure out how to do "hello world" then this is an excellent sign that you should be doing something else.
- PurpleRamen 8y ago"Everything Should Be Made as Simple as Possible, But Not Simpler" Programming is always a tradeoff between ability and knowledge of the programmer, time he can invest, performance the product must deliver and the unpredictable future of the product. Nothing can be perfect because nothing is perfect.
- kbouck 8y agoEnterprises, with the best of intentions, routinely opt for what appear on-paper to be lowest-cost developers which end-up being the most expensive option when factoring in the resulting delays, faultiness and complexity of what is built. Generally speaking, complexity of a software system is inversely proportional to the collective skill and experience the development team. If I want quality products or services, in any field, I shouldn't expect to get it from the lowest-cost option.