Slashdot Mirror


New Book Argues Automation Is Making Software Developers Less Capable

dcblogs writes: Nicholas Carr, who stirred up the tech world with his 2003 essay, IT Doesn't Matter in the Harvard Business Review, has published a new book, The Glass Cage, Automation and Us, that looks at the impact of automation of higher-level jobs. It examines the possibility that businesses are moving too quickly to automate white collar jobs. It also argues that the software profession's push to "to ease the strain of thinking is taking a toll on their own [developer] skills." In an interview, Carr was asked if software developers are becoming less capable. He said, "I think in many cases they are. Not in all cases. We see concerns — this is the kind of tricky balancing act that we always have to engage in when we automate — and the question is: Is the automation pushing people up to higher level of skills or is it turning them into machine operators or computer operators — people who end up de-skilled by the process and have less interesting work?

I certainly think we see it in software programming itself. If you can look to integrated development environments, other automated tools, to automate tasks that you have already mastered, and that have thus become routine to you that can free up your time, [that] frees up your mental energy to think about harder problems. On the other hand, if we use automation to simply replace hard work, and therefore prevent you from fully mastering various levels of skills, it can actually have the opposite effect. Instead of lifting you up, it can establish a ceiling above which your mastery can't go because you're simply not practicing the fundamental skills that are required as kind of a baseline to jump to the next level."

