Stories
Slash Boxes
Comments

SoylentNews is people

posted by janrinok on Thursday May 01 2014, @01:52PM   Printer-friendly
from the relax-its-a-holiday dept.

An outrageous, insightful, and sadly accurate commentary on programming. I found this an extremely entertaining read and agree with most of it. It doesn't offer solutions, but certainly highlights a lot of the problems.

"Double you tee eff?" you say, and start hunting for the problem. You discover that one day, some idiot decided that since another idiot decided that 1/0 should equal infinity, they could just use that as a shorthand for "Infinity" when simplifying their code. Then a non-idiot rightly decided that this was idiotic, which is what the original idiot should have decided, but since he didn't, the non-idiot decided to be a dick and make this a failing error in his new compiler. Then he decided he wasn't going to tell anyone that this was an error, because he's a dick, and now all your snowflakes are urine and you can't even find the cat.

Personally, I think things will only get better (including salaries) when software development is treated like other engineering disciplines.

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 4, Insightful) by Lagg on Thursday May 01 2014, @03:17PM

    by Lagg (105) on Thursday May 01 2014, @03:17PM (#38524) Homepage Journal

    As subject says I've been a freelancer for a decade+ and am currently trying to exit this career path for reasons that will momentarily be clear. I could not resist nodding my head in sympathy for most of that article and I do not sympathy-nod easily. Inheriting code is like inheriting a school cafeteria from the lazy and worthless janitor that just got fired most of the time for me. I'm not trying to claim to be a special little snowflake that writes perfect code but with all my experience and forced learning (as a result from not only fixing my mistakes but tons of others') I would like to think I know my shit enough to write clean code worth admiring and being able to tell when others write clean code and respect them for it. The number of my predecessor fellow programmers that I have respected throughout my freelancing career are vanishingly small and these respectable individuals are only becoming more rare as this fad of outsourcing becomes more prevalent. Which leads me to my next point:

    No. Treating programmers like normal engineers will just result in stuff like what you saw with healthcare.gov until you know what "treating it like other engineering disciplines" entails. For one thing the absolutely insane deadlines will need to stop and most bureaucrat infested companies will not allow that. Secondly, it requires paying people what they're worth. Again, good luck getting that past the MBA pricks which leads me to the third point: Stop outsourcing, you stupid pieces of shit. Would you outsource the engineering and implementation of the crane used to hoist firefighters up to burning buildings to a guy in Nigeria that also runs a spam mail server on the side? No you wouldn't. So what makes that okay for the software that runs in the control panel of that crane? On top of that you'd have the normal strict guidelines that other engineers like those in hardware deal with. Those engineers usually get sufficient time to learn those standards. Even in the strictest job because the people paying them know how much of a liability it is if they screw up and that crane rockets a firefighter into a skyscraper window.

    I feel like the submitter has never dealt with this hell. It's all too easy to say "Oh yeah they should just be treated like other engineers. That'll fix it!".

    Oh, and hilariously enough the C++ snippet in the post is something a seasoned programmer won't do. Because endl flushes the buffer in addition to writing a newline. It makes things slow if you use it to write a bunch of lines out to any file stream. But that isn't obvious and many people don't know it because of things already mentioned in the post itself.

    --
    http://lagg.me [lagg.me] 🗿
    Starting Score:    1  point
    Moderation   +2  
       Insightful=2, Total=2
    Extra 'Insightful' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   4  
  • (Score: 3, Insightful) by bradley13 on Thursday May 01 2014, @05:35PM

    by bradley13 (3053) on Thursday May 01 2014, @05:35PM (#38565) Homepage Journal

    The biggest problem we have in software is overly complex, continually changing tools. In a sense, we do it to ourselves. Consider the obvious example, web development:

    Around 1997, we used CSS/1, HTML/4, along with Javascript and some antique version of PHP. Interweaving four different languages with totally different syntaxes and semantics - stupid, but it's what we had. On the positive side, the languages were individually small. CSS/1, for example, was completely specified in under 100 pages.

    What do we have now? We still have the unholy mix of languages. But they have individually become huge! You cannot even find a clear definition of the current CSS standard - it's a moving target - but the specification of all the different parts runs to thousands of pages. We haven't cleaned out the marsh, we've just built skyscrapers on top of it.

    On top of those rickety skyscrapers, everybody uses frameworks - Apache alone has dozens, and there are plenty of others. Essentially all of these are in continual development. So we build software systems on frameworks, following absurdly complex specifications, using an unholy mix of languages that just happened accidentally, sort of. What a wonderful way to produce reliable systems.

    In the end, programmers who want to "stay current" spend too much time adapting to their changing tools and frameworks, and too little time actually developing software. More, the immense complexity of the tools and frameworks makes it almost impossible for average or mediocre programmers to be productive. At best, they settle in some particular niche, work there for 10 years, and then discover that they have become unemployable.

    And the good programmers? We cheat, each in his or her own way. My personal cheat is to avoid frameworks. If a project requires framework-like internals, it is more efficient to create something specifically tailored to the project, rather than to import half-a-dozen gigantic, overly complicated, everything-to-everyone beasts. I would even submit that the reduced complexity leads to more understandable and more reliable software.

    Web development is the worst, because it is the most rapidly evolving. However, the normal programming world isn't a lot better: Tools, languages, libraries and frameworks - all continually evolving. It's all well-meant, of course. Ralph really needs JavaFX. Anne really needs the newest features in Santuario. But Bill and Sue and James and Sarah? Their software doesn't work anymore with the new versions; they've got to learn what's changed, and fix previously working systems.

    Don't get me wrong - I love technology. I love programming. But really, the software world needs to reach a certain level of maturity. Provide stable tools with longer lifecycles, throw out 90% of the frameworks and replace them with guidelines (think: Design Patterns) on how to solve certain types of problems. Let software developers develop software, instead of struggling to stay current on 20 different fronts.

    /rant

    --
    Everyone is somebody else's weirdo.
  • (Score: 1) by nwf on Friday May 02 2014, @05:17AM

    by nwf (1469) on Friday May 02 2014, @05:17AM (#38755)

    I think part of the point of making software more like engineering is that it would prevent exactly that sort of outsourcing. You could only contract with licensed software engineers, which the random guy from Nigeria wouldn't be.

    Large software projects nearly always end up like healthcare.gov when done by large corporations and the government. Something about corporate culture that's mostly use to dealing with non-technical requirements and solutions. I've seen it time and time again, which is why I don't work for a large corporation or the government anymore.

    The thing about software is that since it can be reproduced cheaply, and you can see the result of your effort almost immediately, it fuels rapid innovation and new ideas. I don't think people are willing to give this up to make software significantly more engineered, except on high-consequence projects.