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

397 comments

  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 Anonymous Coward · · Score: 0

      Prgrammers - sheesh, they think they're all so important, but in the end it's all just typing. So why should they get more than a secretary?

    4. 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.
    5. 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
    6. 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.
    7. 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)

    8. 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.
    9. 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.
    10. Re:FFS this again? by Anonymous Coward · · Score: 0

      There is never time to do it right but always time to do it over.

    11. 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.

    12. 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
    13. Re: FFS this again? by dougdonovan · · Score: 1

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

    14. 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.
    15. Re:FFS this again? by Anonymous Coward · · Score: 0

      Recursive definition in code is ok, recursive definition in requirements is painful. I have been in far too many project discussions where I asked "what is it you want the system to do?" and the answer I get is "well, you tell us what it is able to do".

    16. 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.
    17. Re:FFS this again? by Anonymous Coward · · Score: 0

      Code *IS* hard to think about....for the author of this article, and for the intended audience.

      But that's why they aren't coders.

    18. 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.

    19. 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.
    20. 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.

    21. Re:FFS this again? by Anonymous Coward · · Score: 0

      I thought it was faster horses, younger women, older whiskey, and more money?

    22. Re:FFS this again? by Anonymous Coward · · Score: 0

      > Tell your user he gets his universal Undo button just as soon as he gets his universal quantum computer.

      Is that where your document is both saved and not saved until you look at it?

    23. 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.

    24. Re: FFS this again? by Anonymous Coward · · Score: 0

      Pretty sure itâ(TM)s not the project managers responsibility to gather or confirm requirements are correct.

    25. Re:FFS this again? by Anonymous Coward · · Score: 0

      Which makes the original poster look pretty fucking stupid.

      Just keep a list of temporary saved versions in the TMP folder. Say, 20 of them. Give the user the ability to revert to any one of them via simple GUI. This will meet 99.9% of the user requirements, and *NOT* require much development time.

      So, dear poster, explain to me please why you are ignoring your users? Your company will not last long with that mentality in the engineering/software team.

    26. Re: FFS this again? by Anonymous Coward · · Score: 0

      dafuq is wrong with your apostrophe key?

    27. 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.

    28. 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.

    29. 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.
    30. Re: FFS this again? by Anonymous Coward · · Score: 0

      Point proved. A never ending circle jerk of buck passing and bullshit...hence the parent poster's comments are correct: it's all management's fault!!!

    31. Re: FFS this again? by NicknameUnavailable · · Score: 1

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

    32. Re: FFS this again? by Anonymous Coward · · Score: 0

      I think your customer is asking for change control. Like git or mercurial. You think the document work flow has ended on save. For the user the document work flow is not coupled to the online time of the os and program. Save might be the method of bookmark the work until the next time to work.

    33. 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 IHateFatCashews · · Score: 0

      A new diesel emission algorithm from Volkswagen. Guarantee to pass inspections every time.

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

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

    4. 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...

    5. 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
    6. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      A new diesel emission algorithm from Volkswagen. Guarantee to pass inspections every time.

      That's not new. ;)

    7. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      What seems more fishy is the story about 1s and 0s... did anyone ever do anything substantial in bit strings? I don't remember seeing machine code that wasn't in hex.

      A quick look suggests maybe it was possible for the 4004? I remember starting with the 6502, and that was always in hexadecimal, which got released only a couple years after.

    8. 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?"
    9. 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.

    10. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      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"

      Some early computers that didn't use punch cards or paper tape require manually entering code via switches. MIT hackers had programs, especially boot loaders, memorized. There was always someone sitting behind the hacker who watch the data entry and ready to jump on a mistake.

      Source: "Hackers: Heroes of the Computer Revolution " by Steven Levy

    11. 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
    12. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      99.95 million of those lines are for the entertainment system. N.B. I used to design software to control throttle. In its essence, it's one line of code + 2 more to read sensors and write a hardware move something. If you want to get fancy, you use matlab and get a few multi- dimensional charts for fuel air mixtures at which point you're up to hundreds, but it's all boiler plate and usually software written.

      It took on the order of 10,000 bytes to land on the moon and physics hasn't changed much.

    13. 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.

    14. 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.

    15. 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.
    16. 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

    17. 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
    18. 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
    19. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      code by flipping 8 switches and then pressing a button to push that single byte of code into the computer.

      That sounds like the way punchcards were written, it probably didn't feed into the computer directly but that was pretty much it.

      There was a period of time when it was used alongside assembler. Punchcards were probably used more for entering data than coding, but would have been used for both. And what you had access to would depend on what type of computer you were using.

    20. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      There you are posting crap amazon affiliate spam from yet another fake account you disgusting fat sexist tube of lard, Christopher Dale Reimer!

      You can be sure I will be watching this fake account too. I know this is you because you told me you were working on your freepass 11 file server and you are so dumb that you can't even masquerade yourself properly.

      Now, I told you I was out of meds last week and you didn't even care to contact me you lazy fucker.

      How many time do I have to express the emergency of the situation??????

      The python click script you wrote for my pheromone revenue stream web site suddenly stopped to work!!!!!!

      You fucking incompetent python script writer!!!

      When it works, I get 4000+ clicks a day on my pheromone revenue stream web site but only 5 or 6 without it!!!!

      Now, it seems like you dont care and that you have abandoned me you heartless fucking pig!

      Bonus:
      Here is a story that creimer told me when convincing me what a hard life he had:

      The tree was him and the tree knot was his butt hole!

      So, his uncle packed his fat ass with lard and with his cock! Not that it makes much of a difference but anyway, there it is!

      Signed:
      The girl that used to love you and now hates you, burn in hell where you belong you sexist pig!

    21. 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
    22. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      C.D. Reimer is a renowned Slashdot collaborator, as he puts it himself; "Because of the quality of my posts and my article submissions, I'm a highly rated commentator and moderator."

      But does anybody ever wondered what "C.D." stands for? Well, it stands for Creimy Dumpty of course!

      Creimy Dumpty sat on the wall,
      Creimy Dumpty had a great fall.
      All the king's horses
      And all the king's men
      Couldn't put Creimy Dumpty
      Together again.

      Creimy's siblings video and theme song, very realistic, especially the pants, just like Creimy's:
      https://www.youtube.com/watch?...

      Creimy's real pictures:
      Before the sex change:
      https://ibb.co/cc7Ddw
      After the sex change:
      https://ibb.co/gVad65

      Creimy's "enterprise-level" chair, he talks about it all the time on slashdot:
      http://www.keynamics.com/image...

      Creimy's head, while his supervisor was talking to him, not with him, since it is impossible to do with Creimy:
      https://school.discoveryeducat...

      Creimy acting in educational resource document, he actually confirmed himself on Slashdot that he was handled by Special Education for the Santa Clara County Office of Education! He is really a king Dumpty!:
      http://www.sccoe.org/depts/stu...

    23. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      Exactly! 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

    24. 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.
    25. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      Assembly -- the language was Assembly, not Assembler.

    26. 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)
    27. 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.
    28. 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!

    29. 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
    30. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      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.

      While you are correct - you seem to ignore that a modern vehicle has, at least, 20 of these embedded systems just to network with controller area networks.

    31. 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.
    32. Re: Obviously bullshit statement there by Anonymous Coward · · Score: 0

      Snakeoil if course. Also note this line of bullshit:
      "What made programming so difficult was that it required you to think like a computer."

      No. It doesn't and never did. It requires you to be able to think logically and reduce complex processes into basic sequences. Something many people are shit at doing.
      Programming isn't "hard" so much as it is either tedious or requires novel and inventive approaches to tasks.

    33. 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.
    34. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      Looks like a 12-bit instruction set (probably PDP-8 or something similar)

      Back in the PC stone age (up to circa 1982), assemblers were available, but were pretty expensive.
      So instead, we would program in assembler (using pen and paper) and then hand-assemble the code into binary (usually in hex)

      You could get a booklet for each kind of processor that would list all its available instructions in hex and binary.
      The instruction listings would show what registers they used and how many clock cycles they consumed.

      Once the code was hand-assembled, you could enter it as hex using something called a monitor program,
      or you could just poke the values directly into memory and either run the program or save it out as a binary file.

      After just a few weeks of doing this, you could just look at the raw hex and read it back as code.
      Early hacking techniques involved an awful lot of exactly this sort of thing.

      Nowadays there are tools to do these sorts of things, and it is no longer a skill that anyone needs or wants.
      But just because you and your peers couldn't ever imagine working this way, doesn't mean that nobody ever could or did.

      I strongly assure you otherwise.

    35. 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.
    36. 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.
    37. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      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.

      It's 8 MB for state of the art these days. Lots of the memory is eaten up by data (tuning/calibration, mapping X to Y), not code.

    38. 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)
    39. 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.
    40. 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.

    41. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      I grew up with 80s home computers, so I started with a full keyboard, built-in BASIC, floppy drive and a 40x25 text display. But I once had the chance to program a simple computer that needed its program entered through a numeric keypad, byte by byte, and only had a two character hex code display for output. I had no experience with that thing and only a technical manual for guidance, but I was instantly able to write a simple program with loops, counters, etc. It is not that hard. You write your program on paper, calculate offsets and manually convert the mnemonics into byte values. After that it's just a typing exercise. It must have looked like magic to the computer-illiterate onlookers, if their reaction was anything to go by. But it really only takes focus and a lot of page-flipping through tables in a technical manual.

    42. 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]$

    43. 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.
    44. 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.
    45. 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.

    46. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      So this is going to date me but I remember having to use a bank of toggle switches on the front of a Data General Nova 2000 to "key in" a series of instructions (set the bits, press the submit, rinse and repeat) that would then activate a paper tape reader that we fed a roll of punched paper that loaded a system boot loader that could read from the massive disk pack in the drive drawer. Not exactly programming in binary but not too far removed from that.

    47. 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.

    48. 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!

    49. 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...

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

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

    51. 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.

    52. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      Writing full programs this way ended pretty quickly. Generally the front panel was only used to toggle in bootstrap code for the paper tape reader, disks, etc. Real assemblers hit the scene pretty quick followed by FORTRAN, LISP, COBOL, etc by the 50's.

    53. 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.
    54. 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.

    55. 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.

    56. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      Don't forget all the micro-code running on all the embedded chips. Too many CS people don't even know such code exists.

    57. 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.

    58. 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.
    59. 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.
    60. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      flipping 8 switches and a load switch to load a dozen instructions was how early minicomputer (honeywell, data general) were booted up.

      I believe it was Turing who was able to 'read' the content of memory which was displayed on a cathode ray tube as rows of lit (or not) dots in order to debug a program.

    61. Re: Obviously bullshit statement there by boa · · Score: 1

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

    62. 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.
    63. 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.

    64. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      "Assembler language" is colloquial for the language fed into an assembler, and has been for decades.

      You can find books from the 1960s and '70s with titles referring to "assembler language" if you go to a library. You know what a library is, right? It's how we got information in the 1960s and '70s.

    65. 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
    66. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      I heard that VWs come with 16MB.

    67. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      I believe the programs were "built" with paper and pencil and the flipping of switches was only mechanic entering. Most software projects need similar herculean effort today, before even touching a keyboard.

    68. 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
    69. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      My bullshit meter overflowed

      At least it didn't overwrite the adjacent stack vars. I'm still cleaning up that mess....

    70. 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
    71. 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".

    72. 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
    73. 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
    74. 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
    75. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      Jesus, are you guys anal!

    76. 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...

    77. 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.

    78. 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.

    79. Re:Obviously bullshit statement there by Anonymous Coward · · Score: 0

      Apparently you forgot "accuracy" is different from puritanical rigid obsessive perfectionism.

  3. Job security for the capable. by Anonymous Coward · · Score: 0

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

    1. 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.

    2. 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.
    3. 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.
    4. Re:Job security for the capable. by Anonymous Coward · · Score: 0

      Extend this to funneling everyone through rubber-stamp "college" funded with grants and debt and you've got something.

  4. 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 KiloByte · · Score: 0

      Seriously, try shopping for shoes. Anything you bring home will get you shouted at by all women in the family. And there's even no logic there -- the same piece of clothing/footwear/headwear she picked can at any moment turn into "you can't wear this!".

      As Barbie said: "Shopping is hard, let's go coding!".

      --
      The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
    3. 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.

    4. 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?

    5. 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.
    6. 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.
    7. 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.
    8. 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
    9. 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.

    10. 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.

    11. 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).

    12. 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.
    13. 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.

    14. Re:What's the point of this article? by Anonymous Coward · · Score: 0

      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.

      It's not just about xxxJonBoyxxx specifically, though.

      (joke aside, the distinction between "real problem" and "simple business-logic" appears entirely subjective. IE for xjbx they're all "real problems", while for a savant they may all be simple business logic.)

    15. 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?

    16. 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.

    17. 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
    18. Re:What's the point of this article? by Anonymous Coward · · Score: 0

      You better not be giving up the goods if there's anything remotely resembling an output function in his code.

      There's an npm library for that. If he didn't use it, then he's a lost cause, kick him to the curb.

    19. Re:What's the point of this article? by Anonymous Coward · · Score: 0

      Yes, just like all that icky mechanical engineering gets in the way of solving the problem of driving my car across this canyon. There has to be an easier way! Morons.

    20. Re:What's the point of this article? by Anonymous Coward · · Score: 0

      Before you call yourself a JavaScript programmer, read the first volume of "You Don't Know JS" (free ebook). Most people who use a JavaScript framework know only enough JavaScript, say, "Hello, World," to make the framework work but not enough to understand and solve problems when the framework doesn't behave.

    21. 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.
    22. 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.

    23. 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."
    24. 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."
    25. Re:What's the point of this article? by Anonymous Coward · · Score: 0

      Did your customer ask you to do "custom memory management"? If not then why are you doing it? Sure it must be nice to grok all kinds of fancy low level stuff but at the end of the day, you don't do what you are not asked to do.

      And that is the beauty of high level language: they have commands that more closely answer to the needs of the customer. Low level languages pander to the needs of the computer. Fuck that shit. I'm not in this business to spoon feed a computer.

    26. 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.

    27. 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?

    28. 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.
    29. 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
  5. 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 Anonymous Coward · · Score: 0

      then you will be beat to market by the people who actually get off their asses and start coding. the sooner you can get an alpha product into the customer's hands, even if it is not actually addressing the problem they are trying to solve, the better. At that point you are locked in and can release 'improvements' once you understand the scope of the problem. I've sent customers entire solutions that were developed for other industries just to get our foot in the door, and then start coding after I receive 'feedback'. It gives you months of extra time.

    3. 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)
    4. 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.
    5. Re:Then they're idiots by Anonymous Coward · · Score: 0

      I will never be beat to market, as I don't make widgets. I'm a contractor. You hire me when you want something custom done. And you pay my prices because you want it to work. I just had a project pushed back 6 months because in our discussions it became abundantly clear that the customer had no idea what they wanted. We work with customers to get requirements figured out, but in this case different groups wanted different things and try as we might to act as mediators, they couldn't agree, hence we said "come back to us when you can at least agree on what you want".

      You can say that we'll be beat to market all you want, but I used to work in the environment you describe for a long time, and more often than not you end up with a product that doesn't work well that nobody wants. With the method my contracting firm uses, we deliver 100% of the time, on schedule, within budget and our customer satisfaction places us at "extremely satisfied". Understanding what it is that you're trying to do is nearly 100% of that. Now, for us it's very easy as we're doing custom software, but even in the commercial space, you need to sit down and have some internal design meetings and figure out exactly what it is that you're trying to accomplish, even if there are no external customers involved. The fact that you seem to be advocating not knowing what you're trying to do first is honestly sort of terrifying to me.

    6. 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
    7. 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.
    8. 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.
    9. 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.
    10. 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.
    11. 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.

    12. Re: Then they're idiots by Anonymous Coward · · Score: 0

      I just left a software job that was like the one described by him/her.

      Dept got laid off. I have a severance package. I moved to the beach. I'm gonna do some B.S. job to pay the bills and work on games and entertainment products in my spare time.

      I never want to work in software professionally again because of that position. It IS terrifying, and it HAS completely pervaded much of the industry if what my friends still in it elsewhere say is true.

      Fuck that shit.

    13. Re:Then they're idiots by Anonymous Coward · · Score: 0, Funny

      TheDarkMaster go suck your own dick some more you fucking faggot. I bet you suck at both you cocky fucking cunt.

    14. Re:Then they're idiots by Anonymous Coward · · Score: 0

      Those who start coding right away almost always have a ball-of-mud within 6 months. I've been on several projects that were actually duplicated because poor inter-departmental communication. In every case, I spent more time researching and thinking about the issue and the other team started coding. 2-4 weeks into the project, they had an alpha product and I was just starting to code. 4-6 weeks into the projects I was done and 4-6 months later they were dumping the project on another team to support and was an unstable, slow, brittle piece of crap that silently failed and corrupted data.

      One manager told me that I was the slowest to show something but always the fastest to complete and always over-delivered well above expectations. I actually had a state level project recently where the customer was unable to answer any of our questions, but I had a general idea of what they wanted. We were given 1 year to complete the project, but 8 months into the project and no info from the customer, I just started making it myself. I just thought to myself "If I was them, what would I want?". 1 month later, single-handedly had something to QA, almost no bugs were found, project went live, got slammed with over 100,000 users in a few days, everything went perfectly. 6 months later we were told that there was a conference involving 200+ district level administrators from across the state, and they unanimously said there were no complaints. The head person of the state that over-sees these kinds of projects said that he had never seen such a large scale project go so well in his many decades and we've set the bar impossibly high. $12mil contract saved.

    15. 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.
    16. Re:Then they're idiots by Anonymous Coward · · Score: 0

      I largely agree with you, but think it goes even deeper.

      You can understand the problem without being able to code. But you can't create the truly right solution without a full understanding of the problem, the system within which the problem is presented, and the capability and limitations of the computing system within that. This is because fitting a computed solution within a system optimally almost always requires adaptations on both ends.

      When you occasionally approach a problem as a software engineer and find yourself in the position of explaining to the customer that the best solution to their problem is to change their procedures in some fashion that eliminates the need for the software altogether, you have graduated from software engineering to system engineering.

      The best engineers understand many tools and apply them to the full real-world situation rather than solving all problems by hitting the most obvious target with their favorite hammer.

      Those engineers aren't taught, they are born. They are a precious resource. Because of that, we must also respect and find value in the projects that solve problems in an OK fashion and in the very smart people who do them. They are a precious resource also because those born with the full gifts would be driven to suicide if they had to do it all.

    17. Re:Then they're idiots by Anonymous Coward · · Score: 0

      When I was young, I wanted to code computers, not applications that ran on computers. Alas, app work was all I could find, so I did what I could. Quite often I was called in to help troubleshoot something that no one else on the team could figure out, and it was because they didn't really understand what the computer was doing.I did, so I fixed it. They talked better with the clients than I did, though.

      It seems that programmers today don't really understand what the computer does -- app programmers, that is. The tools used today to produce code are so abstract from the actual operations of the computer, that app coders simply sit there blinking when something in one of their black boxes doesn't work.

      I'm retired on disability (getting hit by a car can really mess you up) as of this week, so I get to stop caring about this kind of thing, though.Best of luck to everyone 'til the robots take over. I'm on their side, just so you know. (hmmm... perhaps I took one too many vicodin today...)

    18. Re:Then they're idiots by Anonymous Coward · · Score: 0

      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.

      People that can do it all are gold... but a team that can do it all and communicate well is even better.

  6. Slashdot is too hard to use. by newdsfornerds · · Score: 0

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

    --
    Damping absorbs vibrations. Dampening is caused by moisture.
    1. 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
    2. 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."
  7. 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 Anonymous Coward · · Score: 0

      Yes. I am a damn good coder. So I code.

      I would be a terrible artist, salesperson, etc. So I don't do those things.

    4. Re:Not "too" hard, just hard by Anonymous Coward · · Score: 0

      > But the simple plain fact is that thinking about code above a certain minimal complexity requires special talent.

      Yeah. So does shearing sheep or cooking a good meal. Or writing a good book. And... in my experience, IDEs are more of a hindrance than a help.

      Man, the original article is such a load of bullshit. My head hurts.

    5. Re:Not "too" hard, just hard by Anonymous Coward · · Score: 0

      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?

    6. 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.

    7. 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.
    8. 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.

    9. 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.
    10. 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.
    11. 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.

    12. 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).

    13. 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++?

    14. Re:Not "too" hard, just hard by Anonymous Coward · · Score: 0

      Coding is the easy part. Code is the act of writing down your thoughts in unambiguous terms. Creating those thoughts is the most difficult part. Before I ever saw any code or even touched a computer, I was thinking about code, in abstract form. I didn't even know how a computer worked, but I understood how it MUST work. I was 6 years old. By the time I was 8, I finally got my own computer, got a feel for it, read a book on ASM, never even wrote a program, got bored.

      Fast forward 1.5 decades, I went into "programming" because I loved solving problems. I took to programming like fish to water. I intuitively solved what are considered difficult problems. With 1 week of experience in programming, my first project I wrote multi-threaded, using my own hand-coded sync primitives. I wasn't familiar with the platform I was working on, but I knew what I wanted to do, so I just re-invented the wheel because it was faster than researching which call did what I wanted. A few years later, with more threaded coding under my belt, I knew the name of the sync type that I did, looked up the implementation the framework used and it was the same.

      Since then, I have found several incredibly rare and sometimes impossible to reproduce thread-safety issues with many libraries. Most of the time I found them just by reading the code, the rest of the time I reasoned about them by taking note of the characteristics of how the system failed. I don't get what's so difficult. By the way, I'm absolutely horrible at math.

    15. Re:Not "too" hard, just hard by Anonymous Coward · · Score: 0

      Ugh, your elitism is showing... *NOBODY* has what it takes until they have invested a significant amount of time and effort. And *NOBODY* has what it takes to program every aspect/feature of computer science across all industries. Ignorant people also used to claim that teaching everyone to read and write was futile, that certain races "didn't have what it takes" to be able to learn the complexities of English, or that only scholars needed to know how since it was useless for farmers and common folk.

      Learning to code, if only to fail or become disinterested in the industry after the fact still has intrinsic value to critical thinking skills that apply well beyond the scope of software and computers. Learning to write and read are basic requirements in terms of functioning in today's society even if you aren't the of the literary world.

      So what crystal ball do you use to predict that learning basic coding skills won't be as prevalent and necessary over the next 50 to 100 years for the vast majority of society? What level of complexity analysis do you apply to software development that is completely absent from the complexity of language itself, that means you need a 130 IQ to even apply? The reality is that most everyone is capable of writing complex code, you just don't see the results because the industry is relatively new and the market is relatively small. It's the fortunate few (millions) that had an early start, with lots of free time on their hands to invest in a form of work that interests them that excel in the field - many of whom have average IQ's and levels of motivation.

    16. Re:Not "too" hard, just hard by Anonymous Coward · · Score: 0

      Frameworks don't make anything easier to understand, they're just syntactical sugar to make coding faster. If anything, they make it more difficult to understand. I can't wait until AI does all of the coding for me, then I can spend more of my time actually programming.

    17. 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.
    18. 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.

    19. 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.

    20. 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.
    21. 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.
    22. 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.
    23. 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?)

    24. 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.
    25. Re:Not "too" hard, just hard by Anonymous Coward · · Score: 0

      Yeah, and where do you find that magical library?
      Certainly not on any Apple systems, where the standard library already "forgets" 0 termination of strings.
      Certainly not OpenSSL or any of those, or at best only since recently.
      Don't even look to Android, you'll go blind. They still find the security holes by the dozens now that they started looking, so certainly don't write any code for that.
      Certainly don't use the boost C++ library, they can't even keep track of proper licensing of their code.
      Absolutely don't use LLVM, they have no clue about interfaces or even the basics like symbol hiding.
      Gcc? They manage to implement the same optimization in 3 different places with NONE of the implementations actually WORKING.
      I don't know what you work on, but about 99% of programmers work in an environment where saying that security is a joke is being generous.
      Probably 80% of all programmers that went through a university education never had any courses in any way relevant to secure coding either, so they are oblivious to even the most basic best practices.
      That magical "well-reviewed, fuzzed and supported library" simply almost never exists. Admittedly, re-implemeting it probably won't result in anything better either, but your suggestion to use such libraries to most of us is on the level of suggesting to ride on a unicorn to work to combat climate change.

    26. 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.
    27. 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
    28. Re:Not "too" hard, just hard by Anonymous Coward · · Score: 0

      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.

      You are exactly wrong on that. Case in point, advanced knowledge of mathematics, specifically related to set theory, is how one SHOULD solve a complex search in a large space that is executed billions of times a year, along with cache, locality and coherency for pipeline optimization.

      But bubble sort kind of works if you only need to show it "works" - not works well. Once you demonstrate it works on the limited sample set a couple times, that's good enough to sell/finish the contract and then tell the customer to upgrade hardware/pay for change orders.

      Bubble sort isn't even the worst option. The simplest solution is look at EVERY element in a list and then return the (last?) one that matches. Not the first, not all, not even sorting the list as you go. Sorting is for suckers, by checking every element every time, I can guarantee constant time O(C) results in a fixed array!

  8. 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 Anonymous Coward · · Score: 0

      You probably cannot even use modern processors without numerous abstractions within the processor itself which you cannot control or even see in the documentation

      That's an implementation detail orthogonal to programming, not "abstracting away the problem". 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.

    5. 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
    6. Re:Abstraction is not always the solution. by Anonymous Coward · · Score: 0

      I agree that more abstraction is not the answer. But I don't think less abstraction is the answer. Nor do I think we're at some ideal level of abstraction. I don't know what to think about that, to be honest.

    7. 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!

    8. Re:Abstraction is not always the solution. by Anonymous Coward · · Score: 0

      account.CalculateBalance() is not an abstraction if all it does is wrap A = B + C. The fact you do not understand this has a lot to do with why your comments are nonsense.

    9. 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.
    10. 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
  9. 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 Anonymous Coward · · Score: 0

      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.

      I thought we were talking about code, not hardware?
      Anyway... it's one of those YMMV - in small organizations the "IT guy" does everything.
      In big organizations the business analyst comes up with requirements, meets with the architect, and specifications are handed to Senior Developers who then distribute simple coding tasks to the monkeys.
      The monkeys don't know the big picture problem; the business analyst may not be up-to-date with the Angular590 that the monkeys are using.

    6. 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.
    7. Re:That's EXACTLY what turn me on about it by Anonymous Coward · · Score: 0

      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.

      Fortran: 1957
      Grok: 1961

  10. 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..."

    1. Re:I think there's something missing here... by Anonymous Coward · · Score: 0

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

      real programmers write their tests first and keep their code working, there is no "getting it to work"

      but you're not a developer at all or you would have known this

    2. Re:I think there's something missing here... by Anonymous Coward · · Score: 0

      as a professional SW engineer I fix way more problems where the original coder did not understand the computer than problems where they misinterpreted a requirement.

      Problems like modifying data from multiple threads without a mutex, allocating large data blocks on the stack, accessing memory that's been freed or off the end of memory blocks that are allocated are the typical type of problem.

    3. Re:I think there's something missing here... by Anonymous Coward · · Score: 0

      Development isn't programming, it's glorified coding, but not to detract from its importance. By the time you have the requirements handed to you, the real programming is already done. You can't write tests until you know the signature/interface of the code you're trying to test. If your requirements are of such sh*t that you want to refute my statement, your architects should be fired.. out of a cannon, into the Sun, where they can no longer torment developers.

    4. Re:I think there's something missing here... by Anonymous Coward · · Score: 0

      You can't write tests until you know the signature/interface of the code you're trying to test.

      bullshit, tests can be mocked up and adapted along with the tested code. Are you writing your tests on stone tablets?

  11. 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 Anonymous Coward · · Score: 0

      Before a single line of code hits the IDE, you plan out what you're trying to solve,....

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

      In complex software, no matter how well you plan there's going to be something you hadn't thought of that comes up when you start coding, and then some other stuff that comes up when first running it, and then there's some additional bugs that get discovered somewhere down the road.

      Planning is good. But there isn't a programmer alive who writes perfect bug-free code. Plan as much as is reasonable. But then accept that a big part of writing good software is revising and improving over time.

    7. 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.

    8. 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.
    9. 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.

    10. 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.

    11. Re:Stupid Topic by Anonymous Coward · · Score: 0

      You're not doing any work! You're just staring into space!

    12. 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.
    13. 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."

    14. 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.
    15. 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.
    16. 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.
    17. 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.
    18. 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.

    19. 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.

    20. 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.

    21. 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
  12. 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 Anonymous Coward · · Score: 0

      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.

      Suuuure.

      s/Rust/Java/g

      You sound just like a Java evangelist from 20 years ago.

      Or a C++ evangelist from 30 years ago.

      Plus ça change, plus c'est la même chose.

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

      ..chose what?

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

      Whoosh!

      --
      Proud neuron in the Slashdot hivemind since 2002.
    4. 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.
  13. Popcorn Time by Anonymous Coward · · Score: 0

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

    They are teaching you, the software engineer, enough mathematics during the CS studies at the university with at least 50% more credits recommended compared a typical Masters level engineering degree, enabling you to understand the requirements the engineers, mathematicians, scientists and other subject matter experts are giving you after some time studying them. Wait, I think I said something funny there in the context of this discussion..

  14. Programmer-Analyst/System-Analyst etc. by Anonymous Coward · · Score: 0

    Programmer-Analyst/System-Analyst/Business-Analyst - it's part of the job (understanding the overall problem & flow of logic) etc. - I am GLAD then that I started my career on that track professionally in 1994 (programmer-analyst) since it demands you "understand the problem" after doing what you stated (speaking to customers & creating a spec etc.).

    * I don't understand WHY anyone would approach systems design (especially LARGE ones) any other way... it also prevents "feature-creep" also (customers can't go & just 'change' spec on-the-fly once 'written in stone' unless everyone agrees & timetables can change with features added etc. - et al too).

    APK

    P.S.=> You're correct & I spent decades doing it that way & never had a 'failed' project (40++ "enterprise-class" systems that spanned millions of lines each to my, & teams I worked with also's, credit in the timeframe noted above)... apk

  15. Duh by Anonymous Coward · · Score: 0

    This has to be the most obvious "news" story I've ever seen on /.
    Why does this even have to be said? Its obvious.

  16. "Software engineers" by Anonymous Coward · · Score: 0

    Real ones by definition understand the problems they are solving.
    Of course in the US where any self-taught moron can call themselves an "engineer" that may not always apply.

    1. Re: "Software engineers" by Anonymous Coward · · Score: 0

      When your IDE is a punch card machine, and coding sheets, believe me, you understand the business problem intimately before putting pencil to paper. When your storage is 100mb disks, or magnetic cards, you understand the business problem intimately. When you have to book time on the computer to run a test, you understand the business problem intimately. You also know how to code a very resource efficient program, not the bloatware that is churned out today.

    2. Re:"Software engineers" by Anonymous Coward · · Score: 0

      Of course in the US where any self-taught moron can call themselves an "engineer" that may not always apply

      Well, not in Oregon.

      I suppose in your country, everyone is just so much smarter. That's why you have that inferiority complex. You know you're smarter than the Americans, but they live in such a nice place and are so successful, while you are poor and live in a shithole.

      Unless you are an American, in which case, you're just angry about everyone else making more money than you. Maybe being on slashdot at 10am instead of working has something to do with it.

  17. Utter wank by Anonymous Coward · · Score: 0

    Noody, at any point, has stared at a field of 1s and 0s to code. The rest of the summary is just as wrong. Why would anyone post this bilge to /. of all places, unless it's an attempt to troll?

    1. 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
    2. 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.
    3. 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.
    4. Re:Utter wank by Anonymous Coward · · Score: 0

      Humans just need a couple of bitwise adders and we'd be just as fast as computers are.

  18. Law is the hard part by Anonymous Coward · · Score: 0

    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.

    1. 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.

    2. 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.
  19. Contractors work this way by Anonymous Coward · · Score: 0

    I've been doing this for years and in almost all cases contractors have no idea what the business is doing or what the code is supposed to do. Of course people say that they don't need to know details anymore, just pick up a story from the backlog and all of the stuff can stand by itself.
    I used to hate the Accentures of the world but now my anger is on the Agile mafia, if a project fails it's not Agile's fault, you just didn't do it right.

  20. Coding is hard.. by Anonymous Coward · · Score: 0

    ...lets go shopping!

    1. Re:Coding is hard.. by Anonymous Coward · · Score: 0

      There's a person in my office at management level who believes that writing the code for an e-commerce platform is as simple as going shopping on one.

  21. "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...

    1. Re:"Some things are hard to think about" by Anonymous Coward · · Score: 0

      ::yawn::

  22. 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 Anonymous Coward · · Score: 0

      Have you ever seen Relay Ladder Logic or Function Block Diagram programming environments used on PLCs in industrial settings. It makes industry go 'round with plenty of terribly conceived "visual" programs written by glorified electricians who should never be allowed anywhere near a computer.

      It's turing complete but will make you vomit if you see anything remotely complex developed using it. The fact that dangerous machinery powered with 480V 3-phase AC capable of shredding human beings is controlled with this "software" horrifies me in unimaginable ways. The fact that these things are network connected with no thought of security in most cases is equally horrifying.

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

      LabVIEW. FTW!

      --
      Only I can judge you.
    6. Re:Let me guess by Anonymous Coward · · Score: 0

      Actually the article suggests languages like TLA and PlusCal which can produce provable code. This is about using mathematical rigor rather than grey matter memory to understand what very complex systems are doing.

  23. 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?

  24. WTF? by Anonymous Coward · · Score: 0

    Machine language is hard? No, it's not. What it is is tedious. Assembly is not much better, although it was wonderful (at the time) it was so much more human readable. It's actually been an interesting trip, starting out with honest to god physical switches, then machine code, then assembly, then fortran, c, java. Probably be a great way to teach kids about abstraction... If there's a point to this post, I'm not seeing it.

  25. Having seen many projects by Anonymous Coward · · Score: 0

    Often the same thing is done many different ways.

    For example, every project usually has some kind of threading code. Everyone does it slightly differently.

    Duplication is wasteful but as long as people disagree about how to acomplish task X it will happen. Furthermore, even without disagreement, people will duplicate functionality for copyright reasons.

    The vast majority of oversized codebases have oversized frameworks. Frameworks make programminb easier in the short term, but can cause headaches in the long term.

  26. 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
  27. 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.

    1. Re:Bullshit argument by Anonymous Coward · · Score: 0

      In the past, mastery and experience when hand-in-hand where a problem domain had a finite relationship between action and outcome. Many could become masterful with enough experience. In programming, there is no such limit. Psychologist say for domains where practice makes a difference, like playing a musical instrument, mastery can take anywhere from 1,000 hours to 100,000 hours with an in-between of "10,000 hours", with the two magnitude difference primarily being driven by "deliberate practice". Domains where the primary driver for master is abstract reasoning, like programming, psychologist are adding an extra magnitude of variation for both directions. It can range from 100 hours to 1,000,000 hours depending on the person. While there are more studies to come, recent preliminary studies are showing zero correlation between mastery and practice for high reasoning domains like programming, and in some cases, negative correlation.

      Some domains do not do well with teaching and come down to "personality". Psychologist hate using that term to describe why some people are absurdly better than others, but that's the best term they have for now. Strong abstract reasoning is associated with two personality traits, obsession, and meta-cognitive reflection, and works dramatically better the earlier someone develops theses traits. Anyone can be good at programming, they just need to start young and have a certain personality. See, anyone can do it!

      The reason psychologist hate using "personality" to describe something innate about the person. Psychologist think these traits happen primarily do to certain events or general environmental conditions and not some innate feature of the person. They pretty much all agree this is something that can only be self taught as it requires one to reflect on their own thoughts, which is something someone does, not something someone learns.

  28. 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.

    1. Re:Rule of Generation by Anonymous Coward · · Score: 0

      great guys, yes... but still short a byte

  29. 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 Anonymous Coward · · Score: 0

      You hit the nail on the head. Engineers can create standard modules that are verified and certified to perform certain functions. Then some propriety conglomerate comes around and forcefully inserts propriety interfaces which breaks proven technology. The new interfaces require a revision of these modules to handle them. This in itself starts to insert points of failure because some of these interfaces are poorly documented or these modules start to become more complex handling all the variations.
      One thing I learned is that reducing problems to smaller and simpler problems results in cleaner and more dependable systems. Most of the time this is broken by both propriety desires of corps and by the insertion of mediocre software engineers who do not break up problems into simpler ones and instead build these unmaintainable complex behemoth modules which do not do proper error trapping. In the end somewhere in the middle of the code occurs an untrapped error or a value gets sent into decision logic that does not trap for values out of range. What happens you have exploding rockets, throttles that get stuck open or braking systems that fail.
      One of the worst errors but the easiest to manage is that of 0, NAN, NA values. The inexperienced coders will often not provide any handling for 0, out of range or non values. Others errors involve dealing with correct precision (i.e. sticking a float into an int and not realizing that it could drop some significant information or distort information). I can't tell you how much code I have had to deal with in some process control systems that was created by people who thought they could code because they were trained as engineers in instrumentation yet did not even know the basics of trapping errors or writing logic that could handle values that could go out of range or not be of the proper type.
      In reality the mediocre software programmers may not really understand the problem or accept blindly the customers interpretation of it. How many times has a customer asserted that "oh no the value will always be this". Then when the software faults the programmer is blamed and is told "you do not understand the problem". Nothing can substitute for an experienced and seasoned programmer who has been through the many scenarios and knows that usually the customer does not understand the intricacies of the data or the systems they want built and therefore may provide misleading specs.

    3. 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.
    4. Re:No, the problem is coding is just too new. by Anonymous Coward · · Score: 0

      Was right there with you until "XML is helping a lot".

    5. Re:No, the problem is coding is just too new. by Anonymous Coward · · Score: 0

      How will it get better? The amount of knowledge to be good at programming is growing, not stabilizing. The only way to keep up is with deeper and deeper understanding, which can be done, but few make the effort.

    6. 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.
    7. 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
  30. 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.

    1. Re:What would be different? by Anonymous Coward · · Score: 0

      "Visualization" is a nebulous concept that is only as good as the person visualizing and their ability to interpret what they see. I'm a visual thinker and regularly deal with 12+ dimensional "images" in order to see edge cases in enormously large and complex systems with my mind's eye and have zero analog to a shape in the real world. It can take me a while to understand what I'm seeing, but I can clearly see something that is wrong or something to be optimized even if I cannot immediately understand it. I'm told that this is my mind trying to perceive my intuition.

      It's not just seeing, but I can some times hear or feel the system when hyperfocusing.

  31. 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?
  32. Re:Getting a headache... by Anonymous Coward · · Score: 0

    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 I know what I'm doing is wrong, but I have to do it, because it is written into the law.

  33. 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?

  34. 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.
  35. Comment removed by account_deleted · · Score: 0

    Comment removed based on user account deletion

  36. Re:Getting a headache... by Anonymous Coward · · Score: 0

    C.D. Reimer is a renowned Slashdot collaborator, as he puts it himself; "Because of the quality of my posts and my article submissions, I'm a highly rated commentator and moderator."

    But does anybody ever wondered what "C.D." stands for? Well, it stands for Creimy Dumpty of course!

    Creimy Dumpty sat on the wall,
    Creimy Dumpty had a great fall.
    All the king's horses
    And all the king's men
    Couldn't put Creimy Dumpty
    Together again.

    Creimy's siblings video and theme song, very realistic, especially the pants, just like Creimy's:
    https://www.youtube.com/watch?...

    Creimy's real pictures:
    Before the sex change:
    https://ibb.co/cc7Ddw
    After the sex change:
    https://ibb.co/gVad65

    Creimy's "enterprise-level" chair, he talks about it all the time on slashdot:
    http://www.keynamics.com/image...

    Creimy's head, while his supervisor was talking to him, not with him, since it is impossible to do with Creimy:
    https://school.discoveryeducat...

    Creimy acting in educational resource document, he actually confirmed himself on Slashdot that he was handled by Special Education for the Santa Clara County Office of Education! He is really a king Dumpty!:
    http://www.sccoe.org/depts/stu...

  37. 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 Anonymous Coward · · Score: 0

      ... have to give up finding solutions for it due to lack of time or funding.

      Which goes back to the whole software engineering isn't Engineering. Not that I think making people criminally liable will magically solve all the problems: look no further than the Toyota acceleration issue (whether it was software, floor mats, or dumb drivers, it was still a design issue in two of the three admitted possibilities) or the GM ignition switch recall (where the knew of the risk for near a decade before acting). Same with gun control being a magic bullet. Part of it is that there's enough possible ways a bit of software can go horrible wrong, that designing it "safe" is often near impossible if used in critical situations. Ie it's not simply that it's cost prohibitive but cost infeasible. The other part is motivation: as another post linked to with making bear-proof garbage cans, the motivated bear will defeat the lock when designing to be usable for the least motivated tourist.

      So, the discussion hear on /. is good because it's trying to strike some sort of balance and discuss the actual issues and ways to try to address them. The article is much more hands-in-the air on the futility of it or suggesting some process to avoid coding. The latter isn't necessarily an impossibility, but most the time coding is a necessity because of the power needs of Turing completeness to do things. Meanwhile, I imagine the people who bitch about the difficult of coding would hate to be caged in FSA even though it would prevent them from shooting their own foot.

    2. 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.

    3. Re:If code is too hard to think about by Anonymous Coward · · Score: 0

      I agree, if your "skill" is at the level of: "Hey Alexa, assemble me an application that does ___" then you should not be in the "development" game. Too many folk today only have a limited grasp of the real basics and are only good to cobble together something which invokes massive libraries of complex code.. (tested, great and proven, but huge).

    4. 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
    5. 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
  38. Re:Getting a headache... by Anonymous Coward · · Score: 0

    There you are posting crap again you disgusting fat sexist tube of lard, Christopher Dale Reimer!

    You can be sure I will be watching this fake account too. I know this is you because you told me you were working on your freepass 11 file server and you are so dumb that you can't even masquerade yourself properly.

    Now, I told you I was out of meds last week and you didn't even care to contact me you lazy fucker.

    How many time do I have to express the emergency of the situation??????

    The python click script you wrote for my pheromone revenue stream web site suddenly stopped to work!!!!!!

    You fucking incompetent python script writer!!!

    When it works, I get 4000+ clicks a day on my pheromone revenue stream web site but only 5 or 6 without it!!!!

    Now, it seems like you dont care and that you have abandoned me you heartless fucking pig!

    Bonus:
    Here is a story that creimer told me when convincing me what a hard life he had:

    The tree was him and the tree knot was his butt hole!

    So, his uncle packed his fat ass with lard and with his cock! Not that it makes much of a difference but anyway, there it is!

    Signed:
    The girl that used to love you and now hates you, burn in hell where you belong you sexist pig!

  39. 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.

  40. Written by a journo who knows diddly squat. by Anonymous Coward · · Score: 0

    The fundamental of Software Engineering is Requirements Capture - in order to understand the task at hand. Obviously if your requirements are wrong then the code will be crap. That's not a problem peculiar to Software Engineering though - in any profession you will find idiots who have risen to positions above their abilities - like in journalism.

  41. Re:Getting a headache... by Anonymous Coward · · Score: 0

    Exactly! 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

  42. Alan Kay to the rescue by Anonymous Coward · · Score: 0

    http://vpri.org/html/work/ifnct.htm

  43. Re:Getting a headache... by Anonymous Coward · · Score: 0

    Hey Creimy Dumpty Reimer!

    About modular programming, in your siblings video, they seem modular enough for me. What do you think?

  44. 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.

  45. Inclusion by Anonymous Coward · · Score: 0

    Why does an article like this get any attention? Why is it that people think "code" should be accessible to the layman? You never hear people saying "we need to make building bridges easier" or "rockets need to be more diverse". Why should programming be treated any differently to other technical fields? People are not all the same and have different skills and capabilities. Constantly aiming low like this will be reflected in the outcomes.

    1. 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.
  46. 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
  47. 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
  48. 100M lines of code by Anonymous Coward · · Score: 0

    100M lines of code is a made up number used to sell extended car warranties. I wish people would stop quoting it.

  49. math, chess, and more by Anonymous Coward · · Score: 0

    And math forces you to think like a mathematian. Great chess players think differently than beginners. And experienced programmers have a deep understanding of how a computer operates.

    Computer Science is the study of taking big problems and breaking them down into pieces that can easily be translated for a computer.

  50. 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.
  51. A lot of you are missing the point by Anonymous Coward · · Score: 0

    You can write bug-free code. You can unit-test your code until hell freezes over. But then, you have to integrate your code into a larger application,
    a lot of which has been written by others. In an application that runs to, perhaps, hundreds of modules and hundreds of thousand or even millions of
    lines of code, how do you effectively test the changes you made to your one module? We all know: you can't. So I don't see the problem as one
    of coding so much as I do one of integration and testing. And this doesn't even address the problems of design and specification, for which there
    never seems to be enough time or money or energy. You know: code yesterday, deliver today, think tomorrow.

  52. 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

  53. 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.

  54. 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
  55. Speak for yourself, buddy! by Anonymous Coward · · Score: 0

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

    Some of us understand that the purpose of software development isn't mental masturbation, but actual problem solving. Writing the actual code is usually the easiest part, unless you're working with a very constrained runtime environment. If you think the hard part is learning a programming language and using it to write instructions for a computer, you shouldn't work in software development.

  56. 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
  57. 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.

  58. Re:Getting a headache... by Anonymous Coward · · Score: 0

    Creimer, please stop! As a mod, I am getting desperate! You've had too much of an educational experience from trolling your trolls!

  59. Can't have it both ways by Anonymous Coward · · Score: 0

    Either coding is too hard for the average person, or every person can be trained to be a good coder. You can't have it both ways. And yet, I see articles declaring both, all the time, although lately it's been mostly the latter. Of course in reality, the former are just selling their own magical coding tool(s) and/or process(es), and the latter are trying to flood the job market so they don't have to pay so much for coders (and they get what they pay for).

  60. 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.

    1. Re:Problem vs Programming domain thinking by Anonymous Coward · · Score: 0

      TDD is a development process, not an architect or design process. By the time you hit development, you're just translating spec into code. TDD allows you to first define the expectations of the spec, then implement the spec and test that you've correctly implemented the spec. It does nothing about making sure the spec is logically sound short of hitting something ambiguous or paradoxical when attempting to translate the spec into code.

  61. Re:Getting a headache... by Anonymous Coward · · Score: 0

    I thought the purpose of modular programming was to prevent programmers from having to keep everything inside their head.

    As usual, you thought wrong, creimer. The purpose of modular programming is to provide separation of concerns - this helps with code reusability, and allows sections of code to be developed and updated independently.

    How do you expect to make programmers interchangeable cogs?

    Separation of concerns actually makes them LESS likely to be interchangeable cogs, as it allows for MULTIPLE developers to implement multiple modules that work in concert. Someone can certainly come up to speed on a module they're not familiar with, but the expert who implemented a given module is certainly going to be faster for a good while. What it allows is faster delivery of code, as multiple modules can be developed in parallel.

    New blog post

    What a fucking hoot!

    "As for “cdreimer,” he’s too busy to post more than one or two comments per day, doesn’t care to argue, and has no use for the trolls."

    You mean, cdreimer's karma has been nuked to oblivion as well, so you can ONLY post one or two comments per day on that account.
    And ILoveFatCashew's karma has also been nuked to oblivion, so you can ONLY post one or two comments per day on that account.
    And your AC postings are limited to 10 per day, since you're probably too thick to understand how to proxy your traffic.

    That means that you, creimer, are only able to shitpost 14 times a day. And given the drop from 30-40 comments per day on creimer, you must be experiencing some serious withdrawal!

    "Management deleted the “creimer” account without any questions the day after Labor Day."

    No, they renamed it to __aaclcg7560. Which means your entire shitposting history is available.

    "The last six months of playing with the trolls on Slashdot has been an educational experience."

    Yes, you learned that you're not a tough guy, your marketing schemes don't work, and that you're roundly disliked by many people on the internet. That kind of an education is tough to get for free, creimer!

  62. 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.

  63. Re:Getting a headache... by Anonymous Coward · · Score: 0

    So much bitterness, FakeFuck39. I guess creimer really did pwned your sorry ass.

  64. Comment removed by account_deleted · · Score: 0

    Comment removed based on user account deletion

  65. Comment removed by account_deleted · · Score: 0

    Comment removed based on user account deletion

  66. Re:Getting a headache... by Anonymous Coward · · Score: 0

    There you are posting useless crap amazon affiliate spam from yet another fake account you disgusting fat sexist tube of lard, Christopher Dale Reimer!

    You can be sure I will be watching this fake account too. I know this is you because you told me you were working on your freepass 11 file server and you are so dumb that you can't even masquerade yourself properly.

    Now, I told you I was out of meds last week and you didn't even care to contact me you lazy fucker.

    How many time do I have to express the emergency of the situation??????

    The python click script you wrote for my pheromone revenue stream web site suddenly stopped to work!!!!!!

    You fucking incompetent python script writer!!!

    When it works, I get 4000+ clicks a day on my pheromone revenue stream web site but only 5 or 6 without it!!!!

    Now, it seems like you dont care and that you have abandoned me you heartless fucking pig!

    Bonus:
    Here is a story that creimer told me when convincing me what a hard life he had:

    The tree was him and the tree knot was his butt hole!

    So, his uncle packed his fat ass with lard and with his cock! Not that it makes much of a difference but anyway, there it is!

    Signed:
    The girl that used to love you and now hates you, burn in hell where you belong you sexist pig!

  67. Re:Getting a headache... by Anonymous Coward · · Score: 0

    C.D. Reimer is a high profile Slashdot collaborator, as he puts it himself; "Because of the quality of my posts and my article submissions, I'm a highly rated commentator and moderator."

    But does anybody ever wondered what "C.D." stands for? Well, it stands for Creimy Dumpty of course!

    Creimy Dumpty sat on the wall,
    Creimy Dumpty had a great fall.
    All the king's horses
    And all the king's men
    Couldn't put Creimy Dumpty
    Together again.

    Creimy's siblings video and theme song, very realistic, especially the pants, just like Creimy's:
    https://www.youtube.com/watch?...

    Creimy's real pictures:
    Before the sex change:
    https://ibb.co/cc7Ddw
    After the sex change:
    https://ibb.co/gVad65

    Creimy's "enterprise-level" chair, he talks about it all the time on slashdot:
    http://www.keynamics.com/image...

    Creimy's head, while his supervisor was talking to him, not with him, since it is impossible to do with Creimy:
    https://school.discoveryeducat...

    Creimy acting in educational resource document, he actually confirmed himself on Slashdot that he was handled by Special Education for the Santa Clara County Office of Education! He is really a king Dumpty!:
    http://www.sccoe.org/depts/stu...

  68. 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

  69. Utter BS by Anonymous Coward · · Score: 0

    The 100 million lines of code argument is utter bullshit. Why? Because modern coding is modularized. How many lines can you keep track of? If every routine uses 10 subroutines, roughly speaking you only need to understand like 10 * log (100M) lines of code -- all the subroutine calls. That comes to, er, like 80, not 100M. Amazing what happens when you consider modern code practices.

    The difficulty in coding is not so much in understanding millions of lines of code, but in communicating and understanding subroutine specifications correctly, and not missing error conditions that can occur in the real world.

  70. Re:Getting a headache... by Anonymous Coward · · Score: 0

    Who do you think you are fooling, you disgusting fat sexist tube of lard, Christopher Dale Reimer!

    You can be sure I will be watching this fake account too. I know this is you because you told me you were working on your freepass 11 file server and you are so dumb that you can't even masquerade yourself properly.

    Now, I told you I was out of meds last week and you didn't even care to contact me you lazy fucker.

    How many time do I have to express the emergency of the situation??????

    The python click script you wrote for my pheromone revenue stream web site suddenly stopped to work!!!!!!

    You fucking incompetent python script writer!!!

    When it works, I get 4000+ clicks a day on my pheromone revenue stream web site but only 5 or 6 without it!!!!

    Now, it seems like you dont care and that you have abandoned me you heartless fucking pig!

    Bonus:
    Here is a story that creimer told me when convincing me what a hard life he had:

    The tree was him and the tree knot was his butt hole!

    So, his uncle packed his fat ass with lard and with his cock! Not that it makes much of a difference but anyway, there it is!

    Signed:
    The girl that used to love you and now hates you, burn in hell where you belong you sexist pig!

  71. Re:Getting a headache... by Anonymous Coward · · Score: 0

    C.D. Reimer is a renowned Slashdot collaborator, as he puts it himself; "Because of the quality of my posts and my article submissions, I'm a highly rated commentator and moderator."

    But does anybody ever wondered what "C.D." stands for? Well, it stands for Creimy Dumpty of course!

    Creimy Dumpty sat on the wall,
    Creimy Dumpty had a great fall.
    All the king's horses
    And all the king's men
    Couldn't put Creimy Dumpty
    Together again.

    Creimy's siblings video and theme song, very realistic, especially the pants, just like Creimy's:
    https://www.youtube.com/watch?...

    Creimy's real pictures:
    Before the sex change:
    https://ibb.co/cc7Ddw
    After the sex change:
    https://ibb.co/gVad65

    Creimy's "enterprise-level" chair, he talks about it all the time on slashdot:
    http://www.keynamics.com/image...

    Creimy's head, while his supervisor was talking to him, not with him, since it is impossible to do with Creimy:
    https://school.discoveryeducat...

    Creimy acting in educational resource document, he actually confirmed himself on Slashdot that he was handled by Special Education for the Santa Clara County Office of Education! He is really a king Dumpty!:
    http://www.sccoe.org/depts/stu...

  72. Wheres VB6? by Anonymous Coward · · Score: 0

    In a manner of speaking, Microsoft Visual Basic 3-6 dealt head-on with creating applications and solutions rather than drowning in oceans of code. VB6 was not perfect nor was it designed for every solution.

    For the average person and developer that needed to knock something out quickly it was\is amazing! Many still use VB6 today for that reason. Many found rewriting all their code just to be able to use .Net not the best ROI. That is another topic all together though.

    The point: we need this era's true RAD solution to creating and knocking out applications rather than getting lost in code. Fun and visionary rather than being geared toward whatever the elite code gurus mandate everyone use.

  73. Re:Getting a headache... by Anonymous Coward · · Score: 0

    You've posted twice today under ilovefatcashews...disproving nothing.

    Regardless, don't you have better things to do that deal nonstop with a bunch of people who wish you would leave?

  74. Re:Getting a headache... by Anonymous Coward · · Score: 0

    : You're the only one who's had to relinquish his account and lose all his karma... How are we the ones "pwned"???

    Ask cdreimer, criemer, creinner, cremier, and FakeFuck39.
    https://www.kickingthebitbucket.com/2017/06/20/the-confessions-of-slashdot-asshats/

  75. 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.
  76. Way to shift the blame from management by Anonymous Coward · · Score: 0

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

    No, the reason is their pointy-haired bosses, people like this Leveson, prevent software engineers from getting close to the problem.

    I used to work in large scale factory process automation. I can't tell you how many time I've asked "can I go into the factory and see this process I am being paid to automate with software?" and been told "no, the process engineers will do that. You just write the code. Stick to your job!" I eventually left the field because of this, and found out it's pretty much the same everywhere outside of startups and academia.

    1. 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.
    2. Re:Way to shift the blame from management by Anonymous Coward · · Score: 0

      No, the reason is their pointy-haired bosses, people like this Leveson

      Leveson, who has written the seminal work on removing blame from incident analysis and suggests that it's nearly always a problem where management pressures lead line employees to build dangerous things? That Leveson?

      The one who in Engineering a Safer World, explains why the fighter pilot who shot down the blackhawk in Iraq should not have been found at fault because the inability to communicate between aircraft was a management decision outside the control of the pilots involved?

      You're arguing against a very flawed version of Dr. Leveson who exists only in your head.

      -- A person who applies her work on really big systems.

  77. 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 Anonymous Coward · · Score: 0

      Techniques like MVC were supposed to separate front-end issues from the rest, but as implemented I fail to see it.

      MVC is fundamental. All of the aspects of MVC are present in every interactive application whether they're apparent to you or not. The question is how to implement them as an intentional design as opposed to making a haphazard mess. That doesn't mean that the 'MVC frameworks' that have emerged are any good; only that some model always emerges whether intentional or otherwise.

    2. 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.

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

    Has anyone here tried TLA+? Any comments?

  79. Comment removed by account_deleted · · Score: 0

    Comment removed based on user account deletion

  80. Who's at fault here? by Anonymous Coward · · Score: 0

    This sounds like the lament of the "big idea guy" who believes that they have the next great idea that will revolutionize everything but lacks the ability to articulate it into something actionable. It's obviously the "coders" fault that he "doesn't get it." Those stained cocktail napkins covered in faded and ripped scribbles should've made everything crystal clear.

    1. 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.
  81. Humble brag by Anonymous Coward · · Score: 0

    I guess this could explain why I'm so much better at programming than anyone else I know. I actually do think like the computer.

  82. 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.
  83. Try docco.in by Anonymous Coward · · Score: 0

    seriously. Https://docco.in is our saviour.

  84. I'm glad! by HeadSoft · · Score: 1

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

  85. liternate programming by Anonymous Coward · · Score: 0

    Same as literate programming from Knuth.

  86. 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...

  87. Code is Too Hard To Think About :( by leretard · · Score: 0

    WRONG

    Anyone who ever thinks anything like this, trying to excuse their own shortcomings, is totally incompetent.

    Bugs are a management issue. Period. They don't even need to exist.

    But for some reason tasks that would be management's job in engineering jobs of comparable scale in other sectors are deferred to grunt programmers, with the gold standard being "does it appear to work at the time the investors want to force a release?"

    Most people still treat computers like voodoo magic. They are resistant to the idea that we have total and complete control over the medium. Even people who are trained engineers have not dispensed with this kind of attitude.

    I'm not sure anyone really wants to hear my real point, but I'll cut to it.
    Poor software quality is a direct reflection of the corruption in our society: no standards, no rigor, no one cares, good enough to get me back to my microcosm of comfy chairs, bright colors and loud noises is good enough to survive the eons.

    This is the direct result of letting low-quality people participate in our society and assuming everyone is equal because "treat others as you would want to be treated no matter what even when they're ignorant unyielding belligerents trying to claw their way into the niche you depend on for survival"

    We are chasing our tail into the grave.

  88. Re:Getting a headache... by Anonymous Coward · · Score: 0

    Okay, I guess we need some more mod points to shut you up too. I'm sure it'll happen soon.

    BTW - you didn't bat an eyelash even once at the suggestion that you're creimer. In fact, you just confirmed it, aspie.

    Enjoy your karma loss, sucker!

  89. Re:Getting a headache... by Anonymous Coward · · Score: 0

    You've posted twice today under ilovefatcashews...disproving nothing.

    Regardless, don't you have better things to do that deal nonstop with a bunch of people who wish you would leave?

    Who are you talking to? If you read the blog post, cdreimer doesn't even read these comments.

  90. Comment removed by account_deleted · · Score: 0

    Comment removed based on user account deletion

  91. Re:Getting a headache... by Anonymous Coward · · Score: 0

    Who are you talking to? If you read the blog post, cdreimer doesn't even read these comments.

    The funny thing is that all these self-righteous assholes are proving that cdreimer is right about them.

  92. Re:Possible software is hitting a complexity limit by Anonymous Coward · · Score: 0

    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 quite often fix complex system with virtually zero knowledge and only a basic understand of the high level concept. I fill in the details using reasoning and make the general assumption that there are few ways to solve a particular problem well, and if I can create a good solution in my head, the chance of that solution being similar enough to the current implementation is very high. This has worked extremely well for me

    An example of one such situation is my companies $250k F5 firewall was sporadically having a bad interaction with some of our customers when using HTTPS for web API calls. The issue had all of our senior admins stumped, we had a team from the F5 company activity looking into the problem for several days, the multi-million dollar contract customer was very angry. I was fresh out of college with a few days of programming under my belt and zero experience or knowledge about HTTPS, other than it was some cool magic. In less than 10 minutes of reading Wikipedia about how HTTPS worked, I had an idea of what the issue was, and in 30 minutes we were able to reproduce it, and told them admins where to look. Turned out it was the HTTPS session cookie was set to expire after some amount of time, but the HTTPS session cookie cache was expiring the cookies earlier.

    The admins plus the Enterprise level support specialists from F5 could not figure this out in the 3+ days they had been working on it, yet I was able to figure it out in less than 10 minutes, which included reading Wikipedia on how HTTPS works. Before you say that I had the benefit of their 3 days of research, I did not. All I had to go off of was the original email the customer sent. I was not ranked high enough to be able to talk directly to such senior staff during such an important event. I had to explain it to my manager first who was able to get the ear of the CTO to tell them to talk to us.

  93. No by Anonymous Coward · · Score: 0

    Get rid of the idiot simpletons doing Java, C#, Python, and such crap. Code is NOT hard to think about at all. It's just not for janitors.

  94. 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...
  95. math class is tough - Barbie by Khashishi · · Score: 1

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

  96. 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.

  97. Re:Getting a headache... by Anonymous Coward · · Score: 0

    I was one of those fake accounts. Account was re-named, same as with creimer." I was getting bored with it, so no harm done.

    I have no idea who "Fakefuck39" is, and I'm not from France or Israel, so maybe the claims that there was a sort of anti-creimer posse was a "don't believe everything you read on the Internet" situation.

  98. Re:Getting a headache... by Anonymous Coward · · Score: 0

    Yes, we lost years of karma and posting history... Oh no wait, YOU did, sumo-breath!

    FakeFuck39 was a two-year-old account. Unfortunately, the owner of that account focused exclusively on creimer for months. Management has no problem deleting such accounts for harassment. Your account will also get deleted for harassment in the near future.

  99. Yes, I agree, its too hard to think about.... by Anonymous Coward · · Score: 0

    ....for all the rest of the sheeple. They're too simple minded to understand or even be capable of doing the work that we programmers do. This is why we make the big bucks and have nice cushy jobs that pay well with excellent benefits.

    The flipside of all that though is the bullshit that comes with it. The fact that its too hard to think about empowers Senior programmers to make up bullshit excuses to send us underlings off on totally unnecessary pointless busywork to do so that we have nothing to "show off", and in the long run they do and their own jobs stay secure, and management is too stupid to know any better. If we argue that we've been assigned a totally pointless bullshit task that is going to equate to a big waste of time and money that adds no real benefit, there's no way simplify and describe the bullshit to management in a way they're intelligent enough to really understand. They only have the input of their "trusted Seniors" to go by, so they'll just conclude that it is we, the programmers, that are being difficult to work with an insubordinate to our superiors and thus we'll eventually get fired or laid off, which of course further solidifies the security of the Senior programmers (this was their real agenda all along). Its a disgusting reality, but ya gotta face the fact that its true to some respect: for some folks code really is too hard to think about.

  100. Code to Hard? by Anonymous Coward · · Score: 0

    Maybe your attention span is to short? Hard problems take time, and thought. An old sating goes, "the easier a problem looks, the more stupid you are." Of course, everyone knows about the company of fools and their money.

  101. Re: Getting a headache... by Anonymous Coward · · Score: 0

    And what exactly do you think youâ(TM)re proving by creating multiple sock puppets? All youâ(TM)re doing is driving reaction to you more negative - no worries about running out of mod points, creimer - more mods are turning negative against you with every post you make. Youâ(TM)re so far negative at this point that every time you create a new sock puppet, itâ(TM)ll be nuked to oblivion in minutes.

    Suck it, big boy.

  102. thats what AI will be for by Anonymous Coward · · Score: 0

    the AI, or limited AI, will take our ideas for what a program should do, and translate that into computer code.

  103. Probably the same guy that complains about OOP by Anonymous Coward · · Score: 0

    And that's the reason why we have OOP.

  104. too much framework, not enough brainwork by Anonymous Coward · · Score: 0

    keep it simple stupid.
    the cleanest, leanest IDE is the way to go. to be honest, if android stopped 'innovating' (deprecating & changing its APIs) maybe people would have time to learn how all the tools & stuff works.
    #1 best feature of any a platform: not changing.

  105. This is why we have project managers by Anonymous Coward · · Score: 0

    to be the link between the business folks who understand the problem, and the programmers, like me, who understand the computers.

  106. 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
  107. No It Isn't by Anonymous Coward · · Score: 0

    Code is not "hard" for me. Well, it can be, but usually it isn't.

    As for complexity, there are well-known mechanisms for controlling that complexity.

    In the end I'm a trained professional and highly suitable for working in this field. Oh, and I have no trouble keeping in mind the user requirements, the practicalities of the user interface, performance and all the rest. Defining those things can be a problem.

    Easily the worst part is getting a user to explain their job and business process in ways that don't involve hand-waving, "it's complicated", or "at this point some magic happens." Most users aren't used to explaining their jobs in ways that the computer needs. I get paid (in part) for being able to drag these stories out of them, without turning them into Computer Science grads.

  108. 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.
  109. Nail is too hard for a plastic spoon by Anonymous Coward · · Score: 0

    My subj says it all. This MIT guy is probably looking for an excuse for why he sucks at his job. If it's too hard - don't do it, a job and play should be indistinguishable for a true professional.

  110. 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).