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: 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.
    Starting Score:    1  point
    Moderation   +1  
       Insightful=1, Total=1
    Extra 'Insightful' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   3