212 comments

  1. This is true of anything. by Anonymous Coward · · Score: 5, Insightful

    Wearing shoes prevents you from developing a thick layer of skin on the bottom of your feet.

    1. Re: This is true of anything. by Anonymous Coward · · Score: 4, Funny

      Also toilet paper instead of using poison oak

    2. Re:This is true of anything. by blue+trane · · Score: 1

      The key is preserving the choice to go barefoot. Tools give us more choice.

      If you want to break through that glass ceiling the summary mentions, you can take up the fundamental skills on your own, at your own pace. MOOCs are a good place to start.

      I think the goal should be Star Trek holodeck computers that you can program in natural language, with general statements. Maybe you choose a program in which you debug vacuum tubes by cleaning out the bugs in them, or whatever you want. Punchcards? Assembler? Your choice!

    3. Re:This is true of anything. by mrchaotica · · Score: 1

      I think the goal should be Star Trek holodeck computers that you can program in natural language, with general statements.

      Have you ever noticed how on Star Trek, when they really need to pull off some tricky, urgent bit of programming, they quit talking to the computer and start typing?

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    4. Re:This is true of anything. by ultranova · · Score: 1

      Have you ever noticed how on Star Trek, when they really need to pull off some tricky, urgent bit of programming, they quit talking to the computer and start typing?

      That's because Star Trek is a tv series, and as such follows the rules of drama rather than physics or logic. Having the characters randomly tap a touchscreen rather than speaking aloud lets the writers avoid specifying the details of the commands given, sparing the audience pointless technobabble and freeing the dialogue for drama.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  2. That's true, but... by Anonymous Coward · · Score: 4, Insightful

    Farming equipment gave us farmers with weaker muscles and fatter bellies. However, it did give us more food.

    1. Re:That's true, but... by Kjella · · Score: 4, Insightful

      Farming equipment gave us farmers with weaker muscles and fatter bellies. However, it did give us more food.

      This. That modern developers suck at assembler is a bad thing assumes there's a reason you'd want them doing assembler in the first place. If a farmer's tractor breaks down he doesn't get out and start shoveling, he calls for a tractor repairman which specializes in that sort of thing. If you call a low level library from a high level language and it crashes, check the documentation again. If you're still sure you're doing it right, the efficient thing to do might be to file a bug and let someone used to poking around in C/ASM take a look at it. It's specialization at work and it might not make sense for one person to know the whole stack top to bottom. Or at least that person would be a guru and companies aren't full of those.

      It doesn't take poking around at the lowest level to find a hard problem. If you haven't had user requirements that make you feel like you're playing twister trying to fulfill all the requirements at once you can't have worked much on complex projects at all. And for each new round you have to hit another new requirement, screw the initial specification. Or when you realize the whole stack is built wrong for what their real requirements are and you have to unravel and reassemble it differently. Having modules and glue code might not be glamorous but when you're chasing a moving target being agile beats having built the greatest system nobody wants anymore.

      --
      Live today, because you never know what tomorrow brings
    2. Re:That's true, but... by ShanghaiBill · · Score: 3, Insightful

      Farming equipment gave us farmers with weaker muscles and fatter bellies. However, it did give us more food.

      That is not really what TFA is talking about. Automation of farming has removed the labor, but not the knowledge. It has not caused farmers to forget how to farm.

      A better example is aircraft automation. Some fly-by-wire systems automated the routine stuff, of controlling and stabilizing the aircraft, but would drop out to manual control if the situation went outside the programmed parameters. This led to the crash of Air France 296 when the autopilot was disabled because of the low altitude during an air show flyover, and it turned out that the pilot didn't know how to fly the plane because he had relied on the computer far more than even he had realized. When the computer shut down, the pilot was unable to perform the "low level" task of keeping the plane in controlled wing-level flight.

      I learned to program back when we had to drop down to assembly for performance. I would often read the assembly output from the compiler, and use it as feedback to tweek my C code. Soon I learned to just look at the C code, and I could visualize the machine instructions that code would generate. Kids today often have no idea how computers even work, and sometimes have very dysfunctional mental models of what is going on. They don't understand why stepping through an array in column order or row order can make a huge difference in performance, or when using a bit array or hash table is going to be orders of magnitude faster than some table lookup. They can do the high level stuff just fine, but they are in trouble when they need to understand what is going on underneath.

    3. Re:That's true, but... by bobbied · · Score: 1

      But that's just the point, some don't need to know what's going on underneath.

      Look, Just because the programming model (that virtual picture in your head that represents what you are programming) is different between various programming languages, it doesn't mean it doesn't take skill to ply the programming craft. Who cares how to most efficiently sort some array if you depend upon a library to do the sorting for you? Maybe the data doesn't actually exist in the computer memory like you think? Usually a list of data is kept in a database and it get's sorted there. The application programmer doesn't need to be concerned with sorting it and likely shouldn't do such things anyway. The DBA should be doing that, coding the SQL and laying out the tables and indexes.

      It's not really changed, even if the details of what we do has... Sure, you are the experienced one who has had to think about all that stuff before, but that doesn't mean the others are less capable.

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
    4. Re:That's true, but... by clockwise_music · · Score: 4, Insightful

      I think his own comment sums everything up quite nicely:

      I don't have enough in-depth knowledge to know to what extent de-skilling is really happening

      Anyone who thinks that programming is getting easier due to automation isn't a programmer.

    5. Re:That's true, but... by phantomfive · · Score: 1

      but when you're chasing a moving target being agile beats having built the greatest system nobody wants anymore.

      IF it's not flexible, then it's not the 'greatest system.'

      --
      "First they came for the slanderers and i said nothing."
    6. Re:That's true, but... by Bite+The+Pillow · · Score: 1

      Someone has to build the automation. So at the beginning at least, someone needs to understand the relationship between the automation results and the underlying, non-automated truth. To develop the automation software further, someone needs to know the fundamentals to be able to say if it's better or worse that the current version.

      Are you saying that the skills needed to develop the software don't need to exist? Or that they will always exist? If we automate everything, in other words, who will fix your bug?

      The problem, and we see it with pilots and doctors, is when the computer fails, when either the technology breaks down, or the computer comes up against some situation that it hasn't been programmed to handle, then the human being has to jump back in take control, and too often we have allowed the human expert skills to get rusty and their situational awareness to fade away and so they make mistakes

      If a farmer's tractor breaks down, he has time to get it repaired. What about a pilot, in charge of a thing traveling fast enough, or running out of fuel fast enough, that he doesn't have time for a training refresher?

      If you can look to integrated development environments, other automated tools, to automate tasks that you have already mastered, and that have thus become routine to you that can free up your time, [that] frees up your mental energy to think about harder problems. On the other hand, if we use automation to simply replace hard work, and therefore prevent you from fully mastering various levels of skills, it can actually have the opposite effect.

      Your whole second paragraph has nothing to do with any of this, and the first sentence has nothing to do with the context of the discussion. No one needs to know the whole stack top to bottom, but where does the guru come from?

      That modern developers suck at assembler is a bad thing assumes there's a reason you'd want them doing assembler in the first place

      I would want someone doing assembler, somewhere. I would want someone to know the whole stack, somewhere. I would not want to have my whole company full of people who don't do assembler, don't know the stack, and can't function outside of the tinker toys.

      The audience is IT managers, especially those that may not yet be facing these questions directly. Business will adopt the method that is cost effective in the short term, often at the expense of the long term. What if the only people who know the whole stack are principled idealists in open source who aren't going to be ruled by the almighty dollar? And the remainder are in high dollar jobs in places like Microsoft, who wrote the technology, but can't fix your problems without a support contract? You can't buy your way out of the problem.

      The whole point of this book, and the interview, is to avoid putting yourself in the situation where you are in the field, miles from a repairman, and the tractor won't start, and frost is setting on, or locusts are over the hill.

      Is capitalism going to forgive the capitalists who put themselves in that situation? No, they are going to wither on the vine and/or be eaten in place. Don't take the warning, fine. But don't defend those who want to put themselves in danger's way just to save a few dollars. It's not that there is no place for it. But we all need that guy who knows what to do when things go south. And the author's whole point is that those people have the responsibility, but not the skill to step in and fix, or at least deal with, things going south.

    7. Re:That's true, but... by Garridan · · Score: 3, Interesting

      What makes "the greatest system" depends entirely on what "great" means. If it means "fitting into 500 bytes" or "1ms boot time", etc., then flexibility might be the very last thing that you want.

      I've intentionally let the world pass me by, and spent my career learning how to optimize for time & space in several proven stable languages, rather than learn every new widget and buzzword. The drawback is that I'm a little slow when it comes to new tech. But the new shit is way easier to learn than what I've been torturing myself with over the years, and "youngsters" won't catch up to my skill without a decade of practice. And I've never had trouble landing a job.

    8. Re:That's true, but... by phantomfive · · Score: 1

      and spent my career learning how to optimize for time & space in several proven stable languages,

      Do you get paid for that? What languages?

      --
      "First they came for the slanderers and i said nothing."
    9. Re:That's true, but... by Anonymous Coward · · Score: 0

      If you want a job where being good at assembler is important they are out there, you need to probably be a hardware/electrical engineer, we still have ENDLESS debates about the right instructions to use for a particular situation, or where to stick barriers/fences. Of course we like to giggle when someone's compiler produces shitty code: but the joke was on us, because those are the customer and they're always right, even when wrong. We also would hate to have to sit around coding every last instruction for a 100k (C) source file when there are perhaps a dozen functions where we could add value with optimal assembly. Further, we would not have a job if not for the compiler allowing developers to work in a high level language not tied to an architecture... I guess if we don't work at Intel. Compilers are a GREAT thing both technically and industrially, maybe the best example of why automation is brilliant.

      As far as i'm concerned if it CAN be automated, it a) SHOULD be (because someone else will, and will eat your lunch); b) computers aren't so smart, so if a computer can be tasked to do it correctly enough, it was at best a mostly brainless job and c) if you find yourself wanting to automate something it's because you see a more important task that is being slowed down by tedium. These are all great reasons to automate.

      Of course the best reason not to automate remains the one your manager probably gets on your case about: you spend more time fucking with automation than you do fucking with the task at hand. That's a real problem in many jobs, and one where you probably want to start looking for another job. Regardless of whether your manager was right or not (and he's usually wrong, or at least short sighted).

    10. Re:That's true, but... by Anonymous Coward · · Score: 0

      I hear COBOL is nice this time of year.

    11. Re:That's true, but... by disambiguated · · Score: 2

      Anyone who thinks that programming is getting easier due to automation isn't a programmer.

      I'll second that. I've been coding professionally for almost 20 years. Even done some assembly. Yes the tools are much better and more is automated, but the amount you need to know is only growing, and the expectations have never been higher. I don't think the automation is even keeping up actually. Making software is not getting easier.

    12. Re:That's true, but... by ranton · · Score: 3, Insightful

      That is not really what TFA is talking about. Automation of farming has removed the labor, but not the knowledge. It has not caused farmers to forget how to farm.

      Automation of farming removed the knowledge of how to farm without the automation. Like another post said, when a tractor breaks down the farmer doesn't grab a shovel. He calls his mechanic. My dad is a farmer who is 64 years old, and even he doesn't remember how to farm like his grandfather did.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    13. Re:That's true, but... by Caladrius · · Score: 2

      Knowing the low levels certainly can be valuable, but this example is completely flawed.

      Kids are still taught algorithms and data structures, which exposes them to things like big O notation and why hash tables are really fast at lookups. They don't need to know assembly (or any specific language) to understand these logical concepts. Run time complexity like you describe is a high level concept, honestly!

      It's not about shaving a few %'s off by optimizing in assembly - it's about choosing a hash table vs a linked list because you understand the logical operations needed to use them both, regardless of how 'iterating item by item' is coded in java/C/ruby, much less in assembly.

    14. Re:That's true, but... by Anonymous Coward · · Score: 1

      Some fly-by-wire systems automated the routine stuff, of controlling and stabilizing the aircraft, but would drop out to manual control if the situation went outside the programmed parameters. This led to the crash of Air France 296 when the autopilot was disabled because of the low altitude during an air show flyover, and it turned out that the pilot didn't know how to fly the plane because he had relied on the computer far more than even he had realized. When the computer shut down, the pilot was unable to perform the "low level" task of keeping the plane in controlled wing-level flight.

      I read the full wiki page and it doesn't support your claim. In fact, it says the exact opposite:

      the pilot attempted to climb. However, the elevators did not respond to the pilot's commands, because the A320 computer system engaged its 'alpha protection' mode (meant to prevent the aircraft entering a stall.)

      Please mod the parent down.

    15. Re:That's true, but... by gweihir · · Score: 1

      Farming equipment is pretty standardized. Automation in software creation binds developers to a specific tool and what they learn is using that tool, not creating software. They turn into one-trick ponies.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    16. Re:That's true, but... by byteherder · · Score: 4, Insightful

      That is the point, you DO need to know what is going on underneath.

      There is functional requirements and non-functional requirements, both are important for the projects to be successful. I was on a team creating a moderately complex system. One of the programmers checked in a perfectly correct functional code but did not meet the performance requirement. The conversation went something like this.

      Me: Your code works fine but I need it to be 5 times faster.
      Coder: [Looking at me like I just turned green and grew horns] Can't we just up the hardware requirement.
      Me: Sure, if you want our customers carrying around laptops the size of suitcases.
      Coder: All I do, in the code, is call the library functions.
      Me: The library function is totally inefficient for the algorithm you are trying to implement. You need to recode the function manually.
      Coder: But how do I do that.
      Me: You need to write it in OpenCL and use the GPU.
      Coder: [Turns white as a ghost]

      If you want your skills to be more than sorting a list or changing the color of the font, you have to know what is going on underneath.

    17. Re:That's true, but... by reve_etrange · · Score: 1

      This led to the crash of Air France 296 when the autopilot was disabled because of the low altitude during an air show flyover, and it turned out that the pilot didn't know how to fly the plane because he had relied on the computer far more than even he had realized.

      Based on the linked page, your description seems somewhat inaccurate. Wikipedia states that after TOGA power was applied, the captain's attempt to pull up failed, because the flight computer overruled his decision to pitch up. It wasn't that the pilot didn't know how to fly the plane, but that he didn't understand how the - actually still active - flight computer would limit control surface movements near the aircraft's stall speed.

      Of course, a pilot should be aware of any additional flight envelope limitations imposed by the flight computer, but it's a bit remiss to say that pilot "didn't know how to fly the plane." In fact, he and the co-pilot both had circa 10,000 hours in multiple aircraft.

      --
      .: Semper Absurda :.
    18. Re:That's true, but... by dgatwood · · Score: 2

      This. That modern developers suck at assembler is a bad thing assumes there's a reason you'd want them doing assembler in the first place. If a farmer's tractor breaks down he doesn't get out and start shoveling, he calls for a tractor repairman which specializes in that sort of thing. If you call a low level library from a high level language and it crashes, check the documentation again. If you're still sure you're doing it right, the efficient thing to do might be to file a bug and let someone used to poking around in C/ASM take a look at it. It's specialization at work and it might not make sense for one person to know the whole stack top to bottom. Or at least that person would be a guru and companies aren't full of those.

      That's sort of missing the point, though. We're not talking about people sucking at assembler anymore. We're talking about people who have never done any programming at a low level, so they have little to no concept of what is going on below their application. And that is a problem. Developers don't have to know every detail of what's happening down at the bare metal, but if they don't at least understand it at a coarse-grained level, they will invariably write terrible code. It isn't at all uncommon to find developers that:

      • don't understand why the O(n!) code that worked fine on a ten-item list suddenly performs horribly with a twenty-item list.
      • don't understand why sending network data one byte at a time results in horrible performance.
      • don't understand that they shouldn't keep waking up the CPU over and over, and then wonder why their app is sucking down battery power like there's no tomorrow.
      • don't understand the basics of multithreaded programming, run everything on the main thread, and wonder why their app freezes while they are doing I/O.

      And so on. Not to put too fine a point on it, CS degrees matter, and the increasing percentage of self-taught developers is a big part of the problem. The more companies dumb down their tools and documentation to make it easier for those developers to get things done, and the more ready-to-use snippets they provide, the longer it will take bad developers to realize that they are in over their heads, the longer it will be before they take the time to learn the basics, and the more bad code they'll produce in the meantime. This is almost inarguably not a good thing. As I've said many times before, "The great thing about making it easier to write software is that more people write software. The bad thing about making it easier to write software is that more people write software."

      To use a farmer analogy, imagine farmers buying a new tractor every week because they don't know enough about their tractors to understand that you have to fill them with gasoline every so often. You don't have to know precisely how a tractor works, but you do have to know that it requires fuel, oil, and possibly coolant; you do have to know to check those levels regularly; and you do have to know the limitations of the hardware so that you don't get stuck in a ditch.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    19. Re:That's true, but... by serviscope_minor · · Score: 2

      Kids today often have no idea how computers even work, and sometimes have very dysfunctional mental models of what is going on.

      And they gobble their food, talk back to their parents and tyrranize their teachers?

      Back in MY day, all the kids cut their teeth on various forms of BASIC. We had about as much idea initially about what was going on underneath as kids these days do: i.e. none.

      Some of us dug deeper just as kids these days will. Some of us started fooling with low level things like peek and poke on silly computers and pointer indirection and assembly on better ones (Long live the BBC!), and some kids now wil get hold of arduinos and do much the same.

      Going back further, I'm sure people said the thing about kids/students that learned FORTRAN 66 or even FORTRAN IV first.

      --
      SJW n. One who posts facts.
    20. Re:That's true, but... by TheRaven64 · · Score: 1

      Anyone who thinks that programming is getting easier due to automation isn't a programmer.

      I disagree. Automation has definitely made a lot of things easier, but it's been offset by an increase in requirements. Autocomplete for APIs, for example, popping up a snippet of documentation when you're typing is essential on some of the APIs I work with today, with hundreds of classes each of which have dozens of methods - remembering the exact name of the one that you might use once a year is impossible (especially when it's code that Google people work on and so randomly do bulk refactoring runs renaming methods to fit some private aesthetic every month). When I started programming, the entire set of APIs I had to work with fitted into a quite small book and it was easy to memorise the whole thing.

      --
      I am TheRaven on Soylent News
    21. Re:That's true, but... by TheRaven64 · · Score: 3, Interesting

      The grandparent's sorting a list is actually a pretty good example. There are lots of library sort implementations that do a reasonable job over arbitrary data but you can often do a lot better with some knowledge about the data that you're sorting. If you know that you have a roughly even distribution between n ranges and it's cheap to test which of those n ranges your data are in, then you can do a (linear time) bucket sort and then use the off-the-shelf comparison sort to do n sub-sorts in parallel. The generic sorting code can't do this, because it doesn't have enough information: it just has a comparison operator defined on the data. If you understand the underlying concepts then you should know when you can beat a generic implementation with a domain-specific one. If you've had a bit of experience then you should know when it's not worth bothering.

      --
      I am TheRaven on Soylent News
    22. Re:That's true, but... by Anonymous Coward · · Score: 0

      You probably need to start looking at assembly listings again, and also read up on modern processor designs. Some of the worst code I see is written by people like you who think they know what the compiler does but is ignoring the last 10-20 years of development on optimizing compilers, branch predicting CPUs and cache hierarchies :-P

    23. Re:That's true, but... by Anonymous Coward · · Score: 0

      Nope. It did give us more food per man, but not per square meter.

    24. Re:That's true, but... by Jahta · · Score: 1

      A better example is aircraft automation. Some fly-by-wire systems automated the routine stuff, of controlling and stabilizing the aircraft, but would drop out to manual control if the situation went outside the programmed parameters. This led to the crash of Air France 296 when the autopilot was disabled because of the low altitude during an air show flyover, and it turned out that the pilot didn't know how to fly the plane because he had relied on the computer far more than even he had realized. When the computer shut down, the pilot was unable to perform the "low level" task of keeping the plane in controlled wing-level flight.

      Not to be pedantic, but the linked article doesn't say that at all. The pilot and co-pilot both had 20+ years experience. In fact the Captain was an Air France test pilot and "he had been heavily involved in test flying the A320 type and had carried out manoeuvres beyond normal operational limitations". The crash investigation found that the cause was flying too low (30 feet, instead of the designated minimum 100 feet) and too slow (running the engines at Flight Idle - minimum thrust), and consequently not being able to pull up in time to avoid hitting a stand of trees. As the linked article says, "The Captain's previous experience flying the aircraft type at the edge of its limits may have led to overconfidence and complacency".

    25. Re:That's true, but... by gbjbaanb · · Score: 1

      Ah that brings back memories - the IBM documentation bibles I had for OS2 programming were bliss. If I needed to know *anything*, I looked it up.

      Today, its a combination of intellisense guesswork, google and trial-and-error coding :-(

      I'd like to say that going back to the old days would be good, but we have too many languages, too much refactoring in APIs, too many 'cool new things'. No-one could go back to the concept of building on top of what is already there in a stable, mature manner (well, except the Linux guys, but then look at what's going wrong with systemd to see it infecting even them!)

      To all: if you want productivity, you need to stop with the churn. Spolsky said it right when he talked of all constantly changing APIs from Microsoft. Summary: it helps Microsoft, not you:

      Think of the history of data access strategies to come out of Microsoft. ODBC, RDO, DAO, ADO, OLEDB, now ADO.NET - All New! Are these technological imperatives? The result of an incompetent design group that needs to reinvent data access every goddamn year? (That's probably it, actually.) But the end result is just cover fire. The competition has no choice but to spend all their time porting and keeping up, time that they can't spend writing new features.

    26. Re:That's true, but... by mrchaotica · · Score: 1

      Not to put too fine a point on it, CS degrees matter, and the increasing percentage of self-taught developers is a big part of the problem.

      I agree with the first half of your statement, but where did you get the idea that the percentage of self-taught developers is increasing? I was under the impression that it was decreasing, with the difference being taken up with people with diploma-mill (or Indian diploma-mill) pseudo-degrees.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    27. Re:That's true, but... by mrchaotica · · Score: 1

      To use a farmer analogy, imagine farmers buying a new tractor every week because they don't know enough about their tractors to understand that you have to fill them with gasoline every so often.

      Or worse, imagine that they do understand they have to fill the tractors with gasoline... but the tractors run on diesel. (And then they wonder why the tractor engine keeps blowing up.)

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    28. Re:That's true, but... by Anonymous Coward · · Score: 0

      Back in MY day, all the kids cut their teeth on various forms of BASIC. We had about as much idea initially about what was going on underneath as kids these days do: i.e. none.

      Well, the first BASIC I used at least let me POKE around the memory and PEEK at things. When it came to VB, I had no idea what was going on underneath the hood.

    29. Re:That's true, but... by darkwing_bmf · · Score: 1

      don't understand why the O(n!) code that worked fine on a ten-item list suddenly performs horribly with a twenty-item list.
              don't understand why sending network data one byte at a time results in horrible performance.
              don't understand that they shouldn't keep waking up the CPU over and over, and then wonder why their app is sucking down battery power like there's no tomorrow.
              don't understand the basics of multithreaded programming, run everything on the main thread, and wonder why their app freezes while they are doing I/O.

      None of those things is dependent on low level coding experience. Well, possibly the network data one, but even there you're more likely to screw up by trying to do something low level (like send a byte at a time by hand) than you are by just using the appropriate library functions.

    30. Re:That's true, but... by Anonymous Coward · · Score: 0

      I think his own comment sums everything up quite nicely:

      I don't have enough in-depth knowledge to know to what extent de-skilling is really happening

      Anyone who thinks that programming is getting easier due to automation isn't a programmer.

      I disagree. Automation has the wonderful ability to make bad programmers average and good programmers average. It's a great equalizer in terms of skill. Regardless of skill, with modern frameworks you're programming something you don't know anything about. Take a look at Visual Studio (pick a year). Wizards do everything for you. Start a wizard, generate a class then look for the "TODOs" and fill in the blanks. I've worked with very good programmers that used the Wizards to generate Web Service code and didn't understand what they generated.

      The results is even worse. To a non-programmer it makes programming look easy and so it's nothing for a job listing to ask for experience in a dozen frameworks that are competing technologies that you'd never use simultaneously.

    31. Re:That's true, but... by Anonymous Coward · · Score: 0

      Most 'modern developers' suck at Java never mind letting them anywhere near assembler. I'm an embedded developer looking to try and retire early but I realize people will be calling me for a long, long time.

    32. Re:That's true, but... by david_thornley · · Score: 1

      Now, please explain to me why algorithmic complexity, networking, etc., have to do with low-level programming. I've never written any assembler-language networking code in my life, and I understand why sending individual bytes kills performance. I find it easier to use better algorithms with higher-level languages, and C++'s standard algorithms are probably better than what I'd write.

      I'll agree that CS degrees matter, but in most cases low-level programming simply doesn't.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    33. Re:That's true, but... by dgatwood · · Score: 1

      To clarify, I'm not saying you have to have low-level programming experience; that's just one possible way to get the requisite understanding of what's happening lower down in the stack; a good CS degree is another. The point was that more and more developers seem to lack that understanding, in large part because they're starting with progressively higher-level cookie cutter pieces that separate them farther and farther from the bare metal, and they lack the CS background to understand what those layers of abstraction are hiding from them, so they make wrong assumptions. Either a CS background or experience at a moderately low level (e.g. POSIX-level networking, PThreads, etc.) would result in better assumptions. :-)

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    34. Re:That's true, but... by dgatwood · · Score: 1

      None of those things is dependent on low level coding experience.

      That's one way to learn those things. A CS degree is another. The point was that they need to at least have some concept of what's happening below them, regardless of how they got that understanding, and that more and more often, developers lack that understanding because we've made it too easy for people to dive in and write working (but badly written) software. By taking away the steepness of the learning curve, we've eliminated the impetus to actually get a degree, and to take the time needed for reading complex documentation and learning how to write software correctly.

      Well, possibly the network data one, but even there you're more likely to screw up by trying to do something low level (like send a byte at a time by hand) than you are by just using the appropriate library functions.

      If you're able to do everything with HTTP, there are some decent libraries out there, but if you're doing raw socket networking, the higher level libraries seem even clumsier and easier to screw up than POSIX to me. YMMV.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    35. Re:That's true, but... by dgatwood · · Score: 1

      Or worse, imagine that they do understand they have to fill the tractors with gasoline... but the tractors run on diesel. (And then they wonder why the tractor engine keeps blowing up.)

      "A little learning is a dangerous thing..."

      —Alexander Pope

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

  3. fucking jQuery. by Narcocide · · Score: 1, Flamebait

    'nuff said.

    1. Re:fucking jQuery. by Anonymous Coward · · Score: 0

      Anyone who's doing gay web shit isn't a real developer anyway. JavaScript is just as bad as jQuery. Real programmers use C or maybe Lisp.

    2. Re:fucking jQuery. by hey! · · Score: 1

      I learned to program in Lisp -- specifically scheme, because that's what they taught at MIT. I spent many years working in K&R C. I belong to the generation that learned to do actually useful programming from The Unix Programming Environment and Software Tools in C -- God help me, I actually spent a year programming in Ratfor targeting Fortran IV as a back end.. I've used most of the major languages that have come down the pike since -- C++, Java, Python, PHP, blah blah blah.

      Javascript feels an awful lot like Scheme to me. Ugly but workable syntax. Powerful stuff under the covers. Yes, you can use Javascript to write trivial little event handlers, and it's no better or worse than any other scripting language for that. But it supports higher order functions, for Pete's sake. Can you think of any other language that has popularized an advanced programming concept like that?

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    3. Re: fucking jQuery. by robi5 · · Score: 1

      I went from Lisp to JavaScript and have the same sentiment about it. JavaScript is an acceptable Lisp, especially with the awesome V8 engine and the performance war it triggered, sans the infix notation. One can even program with expressions only and (almost) no statements. Ternary is like Lisp if; comma operator is like progn. Not that I'm proposing this style in general.

  4. Computers are making everyone's life easier by WarJolt · · Score: 4, Insightful

    Why are programmers singled out? Arguably computer automation is helping everyone. Skills are only important to have if there is value in the skill. I don't think theoretical computer scientists are any less intelligent because they never program in C or C++.

    1. Re:Computers are making everyone's life easier by KidSock · · Score: 3, Insightful

      Theoretical computer scientists might be intelligent but in my experience they make bad programmers. Computer science professors are almost always really bad programmers. Good programmers are more artist than scientist. And you can't automate art.

      Also, I don't know what automation is being referenced because I never met an IDE I didn't hate. And as far as build tools go, the whole automake, autoconf, libtool tool-chain is a bad joke. I wish that stuff were automated. But right now it all seems to be very manual to me.

    2. Re:Computers are making everyone's life easier by knightghost · · Score: 2

      Programming is far more Engineering than Art. The people that think it's Art are the uneducated ones reinventing the wheel.

      I do agree with build tools though. Usually end up scripting those myself.

    3. Re:Computers are making everyone's life easier by BlackHawk-666 · · Score: 2

      That really depends more on what you're programming and your work environment. If you're writing rocket control systems for nasa or the HUD for the Joint Strike Fighter then you will certainly be approaching it with more engineering skills than art skills. Conversely, if you're working on an indie game as a passion project, then likely you will utilise more art skills. Both approaches need to use the problem solving skills, but one gives the programmer more freedom to experiment and express themselves, and the other is a bit more like constructing a skyscraper. You're not solving any new problems, just applying known solutions, documenting the crap out of things, planning things years in advance, etc.

      I spent my formative years doing programming as an art, then entered uni and again more work as an art. I broke new ground (for the time) and solved interesting problems. Later, when I was developing financial services software it became more and more like tedious bookwork. We'd solved all the interesting problems and were just slapping out small sections of exactly the same sort of code over and over. You know the stuff, query the DB, marshall it through layer after layer of crap, display it on a screen, react to the thing they clicked, repeat.

      In the end I burnt out on the whole thing as it had lost it's challenge and was just work-a-day tedium grinding out business apps for large corporations. I was the team leader, lead programmer, and customer facing tech - so there really wasn't much more I could do except slip into management.

      As it happens though, life changed again and I found myself with a lot of free time again. After not programming for a couple of years I took it up again two years ago to work on something that *I* wanted to do - a game. Now I'm working with CRYENGINE, solving really tough problems, applying engineering to the massive codebase, and art to the way I structure it. I'm learning new techniques and studying some truly awesome code and...loving programming again.

      If you feel it's just engineering, then maybe it's time for a change or perhaps some home project that reawakens the magic and art of programming for you again.

      --
      All those moments will be lost in time, like tears in rain.
    4. Re:Computers are making everyone's life easier by Anonymous Coward · · Score: 0

      Even in game development coding is still engineering.
      Unless you have a 1 man team, you will probably have one person developing the game engine, (aka engineering), and a different person developing the game mechanics, art assets, storyline etc.
      For me the engineering part is the magic of programming. I'm happy if I can put down my algorithm in a nice and eloquent way and have it work, but I don't call that art.
      Making the algorithm is the engineering, and coding it up and testing it is just transcribing.

    5. Re:Computers are making everyone's life easier by Anonymous Coward · · Score: 0

      In 15 years of being a successful paid programmer with a long list of happy clients...my experience has been that the ones with computer science degrees generally make better programmers. Not always, of course. You get extremes on both ends. But the ones with the degrees were better at solving truly novel problems (where a quick google search didn't have the answer). When the kind of programming you are doing calls for a lot of that, hire someone with a CS degree.

    6. Re:Computers are making everyone's life easier by Anonymous Coward · · Score: 0

      I never met an IDE I didn't hate

      the whole automake, autoconf, libtool tool-chain is a bad joke. I wish that stuff were automated

      Uhh... isn't that the whole point of an IDE? Seriously. What else can an IDE do? Sure, it can fire up a debugger when you click a button, but that's just a sideshow. Any program could fire up a debugger at the click of a buttton. The whole point of an IDE is to 1) manage and organize your code (or allow you to do so in a simpler way), and 2) automate builds. And to be honest, it's just leaning heavily on some underlying file system stuff for #1. That leaves build automation as the only major reason to use an IDE.

      Dear sweet lord, I'd think you Linux geeks would have gotten it by now. There's a reason people use Visual Studio, and it isn't because of something you can feel all smug and superior about. It's just build automation. That's the secret. Now you know. It's Not God-Damned Rocket Science (tm).

    7. Re:Computers are making everyone's life easier by Anonymous Coward · · Score: 0

      Most people don't get to solve novel problems all the time. It's write this CRUD or that CRUD. Boring, to the point of tears and nervous breakdowns. A trained monkey or a robot SHOULD do those jobs.

    8. Re:Computers are making everyone's life easier by nzac · · Score: 1

      If you feel it's just engineering, then maybe it's time for a change or perhaps some home project that reawakens the magic and art of programming for you again.

      I don't think you understand the meaning of word engineering. Engineering and art are not mutually exclusive.

      From a professional engineering perceptive what you are calling art is far closer to engineering than what you are calling engineering and once you start repeating processes without redesigning them you are no longer engineering at all.

    9. Re:Computers are making everyone's life easier by reve_etrange · · Score: 1

      I'm happy if I can put down my algorithm in a nice and eloquent way and have it work, but I don't call that art.

      The "eloquence" (or lack thereof) is where the "art" is. I think it's apt to describe something in which subjective judgments of aesthetics as containing an element of art.

      --
      .: Semper Absurda :.
    10. Re:Computers are making everyone's life easier by reve_etrange · · Score: 1

      If a programmer constructed things out of all sorts of middleware/frameworks and automation they did not understand, they are ill-equipped to handle unexpected consequences.

      With closed-source libraries, sure. Otherwise, the past tense "did" is key. When something goes wrong with the (open-source) libraries I'm using, then I will come to understand what I previously did not. In the end I still come out saving time.

      knowledge of how to build engines is a necessary part of his job to fix engines built by others.

      This confuses knowing "how to build an engine" and "how an engine is built." A mechanic needs to know the latter, but not the former. Most auto mechanics are not also skilled metal workers - or, given today's car fabrication processes, roboticists.

      --
      .: Semper Absurda :.
    11. Re:Computers are making everyone's life easier by Anonymous Coward · · Score: 0

      You only see it as art because you currently don't have the proper knowledge to engineer it.

      There are specific ways of doing things that are more efficient than others. Each method has it's own trade-offs. Picking between trade-offs isn't art, it's engineering. You don't know those trade-offs because you're inexperienced in that specific area, so you're "exploring around". Don't confuse less-informed design decisions as art.

      I'm an AI programmer. I know a lot of people would call what I do an art. It isn't. Once you know the domain, you know there's specific ways of doing things to get certain results. You look at your goal, then pick the best methods to get you there. That isn't art, it's engineering. Combing different AI techniques together in an artist way leads to an unmaintainable mess. Combining them in well thought-out ways is engineering and leads to a better product.

    12. Re:Computers are making everyone's life easier by Anonymous Coward · · Score: 0

      "Good programmers are more artist than scientist. And you can't automate art."

      This is so incredibly stupid, this meme needs to die. Software development is a diverse subject, and it's done in many different ways. Algorithm design by computer scientists is firmly a science, some video games can pass as art, but by and large by far the most software development that occurs occurs as an engineering process. "Good programmers are more artist than scientist" is wrong is so many god awful ways- if you've got an artist-programmer writing your nuclear industrial control system then that person is not a good programmer, they're going to be an absolute fail at their job, and to a lesser extent this remains true when they're working on the vast majority of software that gets developed- bespoke business software. Unless you're doing a very small fringe of development then you better not be treating it as an art or you most definitely and categorically are not a "good programmer".

      Yes I know there are some cranky engineers on Slashdot who say ridiculous things like "How is software an engineering? where's your accreditation?" but it doesn't fucking matter, for something to be an engineering discipline it doesn't need accreditation or any such thing- it simply requires something to fit the definition of engineering, which guess what? is exactly what software engineering does. As someone who has an educational background in maths, who has many years of professional software development experience and has worked as a software developer in the world of engineering (to automate engineering tasks for "real" engineers who didn't understand the math behind their algorithms and just blindly applied them) the assertion that software engineering is a lesser form of engineering, or that "real" engineers are magical ultra-intelligent people that put any mathematician, physicist or software engineer to shame is frankly absurd. It was upto me, as a software developer, with a mathematics background, to actually come and update their processes, improve their algorithms, and understand it well enough to see scope for and implement automation (in many cases because only a few engineers understood the processes and the other tens of engineers needed it automating because they were more shit at engineering stuff after 30 years than the software developer who'd been learning it 3 years).

      Those folks writing the software that keeps your nuclear power plants running, your planes in the sky, most the time with their software have to be as thorough as any engineer, does it go wrong sometimes? yes it does. But sometimes dams also crack, bridges break, glass buildings turn into fucking death rays, and walls get built to withstand 8 on the richter scale earthquakes to defend nuclear power plants in areas where 9 on the richter scale earthquakes have been known to occur. Software developers fuck up, just like any engineer.

      "Also, I don't know what automation is being referenced because I never met an IDE I didn't hate."

      None because the article is full of shit. The whole point in hard stuff is that we can't automate it away because it's fucking hard. The stuff that gets automated away is the trivial, repetitive, easy stuff. Whoever wrote the article is not a software engineer and has no idea about it No hard stuff is getting automated away resulting in people failing to understand it in any kind of way that matters.

    13. Re:Computers are making everyone's life easier by Anonymous Coward · · Score: 0

      WTF? Automate builds with an IDE? How do you then run automated builds and tests if that requires an IDE?
      You only end up with the VisualStudio type mess where you have one system the developers use and another system (luckily using the same configuration files, but still) to actually do your automated builds.
      And the only sure way to stop the developers from breaking the automated builds by randomly clicking in the IDE is to just make everyone edit the project files only by hand, i.e. not use the IDE.
      Though maybe you just meant generating the build files via IDE and then have some other tool automate the build. That kind of works, but also leads to people having no clue about what the build system. So if you report things like "hey, that doesn't build on my machine" you get responses like "oh, yeah we know it doesn't work on Ubuntu. No idea what's wrong, just don't use Ubuntu.".

    14. Re:Computers are making everyone's life easier by Catiline · · Score: 3, Interesting

      The analogy I like to use when discussing the Art vs. Engineering paradigm in programming is architecture (the wood & steel building sort, not hardware chip instructions) design. Every architect, whether building a private home or an office complex, needs to know certain fundamental facts about the materials they use (load bearing capacity, for instance) and the choice of what materials are used is (typically) dictated by the intended purpose of a building. Brick and wood framing is pretty universal, but you don't generally see homes being built out of little more than tin siding and steel frames like factory warehouses, or giant glass walls like skyscrapers.

      That part -- mating the materials with the intended purpose -- is the "art" in architecture. The "art" in programming (aside from some limited domains like UX or AI) is less immediately describable except by effect (e.g. "How quickly do new team members get up to speed?") but should be no less important to any project manager. I don't really think that programming has been around long enough for us to have our Frank Lloyd Wright moment, but that is no reason to ignore the "intangibles" and immeasurable aspects to quality code.

    15. Re:Computers are making everyone's life easier by Daniel+Hoffmann · · Score: 1

      Have you ever used Maven?

      Also I hate all OSs I ever used as well...

    16. Re:Computers are making everyone's life easier by Daniel+Hoffmann · · Score: 1

      Hey I want to drop by and thank you for your comment, it says everything I am going through right now, developing boring business apps and all that. I am in the process of going back to college to get a PhD working with AR and VR (maybe with the Unreal Engine) and hope I have the same experiences you had.

    17. Re:Computers are making everyone's life easier by BlackHawk-666 · · Score: 1

      I think you'll love it. I've tried out Unreal Engine and it's a really great environment to develop with. It has a great toolkit and the code is really sweet looking and tidy. For me though, the look and power of CRYENGINE is worth the much higher pain and learning curve :D I've picked up an Oculus Rift DK2 kit and had a bit of a run around using that gear - it's like a little taste of the future. CRYENGINE doesn't support it yet, but there's talk they will in the future.

      On a personal level, I really hope you do find your passion again. It's easy to lose sight of how fulfilling programming can be when you work on something your passionate about. I wake up in the morning and I'm keen to start back on my project. I've recently re-learnt matrices and vectors and learnt quaternions, and finally I have a use for them (35 years after initially learning them at school) so I love knowing them now (particularly quaternions).

      I'm digging through a codebase of ~260,000 lines, much of which is fairly badly documented headers (not all the implementation is released to EaaS subscribers)...and loving it! It's like a treasure hunt, finding how something threads through the system, how to make it do what I want. When you start to see your animated characters moving and reacting based on code you wrote, well, that's what programming is about for me.

      I have no illusions, the tasks I am setting for myself will takes years of work to complete, the thing is...finally, once again, I am enjoying the journey. I hope you enjoy yours too!

      --
      All those moments will be lost in time, like tears in rain.
    18. Re:Computers are making everyone's life easier by Daniel+Hoffmann · · Score: 1

      I was thinking of going with the Unreal because of Oculus support and I heard good things about the development environment (unfortunately Unreal SDK does not support my platform of choice, Linux, but I can live with that). One thing that I am afraid of is building in C++, I do not have extensive C++ experience and I am afraid of missing the easy of use of untyped languages too much. I program mainly in Javascript these days, but I do a lot of coding in Java too and I find it very unpleasant.

      Thanks for the sentiment though.

    19. Re:Computers are making everyone's life easier by Anonymous Coward · · Score: 0

      Engineering is an art.

    20. Re:Computers are making everyone's life easier by Anonymous Coward · · Score: 0

      Programming is far more Engineering than Art. The people that think it's Art are the uneducated ones reinventing the wheel.

      I do agree with build tools though. Usually end up scripting those myself.

      Gotta agree here. It used to be an art when you had to limited resources and had to figure out how to cram 128K of code in 64K of RAM. Nowadays computers and networks are so powerful that only the most incompetent programmer cannot get minimally performent code to run.

  5. sounds a lot like an argument I hear a lot by Anonymous Coward · · Score: 0, Flamebait

    I hear this argument from some old programmers who've been around forever and seem allergic to learning new technologies. They're still attached to C, producing code with buffer overruns and memory leaks, where the rest of us have moved onto managed code and garbage collection. It isn't about less or more capable, it's that humans are imperfect and if you force them to get the tiniest details right ALL the time, by hand, well that just isn't something human brains are good at doing.

    Moving up to higher level tools is a GOOD thing. Otherwise we'd all still be writing in assembly language. When people get stuck at one level and don't want to keep learning, they tend to argue that better approaches are not manly enough. "It was hard in my day dammit and it should be hard today too!" But the goal is to make quality software, not to cowboy the shit out of everything.

    1. Re:sounds a lot like an argument I hear a lot by Anonymous Coward · · Score: 2, Interesting

      I think it depends on the individual's capabilities. For example (I am not a dev) several years ago I decided it was time to learn a programming language. Because my PC and all work environments were Windows, I decided I should start with C# and WinForms. I created a new project in my Visual Studio Express and it went off and created all kinds of files and tree structures automatically. I then followed tutorials clicking things and designing my GUI app. But I didn't really understand. So the next day at work I asked some professional developers about all the various little files that got created.

      It was an eye opener for me that many didn't actually know. They had a general idea (e.g. .cs files) but to them it was so irrelevant they just never bothered. I eventually gave up. Several years later I wrote some scripts in Powershell and my boss wanted a gui. So I went off and started learning about the WinForms class on MSDN. I can now looking back basically understand what I did back then. Because doing things in powershell I had to manually create each object by hand. Properties, events and methods made a lot more sense now.

      Someone like me could only ever be a very mediocre programmer. But someone like me paired with a tool like Visual Studio can (for a time) pass for a higher level programmer without the underlying competence. You see the same stuff all through I.T. People who think they know what is going on, but actually everything they know is limited or framed by the more intelligent tool they used to solve the problem. Then they'll meet someone who actually 'gets' a few levels above or below their current position in 'the stack'. Those guys are truly competent. They use all kinds of tools, but the tools are shorthand for their existing knowledge, not a crutch for their ignorance. These 2 kinds of I.T worker will view this book differently.

    2. Re:sounds a lot like an argument I hear a lot by Anonymous Coward · · Score: 0

      where the rest of us have moved onto managed code and garbage collection.

      And most *still* somehow manage to fuck it up. Minecraft was (is?) a fucking mess.

    3. Re:sounds a lot like an argument I hear a lot by molarmass192 · · Score: 1

      ... and just what do you think this managed code and garbage collection is written in? Yes you've moved on, but you've only moved up the stack, you're now an end user of what the low level folks write. There will ALWAYS be a need for folks who code in assembler / C, but eventually Java, C#, will be superseded and fade away into obscurity. Don't get me wrong, I kind of like that people don't learn C anymore, more job security for me and some uncomfortable questions for folks I get to interview. Ask any Basic / Pascal people how secure those higher level language programming jobs are in the long run.

      --

      Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
    4. Re:sounds a lot like an argument I hear a lot by Anonymous Coward · · Score: 0

      Exactly this.

      Understand low level code and concepts and all the foundational tools which most GUIs use under the hood (e.g. Make and gdb), and you will always be employable. Learn some high-level languages too, but don't neglect the foundation as that's the part that's still going to be meaningful on your resume in 20 years.

      C is not going anywhere any time soon.

    5. Re:sounds a lot like an argument I hear a lot by disambiguated · · Score: 1

      C is not going anywhere any time soon.

      I think it's a myth that people aren't learning C. I interview a lot of devs, many just out of college. Most of them know C/C++. They may be more comfortable with Java/C#/whatever, but they at least know C++ syntax and understand the memory model, etc. It would make no sense for universities to ignore C/C++, if for no other reason than the huge amount of code out there in those languages that you may need to understand. Kids in CS these days are still writing their own compilers, toy OSs and memory managers.

      High level languages are more productive, no doubt about that, so it makes sense to learn them. But lower level knowledge is not made obsolete. You're still better off knowing C/C++ and some machine-level things, at least enough to read the code, understand a stack trace, memory dump, single step through compiled code, etc. So learning the high level tools is in addition to the traditional tools, not instead of them.

  6. require understanding by roman_mir · · Score: 1

    I train all the new people that I hire and so I made it a very conscious decision from the very beginning to make sure that they understand the underlying technologies that they are trained in. If it is a build procedure, use ant, not maven, make sure they write build scripts by hand first of all, no generated scripts. Ensure they understand every configuration file that we use, require that they use as much simple code as possible as opposed to configuration heavy frameworks, etc. The exception are code generators that we create, we automate away large tasks by creating code generators that use meta code to generate a bunch of source code for a specific type of use case. But in this case you are not looking at running a configuration, you are running the generated source code and when source is generated it has to be fixed by hand in a number of ways that requires that the developer reads the code.

    This produces developers that can debug, and if you can't debug you are not actually a developer.

    1. Re:require understanding by Anonymous Coward · · Score: 0

      But in this case you are not looking at running a configuration, you are running the generated source code and when source is generated it has to be fixed by hand in a number of ways that requires that the developer reads the code.

      Holy shit, you have one or more broken code generators and you're proud of it? Maybe one of these new uber-programmers you're training could, you know, fix the broken stuff so you can move on to more interesting things.

      If you don't have the stones to go and fix your own broken tooling, you're not a developer, either.

    2. Re:require understanding by roman_mir · · Score: 1

      A general purpose code generator with a simple enough meta-code configuration does not know your business logic, you will have to plug your business logic into the generated code, that's first.

      Secondly yes, we have a number of omissions in the generated code on purpose, they cause compilation errors exactly in the locations in the code where the coder needs to do some manual work, this is the best way to ensure that the developer takes a look at every one of these.

    3. Re:require understanding by Anonymous Coward · · Score: 0

      You *can't* be a real person, right?

      "Build tools are bad! Generated code is bad! Except the code generation we use, which doesn't work! Damn, that's some best practices."

    4. Re:require understanding by roman_mir · · Score: 1

      Everybody is free to do what they want to do, you don't have to follow anything, anybody for any reason whatsoever. YMMV, where is the problem?

    5. Re:require understanding by Anonymous Coward · · Score: 0

      Everybody is free to do what they want to do, you don't have to follow anything, anybody for any reason whatsoever. YMMV, where is the problem?

      The Variance is where the problem is.

      Something about woodpeckers and civilizations comes to mind.

    6. Re:require understanding by Bite+The+Pillow · · Score: 1

      For the record, and not to your individual situation, the article is warning people away from having a business full of ignorant people.

      You (not roman_mir specifically) can have lego-assembling window-lickers if that fits your bottom line. It is not necessary to require understanding from everyone.

    7. Re:require understanding by Anonymous Coward · · Score: 0

      No, it produces IT support technicians. Where the actual development part of being a software developer comes in that process of using command line utilities and playing with configuration I've no idea.

  7. In 3... 2... 1... by Anonymous Coward · · Score: 0

    Kids These Days!

    1. Re:In 3... 2... 1... by bobbied · · Score: 1

      Kids These Days!

      You are right! Mythical Man Month to the rescue!

      There truly is NOTHING new under the sun... Trust me kids, we thought we where hot stuff too, we where just as wrong as this book's author is. Slightly different spin, but Chapter 16 and 17 still apply. If you don't know what I'm talking about, look it up on Google...

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  8. Not just the skills by AchilleTalon · · Score: 1

    It is not just about the skills, it is also about the innovation and creativity. Confronted to less challenging problems and solutions, someone will be less prone to innovate. At the end, businesses may put themselves in a position they are no longer capable to maintain their leading position in their own market because creativity has been killed for better control of quality and processes.

    --
    Achille Talon
    Hop!
  9. Bah by Anonymous Coward · · Score: 0

    Back in my day you had to write your own compiler. Fucking automation codifying standards. What a joke! I don't have time to build a rocket, I'm debugging ASM, so I'm obviously smarter than those Rocket monkeys. Why stand on the shoulders of those who came before when you can just wait till you grow tall enough?

    1. Re:Bah by Kazoo+the+Clown · · Score: 1

      When I started the lead programmer had a degree in Nuclear Physics and insisted on coding his own text editor and assembler from scratch-- the assembler using his own mnemonics. Consequently, it was incompatible with any commercial product we might consider moving to later. The guy never dealt with ANY other code written by anyone. He also didn't have any error handling, which as a user, HE didn't need. My first project was to add error handling so someone could use the stuff besides him. He never used that error checking version tho. There are still apps out there running today written in the higher level language the guy designed at the time. It could run business apps in as little as 4K RAM per user. When we finally hosted it on Unix it scaled up really well...

  10. Making Programmers Lazy? by ememisya · · Score: 1

    Firstly, programmers are lazy by design. That's a good thing because that means energy efficiency, which also equates to better algorithms in the pattern of thought (that's why we have coffee, to move a lazy programmer into coding). Does automation make a programmer lazy? Not if they practice both. At home as a hobby, open up a Hex Editor and code with directly inputting 0s and 1s like a real man! At work, use your IDE's bean generators and the like, the key point being, as long as you are not helpless when the automation doesn't function as it should.

  11. Why worry? by RabidReindeer · · Score: 1

    After all, like he said, "IT doesn't matter".

    It's true, though. IDEs full of wizards and other magic make it look like less-capable (cheaper) people can do software. So that's what management hires.

    Problem is, the IDEs can make a capable developer's job easier, but an incapable developer becomes utterly lost when the IDE falls short or breaks down.

  12. Computers are making everyone's life easier by Anonymous Coward · · Score: 0

    Why are programmers singled out? Arguably computer automation is helping everyone. Skills are only important to have if there is value in the skill. I don't think theoretical computer scientists are any less intelligent because they never program in C or C++.

    I believe this is true.

    Fundamental skills such as algorithmic thinking and attention to detail are still important, and they'll remain so even with increasing automation.

  13. Oh here we go again... by bobbied · · Score: 4, Insightful

    Fredrick Brooks spoke to this idea way back in the 1970's and rightly concluded that programmers are going to be with us forever. The author of TFA needs to read and understand "The Mythical Man-Month" (2nd Edition) by Fredrick P. Brooks, mainly Chapter 16, but likely the whole book. This book should be REQUIRED READING for ANY computer related undergraduate degree program.

    There is NO silver bullet. You will always need and have programmers. It was true 30 years ago and it's true now. We have not automated our way out of needing programers to ply their craft. Yes, we have "automated" a lot of logistics around computer operations, but this has ALWAYS been a low skill job. Back in the day they ran punch card readers and hung data tapes, none of which took too much knowledge of computers or programming. You needed a system programmer to make the system do anything different than what it did before. System programming was a highly skilled task.

    The names and languages have changed, but you have "operators" and "system programers" still today. We call them Administrators and Programmers today. One operates the machines, loads software, manages backups and keeps paper in the printers, the other comes up with programs and systems that do new and unique things. The latter still requires the unique programming skills.

    This author is wrong, and would have known had they done their reading.

    --
    "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
    1. Re:Oh here we go again... by radtea · · Score: 4, Insightful

      The latter still requires the unique programming skills.

      But they are different skills, and more powerful tools necessarily imply that what used to be highly skilled jobs are now not so skilled.

      Automation isn't making programers dumber, it's allowing dumber people to be programmers, or dumber programmers to do harder things. It's been this way forever. 99% of programers working today couldn't have toggled firmware into a 6502 and made it run. Fortunately, they don't have to.

      I'm old enough to have known programmers who still were kind of suspicious of these new-fangled "compilers", and I've actually programmed on punch cards, and collected data on a machine that booted from paper tape (there were no working tape punches left, so the lifetime of the machine was dependent on taking really good care of the few remaining tapes...)

      All of that has gone away, and the skills programmers needed in those days have gone with it. That's a good thing, although it kind of sucks for people who put in thousands of hours honing skills that are now irrelevant.

      --
      Blasphemy is a human right. Blasphemophobia kills.
    2. Re:Oh here we go again... by bobbied · · Score: 1

      Read the book.... Not the one the article is about but "The Mythical Man Month" by Fredrick P. Brooks, Jr. Specifically Chapter 16 (and 17 if you are lucky enough to get the 20'th anniversary edition.)

      This book is 30 years old and STILL speaks truth about what software engineering really is. The book discussed in the above article is from some newbie who doesn't know computer history and has fallen for the color glossy sales literature from software tool vendors.

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
    3. Re:Oh here we go again... by BlackHawk-666 · · Score: 1

      As cool as flipping a bunch of switches sounds, the smart programmers hand wrote their assembly code then entered it into the machine using a line editor into a BASIC programme that would assemble it into binary. There were two ways to get binary code into my old OSI C1P Challenger, one was to punch in a series of two digit numbers, which you would first have needed to hand assemble and convert to the binary operands using a table...the other was write an assembler and simply type it straight into the machine as lines of assembly and have the machine do it for you. I never hand converted my assembly code to binary ever again after figuring out that's what computers were made for :D

      --
      All those moments will be lost in time, like tears in rain.
    4. Re:Oh here we go again... by antdude · · Score: 1

      I wonder if my The Mythical Man-Month book is still valid from the mid (19)90s.

      --
      Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
    5. Re:Oh here we go again... by Anonymous Coward · · Score: 0

      ...more powerful tools necessarily imply that what used to be highly skilled jobs are now not so skilled.

      so better toothpaste implies that we're all our own dentists now and the professionals have nothing further to tackle?

    6. Re:Oh here we go again... by Xest · · Score: 1

      "But they are different skills, and more powerful tools necessarily imply that what used to be highly skilled jobs are now not so skilled."

      No it doesn't necessarily imply that, in fact, it doesn't imply that at all and it isn't true.

      Systems have gotten more complex with more technologies and more moving parts than ever before. The complexity has simply moved from the underlying technologies being complex to the overall problem being complex.

      Even the most basic non-trivial web applications now will often require knowledge of HTTP, Javascript, HTML, CSS, web services, XML, SOAP, SQL, Apache/IIS, some server-side technology (e.g. Java with Spring or C# with ASP.NET and their respective toolchains) and probably some patterns like MVC and any frameworks relevant to that and their technicalities. So sure, a component of the solution like C# is way more easy than say x86 assembler, but the overall solution the developer is working is incredibly more complex than anything people were ever writing in assembler.

      Highly skilled jobs are still highly skilled, they just require a different set of skills- rather than having in depth knowledge of the nuances of the x86 instruction set and the CPU implementations of it you instead need to know many different technologies in decent detail and how they tie together and the nuances of them instead. There's still as much to know and the overall solutions still need just as much understanding and thought, it's just different knowledge, that's all.

      FWIW I was brought up on C and assembly but now do a fairly diverse range of development but mostly large scale distributed back end systems- this is why I can say with certainty that it's complete nonsense to suggest things are any less complex now than they've ever been. I still have to engage my brain as much as I always have because shit doesn't get easier no matter how many tools you have- the tools just eliminate one complexity whilst allowing you to focus on further complexities. Simply put, that's precisely the mechanism that allows software to get more advanced in the first place and if it didn't happen like that then software would be the same now as it was 20 years ago.

    7. Re:Oh here we go again... by cascadingstylesheet · · Score: 1

      There is NO silver bullet. You will always need and have programmers. It was true 30 years ago and it's true now. We have not automated our way out of needing programers to ply their craft.

      Exactly.

      The key is the ability to break down complex problems, and model them somewhat in your head before you model them in tools. The tools change and improve, sure, but you will always need programmers.

    8. Re:Oh here we go again... by Daniel+Hoffmann · · Score: 1

      Today a lot of work that used to be custom programming is now done by software packages that require consultants to configure the tool instead of programmers. All the system analyst work is still required, but not nearly as many programmers (you still need some to configure the tool to do stuff it can not do out of the box). In total these tools require less people to perform the same job, but the result is never really customized specifically to the client (you need to adapt many of the requirements to the tool).

      Since most companies want the cheapest possible "good-enough" solution this is actually a lot better than custom programming an application that would be rushed into production.

    9. Re:Oh here we go again... by david_thornley · · Score: 1

      There's two things that an increase in automation does.

      First, it allows less skilled people to do what the more skilled used to do.

      Second, it allows more skilled people to do what just wasn't seriously attempted earlier.

      The ten-year-old code base I spend my time on wouldn't have existed thirty years ago, since it would have required so much work to make to be impossible for a startup. At that time, the best widely-used languages for writing such code were Pascal and K&R C, and the graphics code would have to be specially made and changed for each new architecture (no OpenGL back then). There were programs of similar complexity, but they took a whole lot of people a whole lot of time.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    10. Re:Oh here we go again... by bobbied · · Score: 1

      I wonder if my The Mythical Man-Month book is still valid from the mid (19)90s.

      It was actually written (some of it) in the late 60's and YES it is still valid and IMHO should be read by anybody involved in doing or managing any kind of engineering effort. My favorite chapter is the one the book's title comes from "The Mythical Man Month" where Brooks explains why it is that adding people to a project makes it take longer and cost more. It's a Classic.

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  14. Accidental vs Essential Complexity by Anonymous Coward · · Score: 5, Informative

    Please re-read:

    Brooks, F. P. , J. (1987). "No Silver Bullet—Essence and Accidents of Software Engineering". Computer 20 (4): 10. doi:10.1109/MC.1987.1663532
    http://faculty.salisbury.edu/~xswang/Research/Papers/SERelated/no-silver-bullet.pdf

    Automation removes accidental complexity. /discussion

    1. Re:Accidental vs Essential Complexity by Anonymous Coward · · Score: 0

      I answered exactly the same!

  15. Computers are making everyone's life easier by Anonymous Coward · · Score: 0

    It does not make people's lives harder when the massive proprietary build system goes wrong, the original vendor sucks at support for any number of reasons, and no one in house knows where to begin to fix the build issues.

    IF the high-level build system was written using free low-level tools, and there are a few guys around who understand how it fits together, this is a MUCH better position to be in.

  16. Some truth by Anonymous Coward · · Score: 0

    Being a software engineer by trade, I can say this is somewhat true. I definitely have coworkers who would fail or barely eke by if it weren't for boilerplate code generation and autocomplete. They certainly don't understand the code they're "writing" or why it works.

  17. sounds a lot like an argument I hear a lot by LikwidCirkel · · Score: 1

    I like this attitude. It means I'll be making a bajillion dollars when called to fix your build system, middleware and low-level interface code that all of your current employees are terrified (and unqualified) to touch.

  18. time to forum a union by Joe_Dragon · · Score: 1

    time to forum a union before your automated out of a job or are one of few people left likely pulling 60-80 hour weeks.

    1. Re:time to forum a union by Krishnoid · · Score: 1

      Or have robots form a union, then have management outsource the work to humans as a cheaper labor solution.

  19. Bullshit by curious.corn · · Score: 2

    It's not automation that's making us "less capable". It's the incessant expectation that we - (software) engineers - be senior, mono-maniacal, obsessive-compulsive, experts in whatever the bloody fad du jour is. That's because darn management and HR dolts have no clue how to assess an engineer, yet expect to make the decision.

    Therefore yes: we're "less capable" because we can't keep up with their fads... go fuck yourself. Seriously.

    --
    Mi domando chi à il mandante di tutte le cazzate che faccio - Altan
    1. Re:Bullshit by radtea · · Score: 1

      Therefore yes: we're "less capable" because we can't keep up with their fads...

      Part of expertise is knowing when to ignore fads. This may require faking it well enough to get along for a while.

      --
      Blasphemy is a human right. Blasphemophobia kills.
  20. What *is* the hard work. by MrKaos · · Score: 4, Interesting
    I automate every task I find mundane. Boring tasks means I am not thinking and if I am not thinking that means I am not learning. If I am not learning I am stagnating. Automating stuff *is* hard work because it forces you to learn. Learning other peoples automations means I don't have to solve those problems.

    Automating stuff means I am more effective and I have more time to write /. comments and this is good because sometimes solving hard problems means I should just chill for a while, while the automation does the work. Automation doesn't make me less capable, but it does mean that I have 3 times the output of anyone else around me, making me more relaxed and generally easier going while people wonder how I do it.

    Automation makes me smart lazy and achieving that is hard work.

    --
    My ism, it's full of beliefs.
    1. Re:What *is* the hard work. by Anonymous Coward · · Score: 1

      *You* automating your own work makes you learn, yes. I believe the issue the book author is addressing is when you're handed a tool built by someone else that automates work you would otherwise have had to do. I think the real issue is what your reaction is at that point. One reaction would be to take it as an opportunity to avoid learning what you would have had to learn had you not had that tool. The preferred reaction is to learn those things anyhow, and learn what mechanisms the tool provides to do the automation. The latter reaction leaves you able to revert to working non-automated should the tool break or become otherwise unavailable, and likely makes you more effective in using the tool, as you have a better understanding of it.

      It basically comes down to: are you using automation to substitute for thinking, or are you using automation to leverage your thinking? Too often people go down the substitute route.

    2. Re:What *is* the hard work. by BlackHawk-666 · · Score: 1

      Once a task has been automated to the point that a reliable mass market tool is available to do the work for you, what possible reason can there still be to do it by hand any more? We use computers precisely because they automate mundane tasks. Should we switch back to having women working old switchboards to make a phone call just so we can preserve that no longer needed skill? Should farmers plough their fields using oxen just so they retain a skill that's no longer relevant? Should programmers have to write assembler and calculate their own offsets for jumps (JMP) because that is now automated.

      As we move higher and higher into automation and abstraction it provides us more leverage and greater speed at completing mundane tasks. Unless you're Amish you should embrace the automation and start looking at ways to solve tomorrow's problems, not the ones solved years ago. Learn to let go of the past and embrace the future.

      --
      All those moments will be lost in time, like tears in rain.
    3. Re:What *is* the hard work. by Anonymous Coward · · Score: 0

      I automate every task I find mundane. Boring tasks means I am not thinking and if I am not thinking that means I am not learning. If I am not learning I am stagnating. Automating stuff *is* hard work because it forces you to learn.

      From a different perspective: Implementing SMTP protocols over and over could be called "real" programming, but it's boring as hell, and after the first few times all you're doing is looking up the new language's documentation for the usual stuff: "How do I open a port?"; "How do I convert file/memory/etc to an attachment?", ad nauseum. Same for database usage, XML reading/writing, and about a million other little tasks that are required to support even the simplest usable software. If the IDE can crank out those millions of lines of code just so I can start with my actual Brilliant Piece of Software (TM), even better.

      OTOH, when things go wrong (and they often do, or we developers wouldn't have jobs), having implemented FTP, SMTP, ORM, etc. from scratch means that you have a much better understanding of the guts of the system. You know what the tools are doing for you, so you can track down that odd situation or set of circumstances and resolve it much more quickly.

      Guess I'm playing devil's advocate here: I can picture someone who has never used anything but an IDE missing that knowledge (hell, I've worked with plenty of them), but I'm not discounting the freedom from re-implementing IETF RFC XXXX for the 10th time.

    4. Re:What *is* the hard work. by JanneM · · Score: 1

      Once a task has been automated to the point that a reliable mass market tool is available to do the work for you, what possible reason can there still be to do it by hand any more?

      Fair point. But one remaining reason to have done it yourself is to understand how the tool actually works behind the scenes. And that deeper understanding is generally what separates a master of the craft from dabblers.

      Slightly different field, but, for instance, if you are doing any amount of real numerical programming, you really should have implemented a floating-point system as well as algorithms such as FFT, matrix factorization, numerical integration and the trigonomertic functions at least once.

      You should of course not use any of your own implementations in production; that's a recipe for disaster. But having done it once, and understanding some of the underlaying theory and the challenges of implementation means you're much better equipped to use the high-quality library versions in an intelligent manner. You'll understand why functions such as expm1() actually exist and how to avoid the common numerical pitfalls.

      The same really goes for tools in any other field. You might want to do it manually not to actually use your work but to better understand when and how to use the tool. Or, for that matter, realize when the situation calls for implementing a completely new tool.

      --
      Trust the Computer. The Computer is your friend.
    5. Re:What *is* the hard work. by Anonymous Coward · · Score: 0

      > reliable mass market tool is available

      I would claim "reliable mass market" is an oxymoron in software, thus making the point irrelevant.
      What tools have you used that never, ever, a single time broke for any of its users?

  21. In other news... by Anonymous Coward · · Score: 0

    Cars make people worse at riding horses.

    1. Re:In other news... by bobbied · · Score: 1

      Cars make people worse at riding horses.

      But you can wreak a car a LOT faster and easier than a horse.

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
    2. Re:In other news... by Anonymous Coward · · Score: 0

      Cars don't mind being wreaked.

  22. Computers are making everyone's life easier by Anonymous Coward · · Score: 0

    Computers make life easier for everyone, but programmers need to be able to diagnose and correct when it fails to make life easier for everyone else. If a programmer constructed things out of all sorts of middleware/frameworks and automation they did not understand, they are ill-equipped to handle unexpected consequences.

    In the same way, car engines make everyone's life easier. You push a pedal and it magically pushes your car harder. If it does not do that, the mechanic better understand how that engine was built in order to competently identity the problem and fix it. That mechanic won't be actually building engines, but knowledge of how to build engines is a necessary part of his job to fix engines built by others.

  23. It depends... by Anonymous Coward · · Score: 0

    I don't want to *have* to deal with the meticulous memory management of writing in C, but at least knowing how it's done is a valuable aid in understanding how the language I do use might be affected by choices I make. I understand various concepts around automatic reference tracking and how languages use it. 98% of the time, I don't need to think about it. However, ever so often I have to debug a high-level language using gdb as if it were a C program. This is truly a last resort, but if all the higher level facilities fail to identify the source of an issue, gdb or strace can be a godsend.

    So yes, keep learning, but don't skip the fundamentals. Skipping the fundamentals can impair your debug skills, cause you to embrace a middleware package that really doesn't add anything to your solution, or fail to provide actionable bug information upstream to the framework you are using that isn't behaving as expected.

  24. Re:Sad.... by bobbied · · Score: 4, Insightful

    Oh please... I'm an old guy who cut his teeth on "C" programs, but your attitude is just wrong.

    Tools change, languages change, computers change, methods change, but programming remains the same under all the trappings. Who's a better programmer? One that does Java or one that hacks out Assembly? Neither. Yes the programing model changes and the tokens you use to manipulate this model changes, but I don't care what you code in or how familiar you might be with some past tool I've used, if you program, you use the same skills I used hacking out "C" even if you are using some language I've never heard of.

    --
    "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  25. Re:Sad.... by Anonymous Coward · · Score: 1, Insightful

    You mean the automation tool, make?

  26. Agreed.. by Anonymous Coward · · Score: 0

    Yea, it was great when every single browser implemented "getelementbyid" slightly differently, so you had a cluster fuck of "if browser = 'x', then y"

    That was one thing I don't miss.

  27. Re:Sad.... by Anonymous Coward · · Score: 0

    So, a developer who is a slave to a black-box set of tools which he doesn't understand is equal to one who can look into a whole spectrum of problems? No, sorry, not the case. I'd much rather hire a C programmer to write Java than the other way around. Only one will deliver something usable.

  28. The job never gets easier by Shados · · Score: 4, Insightful

    Every time something gets easier when it comes to software development, people just push things further (as they should).

    Thats why no matter how many versions of Internet Explorer we stop supporting, web development is still a pain in the ass. The moment people stop doing something hard, they just take all the time they saved, and tackle something else that all of a sudden become worth it (ie: supporting mobile operating systems, optimizing stuff with webgl if its available, whatever, you name it)

    Things that went from "No way, we don't have time for this!" become standard, and the cycle continues. Every minute we save because a task is automated or redundant, is a minute someone spends doing something that was once impossible. And if that person works for a competitor, you now have to catch up.

    1. Re:The job never gets easier by Anonymous Coward · · Score: 0

      Today, in literally one day, I hooked up an arduino to a web service that recorded time, temp, and humidity to a database.

      And if you know anything about the arduino, you know that's not really anything special. I would imagine anyone that has programmed for a living could do it (and most probably faster than I did). But it required a lot of people to build the arduino and program it; to build the sensor and other components, and then all the people working on lower level portions of the network and server that the arduino communicated with. There were lots of people involved in me doing this little starter project. And next, I will involve some engineers to use this thing to solve some problems at work.

      When it becomes that easy to do automation (and it still took a set of skills - it wasn't plug and play), people are going to be able to solve more and more real world problems with these types of devices.

    2. Re:The job never gets easier by Anonymous Coward · · Score: 0

      Every time something gets easier when it comes to software development, people just push things further (as they should).

      In my first year of comp sci (1980) my university computer used punch cards and batch processing, so writing and debugging programs was really slow. At the start of my second year they introduced terminals. When I heard this from a lecturer I happily announced "That's going to make it a lot easier" and he just responded "No, it means we give you more work".

    3. Re:The job never gets easier by Anonymous Coward · · Score: 0

      Sometimes, I sitting more trying to figure out how to do something simple in a complex tool, then it would take me to code the complex tool from scratch.. for not talking about actually doing the task myself that the tool should help me do in the first place.

  29. Better tools isn't the problem... by ndykman · · Score: 2

    The summary seems a bit misleading. The main thrust of page I saw what that the push to replace work with automation can have consequences at a certain level. Does decision making really work well in automation, or does it lead to problems? There's evidence in both camps. An example, some traders on Wall Street have complained about removing people from the process, they that really do add value at times. And sure, it's hard to imagine a human would issue a massive amount of bad orders, but a computer model with a bit of glitch might. But, is that enough to slow things down. Just one example of many.

    In my mind, critical thinking does have value, and no, there is nothing in data science, machine learning, etc. that really comes even close to what humans can do in that area. There's a big debate in Medicine about following best practices and if just following algorithms would work better. Some note it would reduce unneeded tests and procedures. Others have noted that actually, doctors are much better at noting when something is going really wrong and that following a script could lead to unnecessary deaths that would be avoided by relying on clinical judgment. Is there is a need for better data? Sure, but can you really automate judgment? And what real value is there of taking the craft out of everything for humanity as a whole?

    The problem is that some people don't think software engineering, programming, coding, whatever requires critical thinking, or that there is a craft or art to programming. And you can increasingly do it that way. Cut and paste, copy from the web, and when things don't work out, post on the web and hope somebody answers.

    What is lost is somebody has to have the skills to figure out what is going wrong or that it can be done better. Where do those answers come from on the web after all? At some point, somebody has to know how to actually approach the problem from the fundamentals and solve it, and that's when all those things that we (okay, at least me and my schoolmates) studied in CS come into play.

    I'm on a project and they are just throwing idea after idea to figure out a performance problem. Sure, it's tricky, but I realize, they have a huge blind spot. They don't know how to attach a low-level debugger to a process, to monitor OS resources, or even realize that you can debug something without sources. Sure, it's a Java enterprise application, so that's another layer of hard, but it can be done. Cripes, we had to debug core dumps. I'm glad (thrilled) that I don't have to do it anymore, but the skills that I learned doing it were invaluable.

    A related aside. The problem is not better tools, it is not knowing there are better (or any) tools or that you can make better tools.

    1. Re:Better tools isn't the problem... by Krishnoid · · Score: 2

      There's a big debate in Medicine about following best practices and if just following algorithms would work better. Some note it would reduce unneeded tests and procedures. Others have noted that actually, doctors are much better at noting when something is going really wrong and that following a script could lead to unnecessary deaths that would be avoided by relying on clinical judgment.

      At least one US doctor tried implementing something like a precursor to this and got some pretty interesting results.

  30. I forgot how to use a slide rule ... by CaptainDork · · Score: 2

    ... but so what?

    My calc tools elevate me way beyond that inaccurate analog piece of crap.

    --
    It little behooves the best of us to comment on the rest of us.
    1. Re:I forgot how to use a slide rule ... by Boronx · · Score: 1

      Few mathematicians know how to create Mathematica from scratch.

    2. Re:I forgot how to use a slide rule ... by Anonymous Coward · · Score: 0

      Or, they blind you to the fact that the 4th digit of precision is meaningless for the problem you are trying to solve (let alone the 14th digit).

    3. Re:I forgot how to use a slide rule ... by Anonymous Coward · · Score: 0

      Your calc tools won't work without electricity.

  31. In other news... by Anonymous Coward · · Score: 0

    Not quite a fair comparison because cars don't rely on horses under the hood. All high-level software and tools is built using low-level software and tools. One does not simply replace the other.

  32. By that argument by msobkow · · Score: 2

    By that argument, we should have a serious shortage of mathematicians since the invention of the scientific calculator.

    We should also have a lot of bookkeeppers and no accountants.

    Automation reduces the "grunt work"; it does not remove the need to think. If your job can be accomplished purely through the "grunt work" done by something like http://msscodefactory.sourceforge.net/ without you having to do any customization work or handle any special cases that aren't automated, you were never a real programmer to begin with, and your project was a joke in the first place.

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:By that argument by Anonymous Coward · · Score: 0

      By that argument, we should have a serious shortage of mathematicians since the invention of the scientific calculator.

      Close... we do have a serious shortage of computers http://en.m.wikipedia.org/wiki/Human_computer since the invention of the scientific calculator.

      And if you aren't old enough to have worked through the 90's when many "programmers" were little more than updated versions of those WW2 "computers", then count yourself lucky.

  33. Testing by darkain · · Score: 4, Interesting

    While I'm sitting here reading about other people bitching about abstraction libraries such as jQuery, my first thought was actually about testing processes.

    Pretty much everywhere I look online, projects are FLOODED with automated testing tools to ensure their code works. And sure enough, every bug that I submit has an "automated test" that didn't test that particular condition. Developers are relying more upon these testing tools and less upon actually USING their own services they're developing to ensure they work properly.

    A great example: a recent bug I had to file was brain dead simple. File opening ignored current working directory, so if you changed directories, the file open command would still assume you're in the base directory. Why wasn't this caught? All of their file handling automated testing routines ONLY checked absolute paths, none checked relative paths. On top of that, when they finally did add relative path testing after my bug report, they only added it as relative to the base path, and not testing against current working directory.

    Now, let's think about this for a second. How long has the concept of changing directories been around? While most of us will go "oh, DUH!" to the bug mentioned above, newer developers may simply not be in that same mindset, because they're not actively traversing their filesystems themselves. The automated toolkits are doing all that work for them, leaving the developers less experienced in this area, and thus less forethought when building the next generation of tools to test these exact sorts of issues. It is a downward spiral.

    1. Re:Testing by Anonymous Coward · · Score: 0

      I think that kind of testing is mostly useful when developing in large (>3) groups of people, where you add something, and some other person forgets what it was for and removes it.
      The test detects that it was removed and it can be fixed.
      What it doesn't test for is unknown bugs.
      Those are found through fuzzing, or by users.
      The developers using the tool might not help either, because they will probably have a very fixed way of using the tool and will never encounter whatever problem it is you have.

    2. Re:Testing by phantomfive · · Score: 1

      Pretty much everywhere I look online, projects are FLOODED with automated testing tools to ensure their code works. And sure enough, every bug that I submit has an "automated test" that didn't test that particular condition. Developers are relying more upon these testing tools and less upon actually USING their own services they're developing to ensure they work properly.

      Yup. Unit tests are great, unless they are used as an excuse for the programmer to turn his brain off. You can't test every case with unit tests, you still need to think.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:Testing by Kjella · · Score: 2

      I've found tests to be mostly useless when it comes to finding bugs, if you could think of the test you'd also make sure the code handles it. What they're invaluable for is testing regressions, so many times doing a seemingly innocent change would break things. Sadly I've found that for anything other than a one man project they are just positive proof, yes you broke something and not negative proof, no you didn't break anything. Just like comments you can never be sure they're really correct and complete, in fact the more likely someone wrote an ugly hack you'll inadvertently break the less likely there'll be tests for it.

      --
      Live today, because you never know what tomorrow brings
    4. Re:Testing by Anonymous Coward · · Score: 0

      Yeah, whatever happened to sitting down at a function and going, okay, what is everything I could possibly throw at it, no matter what stupid? What am I *physically* able to do, whether it makes sense or not? And then testing that...

      "But we wrote unit tests for the user stories in the specification!"

      Great job testing the specification instead of the code, folks.

    5. Re:Testing by Anonymous Coward · · Score: 0

      A great example: a recent bug I had to file was brain dead simple. File opening ignored current working directory, so if you changed directories, the file open command would still assume you're in the base directory. Why wasn't this caught? All of their file handling automated testing routines ONLY checked absolute paths, none checked relative paths. On top of that, when they finally did add relative path testing after my bug report, they only added it as relative to the base path, and not testing against current working directory.

      No, that's a poor example and isn't even a bug, it's a missing feature. It takes extra work to make the file prompt open at some other location. Work the developer might not have had time to do when that area of the code base was initially developed. It's also possible that the current working directory isn't available in the section of the code that opens the file prompt. That would make adding in the feature of starting at the current working directory even harder to implement because it could case signification changes in the program's design.

      In addition, maybe the developers wanted the prompt to open at the base directory. If you changed directories and wanted to open something from the previous folder, maybe starting from the base is faster. Frankly I'd rather start at the top and drill down into a folder structure than have to drill back out from where I was before I could go deeper into some other area.

      Lastly, was this a cross-platform program? You always want to base yourself somewhere and doing that at a known location is better than trying to guess where things are.

    6. Re:Testing by Anonymous Coward · · Score: 0

      Unit Testing is only really useful for regression testing. And the new Test Driven Development is really just forcing programmers to think about their pre and post conditions, inputs and outputs.

      Programmers not being able to conceive every possibility has been a problem since always.

    7. Re:Testing by Afty0r · · Score: 1

      projects are FLOODED with automated testing tools to ensure their code works. And sure enough, every bug that I submit has an "automated test" that didn't test that particular condition

      THIS THIS THIS

      As a software engineer (now half-suity) of twenty years, I am constantly frustrated by those newer to the profession who got caught up in the whole "Unit Tests are Sacrosanct" philosophy. I have worked with multiple engineers who value "testability" over "working".

      Unit tests are convenient, a handy tool for programmers, but in my experience they have close to zero inverse correlation with the number of bugs in the programmers output. Any programmer who can think of the right cases for his unit tests is also capable of considering those same cases when writing his code - the correlation between [Experience and Ability] and number of bugs is the biggest one out there.

      Know what I favour? Readability and simplicity over pointless abstractions. Functioning, working applications over "90% code coverage". Things that fail at compile-time over things that fail at run-time. And when I press these principles onto more junior devs I always get push back about how "that's old fashioned" or "that needs extra lines of code" - they seems to complete disbelieve, and then they wonder how the hell I write and manage multiple web sites in my spare time that are generally more complex and reliable than any of the commercial sites I've worked on (with one or two notable exceptions).

      KISS applies to everything, and unit tests do not adhere to this principle. They have a time and a place when they start to show their value - and that time and place is when SOME of the following are true:
      -] Codebase is expected to be maintained by a large team, or eventually by persons who were not involved in building it
      -] Codebase will be architected by senior staff, and then maintained by more junior staff
      -] Codebase may be sold to, or extended by, third parties (open source is big on this)
      -] Codebase is difficult to read/pick-up and has high levels of abstraction
      -] Codebase is expected to change significantly in the short or medium term
      -] Team involved is junior or inexperienced in one or more significant factors (in general, language, app domain)

      Outside of some of these scenarios (I may have missed some, please do comment) you should be seriously considering how much of your investment you place into Unit Tests. I have seen some companies/teams/individuals spend more time writing unit tests than they did functioning code - that's negligent in some cases. If your team had double the velocity on new features by simply writing features instead of upping levels of code coverage, your company/owners/shareholders would have twice their return on investment...

    8. Re:Testing by Anonymous Coward · · Score: 0

      Technology misapplied.

      Test harnesses do not protect against bugs, they guard against _regressions_.

    9. Re:Testing by david_thornley · · Score: 1

      To catch bugs in initial development, the programmer should not write the tests. Functional bugs come from misunderstanding and/or overlooking things, and developers that do that in the code will do that in the tests.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  34. The creators are dwindling? by aslashdotaccount · · Score: 0

    The flourish of automated tools appeared as a result of the 90s and early 2000s generations assimilating advanced programming skills. These generations knew how to directly handle hardware interrupts (and write peripheral drivers), write a tcp socket from scratch, code proper random access file management, program a perspective calculator for 3D rendering, etc. Now all these are deemed unnecessary because it's considered reinventing the wheel.

    The question is who will continue the tradition of scientific innovation in computing if the younger generations aren't taught these basic skills? We should all ensure that our children go through the ritual of learning the fundamentals as we did, even if they eventually end up primarily using xcode (or whatever other heavily sandboxed coding environment exists then).

    1. Re:The creators are dwindling? by aslashdotaccount · · Score: 1

      Not all developers need to commit to creating those public server APIs or the integrated environments you use to code. However, enough of us have to continue specialising in the science in order to ensure that those technologies are sustained and innovated. You might know how to create these tools, because by your own admission you have undertaken C/assembler coding, but the concern is that not enough of us are focus on that area. Languages/environments like Java, Objective-C and .NET are generally Turing-complete unto themselves.

  35. I forgot how to use a slide rule ... by Anonymous Coward · · Score: 0

    Your calc tool was not built using slide rules, and no part of it's production relies on slide rules. High-level software tools on the other hand, rely on low level software tools in order to work.

  36. Re:Sad.... by Anonymous Coward · · Score: 0

    As a C programmer I wouldn't hire a C programmer to program Java, if I also had the option of hiring a good Java programmer.
    First of all, as a C programmer that person will probably dislike java, and write C like code in java.
    Second of all, the Java programmer will already be familiar with the tools, API, libraries etc. and will therefore be more efficient.
    Good programmers write good code regardless of language, where good is determined by some criteria you have for the job.

  37. ah, but the analogy ... by Anonymous Coward · · Score: 0

    So, when the tractor breaks, the farmer fixes the tractor. However, when the compiler breaks, many of our modern "programmers" are incapable of identifying the problem. Further, the farmer is aware of what can break the tractor and actively avoids that. The modern "programmer" is not aware of what will break the compiler, and so poorly prepared.

    I'm not anti-agile, but come on, agile generally changes the user interface, not the business logic.

    1. Re:ah, but the analogy ... by ranton · · Score: 2

      So, when the tractor breaks, the farmer fixes the tractor.

      Maybe when your grandpa was a farmer this was true, but today the farmer calls his mechanic. The proportion of farmers who can fix their own high tech equipment is likely not that different than the proportion of developers who can debug low level code.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    2. Re:ah, but the analogy ... by K.+S.+Kyosuke · · Score: 1

      And when that rare opportunity arises, why not just ask someone more qualified? If you have serious stomach ache, it's an argument for visiting a health care specialist, not an argument for everyone getting an MD degree just in case.

      --
      Ezekiel 23:20
    3. Re:ah, but the analogy ... by plopez · · Score: 1

      Farm equipment is far more complex than in the old days, just like cars. "Fix it yourself" passed away a long time ago.

      --
      putting the 'B' in LGBTQ+
    4. Re:ah, but the analogy ... by mrchaotica · · Score: 1

      And when that rare opportunity arises, why not just ask someone more qualified? If you have a minor stomach ache, it's an argument for visiting a health care specialist, not an argument for everyone knowing basic home remedies just in case.

      With that change, does your argument still make sense?

      Not all programmers need to be superhuman experts at assembly, but every single damn one of them needs to understand (for example) memory allocation.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    5. Re:ah, but the analogy ... by datavirtue · · Score: 1

      Actually, now they are locked into a cycle of debt that precludes using an old tractor in favor of buying new ones before the old ones wear out. Those who run old tractors fix them themselves. Besides, there is often no time to hire a mechanic, when the tractor breaks it needs to be back in production ASAP. Your analogy sucks.

      --
      I object to power without constructive purpose. --Spock
    6. Re:ah, but the analogy ... by ranton · · Score: 1

      Actually, now they are locked into a cycle of debt that precludes using an old tractor in favor of buying new ones before the old ones wear out. Those who run old tractors fix them themselves. Besides, there is often no time to hire a mechanic, when the tractor breaks it needs to be back in production ASAP. Your analogy sucks.

      As someone who grew up on a farm in rural Illinois, I only knew one farmer (out of dozens) that knew how to fix most of his mechanical issues. Everyone knew how to fix simple things, just like developers can usually fix simple issues with their tools. But any issue which couldn't be fixed by your average person with some handyman and automotive skills needed to be sent to a mechanic. I mean do you really think farmers just have a fully stocked auto shop with replacement parts in their tool shed?

      Although you are correct that there is often no time for a mechanic. But the answer usually was to get help from neighbors by borrowing their equipment. And the turnaround from the mechanics at planting / harvest time was usually only a day or two.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
  38. Re:Agreed.. by Narcocide · · Score: 1

    Yea, it was great when every single browser implemented "getelementbyid" slightly differently, so you had a cluster fuck of "if browser = 'x', then y"

    This has actually never been the case with getElementById, specifically. There was *one* slight and completely avoidable corner-case in some older versions of IE... deprecated years before jQuery existed.

  39. In other news... by Anonymous Coward · · Score: 0

    At one point we needed horses to bring the raw materials to the car factories; now we have cars and trucks bringing the raw materials to build newer/better/more advanced cars. Not as different as you think.

  40. dev world vs medical world by cheekyboy · · Score: 2

    In the dev world, we are required to do all things from R&D , BA, coding, testing, tech writing.

    In the medical world, the ops table has 12 people each with minor specialization.

    Imagine if there was one doctor doing the prep, drugs, cleaning, cutting, sewing up, the works.

    --
    Liberty freedom are no1, not dicks in suits.
    1. Re:dev world vs medical world by Curunir_wolf · · Score: 1

      In the medical world, the ops table has 12 people each with minor specialization.

      Imagine if there was one doctor doing the prep, drugs, cleaning, cutting, sewing up, the works.

      Imagine you're out in the middle of nowhere with a life-threatening trauma wound and there is only one doctor available.

      --
      "Somebody has to do something. It's just incredibly pathetic it has to be us."
      --- Jerry Garcia
  41. The problem is... by toonces33 · · Score: 2

    that as time goes on, you end up using more and more complicated and advanced tools (oftentimes built out of a multitude of 3rd-party components that get sewn together like a sort of Frankenstein monster). As long as everything works properly everything is fine. But when they stop working for some reason, you have a problem. As a developer, the inner workings of the tools are by design pretty opaque, and yes in *theory* you can download the source and try and debug the thing yourself, but that's an incredibly poor use of ones time.

    1. Re:The problem is... by Anonymous Coward · · Score: 0

      When you've ripped out a library and replaced it with a new piece of shit for the umpteenth time because it didn't do what it claimed to do because the docs are full of shit and was going to save you a month of writing your own, digging into the code and patching it is a minor evil.

  42. Re:Sad.... by Anonymous Coward · · Score: 0

    It's sad how many "programmers" I meet who have never even typed "make" let alone more interesting things like readelf and strace.

    That's just elitism.

  43. Re:Agreed.. by FalleStar · · Score: 1

    I agree that jQuery has it's flaws, but it is also a godsend in many other ways. The company I'm currently working for writes web applications for K-12. Some of our customers are running XP with IE7, others are using iPads, Chromebooks, and everything in-between. While the majority of the client-side code is just in plain JavaScript, we've started incorporating some HTML5 functionality into our products recently, unfortunately some of the older browsers are a bit lacking in support. Often times jQuery will have a wrapper that will implement that same functionality if the browser doesn't natively support it, but if it does then it will just act as a wrapper to call the native implementation with a minimal performance impact.

    Hopefully a few years from now when XP has finally disappeared entirely and everyone is running a standards-compliant browser (as if there is such a thing) there will no longer be a need for a jQuery-like project, but until then I'm very glad that it exists.

  44. Hand crafted, as in beer by mrflash818 · · Score: 1

    Hand crafted code and makefiles will probably yield a superior result.

    Studies showing the errors per thousands of lines of code in open-source vs proprietary software, time and time again, seems to support such an assertion.

    --
    Uh, Linux geek since 1999.
  45. And Self-Actualization is not the goal. by Anonymous Coward · · Score: 2, Informative

    We automate in order to reduce the costs of development, so we can maximize profits.

    That is the only reason. Employer's have no incentive to care whether or not their employees are bored. They don't pay their employees to like their work. They pay their employees to do their work. And if automation makes that cheaper, then full speed ahead! If automation means I can hire a stupider, and hence cheaper, class of laborer, then I win again! Concerns about the long-term cultural implications be damned.

    Individual software developers might occasionally write a script that automates some tedious thing they frequently do. That is different, since it is employee-initiated and is an effort at avoiding boredom. The employer tolerates this behavior so long as the net effect is either neutral or positive in terms of productivity. The moment you, as an employee, start arguing that you should invest the employer's time in something that is less profitable but more interesting, you will be replaced.

    1. Re:And Self-Actualization is not the goal. by Jane+Q.+Public · · Score: 5, Insightful

      Employer's have no incentive to care whether or not their employees are bored.

      That may be true, but it has absolutely nothing to do with what OP was about.

      What the book author seems to miss is that today, one good person with good development tools (not even necessarily an "IDE" as OP says), can do the work that 20 good people could do 16 years ago. And I know, because I am doing it now AND I was doing it then.

      Example: when 2000 rolled around I worked for a programming company (and was VERY bored there, by the way, no matter how hard I worked). I wasn't a manager or receptionist; I coded all day.

      Today, on a decent day, I can easily accomplish 20 times as much, because the languages and tools have improved. But that would not be possible if my tools were "dumbing me down".

      Author might as well argue that typewriters were nirvana, and word processors made authors stupid.

    2. Re:And Self-Actualization is not the goal. by Anonymous Coward · · Score: 0

      We automate in order to reduce the costs of development, so we can maximize profits.

      That is the only reason. Employer's have no incentive to care whether or not their employees are bored. They don't pay their employees to like their work. They pay their employees to do their work. And if automation makes that cheaper, then full speed ahead! If automation means I can hire a stupider, and hence cheaper, class of laborer, then I win again! Concerns about the long-term cultural implications be damned.

      That is great, but only applies to companies. In school it's better to learn as much as possible and its an ideal place to learn how to code without using an IDE.
      There should probably be a course on how to take advantage of a powerful IDE to improve efficiency but in my experience people who learned programming in a powerful IDE can't code for shit and have about the same efficiency as what can be accomplished with me standing beside them telling them what to write.

      Also, memory protection creates lazy programmers. If you have to reboot every time you screw up you will quickly learn to screw up a lot less.
      We don't need more trial and error developers.

    3. Re:And Self-Actualization is not the goal. by disambiguated · · Score: 2

      Employer's have no incentive to care whether or not their employees are bored

      That is just categorically wrong, in any industry. It's laughable in the software industry where getting and keeping employees is one of the biggest challenges.

      You obviously don't work in the software industry. Employers not only tolerate all kinds of non productive things, they actively encourage them. Software engineers are treated like spoiled, geeky royalty.

      The moment you, as an employee, start arguing that you should invest the employer's time in something that is less profitable but more interesting, you will be replaced.

      OK, now I know you don't work in software engineering. Or any engineering. Trying to convince our employer to do things that are less profitable but more interesting is what we do.

    4. Re:And Self-Actualization is not the goal. by K.+S.+Kyosuke · · Score: 1

      We automate in order to reduce the costs of development, so we can maximize profits.

      That's like saying that we use machinery in order to maximize profits. I thought we were using machinery to maximize productivity to generate as much wealth with as many people possible so that people could have a house and a car and a computer, instead of just the house because everyone is busy juggling bricks and nobody has the time to build cars and computers. The same goes for programs; if there's a finite supply of developers but an essentially unlimited (or at least vast) space for potential useful programs, making them less productive is hardly the right thing to do.

      --
      Ezekiel 23:20
    5. Re:And Self-Actualization is not the goal. by AqD · · Score: 1

      That is great, but only applies to companies. In school it's better to learn as much as possible and its an ideal place to learn how to code without using an IDE.

      Hah, another old school coders who believes the only purpose of IDE is to automatic build process.

      Stupid students forced to use notepad or stupid IDEs (ex: TurboC the garbage, we still have that!) are the main reason of completely messed up development environment and lack of discipline and standardization, and then they enter companies where the elder developers are just as ignorant of such things, and end up making messed up products and source code despite of their talent and potentials.

      Part of automation is not about saving you time, but to enforce rules and conventions, and keep quality of source code above the minimum level which most people wouldn't bother to keep otherwise. It could be as simple as reformatting all your code to a fixed style upon saving of file, or checking of code for misspelling, inconsistent naming convention or obviously illogical operations which usually come out when you don't read copy-n-paste code seriously or in a rush to write something.

      Saving you the trouble from writing make/build file is also useful at keeping people from making inconsistent custom scripts which they don't even care about, since these are unimportant. They usually just copy&paste those things from other places and make minor modification, messing up the entire structure and making it unmaintainable.

      PS: We're NOT talking about open-source devs who would waste days or weeks perfecting every small things. You know how people work.

    6. Re:And Self-Actualization is not the goal. by gbjbaanb · · Score: 2

      You forget how many people have lost their jobs ot cheap er workers. You forget how many H1B visas are demanded by US tech companies because "they can;t find skilled staff" hours after firing a load of skilled employees.

      See, programming is a new form of menial work. Why bother hiring me at huge salary when you can hire someone with a degree from a 3rd world country to click the right menu options in an IDE and cut and paste code they find on Google? The results are roughly the same, it sortof works, and that's good enough to get it shipped, sold and bonuses handed out to all executives.

      The trouble with "dumbing down" programming to "make us more productive" is simply that anyone can be productive with the tools, even if they barely know what they are doing. Net result - many more cheaper workers. At least in the old days employers knew they needed some competent people as well as the less skilled. Now, they just don't care as the less skilled can do a reasonable job by themselves, even if their code looks like it should be a DailyWTF site all of its own, no-one in charge ever looks at it.

    7. Re:And Self-Actualization is not the goal. by datavirtue · · Score: 1

      Our best developers (I'm an Application Engineer/Application Support....read dev babysitter) create some of the most dangerous code. The less skilled devs create code that obviously doesn't work from zero point. Their lack of knowledge about the database, network, operating system, application server, threading, failure to properly handle exceptions all contribute to dangerous bugs and failures. Senior developers routinely take it upon themselves to make decisions in vacuum that they press on junior developers who get blamed for fucking up. The worst possible thing you can do these days is grant a title of architect or senior developer--people stop questioning their decisions and they feel like they can make design decisions without a team review of their choices. Automation and abstraction are the key ingredients in making this situation a reality. These things are good, but they allow us to construct systems without the necessary knowledge of the inner workings. Colleges cannot handle teaching the inner workings...especially if we require them to turn out x-number of new programmers every year.

      --
      I object to power without constructive purpose. --Spock
    8. Re:And Self-Actualization is not the goal. by datavirtue · · Score: 1

      The author was not talking about you.

      --
      I object to power without constructive purpose. --Spock
    9. Re:And Self-Actualization is not the goal. by Anonymous Coward · · Score: 0

      Automation provides leverage to smart programmers. They can do more with less time.
      It doesn't dumb down programming, it is more like a rising tide: a minimum "free" level of capability for everybody.

      If your skills fall below the tide then you probably don't have that much to contribute as a programmer anyway and should be applying yourself elsewhere.

    10. Re:And Self-Actualization is not the goal. by Thiez · · Score: 1

      Also, memory protection creates lazy programmers. If you have to reboot every time you screw up you will quickly learn to screw up a lot less.

      So what's it like programming on DOS in 2014?

    11. Re:And Self-Actualization is not the goal. by david_thornley · · Score: 1

      What sort of work are you doing, that you are twenty times better supported than in 1998? I'm definitely more productive doing what I'm doing than in 1998, but it isn't anywhere near a factor of twenty.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    12. Re:And Self-Actualization is not the goal. by Jane+Q.+Public · · Score: 1

      Well, in fairness, I should qualify that. In 2000 I was working for a company that was using an older system, which would have been considered outdated by anyone starting a new project at that time. (Not as old a system as COBOL, by any means, but it was a few years old even then.)

      So it's more like a difference of 20 years, really.

      And you also have to figure that hardware has gotten much better. I don't claim that I'm writing 20 times as much code in a given day, but that code does a lot more. I'm certainly accomplishing at least 20 times as much.

    13. Re:And Self-Actualization is not the goal. by Blaskowicz · · Score: 1

      The new standard will be to have a car and a computer but no house, or a computer alone. Unemployed, homeless and with a tablet / smartphone.

  46. by hand until you understand, so you can unfuck by raymorris · · Score: 1

    > what possible reason can there still be to do it by hand any more?

    My baby daughter will probably always have a smartphone / calculator with her when she grows up. She'll have a tool that can so arithmetic for her. Yet, I plan to teach her arithmetic with jelly beans, hands on, doing it manually, so that she UNDERSTANDS what multiplication is all about. Once she really understands it, she'll know when and how to use it. She can then use the calculator as a shortcut, but use it effectively.

    I do the same with my employees. First, they learn the process manually so they understand it. Then, they use the automated tools. Whwn the automated tool doesn't work or needs an extra argument because of a special case, the employee can handle it because they understand what the tool is trying to do. One of our most recent hires improved the main automation tool considerably, something he couldn't have done without first truly understanding what it does by having gone through the process manually.

    I'm a giant nerd who can't throw a ball, can't dance, can't sing, and that's given me time to develop some skills that give me a reputation as a bit of a programming and sysadmin savant. Someone calls up with a problem and they start by saying "it's really strange, a lot of people ", I interrupt "hold on one second. Yep, the time must be set wrong on one of your web servers. You're using a cluster, right?" Aghast, they say yep, two weeks ago they switched from a single server to a true cluster. A large part of the "magic" is simply understanding the stack from top to bottom. Not USING assembly or C, but being CAPABLE of doing so, so I can imagine what the PHP calls are doing, what the code would look in C. Then I can picture what the system calls must be, and what that means to the drive heads. I'm darn sure not expert in C, in .Net, or most anything else, but I've done just enough low level stuff to picture what curl must be doing in memory as it fetches a web page.

  47. Re:Agreed.. by Anonymous Coward · · Score: 0

    It's what JavaScript should have been.

  48. Unoptimization by Anonymous Coward · · Score: 0

    My first PC had a 43 MB hard drive. And it had a keyboard. I recently saw a keyboard box stating requirements of 150 MB of hard drive space. And it was a pretty bare bones MS keyboard. WTF!?!

  49. Re:Agreed.. by disambiguated · · Score: 2

    Yeah, I miss the days when we coders worked closer to the metal, calling getelementid directly instead of using some high level abstraction like jquery.

  50. Re:Sad.... by xski · · Score: 1

    It's sad how many "programmers" I meet who have never even typed "make" let alone more interesting things like readelf and strace.

    That's just elitism.

    Wow, who knew Ben Affleck reads Slashdot?!

  51. Heh, you know where this really sucks? by fustakrakich · · Score: 1

    Airline pilots. They're hardly teaching them how to fly the plane anymore.

    --
    “He’s not deformed, he’s just drunk!”
    1. Re:Heh, you know where this really sucks? by Anonymous Coward · · Score: 0

      >Airline pilots. They're hardly teaching them how to fly the plane anymore.
      I doubt that statement.. however..

      For fun I built a home flight simulator (projectors etc), and the most fun thing with it, is to fly like an ass through residential area.
      Skimming skyscraper walls, landing on highways, and ofcourse putting out an engine fire 300 feet in the air.
      No room for error, no room for mistakes, flying industry would call me an idiot, I would call it flying.

      Would I ever becomes a good pilot, no, neither do I want to, but I can for sure say that simulators has a way to learn handle a plane, even when its upside down on fire over a residentail area.

      And, pilots are required to fly simualtors and train emergency procedures to keep thier license.

  52. Computers will never replace understanding by Tony+Isaac · · Score: 1

    Remember Crystal Reports? This was a tool that came out in 1991, that was supposed to make it possible for ANYONE to create their own business reports. No programming know-how needed. Remember?

    For the past three years, I ran a team that created customized Crystal Reports for customers...because they couldn't figure out how to create them for themselves. It wasn't so much that the tool was hard to use, but more that the customers had only a foggy idea of what they wanted their reports to show.

    For example, a doctor's office would call saying "I want a report that shows a list of patients who haven't had a mammogram in the last two years." Sounds easy enough. Then we would start asking questions: Do you want only active patients, or all? Do you want only those within a given date or age range? What patient information do you want in the report? Do you need totals or counts? Then, after we delivered the first draft, there would always be changes: "Yes, I like this, but can you change this filter or that column?" They needed to have experts guide them to a report that made sense for them.

    Yes, software is getting better, but it will never replace the need for understanding.

    1. Re:Computers will never replace understanding by Anonymous Coward · · Score: 0

      I don't want to be treated by someone who needs to follow a script. (That's what you're doing, acting like a wizard/script when you ask all those questions.)

      The ability to break down a problem into smaller and smaller chunks until you reach definite physical actions that need to be taken is a core skill for life in general. It is severely lacking in much of today's population. If you don't know how to break down problems in your own domain, you are incompetent.

  53. Politicians talk like this by jangid · · Score: 1

    Our politicians used to talk like this. Here are few examples:- 1. Computers will take the jobs of millions of people 2. Teaching English will destroy our civilisation 3. Creating Dams for hydel power projects will make the water useless for irrigation

  54. I've done punch cards (Fortran) and assembler by Anonymous Coward · · Score: 0

    I've done punch cards (Fortran) and assembler. Now I use .NET and C# to create line of business applications I couldn't have dreamed of building 20 years ago.

    Anyway, coding is challenging, but the really hard part of application development is knowing what to code. If you read the reports, when projects fail it is usually because the parts don't fit together properly, or the damn thing does the wrong thing.

  55. The creators are dwindling? by Anonymous Coward · · Score: 0

    I create applications that reduce errors and save money for organizations. Sometimes they allow types of interactions that weren't possible before. I am not a computer scientist, in fact my degree is in psychology. Still, I like to code, and my applications do what they are supposed to do. That works for me and for my clients. Perhaps I should add that these apps are not small or simple. One a few years ago went well over a million lines of code. Others use mapping, public server APIs, etc.

    I haven't done C or assembler in decades, and there is no reason that I would.

  56. Re:Sad.... by TheRaven64 · · Score: 1

    I'm fully supportive of the idea that programmers shouldn't write assembly. I'm a lot more hesitant about a programmer who never reads assembly. Compilers do odd things. Sometimes they do clever odd things, sometimes they do stupid odd things. And sometimes they just contain bugs.

    --
    I am TheRaven on Soylent News
  57. Re:by hand until you understand, so you can unfuck by TheRaven64 · · Score: 1

    Yet, I plan to teach her arithmetic with jelly beans, hands on, doing it manually, so that she UNDERSTANDS what multiplication is all about. Once she really understands it, she'll know when and how to use it. She can then use the calculator as a shortcut, but use it effectively.

    There are a few questions to ask about this sort of teaching:

    • Can you understand what the machine is doing?
    • Can you get the same answer as the machine?
    • Can you get the answers faster than the machine?

    In the case of simple arithmetic, if you include the time of getting the phone out of your pocket, then the answer should be yes to all of them - it's just useful. The education system (in the UK, at least) unfortunately tries to take the same approach for things like calculus. You can understand how to solve differential equations (although more by applying rote-learned rules than really understanding what's going on), and that's useful. After a year of practicing, you may take 10 minutes instead of 30 to solve some complex equations, but the computer will take under a second, so was it really worth spending that year practicing?

    The same is true for most automated tools. There's no benefit in writing your own, but there's a big benefit in being able to write your own. Or in writing your own and then understanding why it's not as good as the one that loads of other people have been working on for years...

    --
    I am TheRaven on Soylent News
  58. You cannot reduce the essential problem by Anonymous Coward · · Score: 0

    As Brooks would say, there is no silver bullet!
    There is no way to reduce the essential problem, automation can only reduce the accidental problem.
    Consequently, automation, will only free thinking time to solve the esential better.

  59. Less capable of what? by Anonymous Coward · · Score: 0

    I was a "capable" hardcore C programmer who knew pointers and language quirks inside out. But work dried up. Unless you program for embedded processors, a field I was never exposed to in any way, there's just no jobs for C programmers these days. I'm doing less capable work with Java, but making a living. So what are you going to do? I can't even remember C these days. No one will pay me to write anything in C.

  60. The real problem by Anonymous Coward · · Score: 0

    The real problem is slightly different.
    High level tools are usually very good at solving some specific kinds of problems/patterns.
    Many programmers just learned how to use these tools and do not understand the basic concepts.
    This way, when a slightly different variant of the same problem appears, requiring a slightly different solution,
    they just cannot solve it, or else create a very inefficient solution.

  61. Applies to everyone working in technical jobs by MPBoulton · · Score: 1

    All silly examples aside, this rings true across any area of work where becoming more technically proficient is a requirement for development and promotion. The time freed up with envitabely be spent doing more of the same work (but in an automated way). Although your bosses are happy that they are getting more output from you without paying you more, without needing to fully understand the technical aspects to do the task any more you simply won't be given the opportunity to do so.

  62. More engineering than art?? by SlideRuleGuy · · Score: 0

    If you think programming is far more engineering than art, then you must be in a highly structured environment, program for the DoD, etc. Out here in the real world, people around me code without a shred of design work or planning of any sort. They just sit down and start typing...whatever organically evolves is what happens. Code is created with no foresight at all. I wish it were more engineering than art, though. Sad to see all the effort wasted so often.

    As actually practiced, it should be called a craft, rather than art or engineering. And most developers I watch are quite Amish.

  63. Do you know the details like you did? by Anonymous Coward · · Score: 1

    Back in the day, we coded against the metal or darned close to it. I started out writing Fortran on paper, then typing it on punch card machines. I knew my code like I knew the back of my hand. I used to say to coworkers that if I could get my software to compile, it would run just fine. I knew it that well. As automation and IDEs came onto the scene, I could crank out code like never before - and I lost track of the details. Instead of knowing the exact resource requirements of my code and my algorithms, I had to turn a blind eye to it because I had to worry about other things. How the classes relate to each other, the workflow of the user interface, standards adherence, internationalization, networking, etc, etc, etc. The applications of old were low functioning and a developer could know the entire thing. Now, applications are so complex that we can only hit the top layers of the complexity stack. Everything below that is handled by the tools. And the tools simply cannot be as intuitive as an engineer's own thought process.

    I very much dislike being disconnected from the bottom layers. I have to trust that they're going to work well enough not to get in the way of my product's functionality. I have to trust that packages won't change functionality willy-nilly, that operating systems won't bloat up a feature that I'm using, and so on.

    In short, the industry started screwing up from the start when it focused on enabling engineers to crank code. We don't need more code, we need less. When I'm going to build a product, I should know what foundation functionality is available to me. It should be reliable and stable, having been hammered on relentlessly by the authors before being released. Everyone should be using it so that we can have a collective understanding of how to use it. In my opinion, the fragmentation of understanding in the industry is appalling.

    So the fact that we've departed from having "metal truth" and now have a vague notion of "logic truth" means that we just can't have that iron-clad notion of understanding that we once did. I think we're dumber as a result. We're not practicing the rigor of days gone by. We can't do that and still produce high-end functionality with the team sizes and in the time frames available.

  64. Re:Sad.... by bobbied · · Score: 1

    Compilers are just programs.... Bugs happen.

    In my nearly 30 years at this, I've only ever had to crack open the compiler/assembler once to track down a bug. Usually these "bugs" are avoided by turning off (or controlling) the automatic optimizations. I would suggest you leave the compiler debugging to the compiler experts because what *you* describe as stupid may actually have a larger purpose behind it. (Full disclosure, yes, I've written assembly code and even had to drop into assembly in the middle of a C Function from time to time.)

    I've known programmers who have NEVER seen assembly and wouldn't know a "Jump To Subroutine" instruction from a "Load Program Counter" who I greatly respect. They may not be thinking bits, bytes and how there data is arranged in memory, but they can produce some pretty amazing things anyway. Don't sell somebody short, just because they don't understand something you cut your teeth on. Everybody has their own strengths.

    --
    "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  65. Re:Sad.... by TheRaven64 · · Score: 1

    I would suggest you leave the compiler debugging to the compiler experts because what *you* describe as stupid may actually have a larger purpose behind it.

    I spend most of my time fixing compiler bugs (when I'm lucky, I get to add new compiler features), so perhaps I'm slightly biased about compiler code quality. Most recently, I was working on an error in LLVM where functions with more than 8 integer / pointer arguments were mangled on big-endian MIPS (if they were smaller than register size), because they were spilled to the stack in the little-endian position. If you encountered this as a programmer and weren't able to look at the function call and prologue, then you'd have absolutely no idea why your code was doing seemingly random things.

    --
    I am TheRaven on Soylent News
  66. chicken and egg by ILongForDarkness · · Score: 1

    There might be more software developers now simply because automation has lowered the bar to getting anything out the door. So you might see the average developer be "less skilled' now because less skill is required and so more people say "hey I'd like to make 100k a year too".

    Someone has to make the automation tools. After that why should everyone go deep into the kernel/windowing system/whatever and understand at a really low level? Occasionally useful to know, and sometimes interesting but IMO we are paid to deliver business value not spend time learning all the details that the guy that made the tool had to figure out. Being capable of learning when it becomes necessary is far more important than what you already know.

  67. Re:Sad.... by Chelloveck · · Score: 2

    Assembly? That's for you mollycoddled youngsters. You don't know how to really program until you've entered raw machine code via toggle switches on the front panel of a CPU you built yourself out of nothing but vacuum tubes and a spool of wire. And don't get me started on macro assemblers! You may as well be using COBOL if you need training wheels that big.

    --
    Chelloveck
    I give up on debugging. From now on, SIGSEGV is a feature.
  68. But what about the developers of those tools? by androidph · · Score: 1

    My experience with the software development industry outside of the googles and facebooks, is that only very few knows how to program. So usually, there will be a dedicated team to create frameworks and tools to be used by 90% of the team. Sure, it gives the 90% less exposure on the real engineering side of software development, but it's their choice really. For most of them, their goal is just to climb the ladder and finally become managers. Also, these guys are the ones running around talking shit and taking credit for all that little things they accomplish. Bottom line, it's the industry's fault, for only paying attention to the management, which again is composed of that 90% I mentioned.

  69. Re:Sad.... by bobbied · · Score: 1

    LOL... Well, I DID do the toggle switch thing a few times, but I didn't build the system myself, nor was it vacuum tube based... It had a heck of a lot of 7400 series chips and a huge 5V supply that all came packaged in a box about the size of your fridge....

    Shouldn't you be retired by now?

    --
    "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  70. Re:Sad.... by david_thornley · · Score: 1

    And why should I need to know how the compiler's breaking? In gcc or llvm, I can get the source code, but that doesn't mean I know how to debug the compiler. I would normally document the problem, come up with the smallest breaking code I could easily do, and send it off. (I have received the answer, "yes, it's a bug" before, and that was commercial support.)

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  71. Re:Sad.... by TheRaven64 · · Score: 1

    First, to know that it actually is a compiler bug. You can spend days debugging your code and failing to find the error if you regard your compiler as infallible. Second, because you want it to actually be fixed. There are a few thousand bugs open in LLVM and GCC. If you want yours to be fixed, then you need the people doing bug triage to be able to work out who to assign it to. A simple reduced test case and an explanation of exactly what the compiler is doing wrong means that it is likely to be fixed the same day that it's filed. Without that... come back in a year and we might have fixed it if someone better at writing bug reports than you has filed a duplicate.

    --
    I am TheRaven on Soylent News
  72. Re:Sad.... by david_thornley · · Score: 1

    In my experience, compiler bugs are rare. If I run into one, I do spend days debugging my code and simplifying things until I've got a clear compiler bug. I do regard my compilers as perfect unless proven otherwise, and that's because I've found that I'm far more likely to write a bug than trigger a compiler bug. It's not that compiler bugs don't exist, it's that they almost never cause problems (or they'd already be fixed). Optimizer bugs are a special case, since different behavior between optimized and non-optimized code (unless there's undefined or unspecified behavior involved) means there's a bug, so they're usually easier to identify as compiler bugs.

    Once I've got a reduced test case, I can send in a bug report. I can sometimes say what the compiler is doing wrong. I can point out variations in my test case where the bug doesn't happen. I do know something about good bug reporting.

    And none of this requires source code.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes