Slashdot Mirror


Fixing the Pain of Programming

An anonymous reader writes "Light Table is a Kickstarted, open source IDE that's been trying to integrate real-time feedback into code creation. Part of their process has been figuring out how to improve the practice of programming, from top to bottom. They've put up a post about the troublesome aspects of programming that we've learned to deal with and take for granted, but which need solving if programming is to be made accessible for more people. 'Surprisingly, one of the most common difficulties we have heard from beginners is just running code. Even if we were to hand [a new programmer the whole source code] they would likely still struggle to actually use it. They have to install dependencies, compile code, start servers and open ports. At each step the errors are difficult to diagnose and time-consuming to fix.' But these problems extend to experienced coders, too: 'The simplest question we could ask about our application is "what is the current state." Bizarrely, very few programming environments give you any help on this front. Many programmers get by with nothing but print statements.' It's interesting to see somebody working on these issues, instead of accepting that they're the status quo and just part of the experience of programming."

186 of 294 comments (clear)

  1. Debuggers by Anonymous Coward · · Score: 5, Insightful

    I suppose this is addressed by the old quote "What is the best language for x?"

    "I don't know. Which has the best debugger?"

    1. Re:Debuggers by Anonymous Coward · · Score: 1

      Ah... /. trolls. In this site's defense, a statement like "People that need debuggers will never be any good." would not be considered trollbait on most other sites.

      That's why I don't really miss this place that much. I just pop in from time to time to see if the air has cleared, but I am usually disappointed.

    2. Re:Debuggers by pla · · Score: 1

      People that need debuggers will never be any good. For good programmers, a debugger occasionally safes some time.

      This statement, while literally true, requires some qualification.

      Knowing how to use a proper debugger can save you days of pain. But you also can't depend on always having the ability to use a good debugger - Simplest case, trying to debug remote code running on a server for which you have deploy-but-not-debug permissions on (this comes up a lot for me, actually).

      And in those situations, the ability to track down a bug with nothing more than a set of print/alert statements saying "I got here, X=47" means the difference between "programmer" and "wizard's apprentice" (by which I mean if the IDE's wizard fails you, you end up almost drowning until a real programmer saves you).

    3. Re:Debuggers by Anonymous Coward · · Score: 1, Insightful

      > the ability to track down a bug with nothing more than a set of print/alert statements saying "I got here, X=47" means the difference between "programmer" and "wizard's apprentice"

      Really? Because in my experience it's the "apprentices" that tend to lean far too heavily on printf, which is always taught before debuggers and is much easier to use. They spend hours instrumenting everything only to find a bug that could have been located in a few minutes with breakpoints, watchpoints, and stepping. Then they leave behind them a trail of commented-out printf garbage that pollutes the codebase.

      > if the IDE's wizard fails you, you end up almost drowning until a real programmer saves you

      Because Real Programmers build houses using only hammers. Nailguns, screwdrivers, shovels, and power tools are for pussies.

    4. Re:Debuggers by am+2k · · Score: 1

      Simplest case, trying to debug remote code running on a server for which you have deploy-but-not-debug permissions on (this comes up a lot for me, actually).

      For these cases, you should set up a local mirror environment where you are allowed to debug. Of course, if you can't reproduce the problem locally (because of system-interdependencies or a critical database you aren't allowed to copy for testing due to privacy issues), you have a problem...

    5. Re:Debuggers by Desler · · Score: 1

      What a stupid statement. Debuggers, for example, are great reverse engineering tools.

    6. Re:Debuggers by stenvar · · Score: 1, Interesting

      For an experienced programmer in a statically typed language (like C++), there are three things that catch bugs before you even get to a debugger: the static type checker, runtime assertions, and unit tests. If any one of them triggers, it is usually obvious how to fix stuff even without a debugger.

      Debuggers should be simple, minimal, and reliable, so that the 1-2 times a year that you need them, they get the job done correctly and without having to remember a lot of complicated stuff.

    7. Re:Debuggers by InsertCleverUsername · · Score: 4, Insightful

      People that need debuggers will never be any good.

      People who work with trivially-simple applications and never have to deal with someone else's legacy mess will never be any good either.

      --
      Ask me about my sig!
    8. Re:Debuggers by Anonymous Coward · · Score: 1

      You never had to debug/fix foreign code and you never worked on projects with more then 100k lines of code.

    9. Re: Debuggers by Anonymous Coward · · Score: 1

      exactly, anyone who says he doesn't need debuggers is a total fucking idiot. its generally people like this who avoid cooperation and who think they write bugless code.

    10. Re: Debuggers by Anonymous Coward · · Score: 1

      I would love to see you diagnose the cause behind a kernel panic without a debugger. Please, show me how.

    11. Re:Debuggers by ShanghaiBill · · Score: 3, Funny

      People who work with trivially-simple applications and never have to deal with someone else's legacy mess will never be any good either.

      People that never write embedded code, and never have to trigger the debugger when a particular voltage occurs on a particular pin in order to to track down a race condition caused by clock skew and/or misaligned asynchronous inputs to the FPGA, will never be any good either.

    12. Re:Debuggers by pla · · Score: 4, Insightful

      Because in my experience it's the "apprentices" that tend to lean far too heavily on printf, which is always taught before debuggers and is much easier to use.

      Our experiences differ somewhat drastically, then - Perhaps this involves a difference between the Windows world and the Linux world. In Linux, yes, knowing how to attach and use the standard debuggers counts as something of a fine skill set (though I don't think that still holds true like it used to - We have a hell of a lot more choices today than just GDB/DDD). In the Windows world, when the code breaks, the IDE throws you into a debugger and all but tells you what happened and what to do about it.


      Because Real Programmers build houses using only hammers. Nailguns, screwdrivers, shovels, and power tools are for pussies.

      Nice strawman, but no. Real programmers use power tools when appropriate. But when the sawzall won't fit in a tight space, the real programmer knows how to use a keyhole saw.

    13. Re:Debuggers by Nemyst · · Score: 4, Insightful

      If you think you're such a great programmer that you're never ever going to write bugs into the programs you write, you've probably never written anything larger than a few thousand lines, and you've probably never debugged what you wrote in the first place.

      Hint: outside of Hello World, bugs will happen. Debuggers are a great way of determining what the bug is so you can get on with fixing it, instead of acting like the hot programmer who doesn't need them but instead wastes an entire day combing through his code looking for that one error. Deciding that you're "above" some subset of tools available to you is childish at best.

    14. Re:Debuggers by pla · · Score: 3, Informative

      Communicating with, storing data in, retrieving data from, or otherwise intercepting and changing computer resources without consent is unauthorized access. It's against the law.

      I can't tell if it worries me more that you think I would try to debug code on a system I hacked into... Or that you've never heard of low-end web hosting providers.

      Real-world access permissions don't always match the ideal, and the fact that I can legally upload a CGI via FTP doesn't mean I can hook into a remote debugger. Dealing with an overly locked-down hosting company doesn't break the law, Scoutmaster AC.

    15. Re:Debuggers by UnknownSoldier · · Score: 5, Funny

      > there are three things that catch bugs before you even get to a debugger:

      Yes, but the "hard" bugs are the ones that happen at run-time. Those depends on the context such as Networking, Rendering, and AI bugs that can be a real PITA to track down.

      Race Conditions, and Deadlock are hairiest ones.

      There has to be a comprehensive list someplace aside from the usual

      * syntax (compile time)
      -- variable mis-spelt
      * logic
      -- classic "fencepost" bug
      * run-time
      -- race conditions
      -- deadlock

      On a half serious note:

      * Bohrbugs: Most of the bugs that we come across are reproducible, and are known as Bohrbugs.
      * Heisenbugs: All experienced programmers have faced situations where the bug that crashed the software just disappears when the software is restarted
      * Mandelbugs: When the cause of the bug is too complex to understand, and the resulting bug appears chaotic,
      * Schroedinbug: Sometimes, you look into the code, and find that it has a bug or a problem that should never have allowed it to work in the first place

      http://www.opensourceforu.com/...

    16. Re:Debuggers by Dutch+Gun · · Score: 2

      For an experienced programmer in a statically typed language (like C++), there are three things that catch bugs before you even get to a debugger: the static type checker, runtime assertions, and unit tests. If any one of them triggers, it is usually obvious how to fix stuff even without a debugger.

      Debuggers should be simple, minimal, and reliable, so that the 1-2 times a year that you need them, they get the job done correctly and without having to remember a lot of complicated stuff.

      1-2 times a year? That's certainly not typical for game development, at least in my experience. We're in our debuggers all the time - in fact, it's considered good practice to step through new code you've just written to make sure everything seems to be looking and working as you'd expect it to. With the development we do, there's not always an obvious correct or known solution to the problem you're trying to solve. Or, even if it is a problem with a well-known solution, it can involve writing rather complex algorithms and data structures that very few programmers could get perfectly the first time (i.e. the A* pathfinding algorithm). I can't imagine writing that sort of code without having a debugger available to watch the internals of your code along with development.

      What do you do that only requires running the debugger once or twice a year? I'm guessing you're not using an integrated environment, or have deployment consideration which make using a debugger somewhat non-trivial.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    17. Re:Debuggers by gweihir · · Score: 1

      Seems there are a lot of bad programmers among the moderators. No surprise. Bad programmers are a vast majority these days.

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

      No argument there. Knowing how to use a debugger, especially remotely, or on a core-file is a valuable skill. There is a difference between being able to make good use of a debugger in specific situations and needing a debugger just to understand the code you have written.

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

      I use printfs often. I am not an apprentice at all. But I do not only use plain printfs. Wherever valuable, there can be quite a bit of additional debug code around them. While some debuggers allow you to safe sessions, breakpoints and conditions to some degree, often that is cumbersome and quite a bit slower than instrumenting the code itself. Of course I clean it up afterwards. Sloppiness is quite orthogonal to the debug tool used.

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

      If you need to reverse-engineer your code (and that is what this discussion here is about), then you have a very serious problem and maybe should stop coding in the first place.

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

      That is not the subject of this discussion.

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

      Learn to read. I was commenting on people that need debuggers, like in the OP? Using a debugger and needing one are two different things.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    23. Re:Debuggers by gweihir · · Score: 3, Informative

      Unfortunately, for Race Conditions and for Deadlocks, debuggers are mostly useless, as they change the runtime-characteristics. Typically, you end up with "Heisenbugs" that vanish or change dramatically as soon as you run under a debugger. Also if you think finding these by tests, you have already lost. You need to avoid these by design and find them with code-reviews and specialized tools.

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

      There are people that actually produce quality software. Most "programmers" do not.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    25. Re:Debuggers by gweihir · · Score: 2, Insightful

      Game development is different. For example, you cannot easily unit-test things like what is displayed on the screen or whether something runs smooth or not. There are other differences. Anyhow, the discussion is not about being able to use a debugger or even having one. It is about people that need one even for simple things and these people have no business writing code in the first place.

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

      Yes, but the "hard" bugs are the ones that happen at run-time. Those depends on the context such as Networking, Rendering, and AI bugs that can be a real PITA to track down.

      Those bugs all come down to some precondition, postcondition, or invariant that you depend on not being satisfied. Instead of spending time in the debugger, create a test that reproduces the problem, then add code that ensures that everything you assume is true actually is true. To track down networking bugs and race conditions, inject bad data and/or delays.

    27. Re:Debuggers by Darinbob · · Score: 1

      Reverse engineering is almost always on someone else's code. Don't blame the person tasked with the job of deciphering legacy code written in the desperate startup days.

    28. Re:Debuggers by Darinbob · · Score: 5, Interesting

      I do a lot of embedded programming, and doing the "standard" stuff like unit testing really is a pain. The bugs don't show up most of the time until they're on a real system or linked with everything else, and the bugs that do appear are the sort that are unlikely to be found in unit tests. Even without embedded programming there is almost always a hard and fast deadline with loud and angry people making sure you get it all done in time, so the unit testing is sometimes the first thing that gets cut. And let's be fair here, very often it is just as hard to write a good unit test as it is to write the code itself, and the programmer who is unlikely to find the bug in the code is also unlikely to write a unit test that would find that bug.

      So ya, you need a good debugger. And if you're good at using a debugger then your value goes up, especially if you can manage dealing with core files and deciphering what occurred in that optimized assembler.

      That said, this is the easy stuff in programing. The "pain of programming" has nothing to do with computers or languages or tools, the pain comes from management. This is why you have people who love to program but hate to come to work.

    29. Re:Debuggers by Darinbob · · Score: 1

      Probably not sufficiently internationalized either.

    30. Re:Debuggers by stenvar · · Score: 1

      All of that is true for a lot of other domains too. Tests and assertions do exactly what you want: "make sure everything seems to be looking and working as you'd expect". The strategy for testing is the same as for a debugger, but with testing you write down what you're doing and you can reproduce it. I think a debugger is a good learning tool, but for experienced programmers, it's a waste of time.

      (BTW, most places I have worked would expect applicants to be able to implement A* from memory and without a debugger in less than 1/2h.)

    31. Re:Debuggers by Krishnoid · · Score: 1

      * Schroedinbug: Sometimes, you look into the code, and find that it has a bug or a problem that should never have allowed it to work in the first place

      http://www.opensourceforu.com/...

      My own Schroedinbugs have specifically been along the lines of, 'How has this managed to work so long, with this dead cat in here all this time?'

    32. Re: Debuggers by Anonymous Coward · · Score: 1

      I wouldn't go as far as the original troll or cast aspersions on those who feel they need debuggers, but I will say that I find them to be less and less valuable as we've moved towards parallelizing more in our programs. The idea of stopping the world works well in a single thread, but when multiple threads are coordinating or working independently, it's much less useful. I find profilers and tools that otherwise capture the running state of a program are much more useful.

    33. Re:Debuggers by dudpixel · · Score: 1

      Learn to read. I was commenting on people that need debuggers, like in the OP? Using a debugger and needing one are two different things.

      Are you kidding?

      Yes they are different, but they are related, as follows:

      If you need a debugger but don't use one, you're an idiot.
      If you use a debugger but don't need to, you're just wasting time.

      You've yet to demonstrate that anyone ACTUALLY doesn't need to use one (as opposed to just thinking they are so good they don't need one)...but that's another issue I think.

      --
      This seemed like a reasonable sig at the time.
    34. Re:Debuggers by dkf · · Score: 1

      Yes, but the "hard" bugs are the ones that happen at run-time. Those depends on the context such as Networking, Rendering, and AI bugs that can be a real PITA to track down.

      Most of those are actually due to constraint violations. Too many people in this industry think that they can implement half an interface and ignore the difficult bits. I've even had someone seriously tell me that doing the whole semantics would break things. That facepalm hurt my nose.

      Race Conditions, and Deadlock are hairiest ones.

      There are worse. Security problems with multiple components all in different security contexts on different hosts... that's hard (no debuggers, no unified logging, lovely...) However, in general there are always deeper problems possible; the ultimate problems tend to relate helping the customer understand what the program can and should do in the first place.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    35. Re:Debuggers by AAWood · · Score: 1

      Well, he "took the bait" and got a 5: Informative for it. So... zing?

    36. Re:Debuggers by neokushan · · Score: 1

      How else are people supposed to learn? Stepping through code line-by-line is an excellent way to learn what your code is actually doing. Everyone has to start somewhere. If someone has decades of experience and still works like this, then I have to ask why they're in that position? Who put them there? Why haven't they had performance reviews that highlight this weakness?

      It seems that far too many rockstar developers can't fathom that not everyone knows absolutely every facet of development.

      --
      +1 IDisagreeSoHeMustBeATrollOrAnAstroturferOrAShill
    37. Re:Debuggers by gweihir · · Score: 1

      I do not dispute that. But the discussion at hand is about debugger support for reverse-engineering your own code.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    38. Re:Debuggers by Slashdot+Parent · · Score: 1

      For good programmers, a debugger occasionally safes some time.

      For those of us without unlimited time, saving it is valuable in and of itself. I don't walk to work, hand-wash my clothes, or raise my own chickens for eggs, either.

      --
      They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
    39. Re:Debuggers by gweihir · · Score: 1

      The problem is the other way round: Far to many people that have trouble handling the basics fancy themselves to be "programmers". Just read this and be surprised: http://blog.codinghorror.com/t...

      This blog-posting is not too pessimistic. If these people were doctors, they would fail at applying a band-aid.

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

      The discussion was about people that need a debugger vs. people that can make good use of one. The former do not qualify as "programmers".

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

      You are confused. This is not the topic of this thread. The topic is people that cannot even do simple things without a debugger.

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

      Heh. In intercal, the "Hellow World" debugs you.

    43. Re:Debuggers by palion · · Score: 1

      Oh I know these Schroedingbugs. You see your code and wonder how the hell it could ever have worked - it has, but with such a bug inside that seems absolutely impossible. That has happened to me a couple times. Scary.

      --
      Well, well
    44. Re:Debuggers by Kiwikwi · · Score: 1

      Heisenbugs: All experienced programmers have faced situations where the bug that crashed the software just disappears when the software is restarted

      That's not a Heisenbug; that's just a plain old unreproducible bug. A Heisenbug is a bug that disappears when you look for it, and reappears when you stop looking. The classic example is a bug that appear in the release build, but disappears in the debug build where optimizations are disabled.

    45. Re:Debuggers by ale2011 · · Score: 1

      Debuggers should be simple, minimal, and reliable, so that the 1-2 times a year that you need them, they get the job done correctly and without having to remember a lot of complicated stuff.

      Much more than 1-2 times a year. An easy-to-use debugger turns out to be the most convenient way to read the code.

    46. Re:Debuggers by dudpixel · · Score: 1

      Fair enough.

      --
      This seemed like a reasonable sig at the time.
  2. Smalltalk live images by angel'o'sphere · · Score: 3, Interesting

    I simply don't get why not all programming languages/development environments support live images like Smalltalk..

    For those who don't know what that is: in Smalltalk the IDE and the running program are 'the same'. Your 'program' (what you code) never stops and/or is restarted. It just 'freezes' like a laptop and is 'restarted' or awaken at it previous state.

    That means if you send me your 'source code' you are actually sending me a sleeping, but running! program.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    1. Re:Smalltalk live images by Anonymous Coward · · Score: 1

      bizare and dangerous, a bit like microsoft putting executable code into image files that actually steal data from you and send it to criminals.

    2. Re:Smalltalk live images by arth1 · · Score: 2, Interesting

      No program is an island. You can stop programs as an OS function in many operating systems, but resuming is a bit harder, as everything they presumed about the system at runtime may have changed, including displays, disk status, sockets, time zones, connected devices, or anything else.

      It's a bit like freezing you when you dash down a hill to reach the bus, and then unfreeze you in a glass store.

      The only somewhat safe way of saving and resuming a state is if you save and resume an entire OS - like most VMs allow you to do. And even that isn't safe - what if you froze in the middle of writing to an external drive, and another system modified the directory structure while offline?

      What Smalltalk and similar environments do is giving you a safe playground that can be frozen, but also cannot access anything outside the playground directly, and requests to the playground manager to interface with the outside world are atomic and cannot be frozen.
      It's fairly safe, but also far too limited for most programming jobs. You cannot use an etch-a-sketch to paint a house.

    3. Re:Smalltalk live images by Anonymous Coward · · Score: 1

      Also, it was really easy to hose your image - 99% your own fault, 1% bug related. So you had to constantly keep backups copies every time you wrote more code or made changes objects. Which meant shutting down, copying the file somewhere usually to a separate floppy and restarting.

      Smalltalk was really awesome for its time though. It was taught at my university instead of Fortran and Pascal as the main intro language and really help bring home the concept of OOP. Way ahead of its time.

    4. Re:Smalltalk live images by flargleblarg · · Score: 1

      It's a bit like freezing you when you dash down a hill to reach the bus, and then unfreeze you in a glass store.

      They unfreeze me in the Apple Store? Cool!

    5. Re:Smalltalk live images by RoccamOccam · · Score: 2

      You don't seem to understand the "TL;DR:" concept.

    6. Re:Smalltalk live images by BasilBrush · · Score: 1

      That means if you send me your 'source code' you are actually sending me a sleeping, but running! program.

      With all my data in it? What could possibly go wrong!

    7. Re:Smalltalk live images by dudpixel · · Score: 1

      It's a bit like freezing you when you dash down a hill to reach the bus, and then unfreeze you in a glass store.

      They unfreeze me in the Apple Store? Cool!

      Remember your previous state...just keep on running...

      --
      This seemed like a reasonable sig at the time.
    8. Re:Smalltalk live images by Simon+Brooke · · Score: 1

      InterLisp (and a number of other things coming out of Xerox PARC in the early eighties) had the same feature. You saved the running state of your system to file, you invoked the function (sysout). To restore the running state of your system from a file, you invoked (sysin filename). Essentially this was a memory dump of the heap, but it had the special property that the 'spaghetti stack' - the branching stack structure through which InterLisp managed multitasking - was implemented in the heap rather than as a separate structure, so loading in the heap also loaded in the stack, for all threads.

      Obviously, in InterLisp as in Smalltalk, everything in memory was inspectable and editable, and when you edited a function that didn't mean editing and reloading a file, the source code was an in-memory structure. It wasn't entirely without problems - there were small semantic differences between interpreted code and compiled code (if I remember correctly interpreted code implemented shallow binding while compiled code implemented deep binding), so that when you compiled your code its behaviour could change. Also it was possible, if you added a comment in the wrong place, that it could change the semantics of a function. For example if you added a comment as the last form in a function body, that function would always return nil. Nevertheless in terms of programmer productivity these environments were streets ahead of anything that's commercially available now; and although I love LightTable and hope that it is the shape of things to come, even LightTable isn't a patch on InterLisp's DEdit.

      --
      I'm old enough to remember when discussions on Slashdot were well informed.
    9. Re:Smalltalk live images by angel'o'sphere · · Score: 1

      You strip what you don't want to deliever ;)
      But yes, it would contain all the data, except the image/program uses an aditional database or files.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    10. Re:Smalltalk live images by DavidHumus · · Score: 1

      I suffer the same incomprehension, except I've been using other interpreted environments throughout my career, but the idea is the same.

      Compiled languages, though sometimes necessary, often substantially increase the difficulty of programming for no benefit whatsoever.

      I understand this looks like flamebait, but I'm _only_ basing this on forty years of personal experience, so what the hell do I know? Since an example is worth a lot, here's one: I recently offered to help a colleague who's taking a C++ class and was reminded of all the unnecessary crap it takes to get even a very simple program to run at all. The problem was to build a Fahrenheit to Celsius (and vice-versa) temperature converter. It was friggin' painful - all the crap we had to put together to assemble even a simple, crappy program that is, at best, capable of doing
      one
      conversion
      at
      a
      time
      (and only a hard-coded little subset of them in an initial version).

      The result was multiple source files, comprising a couple dozen lines of code, compiling to megabytes of peripheral files (in the debug version) - you know how this goes. In contrast, I write the Fahrenheit-to-Celsius conversion in a short, single line of my favorite interpreted environment (J), and am able to test it on multiple values at a time, instantly - taking seconds instead of hours. Moreover, J is smart enough that it has a built-in inverse construct to allow me to write the inverse function with another few seconds of effort.

      I already hear the compiler-lovers muttering darkly about run-times and "large projects" - completely ignoring the first rule of optimization: find the bottleneck. Most code is - and should be - in small pieces that benefit from being tested quickly in small modules. The metric we should care about is "total time to completion" but this is harder to measure and more subjective than "run time", so we continue to focus on this latter measure to the detriment of productivity.

    11. Re:Smalltalk live images by angel'o'sphere · · Score: 1

      The main problem in our days is not only 'programming' but also teaching of programming languages.

      C++ is a beast there but also Java and .Net languages are hard, even python is.

      My favorite example:

      public class HelloWorld {
            public static void main(String[] args) {
                      System.out.println("oops, that is hard");
            }
      }

      We have: a class, an array (which is not even used), stuff like 'public' and 'static', we reference 'System' etc. to print something?
      And a 'Hello World' is considered a simple introduction into a programming language? Doing that in 6502 or 68k assembler is easier and more straight forward than my Java/C# example.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  3. Oh really now by arth1 · · Score: 1

    TFS says:

    Part of their process has been figuring out how to improve the practice of programming, from top to bottom.

    The problem here is that depending on top to bottom only works well on very small scale and very large scale. In reality, you need both top to bottom, bottom to top, side to side, diagonal, and too often even a bit of pogostick programming.

  4. The pain is good by CmdrEdem · · Score: 1, Insightful

    When you spend 8 hours troubleshooting an open-source project to compile with a third party proprietary library it feels damn good to make it work. Coding is good because it's hard. The higher the stakes the more the accomplishment of that task will make me proud/happy.

    Sure... there are some places where things should be simple. When I install an IDE I expect it to compile a hello world just after typing the proper code.

    --
    This combination doesn`t exist: ETIs that know about humanity and want to see us dead. Otherwise we wouldn't exist.
    1. Re:The pain is good by Antique+Geekmeister · · Score: 2

      > The higher the stakes the more the accomplishment of that task will make me proud/happy.

      While true, this has little to do with the time wasted learning the basic layout of the build tools and auto-configuration tools. The time wasted constantly retweaking and hand-compiling individual components as source code is updated is just that for most programmers: time wasted.

    2. Re:The pain is good by MtHuurne · · Score: 2

      I would like to spend more of my time creating new things rather than fighting to make existing things work together.

    3. Re:The pain is good by pla · · Score: 5, Insightful

      When you spend 8 hours troubleshooting an open-source project to compile with a third party proprietary library it feels damn good to make it work. Coding is good because it's hard. The higher the stakes the more the accomplishment of that task will make me proud/happy.

      Sorry, but no. If I have a known-working source tree that I want to work with just to tweak one tiny nuisance, I want to download it, open the project, make the change, then build/test/deploy.

      In gaming, you have the concept of artificial vs natural hardness. When the game makes you do things just right with cheap tricks like an almost unavoidable trap right before boss / end of the level, when it requires pixel-perfect jumps, when it has insanely complex or tedious puzzles to solve, when it has time limits that require you to essentially memorize which buttons to mash and when, when it doesn't allow saves except at completely useless spots, the devs have made it artificially hard because they failed to make it challenging through more natural means.

      In coding, we have the same problem, except we don't (usually) do it to ourselves intentionally - And you describe the most egregious example of it, configuring dependencies. I love a good challenge in writing actual code. Optimizing a tight loop cycle by cycle, importing useful numbers from a BOL file that everyone else has given up on, implementing a new (to me) algorithm in language X (I had a great time learning SQL for that reason, because most of my stock tricks from the C world don't translate well). Those all leave me feeling deeply satisfied at the end of the day. When, however, I can't even get the damned thing to build because I have to tweak 17 obscure dependencies:

      "Oh yeah, it doesn't work with the newest 2.17.99 release of WidgetBlaster, you need to hunt down 2.17.94"
      "Oh, you used the default build parameters for WidgetBlaster? Heh, you have to pass it the undocumented NoFleem flag at compile time"
      "Yeah, NoFleem doesn't actually have any effect unless you install the not-obviously-required WidgetFleem library first"
      "Well, you can't actually do it in one pass, since WidgetFleem has a circular dependency on WidgetBlaster - So build WidgetBlaster without NoFleem, then build WidgetFleem, then rebuild WidgetBlaster with the NoFleem option".
      "Oh yeah, it only works in GCC 4.4.x, they changed the optimizer after that one and it breaks WidgetFleem."
      "Did I mention you need to cross-compile it from an OS X machine because a critical buildtool doesn't exist on Windows?"

      Shit like that drives me up the wall, I have zero patience for - or enjoyment of - trying to work around someone else's quirky build environment. If your code depends on obscure external packages, include them in your source tree, and include building them in your default project/makefile, period. I don't care if it makes your source tree 2.5GB, because I'll need to download them all anyway, and at least you know the right versions to include.

    4. Re:The pain is good by CmdrEdem · · Score: 1

      You sound like you need a safe word when engaged in sex

      No. But that was the intended joke.

      your support team must just love getting code from you

      Just because I enjoy troubleshooting some stuff myself does not mean that people has the time or the inclination to do the same. Since I like to troubleshoot I try to do it so other people does not have to.

      --
      This combination doesn`t exist: ETIs that know about humanity and want to see us dead. Otherwise we wouldn't exist.
    5. Re:The pain is good by CmdrEdem · · Score: 1

      I understand and agree with all objective stuff you say. I never meant that everyone should enjoy the kind of troubleshooting I enjoy. There are some cases where I really get pissed off. But when I set myself to, for instance, compile source code from a third party developer I'm accepting and expecting trouble, with little to no support from the original party, and I get proud of myself when I figure it out. That is true for me at least.

      --
      This combination doesn`t exist: ETIs that know about humanity and want to see us dead. Otherwise we wouldn't exist.
    6. Re:The pain is good by pla · · Score: 1

      Fair enough - I suppose if you enjoy that, hey, whatever you like doing, you like doing!

      Me, I love getting down as close to the CPU as I can and making it beg for mercy. But I suppose I can appreciate, if not personally enjoy, what you describe.

      We might work well together. :)

    7. Re:The pain is good by angel'o'sphere · · Score: 1

      Actually i once had a similar circular dependency where you had to recompile one part of the software with a different -D switch on the compilers command line.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    8. Re:The pain is good by Anonymous Coward · · Score: 1

      Shit like that drives me up the wall, I have zero patience for - or enjoyment of - trying to work around someone else's quirky build environment. If your code depends on obscure external packages, include them in your source tree, and include building them in your default project/makefile, period. I don't care if it makes your source tree 2.5GB, because I'll need to download them all anyway, and at least you know the right versions to include.

      Or use a build system that lets you specify the exact versions of the dependencies, and let the build system handle the dependencies for you. NPM and Maven are pretty good for this in my experience.

      One of my biggest pet peeves is when a project copies its dependencies' source into its own tree, but then has undocumented changes in its dependencies' code. I'd much rather open a project's dependency list file and see some jQuery fork like "ChocolateJquery@github.com/chocolate/jquery" and know it's edited, than see what looks like a plain jQuery build and try to update it to a new (vanilla upstream) version and have everything mysteriously break.

    9. Re:The pain is good by CodeBuster · · Score: 1

      When the game makes you do things just right with cheap tricks like an almost unavoidable trap right before boss / end of the level, when it requires pixel-perfect jumps, when it has insanely complex or tedious puzzles to solve, when it has time limits that require you to essentially memorize which buttons to mash and when, when it doesn't allow saves except at completely useless spots

      Sounds like Ninja Gaiden . That had to be the most artificially hard game available for the NES. It was just brutal, especially in the later levels.

    10. Re:The pain is good by CmdrEdem · · Score: 1

      Please don't arrest me, Punctuation Police! I promise that I'll try harder!

      --
      This combination doesn`t exist: ETIs that know about humanity and want to see us dead. Otherwise we wouldn't exist.
    11. Re:The pain is good by hoggoth · · Score: 1

      > While true

      I never made it past this phrase.

      --
      - For the complete works of Shakespeare: cat /dev/random (may take some time)
  5. Lazy people by nurb432 · · Score: 1

    Just suck it up. If it was easy then everyone would do it. ( actually it is easy, people are just whiny lazy asses these days and want everything to be done for them, and presented on a silver platter, paid for by someone else via some 'wealth distribution plan' )

    --
    ---- Booth was a patriot ----
    1. Re:Lazy people by Oligonicella · · Score: 1

      Programming may be easy per se. Programming well is not.

    2. Re:Lazy people by nurb432 · · Score: 1

      A lot of managers/orgs/people can't figure out how to improve their paper processes

      Or define them in the first place.

      --
      ---- Booth was a patriot ----
    3. Re:Lazy people by gweihir · · Score: 1

      Nonsense. Laziness has nothing to do with it. It requires real and specific talents. If these are not there, forget it. Just the same as you cannot turn everybody (or even a significant minority) into competent, say, violinists or mathematicians, so you cannot turn most people into competent programmers.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    4. Re:Lazy people by ultranova · · Score: 1

      actually it is easy, people are just whiny lazy asses these days and want everything to be done for them, and presented on a silver platter, paid for by someone else via some 'wealth distribution plan'

      What do the sins of the owning class have to do with programming?

      --

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

    5. Re:Lazy people by Moof123 · · Score: 1

      Given that the Slashdot's general sentiment is that users should use open source because they can just fix it themselves, a response berating folks who want to be able to make changes easily is pretty lame. Not that I'm accusing the Open Source religion of being fully of cranks and charlatans, but come on!

    6. Re:Lazy people by nurb432 · · Score: 1

      Sure you can. I can do all of those, but then again, i'm not a lazy ass. Nothing special other than that tho.

      --
      ---- Booth was a patriot ----
    7. Re:Lazy people by BasilBrush · · Score: 1

      Odd. Your grammar and abbreviation imply that you are a lazy ass.

    8. Re:Lazy people by nurb432 · · Score: 1

      No, its Slashdot, it doesn't deserve any extra effort, including typo checks.

      --
      ---- Booth was a patriot ----
    9. Re:Lazy people by gweihir · · Score: 1

      Bullshit. You seem however to have a problem with evaluating what you can and cannot do. I expect you are to the far left of the Dunning-Kruger graph.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    10. Re:Lazy people by drkstr1 · · Score: 1

      Nope. I'm going to have to agree with nurb on this one. I use to always accept the fact that "I just suck at sports," until I got into martial arts. Turns out I just didn't have any _interest_ in sports, and so never bothered becoming any good at them. One can't be the best at everything of course, but you really can choose what you want to be good at, and your determination will have a much greater factor in your success than raw talent (as I read here in a /. article awhile back).

      --
      Fanboy Status: Apache Flex, C#, Eclipse, KDE, Pirate Party, Ron Paul, Slackware, Windows 7
  6. Difficulty Spectrum by Mr_Blank · · Score: 4, Insightful

    Programming has a spectrum of difficulty. The tools can always be improved to make the easier parts easier and the harder parts more manageable, but in the end the hard parts are hard because of the nature of the work; not due to lack of tools.

    In more mature fields the spectrum of difficulty is well understood and no one expects the hard parts to be easy. If a person can write a "hello world" program then it should not be expected they will have the wherewithal to roll out healthcare.gov. If a person can apply a bandage to a skinned knee then it should not be expected they will have the wherewithal to do brain surgery; regardless of how good the tools are.

    1. Re:Difficulty Spectrum by Anonymous Coward · · Score: 1

      Programming is very easy. You only have to press keys in a keyboard.

    2. Re:Difficulty Spectrum by gnupun · · Score: 2

      That's exactly what I hear non-programmers say about this profession.

    3. Re:Difficulty Spectrum by gweihir · · Score: 1

      Well said. But apparently, most people still do not get that programming is hard and therefore not for everybody. They seem to think it is somehow like doing a simple administrative desk job.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    4. Re:Difficulty Spectrum by fermion · · Score: 1

      A lot of this has to do with following instructions and the availability of expertise. When I was very young i had no problems running basic programs on the teletype. When I learned FORTRAN, yes the error messages were cryptic, but after a semester I could get it running. I could not manually link now to save my life, but back then it was no big deal to hook into the IMSL library. By the time I got to college, i could diagnose almost any common error just by looking at the message. Most of the time, if there were hundred error messages, for instance, it was because of mistype variables in the function call. I find that people mistake the reason we write 'hello world' programs. It is not to test the language, but to test the ability to compile, link, and run code on a platform. I remember well the first time my friends and I got an account on a Cray. It took us a day to figure out what to do. There was no one to call, as very few people have such expertise. Again, it is not just a matter of simple tools, but a critical mass of people who know how to use the tools and can help others. OTOH, one can make the tools as simple as possible, but it won't change the nature of people. That is, most people don't really have a good grasp of cause and effect. It is like people tailgating on the highway. We know that an accident will at some point occur, but people without such a concept of cause and effect do not. This is why I think programming is of such pedagogical value. It teaches students cause and effect. It teaches students that there are rules that if followed will lead to predictable results. Something like python can reduce the pain of compiling and running, but nothing can reduce the pain of trying to solve a problem if one thinks that rules are arbitrary.

      --
      "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    5. Re:Difficulty Spectrum by raynet · · Score: 1

      Thanks to stackoverflow and google, you don't have to do that anymore :)

      --
      - Raynet --> .
  7. Re:this is why my kids won't be coders by Shados · · Score: 3, Insightful

    Historically, so far, the easier you make it, the harder the problems become.

    One of the most visible examples of this is in frontend web development. Now that we have jquery and a billion javascript librairies, we don't do the same simple web pages we used to in a fraction of the time (something that would have taken a month back then takes literally seconds today). Instead, we do crazy shit that were never meant to be done in a browser.

    If we make that crazy shit easier, people will just go and do crazier shit.

  8. The Golden Age of Programming by Latent+Heat · · Score: 5, Interesting
    There is this, what should we call it, a mythology of a Golden Age of Programming?

    I don't use mythology in a perjorative sense that this is all pretend or wishful nonsense. I use it in the best Joseph Campbell-Hero-With-Many-Faces sense, of a dim recollection of The Way Stuff Used to Be. This is a way of communicating an Underlying Truth about the Human Condition.

    Apparently there was this era of things such as this Smalltalk that you allude to. Another version of this I hear from tales is Common Lisp. And Lisp Machines, specialized hardware and expensive workstations on which these "live images" would reside. So maybe these tales of direct, personal communication with the gods taking place with the Bronze Age Greek heros was not made up?

    I guess there was this Barbarian Invasion of Bearded Men from the land called "New Jersey", especially a high place among the rolling plains they called "Murray Hill"? There is this piece of non-canonical scripture that our elders have been trying to supress known as the Unix Hater's Handbook explaining how we came to our present age and how this Golden Age entered into myth. Our elders warn against reading this heretical tract as dangerous to our souls.

    As Jerry Pournelle describes the intervening Dark Age between now and that heroic or Golden Age, it isn't so much that people forgot how to develop and maintain a live image programming system such as Smalltalk or Common Lisp, it was that people forgot that such a thing could exist, and we attribute such things to gods or space aliens.

    But then again, just as there is talk of ancient creatures in deep lakes in Scotland or in the remote sections of Zaire or Southeast Asia, there are accounts that Smalltalk or Common Lisp are still in use . . .

    1. Re:The Golden Age of Programming by Oligonicella · · Score: 2

      The favorite part of my career was working in banking. Sounds backwards, as people often view it as so restrictive and stogy. We had development, QA an production environments that only touched through Control updating processes. While the first two were perforce smaller physical systems, all were software clones as far as operating systems and in-house software layout. I was development. I spent many an hour in high-level meetings arguing against my work mates that development had no business touching the other systems.

        One of the biggest problems in current systems is that the devs think they should have unfettered access. This is only a prescription for disaster.

    2. Re:The Golden Age of Programming by Kremmy · · Score: 1

      One of the biggest problems in current systems is that devs need unfettered access to get their jobs done.
      You can't put a developer on a locked down system and expect them to get anything done. People who work with development of software can't have their operating environment actively working against them. If the world had stuck more to UNIX norms, we'd probably be in a far more palatable situation with systems that are actually designed to allow multiple people to get work done using the same hardware without the access control causing no end of headaches.
      But that's not the case.
      Something as commonplace as web development, for example. If you're creating a single-page, static html document with inline CSS and JavaScript, you're probably good with the most basic editor and browser available on your platform, no matter what platform that is. But the moment you cross the line into something even slightly advanced using external scripts, you find yourself in a position where you require such things as an actual web server providing your web documents or the browser will securely pretend like your files are not a valid web document. You simply must modify your environment to progress.
      This is the simplest example I can think of, if you do anything more complicated with development than the most basic and simple web page, noticeable access limitations means they aren't letting you do your job.

    3. Re:The Golden Age of Programming by Kremmy · · Score: 2

      I agree that the developer should be programming against their own machines where possible. The target environment is always a limited system, and the developer must work within those limits. The developer must have the necessary local access to deal with the problems they personally encounter in their workflow, though that does not mean they must have unlimited access. I'm personally very fond of virtual machines and prefer to keep any limited environment ready to go using them, common CPUs have accelerated those for almost a decade now. If the developer is being limited at their end, it's because people are doing it wrong on the other.

    4. Re:The Golden Age of Programming by phantomfive · · Score: 1

      You jest, but if this guy had actually looked at history, he might have learned something. So far the project is just another in a long line of projects that failed to bring programming to the masses. Applescript, COBOL, BASIC, Visual basic, hypercard.....the list goes on. Maybe they will succeed where the rest failed, who knows?

      For my money, the best way to introduce someone to the concepts of programming is LOGO. Give an 8 year old a keyboard and a turtle and within an hour she's programming.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:The Golden Age of Programming by BasilBrush · · Score: 1

      The summary probably gives the wrong impression. The lighttable project is about improving the practice of programming for all programmers not just beginners. And he's probably better read in the history of such things than you are.

    6. Re:The Golden Age of Programming by phantomfive · · Score: 1

      And he's probably better read in the history of such things than you are.

      That might be true.

      --
      "First they came for the slanderers and i said nothing."
    7. Re:The Golden Age of Programming by phantomfive · · Score: 1

      Are you using light-table as an IDE? How do you feel about it?

      --
      "First they came for the slanderers and i said nothing."
    8. Re:The Golden Age of Programming by dbIII · · Score: 1

      You can't put a developer on a locked down system and expect them to get anything done

      Nobody is suggesting that. A sensible suggestion is a system that is not locked down for the devs but is not currently being depended on for production. Unless the chages are minor developers shouldn't be doing anything new on a production system without kicking it around on a test system first. Production systems are typically heavity locked down against devs due to an incident where a developer has gone too far (eg. overwriting with no way to get back to the initial state or a reboot of the entire system when their process gets out of their control). If the developer does not grasp the implications of multi-user systems and the consequneces of downtime are large enough then that's where they have to be watched. A few cowboys ruined it for the lot.

    9. Re:The Golden Age of Programming by dkf · · Score: 1

      Sorry, but devs absolutely need to be on a limited system!

      The problem with that approach is that you end up with devs being told to produce iPhone apps using just Microsoft Word "because that's what the company provides for all their employees; no program may be present that has not been vetted by central operations". It's going from one extreme to the other...

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    10. Re:The Golden Age of Programming by Simon+Brooke · · Score: 1

      I used these things. They really existed. And they made modern IDEs like Eclipse and IntelliJ and Netbeans and Visual Studio look really crude and primitive. The Lisp machines were horrendously expensive, though. The last one that the nice Government bought me cost £25,000 at a time when a Sun workstation cost £4,000. And so we really have forgotten what was possible.

      However, the machines we have now are enormously more powerful than the machines we had then. My Xerox 1186 in 1987 had (I think) 8Mb of real RAM and about 80Mb of disk, and ran at two MIPS. My desktop machine at home has 16Gb of RAM and runs at 18,000 MIPS. We really could begin to run the big software development environments of the 'golden age' again, on machines everyone can afford. Clojure and LightTable are a real step in the right generation; but they're still a long way behind where we were thirty years ago.

      --
      I'm old enough to remember when discussions on Slashdot were well informed.
    11. Re:The Golden Age of Programming by Slashdot+Parent · · Score: 1

      We had development, QA an production environments that only touched through Control updating processes.

      This is actually pretty common at mature companies, financial or otherwise. I strongly urge my clients to adopt a CI tool and instrumented deployment to QA and production environments.

      The biggest benefit that my clients have seen from this is the elimination of "magic builds". You know, the kinds that can only be accomplished on one key developer's laptop which might get stolen at the airport and can only run on a server with specific, undocumented settings. I've had to deal with many of these and it's so wasteful. It would take the original developer an extra, what, hour of his or her time to make the project build in plain Jane Jenkins or Bamboo or something, but for the consultant who has to clean up the mess, it can take me a few days to make the bloody thing build after the original dev resigned from the company and you gave his laptop to Eric, the intern.

      Don't get me wrong, I'm happy to bill the hours, but it's my job to prevent my clients from re-fucking up the same thing over and over and over again. For my current client, I set them up so that their projects build and deploy to their dev environment with every push to git. This is the carrot that gets them to make their builds portable: they can be lazy and never have to do any work to deploy to dev. They push, and the app is deployed. For builds to QA, they simply tell the release manager (could be a senior dev or a project manager if the client is too small to need a dedicated release manager), "Hey, can you please push release 3.2.414 to QA?" The release manager makes a few clicks in Bamboo, and the project is deployed to QA, and the fact that the project was deployed, and what was deployed, and by whom, is all logged in Bamboo, so everyone knows what is deployed where and when it was deployed and by whom. Same with production. Lastly, if something is broken in QA or production, rolling back the code to the previous version (or any other version) is like 2 more clicks.

      This makes code deployments much less risky. I've many times had the following conversation:
      Me: We're deploying to prod on tuesday
      Stakeholder: No can do. We have a demo on Wednesday, and if you fuck something up, it's hosed.
      Me: Rolling back to the current version takes literally 2 clicks. Call the departmental pager any time 24/7 if you need the change rolled back.
      Stakeholder: Oh. Well, that's fine then. Go for it.

      Time to end this ramble. Basically, I agree with you 100%. Automated builds/releases/deployments should be required in any software dev shop. It's as important as electricity.

      --
      They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
    12. Re:The Golden Age of Programming by Slashdot+Parent · · Score: 1

      One of the biggest problems in current systems is that devs need unfettered access to get their jobs done.

      Oh, by all means, devs should have admin privileges on their own workstations. They just shouldn't have any access to QA and prod environments. Deployments to QA/prod should only be done via a deployment tool. If you can't make your project buildable/deployable by Jenkins/Bamboo/whatever, then your project is not finished.

      --
      They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
  9. Re:Stop trying to "fix" programming by Bengie · · Score: 1

    I always assumed "brogramming" was similar to "Pair programming", but urbandictionary gives a less professional image.

  10. Re:this is why my kids won't be coders by allcoolnameswheretak · · Score: 5, Insightful

    Yeah, but this perception of programming is the real problem.

    Programming is not a "pain" if you do it right. Most of the times programming is a "pain" because you are working with code or frameworks written by mediocre programmers who probably shouldn't be programmers. The more accessible you try to make programming, the more mediocre programmers will be encouraged to write code and software that will be a pain to work with.

  11. Re:this is why my kids won't be coders by Anonymous Coward · · Score: 2, Insightful

    the more accessible you make it the more people get into it and the more of a commodity it will become

    even now developing and coding is a commodity in a lot of fields or a secondary skill to being a math whiz and working with algorithms on data sets

    So true. I studied computer science at university, never graduated because I began consulting. Years later I am finishing a mathematics degree and regret ever pursuing computer science much less the IT career into which it led me. I came across the textbook for an introductory computer science course at a leading university in Canada; it was so dumbed down I almost cried. The notion everyone should learn to programme computers is ridiculous in the same sense everyone should should learn to wire their own home or repair their own automobile.

  12. Re:this is why my kids won't be coders by umghhh · · Score: 1

    correct. Coding has been difficult task for geniuses at the very beginning because of two reasons: price of equipment and difficulty of some of tasks at hand back at the time. These days almost enybody can do some coding - my kids learn scripting for office applications at school in 3rd grade - that is programming too. In my professional life I often deal with what you can call infrastructure projects where team size goes over 5persons and it cannot be squized in 3 months, usually having to work on existing code base and maintaining different versions of product in different phases of a life cycle.In such setups coding is a skill which requires quite some knowledge, it is just very important but minor thing - most of the time you deal with things that are not application coding but discussing architecture, ways of testing, release strategy, test automation strategy and some such. There are projects where teams refuse to deal with this issues in a structured way because they 'like coding' and ones where they accept that it is difficult to get done all these other things perfectly but it is nevertheless worthwhile as it saves some major stress later etc. In these setups coding is just part of project life but not the most important one. Testing or maintenance or any such thing is not part of any of the courses. It is still worthwhile as our office life is full of coding of some sort. It is a skill like (yes a car analogy!) car driving - most of us iin inustrilized world have a driving license and can drive but track bd bus drivers are still professionals with special license. The question is - do you want to be a track driver?

  13. Re:Lazy people - BULL! by Anonymous Coward · · Score: 1

    Just suck it up. If it was easy then everyone would do it. ( actually it is easy, people are just whiny lazy asses these days and want everything to be done for them, and presented on a silver platter, paid for by someone else via some 'wealth distribution plan' )

    This is unmitigated bullshit! Edit/compile/link is NOT the object of coding. As a mathematician hacking semi-numerical algorithms, the programming languages (I use mostly C) are the easy/sensible part of the job. A Backus Naur diagram defines the language nicely, making things sensible. (making A[i] clearly the same as i[A].) But my IDEs to link/compile are a morass of no-reason-just-policy quagmires worthy of organized religions.

    Coding is not a tedious religious rite to be memorized w/o question. Coding is a tool to get a job done, not an idol of obscurity to be worshiped.

  14. You Have To Enforce It by Jaime2 · · Score: 1

    One of my rules at work is: "If I check it out in Visual Studio and press 'Start', it better compile and run". It's not acceptable to make the next guy figure out how to run a program. Everyone I work with thinks I'm overreacting at first, but when they go to fix an issue in four-year-old code they've never seen before, they suddenly get it. Bonus points for starting the test suite by default instead of the actual program.

    1. Re:You Have To Enforce It by iONiUM · · Score: 1

      I'm surprised this isn't the norm already? What kind of shitty environments/code are people working with?

      At all the companies I've worked at (all Visual Studio), if you got source from TFS, it was guaranteed just pressing 'start' would compile and run it, regardless of whether it was WinForms, ASP.NET, Silverlight, etc. That's just expected, and if I ever started a job and the code didn't just run, I'd assume people there didn't know what they were doing.

    2. Re:You Have To Enforce It by Jaime2 · · Score: 1

      Which leads to the summary's statement of "They have to install dependencies, compile code, start servers and open ports. At each step the errors are difficult to diagnose and time-consuming to fix." Visual Studio runs the servers and opens ports for you based on what type of program the project says it is.

  15. Actually feedback at all levels is a big problem by NotSoHeavyD3 · · Score: 1

    I realize this is a tangent to what the post is talking about. However there is a related feedback that's a big problem for me. Getting feedback from "user". So at least in my company it often turns out one manager is a big user of the software. Guess which office door is closed pretty much all day and no answering e-mails of any kind? It's very difficult to give mangers like that what they want when the only time they'll tell you is they pop-up behind you while you're doing something else, give you a 3-5 minute explanation that they've not really fleshed out, then run silent for 3 weeks. (Yes, I've literally developed something that was requested and it got used for a couple of minutes and got "This isn't what I wanted." talk. It's very aggravating.)

    --
    Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
  16. Eclipse? by drolli · · Score: 3, Informative

    I mean, thats the elephant in the room, isnt it. I found that everything thich can be automated easily is automated in eclipse.

    1. Re:Eclipse? by Anubis+IV · · Score: 1

      "That" or "which", I believe, though I'm certainly not sure. Perhaps they didn't know which one to use?

    2. Re:Eclipse? by Anonymous Coward · · Score: 2, Insightful

      You are certainly right about eclipse being an elephant.

  17. Teach my tone-deaf sister to sing by OpinionatedDude · · Score: 2

    Whenever I see one of these headlines about how there is a supposed shortage of programmers and we should make it easier so "stupid people" will come to save the day, it just makes me think "what the what?" I have an awesome sister. She can't sing. She makes people cover their ears and the dog runs out of the room. Are we going to solve today's broken music scene by making singing easier and coaxing my sister to become a singer? I don't think so. Singing is easy. Doing it well enough that people want to listen is not hard...for people who are good at it. People who suck at singing should just do the world a favor and not try it in public. The fact that the world has a limited number of programmers, and an even smaller number of good programmers and an even smaller number of really-really good programmers is simply that people are all different. Some of them can sing. Some of them can do technology. Some of them are jocks. Some of them just take up space. (Hey, it may be harsh, but it is accurate.) On the other end of the millions of different bell curves that could be used to describe humanity, there are some people who excel at bad things, like the Hitlers and the Lawyers of the world. Sadly though, this sort of "how can we make programming accessible to the masses" nonsense will never go away. That is simply because there are people on this planet who are six sigma at asking stupid questions.

    1. Re:Teach my tone-deaf sister to sing by jpellino · · Score: 1

      We'll skip the false dichotomy and get to the good part:

      "Singing is easy. Doing it well enough that people want to listen is not hard...for people who are good at it. "

      OK, except for the concept of talent development. Yes, there are people who can sing the minute they open their mouths. Those who go straight from the birthday part to a career are the incredibly small minority. Most people who are good at something as adults were not exactly that good to begin with. As good as young Mozart, by the time he wrote something that we think of as enduring, put in the 10,000 hours that's typical.

      People involved in reductionist endeavors (science, math, programming) are the worst to judge talent development, as their talents reside mostly in cogitating about stuff. When you do so, the odd thing about that is that you're relying on your internal assessment of talent - which to sum up is "I've always been as smart as I am now" - the mind is lousy at seeing its own progress. Any athlete can point to larger muscles, faster times, higher scores, musicians can hear their progress in performance recordings, artists and writers can see proof of their evolving skills. Much less so for "brainy" people. Example? Look at your use of language. Clearly it evolved. Now think back to when you were three. Tell me something that you can remember from then. Will you tell me the story in your three-year-old voice with a three-year-ol'd vocabulary? Nope. Bet you'll use words you didn't learn until much later. It's like looking through the other end of the telescope.

      Your understanding of your understanding expands with your expanding understanding, so you don't see the expansion.

      Hence the programming world does (as you kind-of suggest) need to look to other disciplines to see how to ensure talent development.

      If you only want the prodigies, it's going to be a long, lonely run.

      --
      "Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
    2. Re:Teach my tone-deaf sister to sing by Cruciform · · Score: 1

      A strange example, considering we now have people who aren't exceptional singers but have charisma and looks and are auto-tuned to make them marketable.

    3. Re:Teach my tone-deaf sister to sing by OpinionatedDude · · Score: 1

      Precisely, I want only people who are naturally good at something to be doing that thing. I don't want someone who "worked their way up to near adequacy after a lifetime of being a less than adequate engineer" to design the brakes for my car. I also don't want to listen to an artless rendition of a classic piece of music hacked to pieces by a tone-deaf wanna-be musician (auto-tune notwithstanding). People should only "publicly" do things they excel at. Trust me, no amount of practice will make me a decent singer (or painter or jock). The best way to wind up with software that is even worse than everything ever produced by microsoft is to let people who suck at programming "develop their alleged talent" for years and foist their poor efforts upon an unsuspecting public. They might eventually get to a point where they can fool an interviewer and get a job. That does not make them a good programmer. By now, my otherwise awesome sister has spent at least that mythical 10,000 hours offending family members and others with her singing. She hasn't improved at all.

    4. Re:Teach my tone-deaf sister to sing by jpellino · · Score: 1

      So you were born good at the thing you do now? It's that simple?

      --
      "Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
    5. Re:Teach my tone-deaf sister to sing by u38cg · · Score: 1

      The problem there is that anyone who does not actually have a brain defect, which is almost no-one, can be taught to sing and taught to sing well. People who can't sing were typically brought up on a diet of recorded music, were not sung to as children, and were discouraged from singing from an early age. Give her six months of weekly lessons with a vocal teacher then come back and tell us she can't sing.

      --
      [FUCK BETA]
  18. Often we do this to ourselves. by w3woody · · Score: 5, Interesting

    More than once I've seen the existing functionality of an IDE's automatic (or semi-automatic) compile, run and debug loop sabotaged by some (sometimes mandated) third party plugin which is supposed to make things "easier." I've watched as people poorly integrate Java Spring into a project and render it impossible to use Eclipse's debug button because of badly constructed project dependencies. ("Oh, if you want to run the project, just drop into the command-line terminal and type 'ant someobscurebuildproduct run'; it's pretty easy, why are you complaining?") I've seen people integrate Maven into a build process in ways which guarantee the project will stop compiling at some unspecified time in the future by improperly scoping the range of libraries that will be accepted. (And I'm not a fan of Maven or CocoaPods or other external dependency resolution tools anyway, as in part it presumes the external libraries we link against that are hosted outside of our source kits will honor their public interface contracts as minor revisions roll out, something which isn't always true.)

    I've seen refactoring which adds code bloat (rather than simplifies the code). I've seen home-rolled configuration files which make code discovery functions break code discovery functions in Eclipse useless (do you really need to home-roll you own class loader, and specify Java classes in JSON?). I've seen plenty of 'voodoo stick waving' standing in for good coding practices. I've seen the lava flow anti-pattern obscure a simple Java RTL call in 20 discrete layers of classes, each added on by another refactoring that did nothing but make things more obscure.

    I've seen weird blends of ant and makefile build processes which took a product that should have taken perhaps 5 minutes to build take over an hour, and build processes so broken that it was impossible to shoe-horn into an IDE without rewriting the entire project. ("Real programmers use 'vi.'" *shakes head*)

    In fact, I have a working theory about programmers--and that is this: Most programmers think something should be a certain level of difficulty. And when a project turns out to be easier than they think it should be, they add artificial complexity until it reaches the expected level of difficulty. At some point, the project then needs to grow, making things organically more difficult--but the artificial difficulty added by the programmer who thought things were too easy before then simply sabotage the project. This is why quite a few projects I've worked on over the past 25 years have failed.

    This is why I have no hope for any project that attempts to fix the problem. That's because the problem is cultural, not technological. We've had IDEs which had integrated debugging and one-button build + run processes going back to the 1980's--yet somehow we always glom to the next big thing, oh, and sorry about breaking your IDE--but this next big thing is SO important it'll totally compensate for the fact that we broke your edit/run/debug cycle.

    Meaning I guarantee you the moment someone builds a fool-proof IDE which makes it brain-dead simple to edit, compile, run and debug an application, some damned brain-dead fool will come along, worried that things shouldn't be harder, and break the system.

    1. Re:Often we do this to ourselves. by MarkH · · Score: 1

      "Most programmers think something should be a certain level of difficulty. And when a project turns out to be easier than they think it should be, they add artificial complexity until it reaches the expected level of difficulty"

      I like this. seen it a lot never seen it expressed so clearly. mind if I re-use?

    2. Re:Often we do this to ourselves. by w3woody · · Score: 1

      Absolutely, go right ahead.

    3. Re:Often we do this to ourselves. by Agent+ME · · Score: 1

      (And I'm not a fan of Maven or CocoaPods or other external dependency resolution tools anyway, as in part it presumes the external libraries we link against that are hosted outside of our source kits will honor their public interface contracts as minor revisions roll out, something which isn't always true.)

      That's why you depend on a specific version.

    4. Re:Often we do this to ourselves. by dkf · · Score: 1

      I've seen the existing functionality of an IDE's automatic (or semi-automatic) compile, run and debug loop sabotaged by some (sometimes mandated) third party plugin which is supposed to make things "easier." I've watched as people poorly integrate Java Spring into a project and render it impossible to use Eclipse's debug button because of badly constructed project dependencies. I've seen people integrate Maven into a build process in ways which guarantee the project will stop compiling at some unspecified time in the future by improperly scoping the range of libraries that will be accepted.

      I've seen refactoring which adds code bloat (rather than simplifies the code). I've seen home-rolled configuration files which make code discovery functions break code discovery functions in Eclipse useless. I've seen plenty of 'voodoo stick waving' standing in for good coding practices. I've seen the lava flow anti-pattern obscure a simple Java RTL call in 20 discrete layers of classes, each added on by another refactoring that did nothing but make things more obscure.

      I've seen weird blends of ant and makefile build processes which took a product that should have taken perhaps 5 minutes to build take over an hour, and build processes so broken that it was impossible to shoe-horn into an IDE without rewriting the entire project.

      All those moments will be lost in time, like tears in rain.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    5. Re:Often we do this to ourselves. by w3woody · · Score: 1

      Time... to... move on to management...

    6. Re:Often we do this to ourselves. by Euler · · Score: 1

      That sounds about right. I think the corollary to that is: "When a simpler approach is found, at least one person in the group will refuse to give up the needlessly complex bits."

    7. Re:Often we do this to ourselves. by DamianJPound · · Score: 1

      "Real programmers use 'vi.'" *shakes head*

      Real programmers use whatever they damn well please!
      I use Notepad++ through wine on Linux, sue me :p

    8. Re:Often we do this to ourselves. by w3woody · · Score: 1
  19. Re:this is why my kids won't be coders by 50000BTU_barbecue · · Score: 1

    Smart parenting. If I have kids, I'll pound it into their heads that technical stuff is for hobbies only. Unfortunately I fear we are heading back to the historical mean for the human race, laborers work garbage jobs with no future, you have the "gentry" and you have the rich families that control everything by blood line.

    The gentry would be notaries, lawyers, accountants, managers, etc all jobs which could have been equally well replaced by outsourcing or automation but will never, ever be.

    I'd also encourage them to become rentiers, buy a rental property ASAP.

    Now that I'm 40 and am still struggling to find work in a dwindling technical area in Montreal, I see other people my age making millions for doing nothing of any real value I can see.

    One guy opened an expensive all-hype hair salon. He has 5 expensive cars. All he does is maintain an image.

    Real estate agents and notaries provide little to no actual service but have a legal framework to ensure their jobs. Optometrists are another case of something that could easily be replaced by automation but will never be.

    Simply put, if you interact with a machine of any kind, you'll either be stuck in stagnating wages or in the perpetual education (at your expense!) treadmill.

    I don't see my local landlords or business owners wearing diapers because they fear for their future.

    --
    Mostly random stuff.
  20. There needs to be a continuum by jpellino · · Score: 1

    of programming environments where the stuff kids use early on has tangible links to the stuff they'll use later on.
    Code is not code is not code. The AP exam alone has been through three languages (Pascal, C++, Java) and their official caveat isn't reassuring.
    I can teach young kids Scratch, Stagecast, NXT all day every day and they love it and learn to solve problems.
    Trouble is there's no bridge between that and "real" programming. The parentheses are mine, but there's no volume knob on the chorus that rushes to pooh-pooh anything other than a full-blown professional language as "programming". Got it. Hour of Code was an inch deep and a mile wide. Understood.
    And that's the problem. What's a kid who gets inspired by that first experience to do - jump into a CS course that's an inch wide and a mile deep?
    To extend another analogy used elsewhere in these comments, it's like going from applying a bandaid to being handed a scalpel and suture set.
    Want to make a lot of money? Create a language that mimics their maths experience - that explains variables, arrays, transformations, algorithms, sets, etc. in a way that they can parallel and apply.
    Yes, cue the snarky comments, but I miss BASIC and HyperTalk. Very low learning "floor" and pretty-darn-high learning "ceiling". RunRev / LiveCode has huge potential as it uses hypertalk-ish syntax and actually does something tangible in short time. The engineering equivalent of such a continuum is LabView, but yes, it's basically for instrumentation, no, you can't produce standalone apps, etc.
    Huge need for a continuum / bridge.

    --
    "Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
  21. What nonsense by gweihir · · Score: 1, Insightful

    Yes, I usually get by with print statements as well, because I do not need anything else! Learning to debug is a critical part of learning how to program. Taking that away is plain harmful. Advanced debuggers give you more, but anybody that cannot debug simpler print-statements does not have the level of understanding of the code that is absolutely required to make it any good.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  22. Re:Wasn't all this solved at the end of the 80s an by gweihir · · Score: 2

    Yes. Turns out people unable to program lack talent, insight, dedication, but not an IDE.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  23. Re:You can't fix the pain of learning. by gweihir · · Score: 1

    Indeed. And people that are unable to debug simpler things wit print statement do not understand their code at all. This is not a tool problem.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  24. Re:this is why my kids won't be coders by 50000BTU_barbecue · · Score: 1

    Pretty much, yes. Would you rather I tell my kids "be a poor peon to keep other people rich"?

    You can do that if you want, but my eyes are opened now. I used to be idealistic too.

    If you buy a rental property, it will generate passive revenues in ten years.

    What will the code you wrote today do for you in ten years? Yeah, unless you own it, nothing.

    You can keep investing your time and energy to make other people rich, that's fine, but why burden your children with your neuroses?

    --
    Mostly random stuff.
  25. Re:Havent you heard of Python by gweihir · · Score: 1

    In fact, for a time there were C interpreters that also did what Python does. Never caught on, because this is not the problem. In order to create programs of any worth, the programmer needs to understand what they do and needs to be able to hold a reasonably accurate model in their heads. That is why debugging with print statements works so well: A competent programmer only needs a hint of what the problem is, not every detail. People that need crutches like graphical debuggers and detailed error messages explaining every last bit do not have what it takes.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  26. On Almost Every Professional Project I've Been On by Greyfox · · Score: 2
    The build system has been by far the worst part of it. There's no one whose job it is, quite often the programmers are in an unfamiliar environment. I do a lot of UNIX work, and most of the devs came from some other environment and are frequently not even familiar with the language we're using, much less the tools the OS provides. On C projects I've seen everything from home-rolled perl or shell scripts to cascades of make that would fail due to missing dependencies several times before building after you resolved them all. Most of the time, the developers on those projects had no idea there was a debugger on the system or that with just a bit of work it would show you where a segfault had occurred.

    So it seems to me that most of the pain of programming is bad programmers who can't be bothered to learn about the tools they're working with or even the hammer that they're using to solve every problem. So why do you think your hammer's going to be better, again?

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  27. s/emperical/empirical/ by RonBurk · · Score: 1

    It's right before the sentence that accuses the world of choosing to be illiterate.

  28. Be careful what you wish for by Rambo+Tribble · · Score: 1

    Making programming more accessible by more people may result in well-functioning programs being as common as well-functioning governments are where voting is more accessible by more people.

  29. Re:Lazy people - BULL! by jpellino · · Score: 1

    "a morass of no-reason-just-policy quagmires worthy of organized religions."

    Thank you for cogently describing the current state of programming languages.

    I was going to suggest by analogy that your neighborhood mechanic be up to speed not only your car, but your bicycle, steamboat, helicopter, Segway, pogo stick and diesel-electric train.

    --
    "Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
  30. Re:this is why my kids won't be coders by ATMAvatar · · Score: 2, Interesting

    The notion everyone should learn to programme computers is ridiculous in the same sense everyone should should learn to wire their own home or repair their own automobile.

    It's interesting you brought that up, because I think a similar analogy is necessary.

    While most people do not (and should not) ever try to do advanced mechanic tasks like change out a transmission on their car, it is useful for people to understand basics like rotating tires and changing oil. Similarly with programming, I would not expect most people to pick up programming to the point where they can code up an OS, compiler, or even a typical SOA system. However, giving someone the tools to fiddle around with basic programming like static web pages with a little javascript or simple command-line applications to handle input from a user or a data file and spit out usable information can enhance their hobbies or even non-IT work.

    Many people who became programmers after starting in some other field (either in school or the workplace) can recall situations where they used programming to aid in some aspect of their pre-IT life. There's no reason to shut the door for anyone else to do so.

    --
    "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
  31. Re: this is why my kids won't be coders by 50000BTU_barbecue · · Score: 1

    I wish your comment made sense. What are you trying to say?

    --
    Mostly random stuff.
  32. For those who think programming should be hard... by gestalt_n_pepper · · Score: 1

    You're a bunch of over-testosteroned, machismo idiots.

    Offense definitely intended.

    First point. Machines and software exist to serve *people* and for no other reason. To the extent that they do that, they are "good." Anything less is "bad." Simple enough for you?

    Second point. Programming is not about "overcoming intellectual challenges." Don't flatter yourselves. Nobody cares how you feel. Programming is either about money or masturbation. If the latter, make it as hard as you like. Go for it. Wheeeee! Look at meeeee! Look how smart I am! Whoo hoo!

    But if you're trying to make *money* programming, or actually have to get a task done, you need all the help you can get. If you have a manager or officer breathing down your neck to GET IT DONE so millions aren't lost, or someone doesn't die, you need effective tools.

    Bottom line? Get over yourselves. The IDE is there to make accomplishing a task as easy as possible. It serves no other purpose. It should make everything easily known and obvious. Moreover, it should actually HELP YOU solve your problems. Otherwise, it's just another idiotic software failure.

    --
    Please do not read this sig. Thank you.
  33. +1 Re:Smalltalk live images by Paul+Fernhout · · Score: 2

    Mod parent up. Not sure if this New Yorker cartoon from the most recent issue will stay around long, but I saw it this morning and it sums up how I feel about much of computer software development the last thirty years since Smalltalk:
    http://www.newyorker.com/image...

    A character says "The new house is almost ready!" and it looks exactly the same as the rundown house in almost exactly the same location.

    Software could be better, like the character could in theory have built a better house. But in practice, watching this play out of 30 years myself, much of what we get is just re-re-re-inventing the wheel. And there is a terrible waste in having to re-learning it slightly differently with slightly different bugs and limits, and little true progress. Often there is regress, since Smalltalk's keyword syntax is still more readable and expandable than C-like syntax.

    Where would we be now if a truly free Smalltalk had had all the billions poured into it that Java had due to IBM and Sun's marketing clout and all the effort that has gone into JavaScript dues to Netscape/Mozilla/Google/etc.? Including the best of any LightTable ideas (a view with source when you hover over a name in code is indeed cool) and any other GUI improvements? As well as better libraries and better cross-platform support and better browser integration and so on?

    Still, maybe JavaScript is the best we could hope for at this point, and better than we deserve, as someone else said and I echo in this submission from yesterday about James Mickens' last "USENIX "login" column explaining all that is wrong with the Web pages technically:
    http://slashdot.org/submission...
    Citing: https://www.usenix.org/system/...

    But we got that mess for social reasons (competition, centralization, monetarization), not technical one, like I mention here:
    http://slashdot.org/comments.p...

    Social stuff like ParcPlace not being willing to license ObjectWorks/VisualWorks cheaply to Sun when they wanted to do a set top project (which ultimately lead to sun making Java).

    Could Smalltalk be improved? Yes. Even the syntax could, like by using more C-like strings and comments while keeping the keywords. Could it benefit from type annotations for optimization? Probably yes too. And could it benefit from being built from textual sources instead of an image (like GNU smalltalk). Again yes. But investments in that direction would have produced so much more benefits than something like Java or JavaScript.

    That said, after all the pain and suffering and waste, Java and JavaScript/HTML5/CSS3 have finally become half-way decent platforms. I'm moving more in a JavaScript direction myself for mostly social and practical reasons, despite knowing how great Smalltalk was and seeing how much it could have become. I talk about that on Slashdot here:
    http://slashdot.org/comments.p...
    http://developers.slashdot.org...

    Smalltalk might still get there building on Java and JavaScript as with these projects:
    http://amber-lang.net/
    http://www.redline.st/

    Mickens' comments are mostly true, but end up being tradeoffs for ubiquity and easy installs in the case of JavaScript -- even Alan Kay and Dan Ingalls agreed on that with their efforts toward the Lively Kernel driven by the fact they could not get many people to install Squeak or Squeak-based apps).
    http://www.lively-k

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
    1. Re:+1 Re:Smalltalk live images by dkf · · Score: 1

      maybe JavaScript is the best we could hope for at this point

      What? We're doomed. Doomed!

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
  34. Beginners .... start servers ... opem ports ... by RichMan · · Score: 1

    I don't see why beginner programmers should be starting with servers or ports. Where are the basic fundamentals of programming before they approach things like servers and ports where one should be thinking about task blocking, threading and security above and beyond the "make it do what it want" level.

  35. Re:Havent you heard of Python by Anonymous Coward · · Score: 1

    More importantly, prints give you a nice, time-ordered, sortable, compact, searchable, filterable state/event list.
    I don't want slow-as-hell conditional breakpoints. I don't want to manually inspect the program state. Watchpoints admittedly can be very useful in specific circumstances (though a lot of the time it just means you really should make the code less of a mess).
    I don't want to have to wait after each debug step until the program reaches the next. I'd rather let it run over night and look at a log file. Grep, vi etc. are perfectly usable with multi-GB text files (I once had a text editor warn me that the file was "very large". It was about 20 MB. I laughed. If its under 1 GB it's not a large text file).
    Sure, use what ever you want. But if your debugger doesn't have extensive, easy to use data collection and analysis tools (I am not aware of one, but that might just be my ignorance) you'd probably be better of using print(f) most of the time.

  36. Logical impossibility by Chelloveck · · Score: 2

    First, why does programming need to be accessible to more people? That's exactly the opposite direction a mature technology goes. It use to be easy to fix your own car, but now with the modern engine and manufacturing techniques it's damn near impossible for most people to do more than add consumables. It used to be easy to fix electronics, but now it's impossible to take things apart and if you do you find everything is done in literally a black box of a chip and there's nothing you can do to it. These things have good points and bad points and I'm not here to argue for or against them, just to say that mature technology tends towards "no user-serviceable parts inside". Why would you expect programming to be any different?

    Second, the pain in programming doesn't come from the tools. Yeah, it's a pain to learn the tools, but that's a pain that's short-lived. The real pain comes from the nature of programming. It's caused by having to tell the computer in excruciating detail exactly what you want it to do. In order to tell the computer you have to figure it out for yourself, without glossing over any "you know what I mean" steps, because the computer certainly doesn't know what you mean. And not only do you have to tell it how to do the job when everything is working as it should, you have to anticipate all the ways in which things could fail and tell the computer what to do in those cases, too. THAT'S the painful part of programming -- the programming. No tool is going to fix that.

    --
    Chelloveck
    I give up on debugging. From now on, SIGSEGV is a feature.
  37. What pain of programming? by bucket_brigade · · Score: 2

    The only "pain of programming" I have experienced was always the result of my own poor design choices. Is there an IDE for that?

  38. kettle, meet pot by pavera · · Score: 1

    I found it hilarious that the post bemoans the state of getting started with a new environment, and how it invariably requires a tutorial, and that is terrible.... And then you download their software and you're presented with a blank screen and no idea how to get started... so you turn to you guessed it.. a tutorial.

    And then a tutorial that isn't even illustrated, so you can't tell what is supposed to happen with you hit cmd/ctrl+enter... I get a little checkbox next to my line of code.. I don't know what that means. Line is syntactically correct? Line executed? Line monitored by system? And it certainly doesn't provide any insight into the flow of data. I don't see a pane like I do in pycharm that lists the variables with their current values, I don't see any state.. Is that intended? I don't know, the tutorial doesn't inform me, and the environment is useless.

    I don't generally use debugging tools, preferring to keep my abstractions shallow, my code small and understandable, and a test suite that can prove that my code is handling the cases its designed for correctly. In some projects, yes, complexity is a requirement, but I feel like the advent of IDEs and debuggers has only served to allow people to more easily break what is in my opinion the first rule of development:

      "Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?" - Brian Kernighan

    Break systems down into small manageable parts. Write the code simply and clearly. Write tests EVERYWHERE.

  39. My kid is part of why I support Basic Income by Paul+Fernhout · · Score: 1

    http://www.basicincome.org/bie...

    Not because my kid is a dummy (far from it), but because I know becoming and staying an "owner" in the 1% is like winning the lottery. And societies with big rich/poor divides are less happy to live in -- even for the 1%.
    http://www.nytimes.com/2012/08...
    "Stiglitz and his allies argue that a free and competitive market is highly beneficial to society at large, but that it needs government regulation and oversight to remain functional. Without constraint, dominant interests use their leverage to make gains at the expense of the majority. Concentration of power in private hands, Stiglitz believes, can be just as damaging to the functioning of markets as excessive regulation and political control. "

    See also on how aspiring millionaires are used to keep everyone down:
    "The Wrath of the Millionaire Wannabe's"
    http://conceptualguerilla.com/...
    "But here's something I'll bet the dittoheads haven't thought of. Maybe they're the chumps. Maybe they've been sold a bogus "American dream" that never existed. Maybe "the rules" they play by were written by the people who have "made it" -- not by the people who haven't. And maybe -- just maybe-- the people who have "made it" wrote those rules to keep the wannabes chasing a dream that's a mirage."

    I wrote an essay on why even rich people should support a basic income:
    http://www.pdfernhout.net/basi...

    The fact is, most paid jobs are going away as robots and AIs become cheaper to employ than humans for more and more jobs -- even "creative" ones, like I discuss here
    http://www.pdfernhout.net/beyo...

    Preparing your kid to win the 20th century economic rat race leaves him or her a rat on a sinking economic ship in a 21st century economy...

    That said, independence when needed, cooperation when needed, hard work, prudence, saving, frugality, investing in the future -- in broad sense, these are all good things to learn however a kid applies them later in life.

    On code, the free code and content I write now and in the past like our free garden simulator and other tools has helped (a teeny tiny bit, I hope) to help bring about a 21st century transformation to a bigger gift economy, to better planning, to a more informed and enlightened and empowered citizenry. For example, this freely usable software someone else lets me reformat my slashdot posts to remove smart quotes from quotations in the above that display wrong:
    http://dan.hersam.com/tools/sm...

    So, free code and free content can make a difference in the world by making the world a better place in various ways. And then, such a society can hopefully do a better job of taking care of old farts like I will be soon enough -- if I am not already. :-) As well as doing a better job of taking care of the next generation which is much more important than taking care of the previous generation -- although you would not know that looking at who gets "Social Security" and Medicare in the USA -- the old, not the young). As Daniel Moynihan said, "the young don't vote, and it shows".

    Kids grow so fast. Enjoy them while you can! See also:
    http://www.katsandogz.com/onch...
    ----
    On Children
    Kahlil Gibran

    Your children are not your children.
    They are the sons and daughters of Life's longing for itself.

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
    1. Re:My kid is part of why I support Basic Income by 50000BTU_barbecue · · Score: 1

      I understand and I agree; I don't like where we are heading collectively. But what can I do about it? If I see a big rainstorm coming, do I complain about the fact I don't like being wet or do I get an umbrella?

      --
      Mostly random stuff.
  40. Oh, that's easy. by dutchd00d · · Score: 1

    1. Use a powerful editor that you know well.
    2. Don't use Windows.

    There you go. Done.

    1. Re:Oh, that's easy. by Euler · · Score: 1

      3. ???
      4. Profit!!

  41. Re:this is why my kids won't be coders by Jmc23 · · Score: 1
    Well, you could tell them to do what makes them happy.

    But maybe your way is right, after all, we could always use more miserable cynical fucks chasing after money.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  42. Step 1 by jader3rd · · Score: 1

    Switch the functionality of the '.' and ';' characters in C style languages. For me, it's perfectly fine with what '.' and ';' do and mean, but apparently it's a real struggle for those learning programming. While in University I'd be talking with somebody struggling in their Introduction to Computer Programming class, or somebody who was a CS major, and then dropped out and the number 1 complaint was how they were upset with how the program wouldn't compile because they were missing a ';' at the end of a statement. But if the character which represented the end of a statement was a '.', that would make sense to them because it's same character that represents the end of a statement in written communication. That way if they complained about a program not compiling because they forgot a '.', you could respond with "Well you wouldn't end a sentence with out a '.', would you?"

    1. Re:Step 1 by Jeremi · · Score: 1

      That way if they complained about a program not compiling because they forgot a '.', you could respond with "Well you wouldn't end a sentence with out a '.', would you?"

      I like it, but the benefit would be more than offset by the confusion that would be introduced by the fact that there would now be two flavors of C code floating around, and the people used to the old syntax are confused by the new one and vice-versa.

      Perhaps someone will invent a time machine and travel back to 1969 to have a 'frank exchange of views' with Dennis Ritchie.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    2. Re:Step 1 by flargleblarg · · Score: 1

      Switch the functionality of the '.' and ';' characters in C style languages.

      Egad, you are seriously suggesting the use of ';' for accessing members of a structure? Or do you not mean swap the two?

      [...] the number 1 complaint was how they were upset with how the program wouldn't compile because they were missing a ';' at the end of a statement. But if the character which represented the end of a statement was a '.', that would make sense to them because it's same character that represents the end of a statement in written communication.

      This might be a clue that their brain isn't suited for programming. It's not a difficult concept that different languages use different punctuation, especially in different contexts. A '.' character in C can be a radix point in a number, a structure member accessor, or a component separator of a filename, e.g., stdio.h. A person needs to be able to understand this extremely basic concept from the get-go or they are not cut out for programming, plain and simple. It shouldn't matter what symbols are used. Now if you're talking 5-year-olds, then ok, sure, maybe ';' is confusing. But if it confuses an 18-year-old CS student, well, ... they should probably be flipping burgers instead.

    3. Re:Step 1 by jader3rd · · Score: 1

      I'm not suggesting so much to have ';' be used to access members, so much as I am advocating the idea that the end of a statement should be the same as what it is when writing spoken language.

    4. Re:Step 1 by flargleblarg · · Score: 1

      The semicolon in English is perfectly valid as an end-of-statement punctuator; English has many ways to separate thoughts.

  43. Re: this is why my kids won't be coders by rwa2 · · Score: 1

    I guess he meant to say you should have hired a lawyer to get awarded some patents for some of the more novel coding you've done over the years? But that only serves to strengthen your point.

    Lawyers and financiers have imaginary assets, intellectual property that only has any value because we all believe they do. When others start to call BS and it hits the fan (as it has on occasion over the past couple years / decades / centuries / millennia), at least you have the means to production.

    Realtors, likewise, make their money because they've convinced us we need to finance single-family detached "American dream" homes or expensive downtown condos clustered in the "good" neighborhoods with powerful HOAs, with just enough scarcity to keep the prices inflated sky-high. If we could learn to get by in reasonably-priced and reasonably-sized homes and build up the neighborhoods ourselves, and flood the market with medium density communities and learn to be good neighbors, we could still live pretty decent lifestyles without having to slave away to barely make payments to our financiers.

    Anyway, we'll never strike it rich because money isn't important to us. Coding is. And we'll do it for the highest bidder, but the money isn't really important to us. Maybe someday we'll construct a site that allows us to code what we want and get paid for it. But coding is a tool, not a trade, so maybe, maybe we'll figure out how to hire some tools to do the drudgework for us. Because money isn't really important to us, but it's a little important, really. And then we'll figure out how to pay those tools a bit less to wrestle with the boring parts of coding. And then we'll be one of Them.

  44. Daily commuters vs. bus drivers & race car dri by Paul+Fernhout · · Score: 1

    "most of us in the industrialized world have a driving license and can drive, but track and bus drivers are still professionals with special license. The question is - do you want to be a track driver?"

    Very good analogy. Thanks! (Typos fixed, sorry)

    I feel that the world needs more people who understand computing and information management, but we probably already have perhaps 10X-100X more professional programmers than we need -- mostly making work for each other with slightly different proprietary (or even free) versions of essentially the same thing but with different bugs.

    Agriculture used to employ 90%of US workers 200 years ago, and now it employs about 2% Manufacturing is also on its way down. Yet, gardening is the most popular outdoor recreational hobby, and the Maker movement is rapidly growing. People like making and growing things -- often they like that more when they are not forced to do it endlessly in a boring or stressful way due to economic necessity.

    Programming may well go the same way more towards a hobby. It already is in various areas. For example, a dozen years ago, everyone was writing web frameworks or ecommerce frameworks, and now there are so many off-the-shelf ones, only hobbyists or researchers are focusing on that (mostly, always rare exceptions). As we get more free software piling up, how many jobs do we really need writing more? The jobs become more "software archaeologist" or "software chooser" or "software customizer" if even any of that depending on how far standards have spread -- so similar to your point between daily drivers versus specialized drivers.

    To build on your car analogy -- there is also a difference between car drivers, gas station attendants, car sales people, car mechanics, car delivery people, car rental agents, drivers ed teachers, gasoline refinery workers, and car designers. All are involved with cars, but in very different ways. There are right now very few car designer jobs compared to all the others. One hundred years ago though, 100s of small companies were designing cars, and with fewer drivers the ratio of designers to drivers was much higher. Although this analogy maybe breaks down because in theory software may need less maintenance once the software ecosystem settles down and also software may eventually maintain itself as AIs.

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  45. unintentionally best quote by phantomfive · · Score: 1
    Here is the best quote in the article:

    GETTING STARTED - First we need to get a development environment running. Let's try clojure: [example]. At this point you have already lost 99% of the population and we haven't even touched on css or templates yet.

    That's how you teach beginners.

    --
    "First they came for the slanderers and i said nothing."
  46. Re:For those who think programming should be hard. by phantomfive · · Score: 1

    When people say 'programming should be hard' usually they mean 'programming is irreducibly complex.' There's no way around the fact that programming is hard.

    --
    "First they came for the slanderers and i said nothing."
  47. Re:this is why my kids won't be coders by ADRA · · Score: 1

    The field of programming is only getting larger, so making programming easier for the people you're working with oen way or another will not help by shoving them into the gutter. The better route is to support and foster better static an anlysis so at least when they shoot themselves in the foot, they (or you) can see why it happened.

    --
    Bye!
  48. When heavy rains come, build an ark? :-) by Paul+Fernhout · · Score: 1

    Self-replicating space habitats that could duplicate themselves from sunlight and asteroidal ore were a long favorite "ark" idea of mine to deal with the risk of global nuclear war (although JD Bernal proposed them first in the 1920s it turns out). Anyway, arks are just another option to umbrellas -- given umbrellas may not work depending in the size of the storm. For me, the idea of a basic income is also a sort of an "ark". But I've tried others -- like helping people be more self-reliant with growing stuff via the garden simulator or helping people with making stuff with OSCOMAK (not to say how successful I've been, which is not much, especially for OSCOMAK, pretty much a big nothing except others are doing related ideas now in a smaller way like Thingiverse or Appropedia).

    I agree there is a tension of where to invest your time and other resources. You have to find something that works for you and your unique interests and abilities. It;s true though that when you invest in yourself, or your family, or even your local neighborhood, you have a much better sense of whether the investment is paying off than doing general advocacy for something to contribute to global change. As I say on my site when I talk about five interwoven economies (subsistence, gift, exchange, planned and theft): "The particular balance a society adopts is going to reflect the unique blend of history, culture, infrastructure, environment, relationships, mythologies, religions, and politics of that society." I guess the same goes for individuals and families, too?

    Anyway, I had my kid around age 40. I've come to learn that being an older parent has its pros and cons. My dad had me around age 50 though. So, good luck if you want kids!!!

    And don't let worries about the future stop you, or no one would have kids, since even for billionaires, money can come and go. Example (and kind of makes your point about techies vs. legal sharks, plus mine about a basic income to support inventors):
    "Goldman Sachs Not Liable for Failed $580 Million Deal"
    http://www.bloomberg.com/news/...
    "Goldman Sachs Group Inc. (GS) defeated a $580 million negligence suit over its role as adviser to speech- recognition pioneer Dragon Systems Inc. in a doomed merger, one of its biggest victories in a string of claims by dissatisfied clients since the financial crisis.A federal jury in Boston yesterday rejected the claims of Dragonâ(TM)s founders Jim and Janet Baker and two other shareholders that Goldman Sachs failed to properly vet Belgium-based Lernout & Hauspie Speech Products NV. The all-stock deal in June 2000 was rendered worthless months later when the fraud at Lernout & Hauspie was exposed and the company filed for bankruptcy. The verdict relieves Goldman Sachs of responsibility for a sale that left its clients with worthless shares in a failed company. The four Dragon founders sold some Lernout & Hauspie shares for $11 million before the stock collapsed and the Bakers lost the technology they spent decades developing."

    I met Janet once at a trade show and she and her husband were also students of my college adviser They lost about most of their wealth, but worse, they lost access to all the Dragon speech recognition source code that was in some sense their "baby".

    We all have our personal choices to make. And they are often hard ones. A book I just ordered:
    "In Good Company: The Fast Track from the Corporate World to Poverty, Chastity, and Obedience"
    http://www.amazon.com/gp/produ...
    "From the Wharton Business School and a secure place in corporate America to a $35-a-month allowance and the insecurity of a life of faith. This may seem a precautionary tale of downward secular mobility, but as we follow James Martin through his life and Jesuit training, we find it is all about ascent -- to God and to true happiness. (Paul Wilkes, Author

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  49. Fore! by westlake · · Score: 1

    When you spend 8 hours troubleshooting an open-source project to compile with a third party proprietary library it feels damn good to make it work. Coding is good because it's hard.

    Golf is hard.

    But golf doesn't pretend to be anything other than a game which is defined by the wholly artificial --- and unnecessary --- obstructions it places in your path,

  50. They looked at this problem before by Hognoxious · · Score: 2

    They looked at this problem before, and came up with Netbeans. They looked at it again and the result was Eclipse. I don't hold out much hope.

    Disclaimer: currently trying to [re]learn java (did a bit when it was 1.1) and I'm wondering if it'd just be better to use gedit or even vi...

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:They looked at this problem before by Hognoxious · · Score: 1

      Tab completion is very convenient to have in a language like Java.

      Indeed, that's nice.

      It's just that with what I've forgotten, what's changed and what I never knew on the one hand, and a 747 cockpit of arcane icons plus a veritable Hardwick Hall of windows on the other, I feel like I'm fighting a war on two fronts; I can't concentrate on writing code because I'm trying to work out how to drive the IDE or vice versa.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    2. Re:They looked at this problem before by phantomfive · · Score: 1

      Disclaimer: currently trying to [re]learn java (did a bit when it was 1.1) and I'm wondering if it'd just be better to use gedit or even vi

      The answer is no, if you ever plan on working with other people; and the answer is no unless you want to learn to use ant because Makefiles are slow at compiling Java.

      --
      "First they came for the slanderers and i said nothing."
  51. Re:Just use Vim or Emacs by Osgeld · · Score: 1

    Java programmers are the wost, I dont know how many times I have given up on a java program because instead of them making a program that works its you spending a lot of time recreating their development environment, or its just a constant string of bitch and nag messages

  52. What pain? by Tony+Isaac · · Score: 1

    I always thought programming was fun!

    Maybe if it's painful to you, you should try a different line of work.

  53. pain of programming / programming for everyone by allo · · Score: 1

    Why does everyone need to be a programmer? Why does someone imply, programming is a pain?
    Todays tools are okay, and who can't be a programmer, doesn't need to. We do not need to simplify laws, so everyone can be a lawyer, so we do not need to change programming just to have everyone as a programmer.

  54. Re:For those who think programming should be hard. by Jeremi · · Score: 1

    Programming is either about money or masturbation.

    Of course, the fact that a good programmer can make six figures is largely due to the fact that there are so few good programmers around -- in the (unlikely) event that awesome IDEs make it so easy to program that most people can do it well, chances are programmers' wages will drop significantly due to increased availability of employees willing to work for cheap.

    Call me selfish, but having spent the 10,000+ hours to get good at programming, I have conflicted emotions about deliberately devaluing my skills and earning $10/hour again.

    --


    I don't care if it's 90,000 hectares. That lake was not my doing.
  55. Re:Havent you heard of Python by gweihir · · Score: 1

    Indeed. The problem is that most programmers these days do not even know things like grep, etc. Just today I was working with a 500MB debug trace generated by printfs because that was the easiest way to see what is going on. With an OS that comes with good text-tools (or windows with cygwin), it is no problem to handle these at all. And once you add some perl/python/lua/whatever, you go way beyond the power of any debugger.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  56. Re:this is why my kids won't be coders by mattack2 · · Score: 1

    The notion everyone should learn to programme computers is ridiculous in the same sense everyone should should learn to wire their own home or repair their own automobile.

    But shouldn't everybody be able to do at least minor repairs in both of those areas?

    I say that as a hypocrite, as I have AAA, and have paid for oil changes, but I *could* do the things.

  57. Re:this is why my kids won't be coders by Hognoxious · · Score: 2

    The world is changing at exponential speed.

    At least they haven't automated being simultaneously pretentious and mathematically illiterate.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  58. Re:this is why my kids won't be coders by linuxrocks123 · · Score: 1

    Well, your kids still need some way to make their nest egg so they can buy their rental properties. What are they going to do to get that starting money? To me, coding seems as good a choice for that as anything.

    And, it's all fine and good to tell your children to invest, but I'd recommend diversified investment, not JUST rental property. Also, I'd recommend Real Estate Investment Trust investments over owning a single rental property outright. There's less risk with owning a share in a trust holding many properties, because, if you buy 100% ownership in a single property, that one property you bought may end up declining in property value if you're unlucky, even if the real estate market as a whole goes up.

    As far as your policy considerations concerning the owning class, they are certainly real. In my view, the best solution to this is graduated estate taxes topping out at something like 90%. There's no social benefit to making it possible for children of rich people to do nothing other than fuck around their whole lives. Democrats like the estate tax. Republicans want to repeal it. Compromise right now is 40% maximum tax bracket with a $5,000,000+ exemption. I'd like the exemption lower and the tax higher.

    Also, fuck beta.

    ---linuxrocks123

    --
    vi ~/.emacs # I'm probably going to Hell for this.
  59. Re:On Almost Every Professional Project I've Been by Greyfox · · Score: 1

    Funny thing is, 30 years along I really haven't run across anything I like better. Automake works great if it's already set up, but seems very esoteric to set up. Ant and Maven are just make with XML files. They're very clearly intended for use in systems that will autogenerate the build file for you, but somehow you always end up having to edit the damn things in a text editor and know implementation details of the build systems to make them work. Most IDEs are awesome as long as everyone works with that IDE and does everything with it. I've never seen that level of organization on any programming project. Most of the time I'm just putting together small libraries on one architecture, and can crank out a makefile that will work in a couple of minutes.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  60. The problem is how programming is taught. by Max+Threshold · · Score: 1

    When it comes to Java, it begins on day one with the standard "Hello, World" teaching people to write a procedural program in the static context before they even understand what an object is. And then they learn about object inheritance. Years later, they read Effective Java and find out their entire CS education was a lie. Meanwhile, they've been churning out utter shit as a contractor in Hong Kong or Bangalore or San Francisco... and every company who's been using their horrible code has been paying dearly for it.

  61. Re:this is why my kids won't be coders by phantomfive · · Score: 1

    Programming is not a "pain" if you do it right. Most of the times programming is a "pain" because you are working with code or frameworks written by mediocre programmers who probably shouldn't be programmers.

    Then that's what, 90% of programmers? Because 90% of the frameworks out there are rather painful.

    --
    "First they came for the slanderers and i said nothing."
  62. Re:this is why my kids won't be coders by baka_toroi · · Score: 1

    Jesus fucking Christ, not this shit. What made your generation so special and great? Here's a hint: nothing. You were as mediocre (or as great!) as the current generation. I'm honestly getting sick of all these old farts thinking they were the shit when there's nothing particularly outstanding about them.

    Yes, discipline is getting a bit behind. So what? We should focus on improving that, not just say "kids nowadays are dumb." Cutting down on social media, smartphones and porn will help. Don't you think we should focus on showing what impact abusing these things will have? For fucks sake, when I taught computers to old people I realized the have one of the shortest attention spans I've ever seen.

  63. Don't just be reactive, compute the future by the+agent+man · · Score: 1

    In live programming an attempt is made to reduce the time between a program change and the ability to wittness consequences of this change. In the good old days, with punched cards, this was not a pretty picture as it could take a long time to get to that point. With Conversational Programming, which is a special kind of live programming, we try to go one step further and compute of the program you are writing. A simple version of Conversational Programming has been added to AgentCubes online. You can play with this as part of one of the hour of code tutorials: http://hourofcode.com/ac

  64. Re:running code is hard? by Jmc23 · · Score: 1

    Perhaps if you actually read what they wrote, you would understand it has to do with web development.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  65. "fix it yourself" by PJ6 · · Score: 1

    The complaints seem to be about a lot of perfectly fixable usability problems, common to open source development tools, that nobody's bothered, or will ever bother, to address.

    I know - we're supposed to hate MS here - but I've never had these problems in projects of any type, large or small, closed or open source, using Visual Studio.

    And you get people also complaining that if making programming (actually, using the programming tools) too easy makes bad programmers. Which is total bullshit.