Slashdot Mirror


'The Problem With Programming and How To Fix It' (alarmingdevelopment.org)

Jonathan Edwards has been programming since 1969 (starting on a PDP-11/20). "Programming today," he writes, "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."

theodp summarizes the rest: To be a 'full stack' developer, Edwards laments, one must master the content of something like a hundred thousand pages of documentation. "Isn't the solution to design technology that doesn't require a PhD...?" he asks. "What of the #CSForAll movement? I have mixed feelings. The name itself betrays confusion -- what we really want is #ProgrammingForAll. Computer science is not a prerequisite for most programming, and may in fact be more of a barrier to many. The confusion of computer science with programming is actually part of the problem, which seems invisible to this movement."

It wasn't always this way, Edwards notes, citing spreadsheets, HyperCard, and the many incarnations of Basic as examples of how programming technology can be vastly easier and more accessible. "Unfortunately application programming got trampled in the internet gold rush," Edwards explains. "Suddenly all that mattered was building large-scale systems as fast as possible, and money was no object, so the focus shifted to 'rock star' programmers and the sophisticated high-powered tools they preferred. As a result the internet age has seen an exponential increase in the complexity of programming, as well as its exclusivity."

"It is long past time to return to designing tools not just for rock stars at Google but the vast majority of programmers and laypeople with simple small-scale problems," the essay concludes, arguing we need new institutions to fund changes in both the technology and culture of programming.

"We've done it before so we can do it again, even better this time."

