Slashdot Mirror


Code is Too Hard To Think About (theatlantic.com)

From a longform piece on The Atlantic: What made programming so difficult was that it required you to think like a computer. The strangeness of it was in some sense more vivid in the early days of computing, when code took the form of literal ones and zeros. Anyone looking over a programmer's shoulder as they pored over line after line like "100001010011" and "000010011110" would have seen just how alienated the programmer was from the actual problems they were trying to solve; it would have been impossible to tell whether they were trying to calculate artillery trajectories or simulate a game of tic-tac-toe. The introduction of programming languages like Fortran and C, which resemble English, and tools, known as "integrated development environments," or IDEs, that help correct simple mistakes (like Microsoft Word's grammar checker but for code), obscured, though did little to actually change, this basic alienation -- the fact that the programmer didn't work on a problem directly, but rather spent their days writing out instructions for a machine. "The problem is that software engineers don't understand the problem they're trying to solve, and don't care to," says Leveson, the MIT software-safety expert. The reason is that they're too wrapped up in getting their code to work. "Software engineers like to provide all kinds of tools and stuff for coding errors," she says, referring to IDEs. "The serious problems that have happened with software have to do with requirements, not coding errors." When you're writing code that controls a car's throttle, for instance, what's important is the rules about when and how and by how much to open it. But these systems have become so complicated that hardly anyone can keep them straight in their head. "There's 100 million lines of code in cars now," Leveson says. "You just cannot anticipate all these things."

241 of 397 comments (clear)

  1. FFS this again? by avandesande · · Score: 4, Insightful

    It's lousy requirements, fickle customers, bad environments and tools. The code is the easy part.

    --
    love is just extroverted narcissism
    1. Re:FFS this again? by computational+super · · Score: 1

      Don't forget the expectation that everything worth doing should be doable in about an hour.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    2. Re:FFS this again? by NicknameUnavailable · · Score: 2

      My favorite is:

      IT ONLY TOOK 2 SECONDS TO THINK, WHY DOES IT TAKE 6 MONTHS TO WRITE?!

    3. Re:FFS this again? by myowntrueself · · Score: 1

      It's lousy requirements, fickle customers, bad environments and tools. The code is the easy part.

      Far too often the process from requirements to software engineering takes the form "Ready, fire, aim".

      They develop and THEN they try to figure out what was needed.

      --
      In the free world the media isn't government run; the government is media run.
    4. Re:FFS this again? by Oswald+McWeany · · Score: 1

      It's lousy requirements, fickle customers, bad environments and tools. The code is the easy part.

      The worst point is when they change their mind 6 months into the project how it should work and expect it to not delay your initial estimate.

      It would be like telling a contractor you wanted to build the Empire State Building, but 6 months in telling them you want the Burq Khalifa instead... and not expecting delays.

      --
      "That's the way to do it" - Punch
    5. Re:FFS this again? by Marxist+Hacker+42 · · Score: 1

      Half the time it is the end customer doing Fire, Aim, Ready. Rinse and repeat for Continuous Bugs (see current tagline, your mileage may vary in 2022)

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    6. Re:FFS this again? by edtice1559 · · Score: 1

      This is a favorite thing to say and an easy way to get modded up. The reality is that, if we understand something well enough to have solid requirements, there probably isn't a lot of value in the software and, even if there is, it probably already exists. High value software lets us create systems that increase our understanding of the underlying problem and, therefore, generate new requirements. Anybody can go out and re-implement a linked list. Create a good platform for something and it will spark creativity of the users leading to never-ending requirements and job security (while we continue to complain about lack of up front requirements)

    7. Re:FFS this again? by Gr8Apes · · Score: 1

      Naah, it's more like saying you want a hyperloop between LA and Sacremento, and two days before the trials say - sorry, we need it to run to SF, Seattle, Chicago, and NY. Can you add that and have it ready by next week?

      --
      The cesspool just got a check and balance.
    8. Re:FFS this again? by losfromla · · Score: 1

      I like where you went with this. The value of software isn't what it does for customers external and internal, but rather the career longevity that it can contribute to. So just create a good enough wheel and then keep it spinning until retirement... works for me!

      --
      Only I can judge you.
    9. Re: FFS this again? by saloomy · · Score: 1

      I canâ(TM)t even begin to tear down this non-story. These ass-hats havenâ(TM)t opened their eyes to see what software is doing for them, and what programs have enabled (at the hands of programmers using those very same IDEs). Generally, programming works! Yeah, so itâ(TM)s an evolutionary process, but a highly refined one! Tesla crashes into a semi-truck? Whoops! Make a patch, deploy code, now the system is smarter. Rince. Repeat. Eventually the program work be worth thinking about it will be so good (remember Windows ME?).

      âoethough did little to actually change, this basic alienationâ this is the biggest pile of horseshit I could find in the story. Iâ(TM)m sorry. Compilers do change the basic alienation. They make the code you have to work with readable. They allow you to work on modular code, broken down into basic functions and classes. Again, asshats who donâ(TM)t (or shouldnâ(TM)t be) programming.

    10. Re:FFS this again? by avandesande · · Score: 1

      I agree totally. When I hear people complain at work my retort is 'if it was simple we wouldn't have a job'. That being said, actually writing code is still the easy part.

      --
      love is just extroverted narcissism
    11. Re: FFS this again? by dougdonovan · · Score: 1

      if you have to think hard and not work smart...

    12. Re:FFS this again? by myowntrueself · · Score: 2

      Half the time it is the end customer doing Fire, Aim, Ready. Rinse and repeat for Continuous Bugs (see current tagline, your mileage may vary in 2022)

      I dunno. Most of the time, what I've seen, is programmers and project managers just not bothering to get things clear with the customer because that takes too long and they seem to think it's better to get those (expensive) programmers working ASAP.

      They don't like having meetings, they don't like getting people around a table to hammer out the issues and make sure the task is clear, because on the one hand they don't really like socialising (and meetings are social activities) and, on the other hand, they feel like time spent away from the keyboard is wasted time.

      --
      In the free world the media isn't government run; the government is media run.
    13. Re:FFS this again? by gnick · · Score: 1

      IT ONLY TOOK 2 SECONDS TO THINK, WHY DOES IT TAKE 6 MONTHS TO WRITE?!

      Last week, one of my users suggested an Undo button. Just a simple button that can revert after any potential operation. Specifically, he wanted to Undo a "Save". He did the hard part (conceptualizing an Undo button); the trivial task of implementation was left to me.

      (Actually my role was pretty easy. A quick note to my boss: "This guy wants a universal Undo button. It would be a PITA. Let's ignore him.")

      --
      He's getting rather old, but he's a good mouse.
    14. Re:FFS this again? by lannocc · · Score: 1

      I seem to recall that reversibility is a requirement for quantum computing. Tell your user he gets his universal Undo button just as soon as he gets his universal quantum computer.

    15. Re:FFS this again? by gnick · · Score: 1

      "I'm sorry, but you purchased the Platinum edition. The Undo button is only available in the Quantum edition. You do not meet the system requirements for the Quantum edition."

      --
      He's getting rather old, but he's a good mouse.
    16. Re:FFS this again? by wyHunter · · Score: 1

      Indeed. "I have this great idea for a book, you write it, and we'll split 50/50." Um, no.

    17. Re:FFS this again? by Grishnakh · · Score: 1

      They don't like having meetings, they don't like getting people around a table to hammer out the issues and make sure the task is clear, because on the one hand they don't really like socialising (and meetings are social activities) and, on the other hand, they feel like time spent away from the keyboard is wasted time.

      How are you supposed to have meetings when companies won't approve employee travel any more? Sure, you could try Skype, but I'm sorry, that just isn't very effective for a meeting with more than 2 or possibly 3 people. You need to get everyone in the same room together, and that's simply impossible to do: companies won't pay for it. Instead, they might send some manager or salesperson to talk over the requirements with the customer, and make a bunch of impossible promises, and then they'll come back and tell the programmers, who'll then tell them it's impossible.

      Ultimately, all problems in companies are the fault of management. Don't blame the programmers. If programmers don't like meetings, that's too bad: management can order them to go to the meeting anyway. If the programmers do a lousy job getting the requirements straight, that's what project managers are for. If the PMs are doing a lousy job, that's the fault of their managers. Everything is the fault of management: their whole job is managing people, and working around their deficits while enabling them to succeed based on their strengths. If they aren't succeeding at that task, then they're failures at management.

      Finally, the other problem with requirements is the constant change in requirements. A significant change in requirements can mean re-engineering the whole system, but customers almost always want to change the requirements after the fact.

    18. Re:FFS this again? by edtice1559 · · Score: 1

      I'm not sure how you got this from my post. The point of a software system isn't to meet user's needs at a point in time. It's to meet them on an ongoing basis. As the world changes, computer science advances, and computational capabilities increase, it's only reasonable to expect new requirements to come along. Building good systems that help drive the next set of requirements will usually lead to job security but the way you phrased it adds a cynicism not present in my post.

    19. Re:FFS this again? by Tablizer · · Score: 2

      I got 'em all mixed up and now have drunk horses and old women who take all the money. At least the horses had fun.

    20. Re:FFS this again? by losfromla · · Score: 1

      You start off saying you don't know how I got this from your post. Then you post some stuff about technology advancing blah, blah, blah. Then you finish by saying that you agree I rephrased what you wrote, but you don't like the tone I used. Because after 20 years in the business you've not developed just a tinge of cynicism and are as bright eyed and optimistic as the day you graduated college.

      --
      Only I can judge you.
    21. Re: FFS this again? by NicknameUnavailable · · Score: 1

      He jumped the firewall, he's using one of those international keyboards with unicode.

    22. Re:FFS this again? by KingBenny · · Score: 1

      basically you're not required to understand what you're doing or its too hard

      --
      Free speech was meant to be free for all... how can anyone grow up in a nanny state ?
  2. Obviously bullshit statement there by Rockoon · · Score: 4, Insightful

    "There's 100 million lines of code in cars now"

    No, there isn't. So this guy, criticizing, is making shit up in order to do it.

    Whats he selling?

    --
    "His name was James Damore."
    1. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 2, Interesting

      Yes, there is 100 million line of code in a typical car. This is know for several years. For instance: http://www.informationisbeautiful.net/visualizations/million-lines-of-code/

      Why are you pretending he is making shit up ?

    2. Re:Obviously bullshit statement there by havana9 · · Score: 1

      A Chevrolet Corvair, Citroen 2CV, a Fiat 130 Coupé or a VW T1, I suppose.

    3. Re:Obviously bullshit statement there by billrp · · Score: 2

      That's right, there isn't just 100 million lines of code, it's more than 150 million lines. This probably includes all libraries and OS fully expanded. Google is your friend for finds LOC in cars, eg http://www.thedrum.com/opinion...

    4. Re:Obviously bullshit statement there by Kjella · · Score: 4, Insightful

      You got that far? My bullshit meter overflowed when he started ranting about binary instead of assembler which they've had from the very beginning as simple text substitution...

      Anyone looking over a programmer's shoulder as they pored over line after line like "100001010011" and "000010011110"

      --
      Live today, because you never know what tomorrow brings
    5. Re:Obviously bullshit statement there by Kenja · · Score: 1

      Clearly they should have said there are 1,000 KLOCs! I miss the 80's computer terms...

      --

      "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    6. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 1

      There may technically be 100 million lines of code. That doesn't mean there are 100 million lines of code all in one big file. Tossing out the "100 million lines of code" in reference to the overall technical complexity of modern cars is fair. But using it to exaggerate the complexity faced by one individual coder working on one particular subsystem is misleading.

    7. Re:Obviously bullshit statement there by DulcetTone · · Score: 1

      http://spectrum.ieee.org/trans...

      100 million lines quoted here. And they still can't make the Bluetooth work.

      --
      tone
    8. Re:Obviously bullshit statement there by Anubis+IV · · Score: 4, Interesting

      Assembly wasn't available right from the start, nor on all systems. I used to work with a couple of NASA subcontractors who talked about when they would code by flipping 8 switches and then pressing a button to push that single byte of code into the computer.

      I thought about putting code in quotation marks, a la "code", since it bears little semblance to modern coding, but then I realized that would be an utter and complete disservice to the absolutely herculean effort those people went through back then to build what were in many cases mission critical systems.

    9. Re:Obviously bullshit statement there by michelcolman · · Score: 5, Insightful

      I would bet most of it is in libraries. We need to display this little triangle widget on the screen... ok, found it in this 100 MB library, so we'll just include it and move on to the next problem. Programming is easy!

      There's no way you actually need 100 million lines of code to control a car.

    10. Re:Obviously bullshit statement there by computational+super · · Score: 1

      Well, I have a bunch of programming books in the trunk of my car, and there's probably at least a few million lines of code in there. Maybe he was talking about my car.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    11. Re:Obviously bullshit statement there by narcc · · Score: 3, Informative

      I used to work with a couple of NASA subcontractors who talked about when they would code by flipping 8 switches and then pressing a button to push that single byte of code into the computer.

      That wasn't uncommon for early personal computers either. Try this in-browser simulations:

      Kenbak-1 Emulator

      MITS Altair Simulator

    12. Re:Obviously bullshit statement there by K.+S.+Kyosuke · · Score: 1

      Tossing out the "100 million lines of code" in reference to the overall technical complexity of modern cars is fair.

      I'm not sure it is, since there shouldn't be anything in a car actually technically requiring 100 million lines of code.

      --
      Ezekiel 23:20
    13. Re:Obviously bullshit statement there by Oswald+McWeany · · Score: 1

      "There's 100 million lines of code in cars now"
      No, there isn't. So this guy, criticizing, is making shit up in order to do it.

      He meant to say there's 100 million lines of coke in cars now. You know those party-animal Detroit workers.

      --
      "That's the way to do it" - Punch
    14. Re:Obviously bullshit statement there by Oswald+McWeany · · Score: 1

      You got that far? My bullshit meter overflowed when he started ranting about binary instead of assembler which they've had from the very beginning as simple text substitution...

      Anyone looking over a programmer's shoulder as they pored over line after line like "100001010011" and "000010011110"

      Maybe he's been looking over the shoulders of programmer's who have been looking at xRodent instead of working and when they saw him coming they opened notepad++ and started typing 10010100101011100 to make him go away.

      --
      "That's the way to do it" - Punch
    15. Re:Obviously bullshit statement there by gweihir · · Score: 1

      What do you think makes your car entertainment system crash and your navigation system hard to use? Fairies?

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    16. Re:Obviously bullshit statement there by ThosLives · · Score: 1

      Forget about needing100 million lines of code - it's not even physically possible to put that much code in the critical components of a vehicle.

      A typical state-of-the-art engine controller only has maybe 2-4 MB of flash (yes, M, not G). This puts an easy upper limit on the number of lines of code in the engine controller at something on the order of 100s of thousands (not millions) of lines of code - figuring about 10 bytes of generated code per line.

      That 100 million lines probably includes Windows or Linux or whatever is being put in the infotainment systems - not in the actual vehicle control systems.

      --
      "There are a dozen opinions on a matter until you know the truth. Then there is only one." - CS Lewis (paraprhase)
    17. Re:Obviously bullshit statement there by Gr8Apes · · Score: 1

      I didn't bother counting, but I doubt there were more than 10K LOCs in the Apollo code, and that successfully took astronauts to the moon. If there's 100M LOCs in automotive code, then there's some seriously bad code in there as well as likely tons of dead code. I don't even have to guess, this has been bandaided and patched and overlaid so many times that no one has actually spent the time to clean up the mess. After all - ABS code at it's heart is a pretty simple system, and shouldn't require a whole lot of code. Ditto for engine timing code which really should be as simple as lookup tables for conditions being reported. Everything else should be reporting options.

      --
      The cesspool just got a check and balance.
    18. Re:Obviously bullshit statement there by darkain · · Score: 2

      Linux kernel alone is ~20 million lines? That probably accounts for the largest section of code by itself!

    19. Re:Obviously bullshit statement there by networkBoy · · Score: 1

      Well, just the RDS and display for your radio is likely several thousand lines of code when you figure in the firmware for the LCD driver.
      Not all that code is a monolithic project, it's the 500 lines of assembly for the LCD driver interface, the 1000 lines of embedded C for the RDS decoder, the 5000 lines of embedded C for the CDDA decoder in your stereo, the 20 lines of machine code for the uP in the amp, and we still haven't finished with the radio!

      The line between hardware and LoC is even blurrier with tings line gauges, which are really just digital displays that mimic analog, and who's chips are all ASICs developed in VHDL. They have no code on them per-se (maybe a eeprom with parameter data?) but the entire chip was written no different than a static lib.

      Add all that up, especially the transmission and ECM/PCM and I wouldn't be surprised at the line count being 7 digits or near enough.

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    20. Re:Obviously bullshit statement there by BronsCon · · Score: 1

      did anyone ever do anything substantial in bit strings?

      If you don't think inputting the code that allowed keyboard input (and printing or monitor display) of those hex values is substantial, then no. There was a time when computer interfaces were simply a series of switches; set your byte, then literally push it (with a button) to the stack. Everything we have today was built from that so, yes, I'd say that's substantial.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    21. Re:Obviously bullshit statement there by BronsCon · · Score: 1

      it probably didn't feed into the computer directly but that was pretty much it.

      Oh, but it probably did. The Altair 8800 wasn't the only computer to use that interface; it was simply the most well known.

      Programming the Altair was an extremely tedious process. The user toggled the switches to positions corresponding to the desired 8080 microprocessor instruction or opcode in binary, then used the 'DEPOSIT NEXT' switch to load that instruction into the next address of the machine's memory. They repeated this step until all the opcodes of a presumably complete and correct program were in place.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    22. Re:Obviously bullshit statement there by swillden · · Score: 1

      You got that far? My bullshit meter overflowed when he started ranting about binary instead of assembler which they've had from the very beginning as simple text substitution...

      Anyone looking over a programmer's shoulder as they pored over line after line like "100001010011" and "000010011110"

      No, assembler wasn't available from the very beginning... but no one ever actually programmed in binary. They at least used decimal representations of instruction values and arguments. Even when systems (mostly hobby systems) had no input device other than toggle switches, you wrote out your code in decimal or hexadecimal, then translated to binary only for data entry. You would never "pore over" lines of binary except perhaps to check the translation from the more usable form right next to it.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    23. Re:Obviously bullshit statement there by swillden · · Score: 1

      I used to work with a couple of NASA subcontractors who talked about when they would code by flipping 8 switches and then pressing a button to push that single byte of code into the computer.

      Sure, but they wrote their programs on paper in decimal or hexadecimal (likely decimal), then translated to binary only to toggle it in.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    24. Re:Obviously bullshit statement there by ThosLives · · Score: 1

      I'd say 8MB is "bleeding edge" not "state of the art" - but it's still the same order of magnitude. Mostly because (even with all the OBD overhead) that much code space just isn't required and it costs a lot.

      And also, yes, while there may be 20 modules connected, most of them are nowhere near as complex as the heavy-lift controllers (engine control, supervisory, etc.) so they are not likely to have the modules with expensive 8MB parts.

      I also have yet to see an instance where calibration data size exceeds code size - out of about a dozen projects, so I'm not talking one-offs here. But I'd be curious what types of vehicle controllers have more cal flash than code flash.

      --
      "There are a dozen opinions on a matter until you know the truth. Then there is only one." - CS Lewis (paraprhase)
    25. Re: Obviously bullshit statement there by dilvish_the_damned · · Score: 1

      100m lines of code isnâ(TM)t in the engine controller - yet. Itâ(TM)s in everything. How many lines of code in CarPlay? How many lines of code once someone plugs in a smart phone or a Bluetooth ECM interface?
      Should the person building the ECM give a crap about the code running in Shazam?
      I donâ(TM)t suspect anyone tries to model 100m lines of code in their head, nor do I suspect this human limitation will prevent us from making it 500m lines of code, yet at the some time the vehicles will get incrementally safer overall.
      To my knowledge people havenâ(TM)t been getting killed by the fact there are a lot of lines of code, but rather more mundane errors like stack overflow and such which we only need a few lines of code to implement.

      --
      I think you underestimate just how much I just dont care.
    26. Re:Obviously bullshit statement there by Austerity+Empowers · · Score: 1

      No, there isn't. So this guy, criticizing, is making shit up in order to do it.

      Nah, a lot of us drive around with the entire contents of git-hub and the linux kernel on USB keys.

    27. Re:Obviously bullshit statement there by boa · · Score: 3, Informative

      "I didn't bother counting, but I doubt there were more than 10K LOCs in the Apollo code, "

      Well, you're wrong. Way off, actually.

      Code is available here: https://googlecode.blogspot.no...
      Here are some crude stats (from a source tree I know nothing about...)

      [boa@localhost trunk]$ for i in Artemis072 Colossus2* Comanche055 Luminary* Solarium055; do printf $i; find $i -name \*.agc | xargs wc -l | grep total; done
      Artemis072 64444 total
      Colossus237 62565 total
      Colossus249 64223 total
      Comanche055 65585 total
      Luminary099 65058 total
      Luminary131 63217 total
      Solarium055 30074 total
      [boa@localhost trunk]$

    28. Re:Obviously bullshit statement there by angel'o'sphere · · Score: 1

      Of course that would be a complete disservice.
      The modern word 'to code' comes from the fact that you had to 'trans code' Mnemonics into binary or hex code.

      Modern coders, don't code. They sinply write text in a high levle language.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    29. Re:Obviously bullshit statement there by angel'o'sphere · · Score: 1

      Most likely they used mnemonics and most definitely not decimal.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    30. Re:Obviously bullshit statement there by Darinbob · · Score: 1

      Sure, maybe there were three or four days of people programming this way before someone decided to make it symbolic. It's still somewhat common to at least look at the hexadecimal (or octal if you're on a pdp11). I look at core dumps all the time, I don't have any magical tools that point to where the bug is. It's called problem solving and it's a lot like solving puzzles.

      That statement though is typical media ignorance though. People write about what they don't know, and aren't professional enough to actually learn something about the topic first. Professionalism is expensive so these magazines don't want professionals. You see this in Hollywood writers too. Crime shows, superhero shows, historical dramas, medical dramas, and so forth, all have amazing levels of bullshit in all areas. Most of us see the bullshit that applies to stuff we're familiar with but may not notice the other mounds of the stuff piling up.

      Writers aim for their audience. If the audience is generally stupid, then the writing level will be stupid too.

    31. Re:Obviously bullshit statement there by Arnold+Reinhold · · Score: 1

      No, assembler wasn't available from the very beginning... but no one ever actually programmed in binary. They at least used decimal representations of instruction values and arguments. Even when systems (mostly hobby systems) had no input device other than toggle switches, you wrote out your code in decimal or hexadecimal, then translated to binary only for data entry. You would never "pore over" lines of binary except perhaps to check the translation from the more usable form right next to it.

      Early computers had assembler programs and hardware input output. Early minicomputers were more primitive and one often had to enter a short bootstrap loader program into memory using front panel switches to get them started. The bootstrap program would remain in core memory until some program crash erased it. Hexadecimal didn't become popular until the IBM 360 in the mid 1960's. Prior to that most computers were either decimal or binary with a sub multiple of 36 bits (36, 18, 12) and octal (base 8) was used to represent the contents of machine words. Switches and lights were grouped in threes and one quickly learned to set the switches from octal values and read the lights into octal. I never saw anyone writing programs in 1's and 0's.

    32. Re:Obviously bullshit statement there by Megol · · Score: 1

      Octal. Even some 8-bit machines used octal input/display as that was what people expected. Hexadecimals? Postmodern crap!

    33. Re:Obviously bullshit statement there by Megol · · Score: 1

      You were just a replacement of a ROM and not a programmer as such. Thank $DEITY for cheap ROM, just imagine toggling in a modern UEFI firmware...

    34. Re:Obviously bullshit statement there by Megol · · Score: 1

      Thank you. That's a pet peeve of mine.

    35. Re:Obviously bullshit statement there by Megol · · Score: 1

      Unless they were really hardcore. Never reached that level myself :/ C64 coders probably have every instruction memorized however.

    36. Re:Obviously bullshit statement there by angel'o'sphere · · Score: 1

      You usually have them memorized so far that you can read a hex dump, or partly can read it.
      But actively memorizing the hex codes for every instruction was hardly necessary, we already had assemblers at that time.
      I used to know about 1/4 of the hex codes for a 6502, but meanwhile forgot everything.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    37. Re:Obviously bullshit statement there by UnknownSoldier · · Score: 1

      Uh, you just might want to re-check your facts there buddy:

      http://www.informationisbeauti...

      --
      Only Cowards Censor.
      Censorship is not the solution, it is precisely The Problem.

    38. Re:Obviously bullshit statement there by UnknownSoldier · · Score: 1

      > There was a period of time when it was used alongside assembler.

      Assembly, noun, is the LANGUAGE.

      Assembler, noun is the TOOL that translates from Assembly (Language) to Machine Code.

    39. Re:Obviously bullshit statement there by Tablizer · · Score: 1

      That 100 million lines probably includes Windows or Linux or whatever is being put in the infotainment systems - not in the actual vehicle control systems.

      Unless a hacker uses the infotainment and/or navigation system to hack into the direct controllers. Such holes have been discovered, I believe. Making sure the infotainment/nav system doesn't have such holes itself can be a daunting problem. One can perhaps fully separate them, but then some handy UI shortcuts or conveniences may be sacrificed.

      For example, if there is an urgent message about the car's condition, you'd like it announced through the infotainment system. In order to do that, you'd need some connection between it and the controllers. And it would probably need a two-way feedback system to know at least if and when to end the message and turn the regular sound back up. As soon as this connection exists, the potential for inter-system hacking appears.

    40. Re:Obviously bullshit statement there by lgw · · Score: 1

      Heh, the build system they used clearly had a hard limit at 64K lines of code. I've worked on systems like that.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    41. Re:Obviously bullshit statement there by Gr8Apes · · Score: 1

      I have no idea what you're looking at, but try the source itself: https://github.com/chrislgarry...

      --
      The cesspool just got a check and balance.
    42. Re: Obviously bullshit statement there by boa · · Score: 1

      Nah, mate. Try harder and you will see that I linked to the source.

    43. Re: Obviously bullshit statement there by Gr8Apes · · Score: 1

      Supposedly what I linked to was the entire command and control code. I didn't bother going deeper.

      --
      The cesspool just got a check and balance.
    44. Re: Obviously bullshit statement there by vovin · · Score: 1

      How many lines of code in CarPlay?

      No much (for the car) actually.
      It's *mostly* hooking the A/V streams to the codecs and handling some control logic (who owns the mic/display/speakers) depending on the state machine.
      Same is true for Android Auto for what it's worth.

    45. Re:Obviously bullshit statement there by K.+S.+Kyosuke · · Score: 1

      Well if you program cars 100% in assembly, that comparison might even make sense. I'm pretty sure the MAC models of Apollo code weren't anywhere near that.

      --
      Ezekiel 23:20
    46. Re:Obviously bullshit statement there by AmiMoJo · · Score: 1

      A very large amount is probably in the cellular modems too. Those things have an embedded CPU and DSP, with an OS and Java VM. Even the SIM will have a CPU and Java VM.

      Even so, the engine control unit (ECU) does probably have a lot more code than people realize. Those things have to be designed very carefully and use extensive defensive mechanisms like duplicating all important data in RAM and continually comparing it to detect corruption. It could be massively simplified with some better hardware (dual identical CPUs that must agree, a CPU with memory duplication and checking built-in etc.) but the automotive industry moves slowly.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    47. Re:Obviously bullshit statement there by K.+S.+Kyosuke · · Score: 1

      It's the code size for a single computer's programming. These repositories are different code versions that flew (some of them at least) on different machines.

      --
      Ezekiel 23:20
    48. Re:Obviously bullshit statement there by Anubis+IV · · Score: 1

      "Assembler language" is fine, since it's being used as an adjective to describe a language. It's like someone saying "he speaks a tonal language".

      "Assembler" as a way to refer to a language is not fine, since that noun doesn't refer to a language. It makes no more sense than someone saying "he speaks tonal".

      "Assembly" as a way to refer to a language is fine, since that noun refers to a particular language. It's like someone saying "he speaks Cherokee".

    49. Re:Obviously bullshit statement there by david_thornley · · Score: 1

      Control Data computers, in the old days, had the boot program entered by switches. These were usually set once and never touched again. A really nasty thing to do was to flip some of the switches and crash the system, and see how long it took the operators to think to look.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    50. Re:Obviously bullshit statement there by david_thornley · · Score: 1

      In an early issue of a magazine (Dr. Dobb's?) I saw a review of (IIRC) and Imsai computer, and the reviewer praised the flat switches as a great improvement over the Altair's switches.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    51. Re:Obviously bullshit statement there by MercTech · · Score: 1

      If you are talking custom programming for a specific task; the customer has to specify what is needed. There comes the rub as most people are not accustomed to defining what they want and think everyone sees things from their paradigm.

      Writing code is first getting an algorithm to be operative on the specified task. Then translate the algorithm into a set of instructions a machine can use.

      Then you integrate multiple tasks.

      Teach some logic structure in MBA school and there will be less problems with coding.

      Giggling at the 100M lines of code... he must be including all the lines of code from the CNC machines that made the components of the car.

      --
      NRRPT/RCT
    52. Re:Obviously bullshit statement there by mcswell · · Score: 1

      I was a computer operator on a CDC Cyber 170/750 in the early 80s (one of those room filling computers), and it had one of those panels of toggle switches. I guess the 80s were the Old Days, although I don't like to think of it that way...

    53. Re:Obviously bullshit statement there by mcswell · · Score: 1

      "the customer has to specify what is needed": I'm lucky; I've been able to conceptualize my own programs and write them, based on what I want them to do. I have forced myself to specify in comments at the top of the file the way the program will work (general function, input and output, any command line parameters) before I write any code. Same for individual functions: I write the documentation for the function (arguments, return value, behavior including error conditions) before I write the code. Of course my concept of what it should do may change as I write the program, but in general I find this to be a good way to code.

    54. Re:Obviously bullshit statement there by Anubis+IV · · Score: 1

      Apparently you forgot what site you were on? Insisting on accuracy is what we do.

  3. What's the point of this article? by xxxJonBoyxxx · · Score: 4, Insightful

    If you think "code is hard", then maybe SlashDot isn't the right site for you.

    1. Re:What's the point of this article? by gweihir · · Score: 2, Insightful

      Or maybe you have never written any piece of code that actually had to solve a real problem and was not just simple business-logic.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re:What's the point of this article? by Anonymous Coward · · Score: 1

      The only thing I'm having difficulty figuring out right now is the basis of your opinion there.

      As a programmer in the automotive world, where the purpose of applications range all over the place, from materials management to engineering tools and systems control, it is not uncommon to first focus a lot of energy on understanding the reasons why you need to do what they are asking of you, and then working to create a program that handles the situation accordingly, solving the problem at hand without breaking other pieces of software, or database structure.

      There are shitty programmers out there, but I think that people underestimate others a lot, these days. If your critical thinking/programming skills are up to par, all you need is an honest interest in what it is you're programming for.

    3. Re:What's the point of this article? by penandpaper · · Score: 1

      I wrote a 'hello world' program in javascript. Now where can a professional programmer like me get a drink around here?

    4. Re:What's the point of this article? by computational+super · · Score: 4, Insightful

      Hmmmm.... well, hang on - I don't think this is what you meant, but you seem to be implying (and certainly a non-coding reader would infer from reading your comment) that code is actually easy. Code IS hard, and it takes a lifetime of discipline to master, and when actual, human safety is on the line, it should absolutely be left in the hands of experienced professionals.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    5. Re:What's the point of this article? by gweihir · · Score: 3, Insightful

      If your critical thinking/programming skills are up to par, all you need is an honest interest in what it is you're programming for.

      And I disagree on that. Rather strongly in fact. I am not talking about algorithms you can copy from a book or find in your run-of-the mill libraries. And I am certainly talking about related issues like cache-awareness, doing your own custom memory management, doing good privilege-separation on the architecture side, understanding side-channels, etc. Most coders just scratch the very surface and then mistakenly think they are good at it.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    6. Re:What's the point of this article? by myowntrueself · · Score: 2

      If you think "code is hard", then maybe SlashDot isn't the right site for you.

      Its not about 'code being hard', its about 'code obscures the problem and shifts the focus away from solving the underlying problem and onto solving the coding problem.'

      --
      In the free world the media isn't government run; the government is media run.
    7. Re:What's the point of this article? by Oswald+McWeany · · Score: 1

      I wrote a 'hello world' program in javascript. Now where can a professional programmer like me get a drink around here?

      Someone will be along to tell you the secret location of the Mountain Dew bar soon. The location will be scribbled on the back of a Magic the Gathering card with a Cheetos stain in the upper right corner.

      --
      "That's the way to do it" - Punch
    8. Re: What's the point of this article? by Anonymous Coward · · Score: 1

      If you scribble anything on a MtG card I will personally end you.

    9. Re:What's the point of this article? by Jaime2 · · Score: 2

      But that's not really true. I've written code for problems that I intimately understand. Anyone that's written code for coders has. The real problem is that most problems are really hard to fully specify. As soon as you start to code it, you begin to realize how hard. But, the problem isn't expressing it in code - the same problem will exist no matter what representation you try to give it.

    10. Re:What's the point of this article? by penandpaper · · Score: 1

      I do hope the Cheeto stains correlates to skill of the programmer. If so I need a card of pure orange Cheeto stains. Preferably, on the Black Lotus card (for the A.C).

    11. Re:What's the point of this article? by myowntrueself · · Score: 1

      But that's not really true. I've written code for problems that I intimately understand. Anyone that's written code for coders has. The real problem is that most problems are really hard to fully specify. As soon as you start to code it, you begin to realize how hard. But, the problem isn't expressing it in code - the same problem will exist no matter what representation you try to give it.

      The hard part is expressing the problem in a way that can be translated into code. I don't believe that the really important tasks can easily be translated into code. Code is logic. But the world doesn't work logically, people aren't logical. Logic is either incomplete (there are truths that can't be proven) or its inconsistent (there are falsehoods that can be proven to be true).

      Problems of the real world, ie problems that can't be reduced to theorem proving, are really not very amenable to coding.

      --
      In the free world the media isn't government run; the government is media run.
    12. Re:What's the point of this article? by Austerity+Empowers · · Score: 1

      Or maybe you have never written any piece of code that actually had to solve a real problem and was not just simple business-logic.

      I have! Code is not hard. Thinking like a compiler is not hard. Maybe for people who write these articles, but not for those of us who do this work.

      Thinking of algorithms that solve problems with practical memory and compute limitations...that's hard. Putting them in code? Not that hard, usually. But then the algorithms rarely live in a vacuum, and the information they rely on needs to be acquired from some black box library or some proprietary and ever changing database...and that gets hard too in a different way.

    13. Re:What's the point of this article? by Megol · · Score: 1

      LOL! Started writing a real response then saw it was you again. Ever getting tired of being not only wrong but hilariously so?

      Really I like low-level optimization but you are just mashing some words together obviously not understanding what they mean. E.g. why would anybody not doing low-level stuff do memory management tasks instead of doing their work? "..., doing good privilege-separation ..." is just words. Side channels... Irrelevant IF ONE ISN'T DOING SECURE STUFF!

      Even for low level coding or building a framework for higher levels your rant is completely irrelevant. Anybody with any experience would see that. And a programmer can be skilled and productive not having any idea of any of those areas.

      Last memory management stuff I did was a version of the realtime TLSF allocator written in x86-64 assembly. You?

    14. Re:What's the point of this article? by Megol · · Score: 1

      I think your problem may be a dysfunctional family rather than the shoes... Never seen nor heard of anything like that.

    15. Re:What's the point of this article? by Kjella · · Score: 2

      The real problem is that most problems are really hard to fully specify. As soon as you start to code it, you begin to realize how hard.

      The problem is not that the problem is hard, it's that the user doesn't understand why their specification is woefully incomplete. Like if you asked them how to walk they'd probably say "Well put one foot in front of the other, duuuh" but tell a robot to do that it'll fall with a big thud. Then they'll say "Well you got to keep your balance, duuuh". And you'd tell the robot to do that and it won't get anywhere because it started to lift one foot, realized it was out of balance and put it back down again. And then they'll says "Well you have to be out of balance long enough to take a step just don't keel over, duuuh" and so on.

      You get expensive and powerful computers, but software got the intelligence of a 99 cent calculator. If it crashes, it doesn't recover. If it gets stuck in an infinite loop, it doesn't break out. This is particularly true of edge cases that no human would bother creating logic for, like if you try to edit a record at the same time someone else deleted it. Could you imagine that with a real filing cabinet, you take a piece of paper out of a folder, write something on it and when you want to put it back the folder is not there anymore. You'd handle it somehow, improve on the fly. If you're a piece of software, you can get an "illegal reference of null pointer *folder, segfault".

      Of course, that's when people actually manage to describe the normal case. I've been in meetings where it turns out they want it to do the "right thing" or solve it for them, even though they themselves can't formulate exactly what the process or scoring should be. And they go like you're the expert, it's your job to figure out what the code needs to be. I'd love to say I tell them to sod off and come back when they got an implementable spec, but in practice it often goes like "Okay I've heard so roughly describe it, I'll try to code up something like it so we can do some simulations on what the result would be like". And most of the time it'll be really bad, but then at least they can say "that's not what we meant" and we can iterate. Usually they've exhausted their own ability to think abstractly before they go see the coders...

      --
      Live today, because you never know what tomorrow brings
    16. Re:What's the point of this article? by gweihir · · Score: 1

      Funny. This stuff currently pays my pretty nice salary and nothing of it is BS. The customer would not accept that. But keep thumping your chest and believing you are superior.

      Incidentally, I was not talking about general-purpose allocators. Implementing these is basically a text-book exercise task for students. I was talking about full-custom allocator design, optimized for a specific task. It speaks volumes that you apparently cannot tell the difference.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    17. Re:What's the point of this article? by jareth-0205 · · Score: 1

      If you think "code is hard", then maybe SlashDot isn't the right site for you.

      Yeah, you might actually be a good programmer then. All coders think they're better than they are - a bit of humility, and admitting the profession is woefully underdeveloped, would go a long way.

    18. Re:What's the point of this article? by sfcat · · Score: 1

      LOL! Started writing a real response then saw it was you again. Ever getting tired of being not only wrong but hilariously so?

      Really I like low-level optimization but you are just mashing some words together obviously not understanding what they mean. E.g. why would anybody not doing low-level stuff do memory management tasks instead of doing their work? "..., doing good privilege-separation ..." is just words. Side channels... Irrelevant IF ONE ISN'T DOING SECURE STUFF!

      Even for low level coding or building a framework for higher levels your rant is completely irrelevant. Anybody with any experience would see that. And a programmer can be skilled and productive not having any idea of any of those areas.

      Last memory management stuff I did was a version of the realtime TLSF allocator written in x86-64 assembly. You?

      You are why we have security holes.

      --
      "Those that start by burning books, will end by burning men."
    19. Re:What's the point of this article? by sfcat · · Score: 1

      The real problem is that most problems are really hard to fully specify. As soon as you start to code it, you begin to realize how hard.

      The problem is not that the problem is hard, it's that the user doesn't understand why their specification is woefully incomplete. Like if you asked them how to walk they'd probably say "Well put one foot in front of the other, duuuh" but tell a robot to do that it'll fall with a big thud. Then they'll say "Well you got to keep your balance, duuuh". And you'd tell the robot to do that and it won't get anywhere because it started to lift one foot, realized it was out of balance and put it back down again. And then they'll says "Well you have to be out of balance long enough to take a step just don't keel over, duuuh" and so on.

      This, a 1000 times this. I've even seen former engineers do the hand-wavy thing. It seems to be human nature and its why most software is hard.

      --
      "Those that start by burning books, will end by burning men."
    20. Re:What's the point of this article? by Jaime2 · · Score: 1

      Although it's tempting to think this is the answer, I run across the same difficulty in problem specification when I'm writing software for myself. If the problem were simply user specifications, then IDEs would stand alone as shining examples of development projects. In reality, they are just as hard to write and just as likely to contain bugs as any other software. So, the problem can only be that problem specification is ligitimately hard. That's why no new-fangled programming paradigm will ever make it any better.

    21. Re:What's the point of this article? by adhdengineer · · Score: 1

      you've never bought you kids some shoes that "dont match any of their clothes you idiot" then?

    22. Re:What's the point of this article? by KiloByte · · Score: 1

      You really never heard the words "fashion sense" that apparently everyone but the speaker in question lacks?

      Results returned by that "sense" are totally random, but you can greatly reduce the number of almost-new items of clothing you're forced to throw out by having your S.O. pick them for you. This means you sacrifice comfort, money and quality -- but she'd have to admit error. That's not entirely foolprof but reduces the failure rate from nearly-100% you'd have if you picked unaided.

      (If I sound jaded... gee, guess why?)

      --
      The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
    23. Re:What's the point of this article? by david_thornley · · Score: 1

      Code is not hard.

      Sounds like you never did anything major. If you understand in detail what the code is supposed to be doing, getting the code generally right is usually not that difficult. Getting it precisely right is that difficult, when you're dealing with hundreds of thousands of lines of code in the system.

      That's how being human works. If something isn't difficult, somebody will scale it up until it is.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  4. Then they're idiots by Anonymous Coward · · Score: 2, Interesting

    The problem is that software engineers don't understand the problem they're trying to solve, and don't care to,

    Then those software engineers are idiots. Standard for my projects and my teams is, when starting a project, before ever writing a line of code, we try to understand exactly what it is we're trying to accomplish. Work with customers to get requirements, prod the customers to figure out the details they didn't think about and figuring out the best compromises when we have conflicting requirements. Only after we've got a pretty good idea what we're trying to do will we actually start coding.

    1. Re:Then they're idiots by gweihir · · Score: 5, Insightful

      Same here. But I see tons of people that either only understand the problem but cannot code or the other way round. Of course there are also people that suck at both. The fact of the matter is that only a small number of people can both code well (including understanding design, architecture, performance, security and reliability) and can understand the application problem well at the same time. Of course the latter is with the help of the customer or user, but even that seems to be too hard for many coders.

      It is not laziness or unwillingness, IMO, it is simple inability. And people that can do one of these things well cannot be called stupid by any sane measure either. The problem of doing both things well is just very, very hard.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re:Then they're idiots by war4peace · · Score: 1

      Only after we've got a pretty good idea what we're trying to do will we actually start coding.

      And many, many times that would read as "never".

      --
      ...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
    3. Re:Then they're idiots by Archangel+Michael · · Score: 1

      I actually know quite a few people in IT (Shocking I know!) in all sorts a various areas, and the one thing that distinguishes them from your average person is insatiable hunger for knowledge.

      While I am sure there are those that only want to code, the majority (vast??) want to understand the problem so that they can actually code more effectively and efficiently. Understanding the problem they are coding for makes it easier to code for exceptions (there are always exceptions) and around potential pitfalls.

      There is nothing worse than writing code out, and discovering after you've built a half million lines of code that you have to re-code everything to solve a problem you had no idea was even possible. Understanding the real problem helps eliminate those kinds of problems.

      --
      Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    4. Re:Then they're idiots by TheDarkMaster · · Score: 1

      Well, I do very well both sides of the problem: Programming and most of all types of business/logic/engineering/etc problems that they throw at me, usually it is easy to find the correlations between the real world and machine instructions. But I am an artificial intelligence working for the government so I guess my case may not count =/.

      --
      Religion: The greatest weapon of mass destruction of all time
    5. Re:Then they're idiots by gweihir · · Score: 1

      Well, there are people that can do both. Just not a lot. And some have peculiar other issues, like thinking they are an AI ;-)

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    6. Re:Then they're idiots by computational+super · · Score: 1

      Then those software engineers are idiots

      Yeah, but there are lots of them. When I try to get somebody to explain the actual problem they want me to solve, they don't even seem to understand quite what I'm trying to get at - mostly because their past experiences with programmers has consistently been "where should the buttons and drop-downs go?"

      --
      Proud neuron in the Slashdot hivemind since 2002.
    7. Re:Then they're idiots by myowntrueself · · Score: 1

      The problem is that software engineers don't understand the problem they're trying to solve, and don't care to,

      Then those software engineers are idiots. Standard for my projects and my teams is, when starting a project, before ever writing a line of code, we try to understand exactly what it is we're trying to accomplish. Work with customers to get requirements, prod the customers to figure out the details they didn't think about and figuring out the best compromises when we have conflicting requirements. Only after we've got a pretty good idea what we're trying to do will we actually start coding.

      I'm guessing that you aren't using agile then? Because it sounds like you are actually doing 'Ready, aim, fire' instead of 'ready, fire, aim'.

      --
      In the free world the media isn't government run; the government is media run.
    8. Re:Then they're idiots by computational+super · · Score: 1

      I can't count how many times I've heard other programmers suggest that obtaining requirements from stakeholders is like "pulling teeth". I get the analogy, too, because I feel the same way when I try to get somebody (who's paying me to write a program for them!) to tell me what the program is supposed to do. My best guess as to why this is is that the stakeholders usually think that the "business driver" is so obvious it can't be explained or that you should already know all this stuff, and they go into a bit of a panic when you make it clear that you don't already know all the details of how the business works. I've learned guerrilla requirements gathering and yes - a lot of that involves working on code first, showing the "stakeholder" a prototype, and then using that as a springboard for getting them to actually tell me what the hell it is they want this thing to do.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    9. Re:Then they're idiots by Gilgaron · · Score: 1

      The most effective programming in my group comes from pairs of an analyst and a developer and have worked together for a long time. I think of it like a spotter/sniper team.

    10. Re:Then they're idiots by gweihir · · Score: 2

      When you work on the same areas long-term so that you can have analysts that stay a long time, then that is a pretty good solution.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  5. Not "too" hard, just hard by gweihir · · Score: 5, Insightful

    At least not too hard for everybody. But the simple plain fact is that thinking about code above a certain minimal complexity requires special talent. Tools, languages, coding-styles, etc. make no real difference.Those that do not have it ( probably something like 95% of all people) should stay away from professional coding. Incidentally, the same applies to mathematical thinking and reasoning, for example. Nothing surprising here, just too many people writing code that do not have what it takes.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:Not "too" hard, just hard by hyc · · Score: 2

      They might have what it takes, but particularly in the US, their abilities were not trained up and refined.

      https://www.cs.utexas.edu/user...

      --
      -- *My* journal is more interesting than *yours*...
    2. Re:Not "too" hard, just hard by gweihir · · Score: 1

      Well, most do not have what it takes. But it is certainly true that of the few that do have it, many are lost to coding because of an inadequate education system and bad job prospects. I mean these people are smart. Many of them will not go into coding when they can expect to have low job security, a bad salary and being treated badly. At the same time a small number of really good coders can often replace hundreds of mediocre and bad ones. Due to bad management in most larger companies, nobody seems to have noticed so far though.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    3. Re:Not "too" hard, just hard by Wrath0fb0b · · Score: 3, Insightful

      Spoken like someone that has never actually worked on a variety of complex projects with different amounts of legibility.

      There are any number of things that a talented team will do to make code much easier to work with: consistent interfaces, explicit contracts, thoughtful modularity, high-level documentation, intuitive log/trace functionalities, unit tests*, etc. Conversely, there are all kinds of traps that make a complex project much more difficult to work with: spaghetti code, completely lack of diagnostics, tight coupling that makes unit testing impossible, principle-of-most-surprise.

      Don't get me wrong, there is absolutely such a thing as special talent. But the more I've worked with software, the more I realize that this talent consists of building complex things in understandable & predictable ways. The real superstars are the ones that build frameworks that merely-good programmers can understand and use to build upon. These things absolutely make a huge difference. The better the design/implementation, the less talent is needed to build on top of it with messing things up.

      And by the way, this was kind of supposed to be the point. We were supposed to throw open the benefits of computing to everyone. That requires more work to make languages/frameworks readily understandable to the less talented and less of the view that only the elite should code and more of the view that the elite are needed to build the foundation for others to use.

      * Actually, one of the hidden benefits of unit testing, besides forcing you to create generic interfaces that can be mocked/stubbed out, is that it provides an instant way to learn about a component of the system. Don't know how foo works, run the unit test and watch it work. Want to know the contract between foo and the rest of the system, look at the pre/post conditions the tests are asserting.

    4. Re:Not "too" hard, just hard by gweihir · · Score: 2

      Yes, that too. Here is another gem: https://www.schneier.com/blog/...
      It is both though.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    5. Re:Not "too" hard, just hard by NicknameUnavailable · · Score: 1

      They might have what it takes, but particularly in the US, their abilities were not trained up and refined.

      Nope, they genuinely don't have what it takes. Honestly 5% was a very generous estimate on the part of the GP - realistically not more than 3% of the population are capable of any degree of complex thought. Of those 3% not all of them (though most) are programmers - so there are maybe 2% of the population capable of actually writing code - again being generous but not quite as much.

      This ideas that "we just aren't training them properly" or that we "just need to import more people" or "we just need to get more people interested" etc are all beyond absurd - it's like saying we can advance scientific development faster by getting more people interested in science. It's 2017, nearly everyone is interested in science, it's not going faster. The fact of the matter is there is only a very small fraction of Humanity capable of sentient thought (as defined by: unique complex thought surpassing the norm) as a simple matter of: if everyone could do it there would be nothing special, it would already be automated, it would already be discovered, etc.

      We're talking about a thing which is inherently bound to the leading edge of Human intellect, it will never be something for everyone because if it were it would already be automated.

    6. Re:Not "too" hard, just hard by myowntrueself · · Score: 1

      No, it's not "thinking about code" that's hard. THINKING is hard. And most people are incapable or unwilling to do much of it.

      Two days ago I was at a McDonald's that had newly installed touch screen kiosks for ordering. I saw people give up and wanting to leave without ordering anything because selecting their food and confirming their order was too difficult for them. They complained to the cashiers, who then had to help them enter their order. If people are too lazy to learn how to order a burger, how does anyone expect them to learn coding?

      No, that's the whole point; coding is nothing like actual thinking.

      Coding is more like doing math than it is like thinking.

      --
      In the free world the media isn't government run; the government is media run.
    7. Re:Not "too" hard, just hard by gweihir · · Score: 2

      Oh, I have. Your Ad Hominem is entirely misplaced.

      And note that you require a "talented team". That "talented team" is not any of "tools, languages, coding-styles, etc.". It is people that know what they are doing and that take care to structure and document it as well as possible. This requires intelligence and creativity.

      Incidentally, I disagree about the frameworks. They often hide too much. One of my main scopes is security and frameworks are one of the worst problems, because coders do not understand anymore where their data is and were it goes. These frameworks make it easier to get something to run, but much, much harder to get it to run well and securely. The framework designer cannot really do anything about that as they cannot know the specific security requirements that apply to applications using the frameworks later on.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    8. Re:Not "too" hard, just hard by iCEBaLM · · Score: 1

      And how do you do math? By doing push ups?

      When the problem being solved is mathematical in nature, you're going to need to know some math, or else you're not going to be able to solve it, be it on a piece of paper or in code.

    9. Re:Not "too" hard, just hard by pD-brane · · Score: 2

      Exactly.

      To illustrate, I am an ocean modeller (or climate modeller). Climate models are typically large and complex. But most of the time I am very aware of what problem I want to solve. Of course, there is a whole lot more in the code than the basic equations that you may and should have written down at some time before actually implementing your model, but you work on a small part of the code, a part that you understand thoroughly. Sometimes numerical and system design schemes go above my head, but luckily there is support for that at my institute. But you should know how the variables and code structures you work on apply to the real world (or the thing that you intend to describe).

    10. Re:Not "too" hard, just hard by Wrath0fb0b · · Score: 1

      My point was that the more intelligence and creativity were done at the structure/documentation level, the lower the talent level needs to be for the next guy that works on it.

      Also, I have no idea what you are talking about in terms of security/frameworks. The cardinal rule we've always had for security reviews is do not ever reimplement anything yourself and instead use a well-reviewed, fuzzed and supported library. This isn't just for crypto, it's for the entire stack where vulnerabilities are found.

      I don't suppose you ever tried to review code where someone took your advice and tried to implement their own XML parser in C/C++?

    11. Re:Not "too" hard, just hard by myowntrueself · · Score: 1

      And how do you do math? By doing push ups?

      When the problem being solved is mathematical in nature, you're going to need to know some math, or else you're not going to be able to solve it, be it on a piece of paper or in code.

      Solving mathematical problems is very very far, mentally, from solving other most kinds of problems.

      --
      In the free world the media isn't government run; the government is media run.
    12. Re:Not "too" hard, just hard by iCEBaLM · · Score: 1

      No, it really isn't. The universe is math. Nature is math. You may not think it is because we've adapted and evolved to intuit a lot of it, but almost every problem is mathematical at its core.

    13. Re:Not "too" hard, just hard by stinerman · · Score: 1

      These frameworks make it easier to get something to run

      Which is all the PHBs care about. Security has always been "someone else's problem" and performance is something you can just throw more hardware at.

    14. Re:Not "too" hard, just hard by angel'o'sphere · · Score: 1

      I beg to differ.
      Not being able or willing to use a machine too order something has many reasons, but not being unable to think.
      One big problem e.g. is: figuring what the programmer was thinking!
      If the way how the machine works would be obvious, people would be dine with the order in seconds.
      But often only the simple stuff, like clicking on a burger and then on a coke is obvious, and then already payment might be a problem.
      And on top of that, many automates for ordering are suoer slow. You wait for an reaction, and presume you have misclicked. Then you click again and suddenly you have two items ordered.
      You realize that in the payment process, but going back via the 'cancel' button cancles the whole process ...

      That are only simple examples, I saw plenty of plain stupid set up ordering machines ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    15. Re:Not "too" hard, just hard by gweihir · · Score: 1

      There is a difference between a library and a framework. But that you do not get my point just shows you have not yet run into this problem. It currently pays for a substantial part of my work-time.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    16. Re:Not "too" hard, just hard by gweihir · · Score: 1

      My "elitism" is realism. And a deep understanding of the question at hand. You lack both and you are a coward in addition.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    17. Re:Not "too" hard, just hard by Megol · · Score: 1

      Several reasons for that:
      People don't want to learn if it isn't needed. You may like to solve puzzles (as do many others) but not all do, which leads to:
      If the design is anything like some of the ones I've seen* it really is like solving a puzzle. Given enough time anybody with minimum IQ (+vision +experience in using touch interfaces etc.) can solve it - but why do that when there's alternatives that doesn't require trial in error in a stressed situation with people waiting behind them.

      Coders generally make extremely lousy UI designers. I'm a bad UI designer but I at least have the education to see that.

      (* how about a scrolling interface with _no_ indication that one could scroll? How about sometimes one had to scroll horizontally, sometimes vertically with no visual indication? How about sometimes wanting a single tap, sometimes a double-tap - of course with no indication of what was needed? How about showing a number pad on the touchscreen however that being just a picture with the pin needed to be entered on a separate hardware keypad not used otherwise?)

    18. Re:Not "too" hard, just hard by myowntrueself · · Score: 1

      No, it really isn't. The universe is math. Nature is math. You may not think it is because we've adapted and evolved to intuit a lot of it, but almost every problem is mathematical at its core.

      This kind of thinking is why getting requirements out of human beings is hard.

      --
      In the free world the media isn't government run; the government is media run.
    19. Re:Not "too" hard, just hard by gweihir · · Score: 1

      Mostly. Unless you suddenly run into legal requirements that you have to fulfill and your framework just happens to do things completely violating these requirements and nobody was aware.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    20. Re:Not "too" hard, just hard by UnderCoverPenguin · · Score: 1

      As I have pointed out in the past, (almost) everyone is taught writing, but only a tiny few have what it takes to become professional writers. Also, according to a friend of mine who is an editor for one of the major US book publishers, many of those pros, in the US, would have a hard time getting more than a "C" in high school English composition, yet they write beautiful books (that then have to be edited for "big piles of mistakes").

      Go ahead and train all children in coding. Just don't expect more than a tiny few to be able to "go professional". No different than with writing.

      --
      Don't try to out wierd me, three-eyes. I get stranger things than you, free with my breakfast cereal. --Zaphod Beeblebr
  6. Abstraction is not always the solution. by CptLoRes · · Score: 1

    Any experienced programmer will know very well that abstraction does not always make better solutions. The sad truth is that complex problems usually require complex solutions.

    1. Re:Abstraction is not always the solution. by DarkOx · · Score: 1

      The problem with all those abstractions is at a basic level there is an underlying assumption each class (not exactly in the OOP sense) of thing follows certain rules. To make effective use of those abstractions you have to understand those rules really really well. Otherwise you end up with lots of code on top so to speak patching(not in the insert at some offset sense) things.

      It still "looks" clean to anyone not popping open the abstraction but what it really is, is doing one thing here and than undoing it over there. Its actually creating spaghetti code. I wonder as frameworks/libraries make subtle changes etc how many errors are creeping into various code bases as a result; especially the ones that don't have complete test coverage.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    2. Re:Abstraction is not always the solution. by gweihir · · Score: 1

      Indeed. You cannot abstract complexity away. You can hide it, often with really bad effects, but it will still be there. The only cases were abstraction makes things easier is if the complexity was created by a bad tool and is not inherent to the task being solved. You will always need to understand that task in order to create an adequate solution. And if that task is complex and cannot be simplified, then the solution must necessarily be complex too. Of course, a major talent for any good engineer is the simplification of tasks.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    3. Re:Abstraction is not always the solution. by ranton · · Score: 2

      Any experienced programmer will know very well that abstraction does not always make better solutions. The sad truth is that complex problems usually require complex solutions.

      Not sure what you are trying to say here. Obviously even the worst programmer will likely know that abstraction will not always make a better solution. Nothing always makes a better solution. But nearly 100% of code (likely at least 99.999999%) has significant abstractions. You probably cannot even use modern processors without numerous abstractions within the processor itself which you cannot control or even see in the documentation. Even when they do have complete control they probably aren't spending much time thinking about the actual movement of the electrons in those processors, but instead enjoy using a different level of abstraction.

      Abstractions can cause problems, but on average I'd guess they solve trillions of potential problems for every problem they cause.

      I would change what you said to: Experienced programmers will generally know what abstraction level they should be working at when designing and implementing their solutions. They will also be better than most at determining when they were wrong and need to start investigating in a different level of abstraction.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    4. Re:Abstraction is not always the solution. by ranton · · Score: 1

      If I say "A = B + C", the fact that the computer is doing all kinds of electrical magic behind the scene is independent of what we're trying to do. There is nothing abstract about that statement. If I did something like "account.CalculateBalance()", that is abstracting away the problem. It is hiding the details required to represent the solution to the problem.

      If you say A=B+C, you have abstracted away the data type, units of measurement, number of bits required to store the values, etc. All of those can be very relevant to the problem you are solving, and each of the considerations I listed are significant causes of bugs in real software. In financial software I have written, knowing how many digits to track when performing financial calculations is just as important as the logic used to calculate those balances. A=B+C is absolutely a very abstract statement.

      "account.CalculateBalance()" may or may not be abstracting away the problem you are trying to solve. It certainly uses abstraction, like A=B+C or any other software solution for that matter, but it may or may not be related to your work. Just like knowing the data types of your addition operation may or may not be relevant to your work.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    5. Re:Abstraction is not always the solution. by Megol · · Score: 1

      You just told us all you aren't a programmer. One of the basic things one learn to do is divide and conquer - decreasing complexity by dividing the problem into several easier ones. If you don't realize that is what one is doing well - you aren't a good programmer, not even a good code-monkey. I doubt you ever worked as a programmer given your record of just not getting anything related to programming.

      Really, this is ridiculous!

    6. Re:Abstraction is not always the solution. by gweihir · · Score: 1

      No, I am just a few levels above you. In fact you are so outclassed that it is utterly hilarious. First, Divide and Conquer is in no way universal and requires specific conditions to be met in order to work in non-degraded form, i.e. efficiently. I bet you were unaware of that and thought this approach to be a general strategy. It is not, nicely illustrating my earlier point. Second, Divide and Conquer does not reduce complexity, it reduces problem size. That is fundamentally different. Incidentally, if Divide and Conquer can be used to solve a problem efficiently, then that pretty much forms a proof that the problem complexity is at or below the concrete Divide and Conquer pattern used.

      So, fail on all counts on your side. The funny thing is, I am actually not a programmer. I have a CS PhD and mostly do security consulting work. Coding is just something I do on the side when an opportunity arises, but apparently a lot more competently than you can ever hope to achieve.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    7. Re:Abstraction is not always the solution. by david_thornley · · Score: 1

      Modern CPUs are very complex, unlike the ones I grew up with, when it was easy to understand what the CPU was doing at any given time. That complexity is normally abstracted by the compiler's code generator This seems to work, as far as I can tell, and it makes my life easier.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  7. That's EXACTLY what turn me on about it by mnemotronic · · Score: 2

    To me, it's a machine or tool. Like a hammer. Use a hammer this way and it does something. Use it another way and end up with bruised fingers. It all seemed so simple and transparent and obvious . I just groked it, long before the concept of grok, and I could not for the life of me understand why other people couldn't get it.

    What intensified that was the need to read and memorize about a zillion IBM and FORTRAN manuals. That also appealed to my obsessive ADHD side, long before the concept of ADHD. Add the extra ego brownie points when I could describe some obscure feature or function call to the instructor or one of the advanced calculus students and it was a match made in heaven.

    --
    The Russians have won. They have made the world a cesspool of distrust, greed, fear and hate.
    1. Re:That's EXACTLY what turn me on about it by 605dave · · Score: 1

      First hammer analogy!

      --
      Be kind, for everyone you meet is fighting a difficult battle. - Plato
    2. Re:That's EXACTLY what turn me on about it by PPH · · Score: 1

      To me, it's a machine or tool. Like a hammer.

      This.

      But it's a tool to be used by the system engineer. That's the person with the domain expertise necessary to produce the requirements, design the hardware and integrate and test the system. Having to hand requirements to coders is like being a carpenter and cutting all the boards. But then having to call the hammer group to come in and put it all together.

      --
      Have gnu, will travel.
    3. Re:That's EXACTLY what turn me on about it by war4peace · · Score: 1

      Can someone please do a Hummer analogy now?

      --
      ...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
    4. Re:That's EXACTLY what turn me on about it by MagicM · · Score: 1

      To me, it's a machine or tool. Like a Hummer. Use a Hummer this way and it does something. Use it another way and end up with bruised fingers. It all seemed so simple and transparent and obvious . I just groked it, long before the concept of grok, and I could not for the life of me understand why other people couldn't get it.

    5. Re:That's EXACTLY what turn me on about it by PPH · · Score: 1

      I thought we were talking about code, not hardware?

      Why separate the two? Or in the case of PCs (and mainframes) where the hardware is already a done deal, why separate the domain expert from the coding job? You want an accounting application written? You are probably better off teaching an accountant how to code than to hand the task over to a dedicated s/w group.

      In my day on the engineering front line, some of the best, most maintainable natural language AI applications I've ever sen were written by flight controls (mechanical) engineers. And they worked beautifully, even when our CS guys said it couldn't be done (some crap about being NP-hard). More like butt-hurt over not getting the assignment, IMO.

      --
      Have gnu, will travel.
  8. I think there's something missing here... by bogaboga · · Score: 3, Informative

    "The problem is that software engineers don't understand the problem they're trying to solve, and don't care to,..."

    I think they do understand the problem and that's why things generally work, or don't they? I think they do work on the whole.

    The reason is that they're too wrapped up in getting their code to work.

    To this, I must rephrase:

    "The reason is that they're too wrapped up in getting their code to work, as they should..."

  9. Stupid Topic by Murdoch5 · · Score: 4, Informative

    Before a single line of code hits the IDE, you plan out what you're trying to solve, the problems you have to deal with, and how the logic will have to act. Coding happens after the "hard" work has been done, once you have a good idea of what has to be done and how to do it.

    If anyone thinks that a true software engineer just sits down, starts slamming on some keys and then says "Oh well, I wrote code, let's see how the throttle handles it", then they don't understand software development or software engineering.

    1. Re:Stupid Topic by jez9999 · · Score: 1

      If anyone thinks that a true software engineer just sits down, starts slamming on some keys and then says "Oh well, I wrote code, let's see how the throttle handles it", then they don't understand software development or software engineering.

      Shit, looks like I've been doing it wrong all these years. :-)

    2. Re:Stupid Topic by computational+super · · Score: 1

      ... and the way every single manager I've ever had expected me to do it was wrong, too. "Why aren't you typing? Programmers should always be typing! Get to typing!"

      --
      Proud neuron in the Slashdot hivemind since 2002.
    3. Re:Stupid Topic by myowntrueself · · Score: 1

      Before a single line of code hits the IDE, you plan out what you're trying to solve, the problems you have to deal with, and how the logic will have to act. Coding happens after the "hard" work has been done, once you have a good idea of what has to be done and how to do it.

          If anyone thinks that a true software engineer just sits down, starts slamming on some keys and then says "Oh well, I wrote code, let's see how the throttle handles it", then they don't understand software development or software engineering.

      You aren't using Agile, are you.

      --
      In the free world the media isn't government run; the government is media run.
    4. Re:Stupid Topic by apoc.famine · · Score: 1

      I know, right? Who doesn't cut and paste the master code into the IDE and then start deleting and renaming parts of it, and moving stuff around? Far easier than this thinking and planning stuff.

      --
      Velociraptor = Distiraptor / Timeraptor
    5. Re:Stupid Topic by Marxist+Hacker+42 · · Score: 1

      I am, but I sure as hell prefer waterfall. See tagline.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    6. Re:Stupid Topic by Murdoch5 · · Score: 1

      Agile is all about documentation and consideration before work gets started. People generally misunderstand Agile development, because they think it's all about getting work done fast and sloppy when it's about understanding everything about the work and not wasting time on implementation, thanks to the documentation.

    7. Re:Stupid Topic by myowntrueself · · Score: 1

      Agile is all about documentation and consideration before work gets started. People generally misunderstand Agile development, because they think it's all about getting work done fast and sloppy when it's about understanding everything about the work and not wasting time on implementation, thanks to the documentation.

      I keep hearing this, that Agile is ok its just people don't practice Agile properly. I hear it ALL the time. Yet, whenever Agile is used, that I've seen, it results in people doing loads of work and then discovering they've wasted lots of time because they didn't understand the problem. I can't believe this isn't because of Agile; if people are so consistently misunderstanding and misinterpreting Agile doesn't that say something about Agile itself?

      --
      In the free world the media isn't government run; the government is media run.
    8. Re:Stupid Topic by Murdoch5 · · Score: 1

      Whats wrong with Agile, is most of the people who use it, don't understand it.

      Most people who program don't understand pointers, as evidence they're taken out, or not included, in most modern programming languages, but this doesn't mean there is something wrong with pointers, it just means programmers are idiots and don't understand them, so would you hold that over the concept?

      Using something wrong or incorrectly doesn't mean there is something wrong, it just means people need to learn about the concept they want to use properly. My company uses Agile and we have no problem with it because before we started, we put together a 150+ page document outlining every single component, how it functions, how it has to behave, how it has to fail and everything you would need to know. Once you understand what you're trying to do, it's easy to draw up a functional project plan in something like Kanban or Scrum.

      The people you're referring to who seem to never understand or use Agile correctly, don't demonstrate a problem with Agile, they simply show how little they understand Agile and in many ways development/programming in general.

    9. Re:Stupid Topic by Carcass666 · · Score: 1

      The guys who wrote the Manifesto for Agile would probably disagree with you when you say "Agile is all about documentation and consideration before work gets started"

      We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

      • Individuals and interactions over processes and tools
      • Working software over comprehensive documentation
      • Customer collaboration over contract negotiation
      • Responding to change over following a plan

      That is, while there is value in the items on the right, we value the items on the left more.

      It's more iterative improvement, collaboration and responsiveness than lots of pre-coding work. I don't think the Robert Martins of the world would disagree that up-front design and architecture work is important, but that is more about being a responsible professional developer than anything Agile, per se.

    10. Re:Stupid Topic by Mal-2 · · Score: 1

      Before a single line of code hits the IDE, you plan out what you're trying to solve, the problems you have to deal with, and how the logic will have to act. Coding happens after the "hard" work has been done, once you have a good idea of what has to be done and how to do it.

      This is how even I operate, and I'm a shit coder. Unless the problem is trivial (like parsing a text file and spitting it back out in a modified form), I first write out what I'm trying to accomplish, then detail that out into an outline, which then gets detailed further in either plain English or in pseudocode or some combination of the two. Sometimes I discover my initial outline just won't work because of some major implementation detail I overlooked, and in that case I'll move the "painted into a corner" code to a separate file (in case it proves useful later) but remove it from the program. Then I'll update the outline and associated details to keep them in sync with what I think I want to write.

      As I go, that outline becomes the code comments. Then anyone else who has to touch the code gets the benefit of my forethought as well.

      --
      How is the Riemann zeta function like Trump rallies? Both have an endless number of trivial zeros.
    11. Re:Stupid Topic by Murdoch5 · · Score: 1

      Fair, but you still need to put the initial work in. At no point does Agile tell you to "Never document, and instead make sure to work blind."

    12. Re:Stupid Topic by angel'o'sphere · · Score: 1

      Yet, whenever Agile is used, that I've seen, it results in people doing loads of work and then discovering they've wasted lots of time because they didn't understand the problem.
      Of course that has nothing to do with Agile. It is Agile done wrong. Actually a prime example.
      In agile development you never start developing until the (sub) problem/fearure is completely understood! This is called "the definition of ready". A feature is not ready to be worked on if it is not understood properly. And this is actually true for every software development method, but in waterfall much easier to do wrong than in agile methods.

      Go read a book about it and stop bashing stuff you clearly have no idea about.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    13. Re:Stupid Topic by myowntrueself · · Score: 1

      Yet, whenever Agile is used, that I've seen, it results in people doing loads of work and then discovering they've wasted lots of time because they didn't understand the problem.
      Of course that has nothing to do with Agile. It is Agile done wrong. Actually a prime example.
      In agile development you never start developing until the (sub) problem/fearure is completely understood! This is called "the definition of ready". A feature is not ready to be worked on if it is not understood properly. And this is actually true for every software development method, but in waterfall much easier to do wrong than in agile methods.

      Go read a book about it and stop bashing stuff you clearly have no idea about.

      By my understanding of what you've written literally no one I have worked with who has championed Agile had any idea what Agile is about. Sad.

      --
      In the free world the media isn't government run; the government is media run.
    14. Re:Stupid Topic by myowntrueself · · Score: 1

      The people you're referring to who seem to never understand or use Agile correctly, don't demonstrate a problem with Agile, they simply show how little they understand Agile and in many ways development/programming in general.

      But these are not stupid people. What is it about Agile that makes it so hard for these, intelligent people, to implement correctly? Perhaps theres a promulgation and promotional problem in Agile that isn't getting its message across effectively?

      --
      In the free world the media isn't government run; the government is media run.
    15. Re:Stupid Topic by angel'o'sphere · · Score: 1

      Looking at /. comments as soon as the topic Agile or Scrum comes up: I guess that is true.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    16. Re:Stupid Topic by Tablizer · · Score: 1

      Before a single line of code hits the IDE, you plan out what you're trying to solve, the problems you have to deal with, and how the logic will have to act. Coding happens after the "hard" work has been done, once you have a good idea of what has to be done and how to do it.

      In ideal-land yes. Reality is more nuanced. For one, the customer often doesn't fully know what they want until they actually use it in practice. If you are lucky, you can ask them a lot of questions and play with examples to try to tease out what they really need, but often such interview time is limited for various reasons, and has an upper limit to what it can accomplish because sometimes one just has to see something in action to understand the full implications of it.

      Also, one often discovers issues or questions while coding that they otherwise didn't think about earlier. When you mentally immerse yourself in a particular feature or section, you notice things that you didn't while casually contemplating it.

      It's kind of like house shopping: despite spending hours walking around the house, some things you just don't notice until after you move in. You may have tested the hot water in the kitchen, but you forgot to test in the restrooms, assuming that if it works in the kitchen then it works everywhere. You'll discover similar oversimplifications that were made while drafting the original plan.

    17. Re:Stupid Topic by Tablizer · · Score: 1

      What's that saying something like - "No plan survives first contact with the enemy..."?

      I remember it something like, "the plan will probably be useless, but the planning indispensable."

      In other words, it helps to think about the problem and contingencies up front even if the original plan fails.

    18. Re:Stupid Topic by Murdoch5 · · Score: 1

      If your hot water is working in the Kitchener but not in the Bathroom, as far as coding is concerned, then you have an architecture problem or you're missed something that should be clear if the code was designed properly in the first place, as to notice the lack of a component feature. Assuming that hot water is important, you'd have some type of consumable service or interface that checks for the existence and functionality of the hot water system which can scope module to module and module to system.

      If you design the code to the best ability possible and a change has to be made downstream later to accommodate scope creep or scope change, it shouldn't be a problem, providing the right steps were taken in the beginning to assure quality in the product throughout.

    19. Re:Stupid Topic by david_thornley · · Score: 1

      There are problems that will not be understood until code has been written and the results examined. You're unlikely to make a really good UI on the first try, and, when you try it, you will very often find the customer doesn't want what the customer said he or she wanted.

      Fortunately, agile can handle this with iterative development, while strict waterfall can't.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  10. Rust by Anonymous Coward · · Score: 1, Funny

    Rust will solve every problem known to mankind. In Rust, you don't even need to think about the problem your code should solve. The Rust toolchain will do that automatically for you. When using Rust, bugs are a thing of the past -- they are simply impossible.

    1. Re:Rust by war4peace · · Score: 1

      ..chose what?

      --
      ...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
    2. Re:Rust by computational+super · · Score: 1

      Whoosh!

      --
      Proud neuron in the Slashdot hivemind since 2002.
    3. Re:Rust by gweihir · · Score: 2

      Hehehehe, it also solves the problem of what language to make fun of ;-)

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  11. Re:Slashdot is too hard to use. by 605dave · · Score: 1

    This confused me at first as well. Once you've been in the community and built up your karma you may be asked to moderate at some point. For me it just kind of showed up one day as a pull down under each comment. As I have moderated over the years it seems like I am offered the chance more frequently. Probably because I actually do pay attention and try to moderate in a helpful way. Note, now that I have commented on your comment I can't moderate anything in this discussion. That's to prevent me from moderating people down if I am in the discussion itself. Makes sense really.

    --
    Be kind, for everyone you meet is fighting a difficult battle. - Plato
  12. "Some things are hard to think about" by billrp · · Score: 1

    Should be the real title. Eg, POTUS can easily start a nuclear war, here are the directions: https://www.bloomberg.com/poli...

  13. Let me guess by 110010001000 · · Score: 3, Insightful

    Visual programming is the "answer"? Every decade some non-programmer discovers visual programming and says we are all going to be creating programs by dragging blocks around. No, I didn't bother to RTFA.

    1. Re:Let me guess by 0100010001010011 · · Score: 1

      Every decade some non-programmer discovers visual programming and says we are all going to be creating programs by dragging blocks around.

      I've been using the same one for the last decade. They're great. What is your issue with them? Or if you have a problem with them do you also have a problem with compilers?

    2. Re:Let me guess by 110010001000 · · Score: 1

      Which one do you use, brother? Lego blocks?

    3. Re:Let me guess by 0100010001010011 · · Score: 1

      Simulink to run modern automotive drivetrains (and about everything else).

    4. Re:Let me guess by losfromla · · Score: 1

      LabVIEW. FTW!

      --
      Only I can judge you.
  14. Re:Law is the hard part by bogaboga · · Score: 1

    I write code for the gov and the hard part is when the bug is in the law. The bug might have not been obvious to lawmakers, but when I write my if-else it becomes dead obvious. It is hard because
    A) I know what I'm doing is wrong, but I have to do it, because it is written into the law
    B) There is no bug tracker where I can submit bugs in the law.

    You could perhaps consider providing an example of what you're talking about. Without a concrete example, your submission is anemic I am afraid.

  15. Re:Job security for the capable. by Anonymous Coward · · Score: 1

    Too hard to think about is good because it means job security for those who can.

    It likely also means we should consider dismissing this novel concept of teaching every child to code in school.

    It's a rather pointless effort to try and force onto 95% of students when the majority don't get it, and never will.

  16. Well, yeah by Chris+Mattern · · Score: 1

    We haven't solved the hard AI problems necessary to make computers think like us, so we have to think like computers in order to program them, and we're not good at it. This is news?

  17. If Architects designed buildings... by wisebabo · · Score: 1

    like programmers wrote programs, the first woodpecker that came along would destroy civilization.

    Sorry that's the only (hopefully funny) comment I could come up to contribute (and I didn't even come up with it, I read it somewhere in pre-Internet time!).

    1. Re:If Architects designed buildings... by jeff4747 · · Score: 1

      Architects do design buildings like programmers write programs.

      Then they hand the plans off to a structural engineer.

    2. Re:If Architects designed buildings... by david_thornley · · Score: 1

      Architects work on a much more limited scale than programmers do. Architects work with known components that can be put together in a limited number of ways. This doesn't say they can't do wonderful things with them, but the problem space is limited.

      Programmers tend to work in a much larger problem space.

      Also, if the architect makes a major mistake, there are serious consequences, while the programmer is more sheltered from them.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  18. Bullshit argument by Anonymous Coward · · Score: 1

    When you're writing code that controls a car's throttle, for instance, what's important is the rules about when and how and by how much to open it. But these systems have become so complicated that hardly anyone can keep them straight in their head.

    This bullshit argument is unarguably true, but it can be applied to anything, and means absolutely nothing.

    There is this persistent myth of the "lone programmer" or "lone inventor", but that is not how things work in the real world.

    Even a moron knows that nobody in this blue marble can be a master of every possible field, and very few people can even master ONE specific field. In the real world - where shit gets done, not some sitcom fantasy - you work in teams, so that each member can bring their skillset, experience and opinion to the table, and so that together they can come up with a superior solution.

    The design is separated from the implementation, and done in advance. Things aren't done "as you go". The methodology doesn't change midway. Everything is planned, and THEN the plan is executed.

    This is how airplanes stay in the air, why you can carry a computer in your wrist, and why I can post this shit on the internet. There are thousands of people working on this shit. Yeah, sometimes they break, but we learn from that and we fix them and make them better.

    If things were as bad as these bullshit articles try to make them, we would still be sitting in caves eating shit because "Agriculture has become so complicated that hardly anyone can keep it straight in their head.".

    It is an insult to our collective intelligence and human achievement.

  19. Rule of Generation by 0100010001010011 · · Score: 1

    Developers should avoid writing code by hand and instead write abstract high-level programs that generate code. This rule aims to reduce human errors and save time.

    Which is why we've been abstracting away the hard bits for a while now. We're not manually flipping in digits. We made punch cards, automated punch cards, compilers, and higher level languages.

    I couldn't imagine doing non-linear control algorithms with C or assembly. Did simple PIDs in college, understand how to do it and just let Simulink write the DO-178C and MISRA 2012 code for me. It's already certified for critical code.

    It's also easy to build a plant model to unit test against and add in SIL/MIL/HIL level testing. I let Windriver and other compilers handle the assembly generation. Again, they're already tested and certified.

    "100001010011" and "000010011110"

    Great guys.

  20. No, the problem is coding is just too new. by 140Mandak262Jamuna · · Score: 4, Insightful
    At the start of industrial revolution, since around 1750 approx, lathes were turning out nuts and bolts. But you needed to buy a matched set of nut and bolt. There were no standards, no interoperability between nuts and bolts from different manufacturers. At around 1840 a man named Whitworth painstaking collected nuts and bolts from various manufacturers, found the most common thread profiles and published a "Whitworth thread profile". This eventually became British Standard thread profile, and almost all the nuts and bolts we take for granted came from that standardization.

    Software is still in that era. Each machine built then was made from the scratch, with custom built parts. There were no standard off the shelf components then. We still don't have a standard reliable gui that can be assumed to be supplied by the OS in linux. Windows guarantees a mouse/screen but it can't even give multiple customizable desktops in 2017 Windows 10.

    If I am designing an electric motor, I don't have to worry about the anchoring bolts. I know the power and torque and weight of what I am shooting for. I will simply pick from well tested components library a set of four, six or eight bolts with known tensile strength, corrosion resistance, temperature profiles, cost and provide for holes large enough for the anchor bolts. If I am designing the controller for the same damned electric motor, every interaction the motor has with the micro processor that controls it is custom made. Several device control muPs each with its own protocol for data, feedback and error handling.... If I am designing a mortgage consolidation program for the asset management of a bank, every data feed I get, every data output, feedback, and error handling is custom built. That is why software reliability is poor, security holes are ill understood and development is insanely complex.

    Having said that, we have made great strides in standardization. File IO within a system, of https requests across the network is getting standardized. XML is helping a lot. Entrenched players deliberately mess up interoperability with ulterior motives. But as the end users become more and more aware of switching costs and vendor locks, eventually these things will dry up and interopera bility will improve.

    Well tested, well understood components are the key to building large, complex but reliable machines. We are getting there. Serious computation is a mere 60 year old technology. Hardly two and a half human generations, coping up with 45 generations of computational technology evolution. It will take a couple of human generations before we have senior managers who grew up with technology who would not fall easily for the sales tricks and demand real tested true interoperability and well tested well understood components.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
    1. Re:No, the problem is coding is just too new. by wbtittle · · Score: 1

      Excellent comment. You are partially wrong though in the conclusion. The number of people who understand the underlying buckets keeps getting smaller. We have abstractions on top of abstractions on top of abstractions. Even 0 and 1 are abstractions. Sometimes they are a voltage. Sometimes they are a Frequency. Sometimes they are an amplitude. I have asked for raw data from some folks including the following joke -- "I know that the raw data for some of this is a voltage!"

      Almost no one giggles. I can't even get a "I am laughing inside".

      In order to write the joke, I had to abstract. Those voltages aren't 1s and 0s. A temperature induces a resistance which induces a voltage across a constant current which gets read and then converted into a digital number which is applied to a lookup table or possibly a translation function which gets turned into digital value which then has to be stored somewhere involving a similar set of translations...

      There are leaders of companies out there who stumble over the idea of Revenue > Expense. NO ONE should stumble over this.

      But so many do.

      --
      God: "I don't leave footprints!"
    2. Re:No, the problem is coding is just too new. by gweihir · · Score: 1

      Indeed. And that is why coding (and CS) is still an experimental engineering discipline. The biggest problem we face is that we do experimental engineering with people that do not qualify as engineers and have very partial understanding of what they are doing. Eventually, this will get better, but expect 50 years or longer for that to happen, if history is any indication.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    3. Re:No, the problem is coding is just too new. by gweihir · · Score: 1

      Several things will happen, as they have happened in the established engineering disciplines. It will take quite a while though. But it has happened to all established engineering disciplines and it works, so it will very likely happen here as well.

      1) Competency classes will get firmly established.
      Example:
      - "Technician": Uses established components and established techniques to solve known and understood problems. Results are safe and reliable.
      - "Engineer": Uses mostly established components and mostly established techniques to create solutions to new problems. Results are safe and reliable, if needed by additional measures to ensure that.
      - "Scientist": Can create everything from scratch if needed, but does not assure reliable or safe result.

      2) Standard components with standardized interfaces will become widely available and have assured and dependable characteristics.
            At this time, we have few standardized interfaces and mostly on the net: SMTP and HTTP are examples.

      3) Liability will become a thing. If any of the competency classes from 1) steps outside of their competency class and messes up or messes up an established technique within their competency class, then the person will become personally liable. Same as an architect becomes liable if he messes up the static calculations of a building and it collapses as a result or an MD that botches a standard procedure. Also, component manufacturers will become liable if the components they sell do not perform as to spec. (A way to handle FOSS that works will be found, e.g. 3rd party certification.)

      4) Hardware will stop to evolve fast and may become mostly or entirely static. The same will happen for Operating Systems, languages and compilers, making 2) possible.

      There are some other effects, but competency classes, standardized components and procedures and liability are the most important things.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    4. Re:No, the problem is coding is just too new. by david_thornley · · Score: 1

      Exactly what represents bits is irrelevant to the programmer (although the details of the access method can be very relevant). A bit is represented as whatever is convenient for the machine. Bits have been represented by dots on cathode ray tubes, dynamic electron or mercury flow conditions, tiny little magnets of one polarity or another, current, whether a capacitor is charged or not, and many different methods. It is possible to make machines to be almost completely reliable so that what a bit is doesn't matter to a programmer.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  21. Re:Utter wank by amalcolm · · Score: 1

    Not true at all. The computer used by code breakers in WW2, for example, had no assembler. So of course they had programming forms with columns for each bit in the instruction word. I did something similar in the 1980s for a bit-slice based disk controller. THe cross-assembler that was available as the time ran on a VAX and the company could not afford it.

    --
    Time for bed, said Zebedee - boing
  22. What would be different? by jader3rd · · Score: 1

    I read the article on Friday and remember how it was trying to propose some kind of other way to visualize the behavior of code, and thought it was pretty cool idea. Then I remembered the first anecdote in the article about how a 911 calling system crashed because the unique ID's hit their max value. If one were to create a visualization of the system, it would still show "green" for when the system hit their max value for unique ID's. So I don't think that the solutions proposed fixes the problems at all.

    I also didn't like how it bemoaned how programmers will start programming a little bit before working out all of the architectural details. That's probably true for a brand new system, but for adding a new feature, I find it much more beneficial to poke around a little bit to see what's possible with the pieces which are already in place. It's a very helpful way to get my mind to think about parts of the code with which I am unfamiliar with.

    I love thinking about code.

  23. Coding is so much easier... by 14erCleaner · · Score: 1

    Since the invention of hexadecimal. It was such a pain, working with all those 1's and 0's on your screen. Lots of cutting and pasting to get anything done. People looking over your shoulder at your screen couldn't tell what you were doing, though, so browsing for porn at work was easier.

    --
    Have you read my blog lately?
  24. Any article titled "The Coming [ ] Apocalypse, by Kogun · · Score: 1

    may be summarily dismissed as newsstand magazine click-bait.

    The gist article may have been relevant in 1988, or 1978, or 2008, or any particular decade since the 1940s. Only the details need to be changed to reflect the latest cherry-picked failures. One does not predict a Zombie Apocalypse because of a few cases of leprosy.

    Functionally sound and working software pervades nearly every aspect of our lives. Practically every aspect of nearly all manufactured product we consume is designed/made/shipped/distributed and delivered utilizing software. That we continue to have occasional failures is simply a sign that we continue to push the boundaries of what we attempt to do with it. No one was promised a utopia. For that, we must wait for the AI Overlord. (And I, for one, look forward to welcoming.)

    The author's view is that if you can't look over someone's shoulder and understand what they're working on, then there methods must be broken: "it would have been impossible to tell whether they were trying to calculate artillery trajectories or simulate a game of tic-tac-toe". Let's ignore that the same goes for any hardware development. Likewise, we can't distinguish between a man working a math problem on a plane, and a man carrying a bomb on a plane, so math must be broken, too?

  25. And it's getting worse by computational+super · · Score: 2

    IDEs ... did little to actually change, this basic alienation

    As far as I can tell, although they do make the day-to-day job of programming computers much easier (and yes, I did start coding before there were any IDEs), they've made things worse in terms of expectations. Even as getting programs correct is getting harder, the people who don't do it are looking at the tooling and the support, and the how simple the very basic stuff is, and thinking, "this looks easy, therefore it must be easy, therefore if this guy can't get it done in a couple of hours, the only possible explanation is that he's incompetent."

    --
    Proud neuron in the Slashdot hivemind since 2002.
    1. Re:And it's getting worse by gweihir · · Score: 1

      I have gone back to plain text-editor and command-line compiler and debugger. I do not even use DDD or Emacs compiler integration anymore. No need. IDEs would just waste my time. Coding is hard enough when you do it directly.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  26. If code is too hard to think about by guruevi · · Score: 4, Insightful

    You shouldn't be in the field of software development. Whoever uttered that statement should be fired from any programming related job.

    It does require a special sort of insight (eg. being able to keep track of state and thinking much more abstractly about computers than what you're used to) which can be both acquired or natural but is only improved by practice but it's by no means impossible to think about code and what it will end up doing. In most cases, programmers have thought about ways the program can fail (eg. buffer overflows) and either think it's no big deal (it will never get connected to the Internet) or have to give up finding solutions for it due to lack of time or funding.

    --
    Custom electronics and digital signage for your business: www.evcircuits.com
    1. Re:If code is too hard to think about by jareth-0205 · · Score: 1

      Isn't that the exact problem - that we think we know how hard it is, but maybe we really don't? We have well-trained ourselves to expect very little of computer systems, they are woefully unreliable in ways that we just wouldn't expect from other things eg architecture or medicine. I think one of the most dangerous assumptions you can make is that things are easy and it's all fine - that's exactly the point where you end up with a 911 call system go down because of an integer overflow.

    2. Re:If code is too hard to think about by guruevi · · Score: 1

      If your program is so complex that you don't know what it does at all times and how it can fail, it's too big. The core Unix tools are a few hundred lines in code yet you can build immensely complex systems with it by tying the inputs and outputs together and those things often go on for decades.

      I myself run a medical imaging receiving system with code that's been written in Perl approximately 2 decades ago and the Perl simply ties one program's output to a buffer where it then splits some strings and spits out a report. This is massively simpler, cheaper and orders of magnitude faster than the same functionality within EPIC (a big name provider of EHR).

      A lot of companies have lost that vision and are building monolithic monsters of code that nobody ever can troubleshoot, even code analyzers have problems traversing all of the possible trajectories.

      And if you're building a 911 system, you would think that you've at least got a number of fail overs.

      --
      Custom electronics and digital signage for your business: www.evcircuits.com
    3. Re:If code is too hard to think about by david_thornley · · Score: 1

      If your program is so complex that you don't know what it does at all times and how it can fail, it's too big.

      If your program isn't that complex, there are some very useful things that I guarantee it isn't doing. Things should be made as simple as they can be, and no simpler. Some real-world tasks are extremely complex.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  27. Nope by Anonymous Coward · · Score: 1

    You're forgetting that much of the environment your code has to work in consists of more code. And while we often do out of habit, we really cannot ignore that forever. There's also that debugging is said to be twice as hard as writing it in the first place. So if you're being at your maximum cleverest while writing, you end up with a problem debugging that code. "Coders" tend to be in love with their cleverity. And the people who're just writing code because it's a job typically aren't that clever in the first place. That's all before the corner case coverage incompleteness theorem and all that what follows from there.

    So yeah, the root of the problem is complexity, too much of it. Not that TFA has a sensible answer. In fact, while they correctly identify some problems, their solutions are too clever by half, also. Buncha ironic hipsters.

    But anyway, this is a deep and thorny problem that so far we're only compounding. We certainly haven't seen the last of it yet.

  28. complexity will lead to different techniques by Lobachevsky · · Score: 1

    In about 100 years, the codebase of most simple appliances will start to resemble the size of the entire genetic material for a small insect. While no human can possibly think about the entire DNA sequence for even a simple creature, we start to think of which alleles can be switched "on" or "off" and cut and paste sections using CRISPR from related codebases. This is the ultimate in "script kiddie" hacking, but that's where we are with complex code like genetics, and that's where we will be with manmade code as well once it reaches hundreds of billions of lines of code.

    You might think, "no human can analyze or write that much code!!!", and you would be correct. However, we will start using more and more automated tools. We will have programming interfaces where you can just talk to it and roughly describe what you want and it will spit out a portfolio of possible solutions like a commissioned artist might at their patron's behest. "I want my self-driving car to prioritize skipping potholes over saving running over kittens!". And while those solutions will look polished and smooth, it will be anything but in the underlying code and employ not just hideously complex code but hideously complex data like random forests or gradient-boosted regression trees with tens of thousands of trees and millions of leaf nodes for the simplest of classification questions, "is it a pothole or a kitten?".

    It will be akin to those Frontpage and WYSIWYG web editors that spew out hundreds of thousands of lines of HTML code for the simplest of web pages. We will move to an FDA-like deployment process, where no one reviews the code but we just test it in simulation, and then in real life with mice and then monkeys and then humans. It will take 5-7 years to release code because no one will understand what it does or its long-term side-effects like modern pharmaceuticals. The QA-process will just involve large-scale clinical trials and zero code review.

  29. This is connected to a Kickstarter project by jetkust · · Score: 1

    After attempting to read through the 100 million lines of article I gave up around the point where they started talking about writing flowcharts to represent code. But they did mention this was connected to a Kickstarter project called Light Table (which apparently somehow inspired Apple's Swift??). So I watched the kickstarter video ( https://www.youtube.com/watch?... ) and the kickstarter page ( https://www.kickstarter.com/pr... ) and I still don't have a clue what it is, what is new about it, or how it makes programming unnecessary. Are we supposed to be spending writing tools that write programs instead of writing programs? Aren't we already doing that?

    Maybe someone with an entire day of their time can read the article and decipher what it is they are talking about.

    It sounds to me more like they are making code harder than it actually is.

    1. Re:This is connected to a Kickstarter project by david_thornley · · Score: 1

      Writing programs that write programs can be a very useful technique. However, people have been trying to come up with ways to eliminate those pesky programmers for pretty much my entire lifetime, and I haven't seen any indications of success, ever. It's possible to write tools that eliminate some of the complexity around representing a problem, and it's possible to write tools that can come together to represent lots of problems, but either the program-writing tools are very limited or they only accept stuff written in some formal language - in other words, they're compilers from one language into another.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  30. I don't even see the code by GameboyRMH · · Score: 1

    Anyone looking over a programmer's shoulder as they pored over line after line like "100001010011" and "000010011110" would have seen just how alienated the programmer was from the actual problems they were trying to solve; it would have been impossible to tell whether they were trying to calculate artillery trajectories or simulate a game of tic-tac-toe.

    All I see it blonde, brunette, redhead...

    --
    "When information is power, privacy is freedom" - Jah-Wren Ryel
  31. Re:Job security for the capable. by gweihir · · Score: 1

    Ah, yes? The only point of that was marketing and some politicians simulating being "modern" anyways. And some nice rip-off-type business models for "coding schools".

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  32. Sounds Similar to the IT Conundrum by CodeHog · · Score: 1

    "Why do we pay IT, everything is working without their help." "Why do we pay IT, nothing is working". Sub in developers for IT. YMMV.

    --
    Fat, drunk, and stupid is no way to go through life, son.
  33. Bootcamp morons by sdinfoserv · · Score: 1

    Yes programming is difficult. Being creative logically, understanding the big picture and where the project is going, being able to get lost for hours in your head and staying focused as your tracking variables and flowing data ya, it’s hard. It’s also exactly why this silly notion that “everyone needs to learn to code” is simply asinine and coding boot camps are a lie. Different people have different skills

  34. Re:Utter wank by gweihir · · Score: 1

    Well, I have when doing I/O to specific hardware components. But that is about it. For actual code, I always had at least an assembler.

    I do agree that the stance of the article is mostly BS, also because you _cannot_ think like a computer. Computers are exceptionally dumb in a very fast fashion. No human can think like that. Smart humans can think in a smart and complex fashion pretty slowly. That is nothing alike computers.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  35. Possible software is hitting a complexity limit? by swb · · Score: 1

    I wonder if the existing method of writing software isn't just running into the limits of general human cognition.

    We can conceptualize complex systems or tasks, but to make software that does them requires a very low level of understanding of how it will work and gluing together many low-level functions to get to the finished complex system.

    Fixing a system like this when it doesn't work as expected requires an encyclopedic level of knowledge about all of the low level pieces as well as the larger picture of the entire system.

    I'm sure there are people who are better at this than others, but maybe we're just reaching the point where the systems are so large and there are so many of them that we lack the access to the human resources or methods of automation capable of managing them. Ordinary, even conventionally above-average people, simply aren't capable of effectively managing the complexity involved.

  36. Flamebait to declare "we don't care to" by SuperKendall · · Score: 1

    The problem is that software engineers don't understand the problem they're trying to solve, and don't care to

    I thought the article had some issues but this one really made me mad... I have worked with scores of professional developers who indeed spent a LOT of effort trying to understand the domain (problem) we were writing software for, most of them would push back on requirements that made no sense for "solving the problem" when we knew it would hinder (or at least not help) users.

    Also on a sidenote, the TLA+ stuff sounded interesting but if you go find the webpages that describe that, they are pretty old and have not been touched in years... it sure seems like yet another flash in the pan magic bullet for creating software. Has anyone successfully used TLA+ on projects in recent times?

    I don't think developers are inherently against mathematical models to help define systems, it's just that invariably the models we have all seen applied tend to fall down trying to describe the complexities of real software. I mean, remember the UML craze (not mentioned in the article), which had significant efforts trying to build software from a model... but the major issue (at least at a company I worked for) was that the final code was way to complex to be represented in the model. The model became just another kind of requirement that after some time failed to track with the results.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  37. Re:Utter wank by gweihir · · Score: 1

    These were not really computers in the modern sense. No capability to run general-purpose code. Also, if I remember correctly, they basically had people doing the job of an assembler between the coders and the machines. Might even be were the name comes from.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  38. Re:Law is the hard part by gweihir · · Score: 1

    Lawmakers are what happens when people think their written word defines reality. Alternatively they start writing holy books, which is even worse.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  39. But the key is, over time... by SuperKendall · · Score: 1

    I read the article on Friday and remember how it was trying to propose some kind of other way to visualize the behavior of code, and thought it was pretty cool idea. Then I remembered the first anecdote in the article about how a 911 calling system crashed because the unique ID's hit their max value. If one were to create a visualization of the system, it would still show "green" for when the system hit their max value for unique ID's. So I don't think that the solutions proposed fixes the problems at all.

    I also read it Friday, and also thought that idea was interesting - as mentioned in the article, Swift Playgrounds has something a bit like that, because after running a session you can see some values charted over the lifetime.

    That to me is the key, not that you can simply visualize the software but that you see it over time - so in that case it wouldn't be all green, you'd see the software over the lifespan of projected use, and at some point see red when the ID boundary was exceeded... at least that's how I see such a visualization factoring in time.

    I still think it's an interesting approach to try and model and visualize software behavior over time, perhaps we'll see some more analysis tools around that, which hardly anyone would use just like all of the other code analysis tools we have today. :-)

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  40. Same as it ever was by Tablizer · · Score: 1

    "The serious problems that have happened with software have to do with requirements, not coding errors."

    I've seen roughly an even mix of both. Bleep happens.

    As far as car control software, back in the days, you had to keep your hardware controls fairly simple for manufacturing costs, repair-ability, and to have tolerances for wear and manufacturing defects.

    Software removed many of these constraints and so companies have stretched software to its limits in order to be competitive in terms of performance and fuel efficiency. It does NOT have to be complex, but you likely will be sacrificing metrics to gain simplicity. Perhaps much if it can be reworked to be simpler, but that requires a lot of software and hardware engineering effort, and may delay car models. At least the current code is road-tested.

    In short, there's no free lunch. Now that more functionality of an automobile has moved to software, companies are flummoxed because they are used to focusing on hardware. Their cheese moved:

    Welcome to the Change Club. The first rule of the Change Club is that the first rule will change.

  41. Problem vs Programming domain thinking by Martin+S. · · Score: 1

    Too many developers solve the problem at a low level programming domain language and constructs. They need to learn to solve the problem. Decompose he problem in natural language with natural language abstractions. Test Driven development, particularly using BDD for requirements and Unit Testing is a very effective approach that allows the implementation to be varied.

  42. Re:Job security for the capable. by computational+super · · Score: 1

    job security for those who can

    I doubt it. More like taking the blame for everything.

    --
    Proud neuron in the Slashdot hivemind since 2002.
  43. Lack of understanding inflates code by rbrander · · Score: 3, Interesting

    Tight code that just does the job and no more can be done, but the writer, or the guy standing over him, has to *deeply* understand the problem, from the inside. Frankly, I think it's easier to teach the problem-expert programming than it is to teach a programmer the problem.

    I worked for my local water/sewer utility, first as their IT head, then moved back to my first degree, engineering - but it was my IT that got me the engineering job, which was putting all our pipes, valves and other assets into a giant database that was also a "GIS", a map. We had already for years been switching to mapping with CAD, and had various macros and programs written within its development environment to make, say, placing a hydrant a single graphic operation.

    So I got the one contract CAD programmer to greatly expand his "macros" into a comprehensive drafting system where the draftsman first drafted the underlying network, then all the pipes and other assets on top of that; the database understood the connected network and could trace it, analyse flow. The coding from the one former draftsman, who completely understood the drafting problem and the needs of his fellow-draftsman customers hired a couple of young programmers,made sure they were doing what his customers needed, and was done in a year for about $400,000. The IT department charged me much more than that to just supervise him and make sure he "met all corporate standards"!

    Well, the IT and Mapping departments hated this software because it ran on top of the CAD package, Microstation. They insisted this was at end-of-life and all mapping was going to an "All-GIS" environment in the 800-lb gorilla of the GIS market, ESRI. They went over me (multiple levels) to get a huge project approved to replace my little $400K amateur effort from a mere engineer.

    Long story short, that project peaked at 35 staff, went 3 years, spent $8 million and generated I can't imagine how much code because it was all with Microsoft programming tools that load in whole libraries every time you do anything.
    At that point, management realized that it was another $2M-$3M to finish it, and testing showed it would offer no improvements and maybe some slowdowns.

    They cancelled it.

    My $400,000 CAD software is still there, not yet "end of life" at the age of 20, some 8 years after it was declared good-as-dead. Pity about the lost $8M. What I could have done with that! (There is, by the way, no sign of the whole CAD market vanishing in favour of GIS. Not surprising. Our IT and mapping people also picked Microsoft Silverlight as a winner.)

    Whenever I read about giant code messes, I wonder if good, working software for the same problem would be less than a tenth that size. And it isn't bad programmers, it's bad project management. You should never put IT in charge, always their customer. This absolutely requires IT-savvy customers, and these horrors will go on until we get some.

  44. Re:Getting a headache... by Anonymous Coward · · Score: 1

    We, at Special Education for the Santa Clara County Office of Education, couldn't agree more with you!

    For the valuable /. users that might already have read the following, please note that there is an important update.

    IMPORTANT UPDATE:
    Special Education for the Santa Clara County Office of Education has invested money to buy Chris a new chair:
    http://www.keynamics.com/image...

    Information about Christopher Dale Reimer and autistic people:

    Autistic people have obsessions about things normal people don't care. For example, one of our autistic patient went haywire when he realized that there was a penny missing in his pocket change.

    To calm him down, one of our educator pretended to have found it on the floor and gave a penny to him.

    The autistic patient condition went even worse because he realized it wasn't the same penny!

    Chris has an obsession with budgeting every penny. He doesn't understand that most people do not budget to the penny and have a flexible amount they allow for miscellaneous items.

    I am Nancy Guerrero and I am Director of Special Education for the Santa Clara County Office of Education. We use Chris' (a.k.a. creimer,cdreimer) picture in our document because he is the hardest case we have ever had to handle:
    http://www.sccoe.org/depts/stu...

    Our artists were inspired by the low carb diet that Christopher follows scrupulously for the small lunch box and by the picture linked below for the rest. I am sure that you will notice the similarities such as the bump on the side of his chest and more:
    https://ibb.co/gVad65

    Please be easy on Christopher although, I am aware that some of our staff handling Chris post joke comments here and obvoiusly, the Santa Clara County Office of Education disapprove that behavior vehemently:
    https://school.discoveryeducat...

    But it isn't Chris' fault if he is the way he is. We do the best we can do with him and he is partially integrated into society. We try to cure his abnormal need for attention but he is kind of stubborn and won't listen to anybody.

    Thank You dear users,
    -Nancy Guerrero

  45. And even if somebody does come up with something.. by computational+super · · Score: 1

    Microsoft on Visual Studio, an IDE that costs $1,199 a year

    Not that I think Visual Studio is helpful or useful or much more than bloat, but supposing that somebody did do the research and expend the effort to come up with something that actually WAS useful in taming software complexity, and it cost $1,199/year (or hell, even $199/year), the first question from management would be, "how do we get that for free?"

    --
    Proud neuron in the Slashdot hivemind since 2002.
  46. Lessons in CRUD by Tablizer · · Score: 2

    I've been working on CRUD-centric applications since before the GUI era. And I wonder why we keep reinventing CRUD systems? Most of the "logic" COULD be defined as attributes, such as data dictionaries, and relatively simple "rule tables" that are kept in the database. These could handle roughly 95% of the logic, and most the rest could probably be put in stored procedures to make them app-language-change-proof.

    I've seen products that kind of come close, but they get tossed out when the shiny New Thing comes along and kills sales or momentum. People are so scared of being left behind that they throw everything out and start over to keep up with the IT Joneses. I don't really blame them: agism is real and ugly in our industry.

    I agree the front-end style keeps changing, such as going from CUI to GUI to Web to mobile etc., BUT most of the principles of CRUD have not changed. Do we really have to throw out the entire CRUD engine to get the latest front-ends?

    Techniques like MVC were supposed to separate front-end issues from the rest, but as implemented I fail to see it. They often do or assume data joins in code instead of the database, for example. That's stupid; whey reinvent the database? And they often rely on "scaffolders", which are code generators. If you are relying on an attribute-centric CRUD model, then you don't need to generate app code. Generating code means you failed to abstract ideas into attributes and are implementing low-level attribute handling in app code instead of reading/processing them directly from the attribute/rule tables. They automated bloat, not removed it. (Sure, you'll still need to generate client-side code, such as jquery handlers, but it could be at run-time.)

    Maybe CRUD is not as exciting as aerospace and thus has none of the modelling tools and abstraction languages mentioned in the article. It has a reputation as being too simple, which is not really true. Dealing with customer expectations, databases that have built up a lot of tangled cruft over the years, and adapting abstract representations to changing UI fashions is often not easy.

    1. Re:Lessons in CRUD by Tablizer · · Score: 1

      I generally agree and this is why I said, "but as implemented I fail to see it." Even the attribute-driven systems I suggest have separate entities for data definitions (AKA "models"), routing/flow (controller), and UI adapters.

      All well-partitioned/designed framework will indeed probably have some form or aspect of MVC in it.

      Another thing I didn't mention as that a one-size-fits-all CRUD engine is probably too big of a goal (unless somebody wins the big lottery). One-size-fits-all systems are usually too complex to learn quickly. It would probably have to settle on a practical set of conventions, and one would have to mostly accept the limitations of these conventions or find external work-arounds for the deviant parts.

      Or maybe have one framework for new systems and another for existing systems with messy databases behind them. The second would be more complex to handle odd data.

  47. Any TLA+ users out there? by Tablizer · · Score: 1

    Has anyone here tried TLA+? Any comments?

  48. Yes, coding == writing a proof by Flexagon · · Score: 1

    Yes, this is getting much closer to my objection to the quoted piece. Writing a program is essentially constructing a mathematical proof. Can you get from your desired inputs (assumptions) to your desired results (theorem)? Over the years, I've seen CS coursework reduce the underlying background in math, and specifically formal methods like proofs, in favor of getting in there and programming. That's a recipe for producing more programmers quickly, but not necessarily assuring that they have what it takes.

    Separately, there seems to be a very strong incentive to let a cool prototype, with all that that implies about its (non-)handling of edge cases, say, turn into critical infrastructure as people pile on to enjoy the initial benefits. We as consumers accept this all the time, and often have neither the time (or think we don't) nor the capability to question things until it's too late.

    1. Re:Yes, coding == writing a proof by gweihir · · Score: 1

      I agree. The proof-tools are a bit special (but not so different than the differences between different mathematical disciplines), in particular that you often have more elementary steps, but also a lot more of them. And you care about things like the performance of the proof, which is also a bit untypical, but nor completely outlandish. In essence, it is constructing a mathematical proof under some border-conditions as to the form of the proof.

      I also have run into the prototype-madness. My solution is to build a final solution instead of a prototype, and, if I needed one, to not give the prototype to the customer. That does require a situation where you can get the budget needed for that though, but fortunately I do not code at coder-rates, but at full consulting rates. While customers (well, managers there) routinely complain about the rates, nobody has so far complained about the results the get for the money.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  49. I'm glad! by HeadSoft · · Score: 1

    If code wasn't challenging, I wouldn't enjoy programming.

  50. Re:Who's at fault here? by gweihir · · Score: 1

    It is nobodies fault. People have limits and most are most limited when it comes to abstract thinking. That is just the way things are set up in this universe.

    I do agree on the author of that piece though.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  51. Re:Way to shift the blame from management by gweihir · · Score: 1

    It gets better when you are a highly-paid tech consultant. You still have to fight for the information, but you can usually get it.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  52. Re:Inclusion by gweihir · · Score: 1

    Indeed. And it _is_ reflected in the outcomes. A brain-surgeon with this rate of failure on standard tasks would go to jail.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  53. Requirements, not coding, at heart of article by Koreantoast · · Score: 3, Insightful
    I think this quote from the article said it best:

    “Typically the main problem with software coding—and I’m a coder myself,” Bantégnie says, “is not the skills of the coders. The people know how to code. The problem is what to code. Because most of the requirements are kind of natural language, ambiguous, and a requirement is never extremely precise, it’s often understood differently by the guy who’s supposed to code.”

    My reading of the article is that it's not coding itself that's the problem, we can do that, the problem is that we're struggling to develop requirements for more and more complicated systems. As systems become more flexible and their environments more variable, it's becoming harder to write them.

    1. Re: Requirements, not coding, at heart of article by wellingj · · Score: 1

      Bingo. All this clown is taling about is making implementation and requirements one and the same. Thats a self verification loop that offers false security if I ever saw one...

  54. walking is too hard to think about by swell · · Score: 1

    Try it yourself: Stand straight, feet side by side. Prepare to walk. First you will have to shift your weight to one side so that the foot on the other side can be raised. Balance, lift leg, move that leg forward. Did you notice that when moving that leg forward your body moves back to maintain balance? Did you notice your arms moving? Think about how your arms move while walking- do you fully understand what is happening there?

    Riding a bicycle is too hard to think about. Playing a violin is... The reality is that we do many things in life without conscious awareness. Thinking is not only NOT required, it is counterproductive. We depend upon reflex actions that are a result of repeated practice. Coding isn't that special.

    --
    ...omphaloskepsis often...
  55. math class is tough - Barbie by Khashishi · · Score: 1

    But with Brian and Steven's help, I guess I can be a computer engineer!

  56. TL;DR by next_ghost · · Score: 1

    Most of the article is just pointless storytelling that carries no useful information whatsoever. Here's the gist: The author has no fscking clue about programming. The problem: Yes, it's hard to keep all the invariants in your head (not to mention budget and time constraints) which leads to bugs. The proposed solution: Formal verification. So now instead of getting the code right, we just need to get the verification specs right. It's turtles all the way down.

    Also, not just any formal verification but some supercool (read: idiotic) graphical system where you create the specs by connecting boxes with lines. Because that's somehow supposed to be easier than working with text. Anyway, good luck finding a mistake in a spec with more than 20 boxes. You're gonna need it with all that visual clutter in front of you.

  57. Re:Slashdot is too hard to use. by sfcat · · Score: 1

    I wanted to upvote a comment. Can't easily see how to do it.

    You don't get to just because you want too. Moderation points are given out randomly to those with higher karma. Its been this way since the mid 90's so likely most of your life. If you see dropdown boxes next to comments, you have moderation points to use. There is even meta-meta-moderation (reviewing the moderation points others assigned). Its been an effective system for reducing the effects of trolling and raising the best comments to the top since before upvote was a word. And /. has had none of the issues that Reddit has had as a result. But maybe you like mob like behavior in your comments?

    --
    "Those that start by burning books, will end by burning men."
  58. Re:And even if somebody does come up with somethin by david_thornley · · Score: 1

    A rational manager would look at a tool and think, "This is $1199 a year for a developer I spend $150K a year on. Does it make my developer 1% more efficient? If so, it's worth it."

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  59. do it right by nten · · Score: 1

    Yes! In the real world there is often time to do something thrice or more but nowhere near enough time to get it right on the first try. Doing is the quickest way to learn. One of the most common mistakes I see is leaving integration test until after "design" is complete.

    --
    refactor the law, its bloated, confusing and unmaintainable.
  60. TLDR by jman.org · · Score: 1

    I tried to read the article, but it was too hard to think about.

    Actually, it does raise some good issues, but one corollary of its central point - that as systems grow more complex, the potential for error increases - is that as time goes on, our understanding of how to solve a particular problem will change.

    Putting Lovelace aside, we've only been working with software for less than a century. Many of humanity's technologies are quite a bit more mature, stable, and less prone to such error, as we've had time to work out the kinks.

    Were this article to be re-visited in 2117, many of the "problems" it raised would no longer exist (though certainly other, newer ones that had yet to be "debugged" would).