18 of 560 comments (clear)

  1. Not really. What you get is ... not done by Opportunist · · Score: 5, Insightful

    What you get when you let coders decide where to go is nothing. Ever. At least nothing that's ever done. Mostly because you get this and that and something else because all of those things are absolutely necessary, and then eternity to accomplish it all. If programmers were to make a toaster, it could toast anything from bread to waffles to muffins and even your sweater, because someone sometimes thought it might be helpful (but we don't remember who said that, but we also can't remove that sweater-module anymore without breaking the rest), it would measure its own temperature based on all the toasting done before to determine the perfect toasting temperature and time (both would be measured by three different sensors and devices), you'd have to give detailed feedback on your toasting and eating experience that would then be used to create a heuristic based on world wide averages... Well, that's the theory. Right now it's basically a stove top with a pan attached.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  2. Here is the thing with "full stack" by El+Cubano · · Score: 4, Insightful

    I don't get why the notion of "full stack developer" is such a big deal. I mean, do people go to build a home and say, "I want an 'all trades craftsman'."? Or do people go looking for a doctor and say, "I want an 'all specialties surgeon'."?

    Of course not. Certainly there are people in every skilled profession who could be classified as generalists. They can probably handle most small things that are not very highly specialized and, if they are good at their profession, they know when something is outside of their skillset and can provide a link to a specialist that can handle it.

    I am not saying that we should make technology and programming more difficult than they need to be. But, let's face it, there is a tremendous amount of knowledge, skill, and experience one must acquire in order to be a good programmer. It is very difficult to acquire all of that for what would qualify as "full stack."

    I think it was Stroustrup (or maybe Dijkstra), speaking on the idea of making programming "easier" so more people could be programmers with far less training and education, who said something to the effect of "I wouldn't want a surgeon operating on me who only had 6 weeks of training."

    1. Re:Here is the thing with "full stack" by jareth-0205 · · Score: 3, Insightful

      Agree on the 'full stack' craze, I also rail against the common mantra that you should use whatever programming language is best designed for the particular task... I tend to stick to the languages I know well rather than jump around. I know that I will probably suck if I switch languages outside the 2 or 3 I already know...

      Even the best programmers make a litany of errors each day, any surgeon who had the mistake rate of a rockstar programmer would be struck off immediately. We think we're so good, but computer science is so far behind every other profession.

    2. Re:Here is the thing with "full stack" by El+Cubano · · Score: 4, Insightful

      I want someone to be in charge of building my house that understand enough about wood, concrete and plumbing to safely fuse the different work, without it falling apart next year.

      That person is called a general contractor, the construction equivalent of a project manager. Of course, you don't expect that person to set the roof trusses one day, run the electrical the next day, and then figure out why the main train to the setpic tank backed up the following day. Yet, that is the equivalent of what is expected of "full stack developers."

      And when I have surgery on my foot, and the surgeon spots a rupturing blood vessel, I want him to be able to deal and not have to put me on ice while attempting to find someone who knows something about veins.

      I think the ability of the surgeon to deal with depends on a variety of factors. In some cases it might be likely that the surgeon could handle it on the spot, like if the surgeon is a vascular surgeon, and in other cases it might be less likely the surgeon could handle it on the spot. In any event, I would expect surgeons to have at least basic training in recognizing and even to a certain extent dealing with situations that might arise in the normal course of their work.

      A strong base with branching out into special areas is what I want to see. Not specialists who have no fundamental knowledge, unskilled labor who fall apart when instructions don't match reality, nor generalists that are so general that they can't actually do anything.

      I think I did not communicate myself well. The "full stack developer" postings I see and positions I hear people talk about are roughly the equivalent of "must be master-level skill in UI, back-end, algorithm performance, architecture design, (and so on for half a dozen other areas of expertise), must have 10+ years experience in each of those areas, and we will pay $50-75k". That sort of thing is just unrealistic. A good programmer I think can be expected to be really good at one major area of development for every ~10 years as a professional programmer, so to find someone that has excellent skills in three major areas would require 30 years programming experience. That is not at all the expectation of anyone I have heard of go looking for a "full stack developer".

  3. The reality is... by blahplusplus · · Score: 4, Insightful

    ... people don't want to learn. No doubt tools can always be better but knowing how to improve them is a non trivial undertaking. They want easier to use tools but those "easy to use tools" take decades of research and development to make. If good tools were so easy to make they would already exist.

    Computers programs are only as good as the coneptual and modelling approach you use. Consider many 2D videogames who render spries as largely square/rectangle block, if you want two sprites to do something complex like melt into one another, that would require 1) faking it or 2) coming up with an entirely new way to model and animate sprites that broke them down into individual pixels/atomic components.

    The problem with computers for normal people, is that computers force you to specify and make clear your thoughts and most peoples thoughts are hopelessly vague. That's why people are frustrated they simply do not know nor understand the complexity of the work they are asking when the want some problem "they think is easy" to be be rigorously quantified before you can code up a solution in a program.

  4. Re: Shouldn't it be possible... by Anonymous Coward · · Score: 0, Insightful

    You wouldn't know Marxism if a proletarian smacked you upside the head with a copy of Das Kapital then proceeded to expropriate your means of production.

    I bet you also believe in the left/right false dichotomy promoted by the financialist mass media. Go back to Reddit - we don't need anymore credulous rubes around here.

  5. Re:Idiocracy by JMJimmy · · Score: 3, Insightful

    Sounds like a middle manager who doesn't really understand anything but wants it to be cheaper/easier so he doesn't have to pay PhD wages

  6. anyone can do it by Anonymous Coward · · Score: 5, Insightful

    Anyone can program.

    Hell when I started I could crank code like it was nothing. But guess what. That code was total crap. I mean it was *very* *very* *very* badly written.

    Once I learned a good amount of CS I became much better. I did not make terrible memory mistakes. Big 'oh' is a thing and it matters at all levels memory, cycles, instructions, time, etc. It maters it takes a decent math foundation to understand it.

    Once I got the CS degree I still was fairly 'mediocre' at it. At least my code was not terrible. It was not exactly great either. That has take years of practice and time. Tooling around it has helped pick off the silly 'typo' mistakes. But not all. Also more practice. This is an art. We are craftsman. We can use science and math to build our art. But art it is. Once you realize that you can figure out how to make CS great again.

    One of the biggest lessons is. Do not worry about 'stacks'. HR worries about them because the managers think they need to worry about them. What you want is well rounded individuals who can grok the idea of how the stack you are using works and is not an ass to work with.

    We have ended up with giant sweeping stacks that no one person can understand because of 'crunch'. Everyone in the industry wears it like a badge 'I work X hours per week'. That sort of work ethic create crap. You are not stopping and using the the thing holding your ears apart on how people will use your 'latest greatest API which is trending #1 on stackoverflow'.

    Leaky abstractions are dead easy to make. Ones that 'just work'. Those are hard to make. I am currently in the process of picking up spring. What an un-holy mess of a stack. Oh you can do great things fairly quickly. But the one thing everyone bitches about is 'how do I debug this bitch with its 200 line stack traces'. That is one of the 'popular' ones! So everyone is floundering around trying different stacks and transpilers to spackle over the defects of a poor language choice in our browsers. We are also winding up to create the worlds largest lockin of code ever with webassembly. Then deriding our languages for the 'bad' things that are going on (hell I just did it). So we invent 3 more that do pretty much the same mistakes eventually.

    So yeah CS/Programming is hard. Because we are too busy trying to be the next vendor lockin and putting in way too many hours on stacks that just do not help get shit done. But hey at least I am trending and have a banging blog and youtube video series that no one gives a crap about!

  7. Surgery for everyone! by Anonymous Coward · · Score: 2, Insightful

    Everyone must be a surgeon.
    Not those rare few uppity elites who can afford the education.

    It's discrimination I say!
    We need to change how the human body operates to make it easier for more people to work on.

  8. Where cross site scripting, XHR, etc come from by raymorris · · Score: 3, Insightful

    > There are so many javascript web frameworks that let incredibly poor programmers produce useful tools. They may be horridly inefficient and buggy but they work.

    Yes, they seem to pretty much work, when they receive the expected inputs. Since the person who wrote it doesn't know what they're doing, inputs they didn't anticipate result in yet another $20 million breach.

    There is a place for something like Hypercard, macros, etc - on your own desktop, to make your job easier. Programming that's going to be exposed to hundreds or thousands of attacks per day, programming on the web, needs to be done right.

    "Done right" doesn't just mean "a professional", an English major given the title "Programmer". It means someone who actually knows what they are doing.

  9. Don't dumb down programming, make people smarter by mykepredko · · Score: 3, Insightful

    Reading the article, I feel like the solution is adding meaningful instruction in programming at grade school and continuing it through a person's education. From here, programming platforms for the masses will become obvious and well supported.

    Sometimes when the common denominator is too low, you have to change it rather than cater to it.

  10. Re: Idiocracy by jareth-0205 · · Score: 5, Insightful

    Well, I like that it's wild west because, at the end of the day, merit still counts. You sound like some phb who thinks engineering is factory work. It's not.

    I mean - I enjoy the wild-west nature. I just know it can't continue.

    Until we have worked out how to build software in the same way an architect designs a building, where it can be proven to be strong enough to withstand the forces against it, we'll be in trouble.

  11. Re:Idiocracy by 110010001000 · · Score: 4, Insightful

    It is that easy. The problem is that many people can't think logically or break down problems into manageable parts. By the way, I can show you "issues lists" of automobiles, or buildings, or airplanes, anything moderately complex. Every system that has complexity has issues. You software guys think that software is the only thing that have bugs.

  12. Re:The problem never went away. It is simple... by Junta · · Score: 3, Insightful

    It's everyone's fault really.

    I've dealt with programmers who never have and never want to talk to the users of the software they produce. It's just too scary, that's what the support, sales, and marketing people do. If they are needed, then those folks will make bullet points and disseminate to the 'architects' who will task the 'leads' to direct the 'programmers'. There is no way this can lead to good result. Yet this is a common perception of how to manage commercial software development.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  13. Re:Idiocracy by Anonymous Coward · · Score: 2, Insightful

    There is SERIOUS money behind "making programming easier." The economic incentives to do this are overwhelming, and all of the tech giants have been trying to do precisely this since before they were tech giants.

    The article makes it sound like the current state is a cultural problem. As if the only reason programming is hard is because a bunch of geeks like it that way. Absolutely ridiculous! Programming is hard because the best minds in the world still haven't figured out how to make it easy.

    Remember Cobol? Remember what it's goal was? It was the language that was going to eliminate the programmer. It was designed to be so simple that someone didn't need any computer science background nor any technical knowledge at all to implement code. A fortune in research and development was spent to make cobol into that holy grail of software development that would mean no business would ever have to pay a programmer's salary again.

    It failed, miserably, and today Cobol programmers rake it in. Have we learned from our history?

    Sheesh, if BASIC was the answer, then the industry would be using it already. Why hasn't BASIC already revolutionized the software development world, making it easier for everyone? Because BASIC is not powerful enough to solve the real-world problems that people are willing to pay to be solved.

    And yes, Visual Basic .net might be powerful enough to shoulder that load, and guess what? You have to be a smart geek in order to actually use it to solve real world problems.

    The problem here is not that people have just not bothered trying to make programming easier. The problem is that the problems that need solving are HARD.

    And that's why software developers need to be of above-average intelligence to succeed. Which, in turn, is why there aren't enough of them on the market to meet the demand.

    That is how it is. All else is bullshit.

  14. Re:Idiocracy by Cederic · · Score: 3, Insightful

    Medics have it easy. Sure, the human body is a complex system, but
    - it's A complex system, not many
    - outcomes are pretty straightforward : Alive, healed
    - no innovation required (if illness A, issue medication B)
    - limited scope

    That last one is massive. Lets take security. Medics don't have to protect their systems against intrusion attempts, malicious attacks, user ignorance, data loss or unsafe use.

    A full stack engineer is like a medic that has to diagnose, dispense the right medicines, assure they're taken correctly, hire bodyguards for the patient, wrap them in cotton wool, prevent them from burning themselves while cooking and actively preventing them from climbing up steep mountains. They also have to do all their cooking, change their nappies, take the blame if they get pregnant, raise the child, and issue comprehensive documentation on how to dress each day.

    You're absolutely right, other professions get by with a good memory. Lucky sods.

  15. Re:Idiocracy by Hognoxious · · Score: 3, Insightful

    You missed the most important difference - they don't bring out a new version every five months.

    Doc: Shit, he's got a 3.1.05 heart!

    Paramedic: Don't you know it?

    Doc: No, we only covered the 1 series at med school. I did a refresher a while back, but that was only up to 2.6.

    Nurse: [handing him a laptop] I already opened Google for you.
    (Under her breath) I hope your typing's better than your handwriting.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  16. Re:Idiocracy by Anonymous Coward · · Score: 3, Insightful

    I am *amazed* at how many words you used to say basically nothing.

    One thing you certainly didn't accomplish in your post was the formulation of a cogent counter-argument to the statement "The problem is that the problems that need solving are HARD." You opened by stating you disagreed, which suggests that you were going to demonstrate how the statement was wrong. But instead you just rambled aimlessly, making a heaping mass of independent statements that did not connect to one another in any meaningful way.

    Consider:

    Many businesses spend a lot of money on programmer salaries.
    These businesses would do better if they did not have programmer salaries as a cost center.
    These businesses would, therefore, happily buy tools that enable non-programmers, or significantly fewer programmers, to get the job done.
    Therefore, there is a HUGE market for such tools, and any business that can provide them will make empire-level profits from them.
    Therefore, every tech giant is doing everything it can to produce such tools already, because they all want that money.
    And yet, the industry still needs programmers to use the best and easiest tools that are available today.
    Therefore: the problem can't be that the industry just hasn't tried. The problem must be that the problems being solved are hard.

    There, a cogent and succinct argument that demonstrates the original point.