Slashdot Mirror


More Than Coding Errors Behind Bad Software

An anonymous reader writes "SANS' just-released list of the Top 15 most dangerous programming errors obscures the real problem with software development today, argues InfoWeek's Alex Wolfe. In More Than Coding Mistakes At Fault In Bad Software, he lays the blame on PC developers (read: Microsoft) who kicked the time-honored waterfall model to the curb and replaced it not with object-oriented or agile development but with a 'modus operandi of cramming in as many features as possible, and then fixing problems in beta.' He argues that youthful programmers don't know about error-catching and lack a sense of history, suggesting they read Fred Brooks' 'The Mythical Man-Month,' and Gerald Weinberg's 'The Psychology of Computer Programming.'"

726 comments

  1. Perfection Has a Price by alain94040 · · Score: 5, Insightful

    The most common errors: SQL injection, command injection, cleartext transmission of Sensitive Information, etc.

    People make mistakes. Software needs to ship, preferably yesterday.

    How much would it cost to have perfect software? I happen to have worked in an industry that requires perfect coding. So I can imagine what it would look like if Microsoft tried it.

    The debugger would cost half a million dollar per seat (gdb is free). There would be an entire industry dedicated to analyzing your source code and doing all kinds of proofs, coverage, what-if analysis and other stuff that require Ph.Ds to understand the results.

    The industry I'm referring to is the chip industry. Hardware designers code pretty much like software developers (except the languages they use are massively parallel, but apart from that, they use the same basic constructs). Hardware companies can't afford a single mistake because once the chip goes to fab, that's it. No patches like software, no version 1.0.1.

    It's just not practical. Let the NSA order special versions of Office that cost 10 times the price and ship three years after the consumer version.

    But for me, "good enough" is indeed good enough.

    --
    FairSoftware.net -- work where geeks are their own boss

    1. Re:Perfection Has a Price by Opportunist · · Score: 5, Insightful

      The problem is that software doesn't even ship as "good enough" anymore. It's more like "it compiles, ship it".

      Your example of hardware, and how it's impossible to patch it, was true to a point for software, too, in the past. Before it became easy to distribute software patches via the internet, companies actually invested a lot more time into testing. Why? Because yes, you could technically patch software, but it was tied to sometimes horrible costs to do just that.

      You can actually see a similar trend with the parts of hardware (i.e. BIOSes) that are patchable. Have you ever seen hardware shipped with all BIOS options fully enabled and working? I haven't in the past 2-3 years. More often than not you get a "new" board or controller with the predecessor's BIOS flashed in, and the promise for an update "really soon now".

      The easier it is to patch something, the sloppier the original implementation is. You'd see exactly the same with hardware if it wasn't so terribly hard (read: impossible) to rewire that damn printed circuit. I dread the day when they find some way to actually do it. Then the same will apply to hardware that you have today with some OSs: It's not done until it reads "SP1" on the cover.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    2. Re:Perfection Has a Price by Timothy+Brownawell · · Score: 4, Insightful

      I happen to have worked in an industry that requires perfect coding. [...] The industry I'm referring to is the chip industry. [...] Hardware companies can't afford a single mistake because once the chip goes to fab, that's it. No patches like software, no version 1.0.1.

      What does "stepping: 9" in /proc/cpuinfo on my home computer mean? What is a f00f, and what happened with the TLB on the early Phenom processors?

    3. Re:Perfection Has a Price by Jason1729 · · Score: 3, Insightful

      People make mistakes. Software needs to ship, preferably yesterday.

      This attitude is the number one problem with software development. When all you care about is getting it out the door, you send garbage out the door.

      Software today is so damn buggy. I spend hours a week just doing the work of getting my computer to work. And even then it has random slowdowns and crashes.

      I'm old enough to remember when it wasn't like that. You'd run your program and it was ready in a second, you'd exit and it left no trace. Crashes were virtually unheard of. We have people where I work who only do data entry, and they still use wordperfect 4.2 on 386 hardware. I've seen their workflow and how fast it works for them and I can see if they "modernized" it would cripple their productivity.

      And for the money at stake, what's so wrong with hiring a few Ph.D's to analyze code. Amortized over a few million copies, a few 6-digit salaries aren't so bad. And the losses the software shops suffer in bad-will when their products fail costs them more.

    4. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      It's already possible to "patch" hardware. everything from updating microcode to work around hardware faults (done in processors all the time), to full blown programmable hardware (FPGAs).

    5. Re:Perfection Has a Price by bb5ch39t · · Score: 5, Interesting

      I'm an old timer, still working on IBM zSeries mainframes, mainly. We just got a new system, which runs on a combination of Linux and Windows servers, to replace an application which used to run on the mainframe. Nobody likes it. We are apparently a beta test site (though we were told it was production ready). It has a web administration interface. For some reason, on some users, the only PC which can update those users is my Linux PC running Firefox. Nobody can say why. Until early last week, it would take a person a full 5 minutes to login to the product. They made some change to the software and now it takes about 10 seconds. this is production quality? No, I won't say the product. Sorry. Against policy.

    6. Re:Perfection Has a Price by sjames · · Score: 1

      And even with all the extra costs and care, errors manage to slip in all the time (errata). Usually there is a workaround, but occasionally it results in a costly recall/replacement. There are a lot less of them compared to software, but they certainly happen. Much more so in the area of device firmware and microcode.

      Computer hardware and software both are at the edges of what we know how to do and it shows.

    7. Re:Perfection Has a Price by internerdj · · Score: 1

      And the losses the software shops suffer in bad-will when their products fail costs them more.
      If everyone is releasing incomplete software there is no cost for bad-will. Worse than that, if there is no cost for bad-will management escalates the problem by compressing the next project's timetable even further.

    8. Re:Perfection Has a Price by Schuthrax · · Score: 4, Insightful

      You'd run your program and it was ready in a second, you'd exit and it left no trace. Crashes were virtually unheard of.

      And all without managed memory, automatic garbage collection, etc., imagine that! Seriously, I see so many devs (and M$, who has a product to sell) insisting that all that junk is what will save us. What they're doing is attempting to create a Fisher Price dev environment where you don't have to think anymore because they've done it all for you. What's going to happen to this world when GenC# programmers replace the old guard and they don't have the least clue about what is going on inside the computer that makes the magic happen?

    9. Re:Perfection Has a Price by networkBoy · · Score: 5, Informative

      they cost a shit ton of money is what happened.

      A project I was on in 2000ish went as follows:
      Steppings A0, A1, A2, and A3 were halted in-fab because someone found a critical bug in simulations.
      A4-A7 did not work.
      B0-B4 did not work B6 did not work
      C0-C4 did not work
      B5, B7, C5 sorta worked.
      The company folded.
      That's what a software mentality working on hardware will get you.

      Steppings in CPUs are a little different. Often an earlier stepping was functional enough to start the design cycle for Dell HP, et.al. but not ideal. The later steppings start by fixing the deficiencies, then beyond that are likely cost cutting.
      -nB

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    10. Re:Perfection Has a Price by Enter+the+Shoggoth · · Score: 4, Informative

      The most common errors: SQL injection, command injection, cleartext transmission of Sensitive Information, etc.

      People make mistakes. Software needs to ship, preferably yesterday.

      How much would it cost to have perfect software? I happen to have worked in an industry that requires perfect coding. So I can imagine what it would look like if Microsoft tried it.

      The debugger would cost half a million dollar per seat (gdb is free). There would be an entire industry dedicated to analyzing your source code and doing all kinds of proofs, coverage, what-if analysis and other stuff that require Ph.Ds to understand the results.

      The industry I'm referring to is the chip industry. Hardware designers code pretty much like software developers (except the languages they use are massively parallel, but apart from that, they use the same basic constructs). Hardware companies can't afford a single mistake because once the chip goes to fab, that's it. No patches like software, no version 1.0.1.

      It's just not practical. Let the NSA order special versions of Office that cost 10 times the price and ship three years after the consumer version.

      But for me, "good enough" is indeed good enough.

      -- FairSoftware.net -- work where geeks are their own boss

      I worked within the same space about 10 years ago - I was a sysadmin for a group of asic design jockies as well as the firmware and device driver guys and I'm gonna call you on this...

      The hardware designers were under the same sorts of pressures, if not more so, than the software guys and I saw many bugs that would end up in the shipping silicon. The general attitude was always "oh! a bug: well the software guys will just have to work around it."

      And as for "no patching", well that's also BS, you can patch silicon, it's just rather messy having to have the factory do it post-fab by cutting traces on die.

      So much for perfection!

      --
      Andy Warhol got it right / Everybody gets the limelight
      Andy Warhol got it wrong / Fifteen minutes is too long.
    11. Re:Perfection Has a Price by Anonymous Coward · · Score: 4, Interesting

      The same is true in a way of software development.

      Back when I was in high school, I could write a program (on punch cards) and put them in the tray to be submitted. Every week the intra-school courier came around and picked up the tray, returning the tray and output from the previous week. When every typo adds 2 weeks to your development time, you check your code *very* carefully, and examine every error message or warning that comes back from the compiler, to try to fix as many errors as possible in each submission.

      With interactive compilers/interpretors, it is not worth spending that much time on verifying the mechanical coding - just fix the first obvious problem and re-submit because it is faster to let the compiler (1) refuse to complain about the parts you managed to type correctly, and (2) remove all of the messages that were cascaded issues from the mistake you just fixed, than it is to waste your time scanning for typos, or reading the subsequent error message in case there are some that are not cascades.

    12. Re:Perfection Has a Price by erroneus · · Score: 1, Insightful

      I have to concur with the other "old timers." I am 40 years old and have been in this world since I was around 10 or so. It has been a rather long time since I did any serious programming, but I find myself hacking and tweaking from time to time and I recall vividly the type of thinking I had to engage in to write software that worked. VALIDATE INPUT. VALIDATE INPUT. VALIDATE INPUT. There is little more to writing good code than that. Actually, there is plenty more, but where security is concerned, that should be task #1. The move to object oriented code should not have changed this practice. "In Theory" validating input should now be handled by the object but it isn't always the case and good programmers should know better than to trust "black boxes" to do what they are supposed to do. So the other side is "VALIDATE OUTPUT" as well.

      I find this remarkable disregard for fundamentals a bit unsettling... it is as unsettling as doctors who prescribe drugs without first doing a diagnosis.

    13. Re:Perfection Has a Price by mcgrew · · Score: 1

      IMO the most common error is in design. They don't design for use, they design for "cool", trying to get us to say "wow" rathar than simply creating easy to use tools. They cram everything but the kitchen sink in there, and it makes for lousy tools. Software designers ashould ask themselves why you need a screwdriver AND a hammer rather than a screwhammer.

      mechanical tools have become easier to use; we have backhos where once men with spades dug. Manual tools gave way to power tools, which gave way to cordless electric tools. Unfortunatley, though toolmakers for the construction industry study design, toolmakers for the digital worker are woefully ignorant of the very purposes their tools are used for.

      A swiss army knife will open a bottle of wine or spread butter, but a corkscrew and butter knife work better. With software we only have Swiss army knives.

    14. Re:Perfection Has a Price by KovaaK · · Score: 1

      What's going to happen to this world when GenC# programmers replace the old guard and they don't have the least clue about what is going on inside the computer that makes the magic happen?

      It depends on where the programmer is educated. At my school, I had plenty of CS majors in my classes where I learned (in much depth) about assembly, compilers, general computer architecture... Note: my degree is in Computer Engineering, not Computer Science. I don't know if the CS majors were required to take the classes that I saw a handful of them in, but they very likely were for most of the important ones.

    15. Re:Perfection Has a Price by 0100010001010011 · · Score: 1

      If you really want to see what's out there (and running your banks, hospitals, etc) check out The Daily WTF. There's a whole section dedicated to WTF code.

    16. Re:Perfection Has a Price by clone53421 · · Score: 1

      I am 40 years old and have been in this world since I was around 10 or so. It has been a rather long time since I did any serious programming, but I find myself hacking and tweaking from time to time and I recall vividly the type of thinking I had to engage in to write software that worked. VALIDATE INPUT. VALIDATE INPUT. VALIDATE INPUT.

      Good memories. I remember one of the first BASIC programs I wrote; it asked you to enter a number. One of the first things I did to the program was "break" it by entering a non-number, which caused INPUT to crash. Subsequently I looked up the way to treat the input as a string, convert it to a number, and have the program complain without crashing if it couldn't make a number from what the user entered.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    17. Re:Perfection Has a Price by joelmax · · Score: 1

      I know the feeling. Up until a couple of months ago I used to work in the IT dept for one of the Hospitality Industry Giants as senior support for their "latest and greatest" application yet. Well, I was one of the original trainers for it, when it came out and we did our beta rollout, the app shouldn't have even been considered alpha ready yet. It was garbage, the app was/is slow, bloated and buggy. I supported the application for 2 years live before the issues with the app got me to a point where I could no longer in good conscience support the application (Financial issues with the app were really really bad and core functionality was still nowheres where it should have been at this point). It is/was that bad and it seems to be the growing trend to put out alpha quality products as if they are production ready, simply because it can be patched later. Its a horrible mentality to have, but when the almighty $$$ is the thing doing the talking, everything else can sit on the back burner.

    18. Re:Perfection Has a Price by samkass · · Score: 3, Insightful

      Even in C# and Java there are experts who do know what's going on. They will replace the old guard. The rest will be people for whom contributing to software development was completely impossible before, but can now do the basics (ie. designers, information visualization experts, etc).

      And of the top programming errors, many of them still apply to Java and C#. But some don't, and I see that as a positive step. I do Java in my day job, and iPhone development on the side. And while nothing in the industry beats Interface Builder, Objective-C is pretty horrible to develop in when you're used to a modern language and IDE...

      --
      E pluribus unum
    19. Re:Perfection Has a Price by Anonymous Coward · · Score: 5, Funny

      I am 40 years old and have been in this world since I was around 10 or so

      You're 30 dude. Deal with it.

    20. Re:Perfection Has a Price by curunir · · Score: 3, Interesting

      But for me, "good enough" is indeed good enough.

      It might be of interest to you that Voltaire came up with your conclusion 245 years ago, and a bit more eloquently as well:

      The perfect is the enemy of the good.

      --
      "Don't blame me, I voted for Kodos!"
    21. Re:Perfection Has a Price by jandrese · · Score: 3, Insightful

      It doesn't help that most programming languages are lousy at validating input. C is especially bad as it has poor pattern matching capabilities by default and no dynamically sized structures. Worse, it offers absolutely no heap checking capabilities meaning at the end of the day your function is forced to trust the input instead of verifying it for itself. You can use fgets() with a buffer size listed, but if that passed buffer size is wrong for whatever reason there is no way in the language for fgets() or anything else to safely handle or even detect it.

      That said, it's not impossible to write safe C code. In fact it's not even all that difficult, but it does mean that even small otherwise unrelated errors in your code can be surprising security problems.

      --

      I read the internet for the articles.
    22. Re:Perfection Has a Price by Tom · · Score: 1

      How much would it cost to have perfect software?

      A lot less than most people assume.

      Google for "zero defect software development" for one approach.

      "It is too expensive" is almost always an excuse. There's a simple test: Ask "How much, exactly?"
      None of the people I have ever met who told me that good, bug-free software would be too expensive could answer that question. Not one. When pressed further, most of them even have to admit they can't even begin to make a good estimate, they just "feel" (sometimes, they call it "know") that it "ought to be" more expensive.

      Maybe.
      Maybe 10 cents. Maybe $10, maybe $10 mio.

      If you don't know, how can you make the decision between writing good code from the beginning and having to fix lots of bugs afterwards (which also is not exactly cheap) ?

      Answer is that you don't. The decision makers assume and have hunches. Also, they have release dates.

      Oh yes, the "fact" that developing bug-free software takes a lot more time is also a myth. Same test applies.

      --
      Assorted stuff I do sometimes: Lemuria.org
    23. Re:Perfection Has a Price by jandrese · · Score: 4, Informative

      Anybody who has worked on driver code can tell you that most hardware vendors ship an errata with their chip. Some hardware has rather significant erratas, like the SiI 3112 SATA controller that got installed in pretty much every SATA compatible motherboard back before SATA support was properly integrated into Southbridges. The CMD 640 is another example of a chip with an extensive hardware errata.

      --

      I read the internet for the articles.
    24. Re:Perfection Has a Price by LWATCDR · · Score: 1

      It should be impossible to have any damage to a file or user input crash a system.
      Part of the problem came from the early day of micros where performance was everything.
      It was actually common to block write data structures right to the disk and read them right form the disk.
      Of course any damage to the structure would crash the system.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    25. Re:Perfection Has a Price by Surt · · Score: 1

      I thought you were talking about WAAAAY older software until you talked about wordperfect 4.2 on 386 hardware. That stuff was buggy as hell, and when it crashed, it took down your whole computer with it!

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    26. Re:Perfection Has a Price by jellomizer · · Score: 5, Informative

      I'm old enough to remember when it wasn't like that. You'd run your program and it was ready in a second, you'd exit and it left no trace. Crashes were virtually unheard of. We have people where I work who only do data entry, and they still use wordperfect 4.2 on 386 hardware. I've seen their workflow and how fast it works for them and I can see if they "modernized" it would cripple their productivity.

      You remember wrong.
      The old stuff was always failing and had a bunch of problems...
      You are probably thinking about your old DOS PC. If the floppy disk wasn't corrupted thinks in general worked and it worked well. Why because the programmer could fairly easily test all the cases, and allow security bugs, as a buffer overflow can be prevented as it would take to long for the guy to physically type in the data... And it was one application with essentially the full PC at its whim.
      If you tried to do computing with Multi-tasking such as apps like Desqview your stability was greatly reduced. It would make you want to wish for Windows 95. Or remember Windows 3.1 stabilty...

      Downloading data via the Modem was a hit or miss activity. I remember getting disconnected trying to download Slackware as there was a combination for the zmodem that passed the hangup code to the modem, forcing me to regzip the file over again to get it.

      Just because you were doing simple things back then it wasn't because they were better.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    27. Re:Perfection Has a Price by billcopc · · Score: 1

      Firmware is just regular software. It is stored in non-volatile memory (usually flash), and is loaded and executed by the processor like any other software.

      The main reason why your DVD never required updates is because Blu-Ray is a trainwreck of a spec that is still in heavy flux, while DVD was finalized and stable by the time players started shipping.

      --
      -Billco, Fnarg.com
    28. Re:Perfection Has a Price by ColdWetDog · · Score: 2, Interesting

      Oh it's obviously Notes. Nothing else needs a zSeries to run and 5 minutes to login.

      Gotcha.

      --
      Faster! Faster! Faster would be better!
    29. Re:Perfection Has a Price by Creepy · · Score: 1

      Many of these are avoidable with some knowledge

      SQL injection - the most common way I've seen is to try to malform HTML from, say, a form to include SQL commands that weren't intended. I'm not as good at SQL syntax as I am with command syntax, so I'll skip an example.

      Ditto for command injection. For instance, if you find something doing a system() call in UNIX, you could malform the command to add, say, a ; and add in some malicious code; for instance, it calls system("run_program string_of_data"); you malign the data to system("run_program string_of_data; xterm -sb -sl 10000 -display:my_host_and_domain:0.0"); to send yourself an xterm (possibly as root).

      cleartext transmission - this is all over in web browsers. For instance, something like this ftp: //www.ftp.com&user=myuser&password=password (space added intentionally to avoid slashcode parsing)
      is sent as cleartext and the user and password can be packet sniffed by a man in the middle. I've also seen SVN and mercurial archives set up with http instead of https with this vulnerability (but usually with public OSS projects, so less of an issue).

      Cross site scripting takes a bit more work - it's again, essentially a "man in the middle" attack.

      Race Condition - should be taught in schools. It was when I was in school. This should be caught in the design phase.

      Chatty errors: should only be used in a secure environment.

      Bounds checking is a programmer error, and definitely something the programmer should be catching.

      Code Injection is similar to command injection and often exploited in the same way.

      Most of the resource control issues are caused by lazy parsing.

      Porous Defenses - I've seen this way too often, especially when installing Content Management Systems, which in my opinion should be installed as a user like webuser:webgroup and have access permissions 400 for almost everything (not 755), though some directories may need 700 [say temp and user image directories]). I often write static pages as a different non-admin user without write permission so the CMS can't alter them if hacked (which is a bit on the paranoid side, but I've seen too many PHP exploits).

      Insufficiently random values - this is difficult because most random number generators are not truly random. Need some varying seed value.

      Reverse engineering a client to exploit a server - this is poor client side coding - servers should not treat clients as untrusted and validate all data.

    30. Re:Perfection Has a Price by billcopc · · Score: 2, Insightful

      What they're doing is attempting to create a Fisher Price dev environment where you don't have to think anymore because they've done it all for you.

      They don't have much of a choice, since about (rand[100]) 97% of all computer schools are absolute garbage, we end up with a bunch of Fisher Price developers who can type out Java bullshit at a steady 120wpm, but the resultant app makes zero sense as they fall into the trap of "checklist development". The app does "this, and that, and that too" but does them all sloppily and unreliably. Then we have managers who review the checklist line by line then sign off because it "passes spec". They completely miss the true purpose of the app in the first place: to fulfill a human need.

      If an app is unusable because of bugs or a nonsensical interface, then I don't care what the checklist says, it is a failure!

      --
      -Billco, Fnarg.com
    31. Re:Perfection Has a Price by Amazing+Quantum+Man · · Score: 1

      Yep. A buddy of mine wrote a CGI script for internal use, and another guy broke it immediately by entering greek characters (script was written for ASCII only).

      My rule of thumb is... Anything -- ANYTHING -- from the outside world, be it file, socket, or console input; is not to be trusted, and it must be validated.

      --
      Fascism starts when the efficiency of the government becomes more important than the rights of the people.
    32. Re:Perfection Has a Price by warrigal · · Score: 1

      Can't patch ROMs? Rubbish! We installed patches on ROM-based systems. Each code module checked an expansion address, if anything was there that code was used instead. This is what happens in professional systems.

    33. Re:Perfection Has a Price by truthsearch · · Score: 2, Interesting

      This is especially true of web development. To patch a web application you don't even need to transmit a patch to clients; just update the web server. It's so easy to patch that many sites let the public use the code before any testing is done at all.

      I spent my first 10 years programming clients and servers for the financial industry. Now, as a web developer, I'm shocked at how hard it is to find programmers who strictly follow best practices.

    34. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      Cannot patch hardware: Take a look at FPGAs and CPLDs

    35. Re:Perfection Has a Price by hesaigo999ca · · Score: 1

      Well, let's test your memory then....I remember my Dad bringing in the first laptop (briefcase model) from work to do some lotus notes at home, and work out a full corporate payroll scheme for the warehouse. He worked on that thing for week ends at a time, all in the name of keeping track of hours and know what they owed the people that worked for them.

      Now tell me, when I can get my 12 year old with his psp to open up OpenOffice,
      and create all the same stuff, adding hours, creating formuleas, ...
      We tend to bitch about stuff as if it was the worst, but as long as I can get my stuff done, and keeping a level head about what I used to be able to do , compared to what I can now do, I tend to still be very happy, with windows xp pro, or red hat, on my p3 laptop...

      And anyone (at home) that needs more then this is lying to you (unless they work from home using a vpn).

    36. Re:Perfection Has a Price by Anonymous Coward · · Score: 1, Interesting

      My first real "CS" course in college used cards for assembly programming (well, using a pseudo assembly language) for this very reason - it was supposed to be expensive/time consuming to compile/load/run so students were motivated to check their work before initiating that process. It was actually quite expensive to maintain because the card punches took a lot of physical space and were expensive to maintain compared to VT100s which were all over the place in large terminal rooms and smaller satellite terminal rooms.

      It was a good idea -- but somewhere along the line the process had been "optimized" to save operator resources which sort of weakened the concept. So, instead of pushing the card deck through the window (along with a good word or a little gift to the surly operator reduce the risk of the deck getting dropped on the floor "accidentally"), and coming back three hours later to a heart sinking single page output (many of you old folks out there know what I'm talking about!), we just tossed the deck into the high speed self service card reader, listened for the self service line printer six feet away to fire up, and pulled our listing off. The cost saving optimization just made the whole process painful rather than instructive.

      Not to worry though, I was later "fortunate" enough to experience the real (or closer to it) world of batch processing when I worked one summer (in the very late 70's) for a big aerospace company. There, I got to experience the RJE station operator from central casting. Fortunately, the first hour on the job I was advised to be especially friendly to Joe the RJE Station Operator - advice I initially ignored but within a week began to follow after learning the hard way to listen more seriously to those with more experience.

    37. Re:Perfection Has a Price by Junior+J.+Junior+III · · Score: 3, Insightful

      The problem is that software doesn't even ship as "good enough" anymore. It's more like "it compiles, ship it".

      I don't know, if you ask me, software is about a million times better than it used to be. I've never been a user of a mainframe system, and I understand they were coded to be a lot more reliable than desktop class microcomputers. But having started using computers in the early 80's as a small child, and seeing where we are now, there's just no comparison.

      It used to be, computers were slow, crashed all the time, on the slightest problem, and encountered problems very frequently. Today, we have many of these same problems, but much less frequently and much less severe. An application crash no longer brings down the entire system. When it does crash, usually there is no data loss, and the application is able to recover most if not all of your recent progress, even if you didn't save. Crashes happen far less frequently, and the systems run faster than they used to, even with a great many more features and all the bloat we typically complain about.

      --
      You see? You see? Your stupid minds! Stupid! Stupid!
    38. Re:Perfection Has a Price by The+MAZZTer · · Score: 1

      I just tried Windows 3.11 in a VM for some nostalgia recently. Dear God is it unstable. If you even install the wrong combination of apps you'll get regular "white boxes of doom".

    39. Re:Perfection Has a Price by goltzc · · Score: 1

      While I agree with you that there is a lot of crappy developers out there. I don't think you can completely blame the schools. The schools teach you the theory but don't give you the real world practice needed to be a good programmer.

      When I came out of school I understood the theory but was a pretty lousy developer. I worked in a small development team that rightfully treated me as a junior programmer. All of my code was reviewed by a senior developer for a period of time until I gained their trust and I could work independently.

      Even to this day we still have open conversations about the code we are writing and discuss architecture and patterns that would best fit the problem.

      I think that may be what is missing from some organizations. Every development crew needs to have senior folks to show the junior people the ropes and talk them through the pitfalls that all young programmers fall into.

      --
      Our bugs are smarter than your test scripts.
    40. Re:Perfection Has a Price by chaim79 · · Score: 3, Informative

      I work at a company that tests aircraft instruments to FAA regs (DO-178b) and I know exactly what you are talking about, but for different reasons. What we are working on basically amounts to full computers (one project even used the PowerPC G5 processor, Alphanumeric keypad, and 3-color LCD Screen), but because of where they are failures and bugs are not an option (for software that qualifies as DO-178b Level A, if it fails there is a very high probability that people will die).

      The testing that we do for hardware and software is way beyond any other industry I've heard of (before reading your post) and took me a bit to get used to.

      For those of you interested, we do Requirements base testing, all the functionality of a product is covered by requirements detailing exactly what it will and will not do. Once the development is underway we are brought in as testers and we write and execute tests that cover all the possibilities for each requirement. An example is a requirement that states: "Function A will accept a value between 5 and 20". This simple statement results in a ton of testing:

      Value In range and Value out-of-range is tested:

      • Test #1: value = 11
      • Test #2: value = 45

      Boundry conditions are tested:

      • Test #3: value = 4
      • Test #4: value = 5
      • Test #5: value = 6
      • Test #6: value = 19
      • Test #7: value = 20
      • Test #8: value = 21

      Limits of Value Type is tested (assuming unsigned short):

      • Test #9: value = 0
      • Test #10: value = 255

      So 10 tests from a simple statement. Once all tests are written we do "Structural Coverage" tests, we instrument the code and run all the tests we've written and make sure that every line of code is covered in a test.

      Only once all that passes is that instrument considered ready to go, that takes a LOT of man-hours to do, even in situations where we can script the running of the tests (some situations are 'black box' testing where we just get the instrument itself and have to manually push the buttons to run any tests... takes a Long time!)

      This level of testing is making me take a second look at some of the software I've written before starting this job and wincing... spending a few quick min playing around with a few different values really doesn't cut it for testing anymore in my eyes...

      --
      DEMETRIUS: Villain, what hast thou done?
      AARON: Villain, I have done thy mother.
      Shakespeare invents 'your mom'
    41. Re:Perfection Has a Price by CaptainDefragged · · Score: 1

      I think some of the mods must be on crack. How the hell is this guy's post a troll?

      --
      Don't tailgate - the end is near!
    42. Re:Perfection Has a Price by TheLink · · Score: 2, Insightful

      Is there really a thing as "perfect software"?

      Often a bug is a matter of opinion/taste, and opinions/tastes change.

      For instance some might say a program should stop if it discovers it suddenly can't log anymore. Others might say it should continue running and ignore the logging problem. And others might say it should continue running and try to log elsewhere. What would a perfect program do? I really don't know.

      And the other reason why you don't get perfect software:

      If shopping malls cost the same as now to design, but cost the equivalent of "make mall" and "coffee break" to build, people would be shopping in "buggy" shopping malls as soon as the blueprint is good enough to "compile".

      Because the bosses won't bother waiting for stuff to be "perfect". They'd want to start collecting rent/$$$ ASAP.

      And most shoppers and shopkeepers won't care either - as long as nobody gets killed or maimed, just stick a few warning signs over stuff that isn't working properly yet.

      --
    43. Re:Perfection Has a Price by stewbacca · · Score: 1

      I think your post says everything about why we get second-rate software. What other industry is "good enough" considered the gold standard?

      While I totally agree that you can't make "perfect" software, the balance is skewed towards "good enough" when it really ISN'T good enough for the end-user. If I had a quarter for every time one of my developers tells me "that's a code rewrite" or "functions as designed", I'd be rich.

    44. Re:Perfection Has a Price by aztracker1 · · Score: 2, Interesting

      I feel your pain. I've come across about 3 major instances where race conditions were a problem under load in a heavy traffic website. I'm now on my third web application refactoring. The first, I cut minutes out of a reporting process, and changed the way data was pulled in from various dbms resources. The second I did some changes to the way data settings were looked up and persisted. At first glance it wasn't so bad, because each setting call was taking only 0.11 seconds. The problem was there were about 50 calls on each page request.. that added up to a major page that took about 8 seconds to load, and was spiking the cpu's on the farm to 90% under our heaviest load. After the changes, the page load is well under 2 seconds, and cpu load under heaviest user load is under 32%.

      I don't think a lot of people understand where resources get used, and how they get used, nearly as much as they should. Let alone security risks. I see in enterprise web applications people will use static resources in their classes not understanding how to use them safely. Often even *if* they should use them.

      --
      Michael J. Ryan - tracker1.info
    45. Re:Perfection Has a Price by Chabil+Ha' · · Score: 2, Insightful

      The main reason why your DVD never required updates is because Blu-Ray is a trainwreck of a spec that is still in heavy flux, while DVD was finalized and stable by the time players started shipping.

      It didn't require updates because in 1995 only 0.4% of the world's population had access to the Internet, and the spec didn't allow for such things as 'upgrades'. It hadn't even entered their minds that people would actively crack the thing. Fast forward ten years later (digitally mind you, we had passed up analog tapes!) and one of the requirements was to be able to update the code used to decrypt the disc in order to combat piracy. The fact that many updates to the specification have already been made is only an ancillary to this motivation.

      --
      We're all hypocrites. We all have hidden parts, it's the contrast between them that make us more a hypocrite than others
    46. Re:Perfection Has a Price by BoberFett · · Score: 1

      Software is bad because it's not designed by engineers, or even developers. It's designed by MBAs and marketing departments with no technical experience.

    47. Re:Perfection Has a Price by scrib · · Score: 1

      What's going to happen to this world when GenC# programmers replace the old guard and they don't have the least clue about what is going on inside the computer that makes the magic happen?

      What happens is specialization. Not everyone writes device drivers. Not everyone can design an appealing UI, either.

      I work in a small shop where I have to know everything from assembly for microcontrollers, C for drivers, C# for UI, SQL for databases, and some ASP and PHP also come in handy. Larger shops allow (or force) specialization and can pigeon-hole developers. I'm glad that I don't have to write UI code in assembly! I'm also glad I don't have to write device drivers in C#.

      Computer engineers always have, and always will, learn how to do those things they need to get the job done.

      --
      Help! Help! I'm being repressed!
    48. Re:Perfection Has a Price by Bromskloss · · Score: 1

      No, I won't say the product. Sorry. Against policy.

      I'm curious, who don't want you to tell us what software you are using? Your company? The one that made the software? And why? Mabye it's obvious to everyone else, but it would be enlightening to me to hear it. Thanks.

      --
      Swedish plasma phys. PhD student; MSc EE; knows maths, programming, electronics; finance interest; seeks opportunities
    49. Re:Perfection Has a Price by Anonymous Coward · · Score: 1, Funny

      The problem is that software doesn't even ship as "good enough" anymore. It's more like "it compiles, ship it".

      "Ship it! Ship it and let our users flee like the dogs that they are!"

      -- Klingon Programmers' Guide

    50. Re:Perfection Has a Price by ClosedSource · · Score: 1

      I believe that creating my own rocket system to land on the moon is too expensive for me. I don't have any idea what it would actually cost, however.

      Using your reasoning, that means I can afford it.

      Beyond that, you implicitly assume that the value of development time and money is time-invariant, but in general it's not.

      For example, if you're a startup you may run out of money before you can finish your bug-free original product.

    51. Re:Perfection Has a Price by nschubach · · Score: 1

      What's going to happen to this world when GenC# programmers replace the old guard and they don't have the least clue about what is going on inside the computer that makes the magic happen?

      It will be rewritten in C# because it's easier for the developer, not because it was needed. Programming is moving to the planned obsolescence route. Code is written once and disposed of.

      "Just make it fast, we'll probably replace it in a few years anyway."

      As far as systems programming, it's Microsoft's dream. They control the underlying system and everyone plays the garbage in garbage out cycle in their environment. It's good for their business because developers will look to MS for the next big thing and have to buy their next system with MS Software on it in order to work right.

      *I use Microsoft because they are currently the big dog profiting, but it could be IBM, Adobe, anyone...

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    52. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      The most common errors: SQL injection, command injection, cleartext transmission of Sensitive Information, etc.

      Just to be a nit-picker, SQL and command injection are not errors, but exploits made possible by errors -- very often poor input buffer handling leading to buffer overflows.

    53. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      I hear you, but I see still the former point, people want it yesterday. Take a look at the linux world where everybody massively tries out new beta's and reviews alpha's. There is craving behind that, why not just wait a year or two until, say, kde 4.4? In a more commercial market such cravings are money, a lot! Not to mention the competition...

      In hardware worlds... hm.. Do I have a Nvidia 8400? Yes, does this serie easily gets overheated and break? Yes. What's the solution? 'well... they break, but not all. So lets keep on selling them with a bit of a hazy story and extend the guarantee a bit until the next series... maybe we fix something via drivers or the bios too

    54. Re:Perfection Has a Price by Darinbob · · Score: 1

      "Ship by Friday" is a key problem. Software has gotten stuck in a short term mentality, without long term planning. The bad code isn't the code with all the errors, instead it is the code that can't easily be changed or maintained in the future. Making software that adapts well to unknown future requirements is hard.

      And many programmers don't learn how to make adaptable software because it is rarely emphasized. Instead they learn that getting the features in fast is the most important thing. They also learn that planning for the future is irrelevant, since everyone switches jobs every 3 years, whether the company goes under or not.

    55. Re:Perfection Has a Price by Have+Brain+Will+Rent · · Score: 1

      Partly it is a result of the shortened lifespan of a piece of software. When I started out most software would be used for years so whoever was footing the bill could see the point of spending some significant effort in developing it. Now things don't last as long so it's not seen as being worth investing a lot of development effort in a project. And that's true of so many other things besides software, for example, appliances.

      Another factor is that powerful IDE's and other development tools enable developers to write code that they do not completely understand. This will date me but in my very first course we were given an assignment that was due in a week. We were only able to compile and execute code once per day and not at all on weekends - so you got 4 tries to get it right. That really taught desk checking and understanding your code. After that course the next thing I did was volunteer to work for free in this lab because they had a PDP-8 I could program. The development cycle on that went something like this (all through a 10 CPS ASR33 Teletype with paper tape reader/punch):

      1. turn on computer
      2. toggle in basic boot loader through front panel switches
      3. use basic boot loader to load real loader
      4. load text editor program
      5. type in program source or read source tape and make edits
      6. punch source program onto paper tape
      7. load in 1st pass of assembler
      8. have assembler make first pass over source tape and create tables in memory
      9. load in 2nd pass of assembler
      10. have assembler make second pass over source tape
      11. assembler punches out binary tape
      12. load in binary tape of your program
      13. start program
      14. try and debug program through console switches and single stepping cpu
      15. if bug found try to patch executable live in memory through front console and continue or restart program
      16. if patching not possible but machine not crashed then goto step 4
      17. else turn power off and go to step 1.

      That was maybe three hours per iteration for a modest assembler source program. It wasn't a whole lot different if you were using the available Fortran, Algol etc. compilers since they generally had 2 or 3 passes as well and sometimes output assembler rather than executable code, which would then mean going to step 7 above. Or they might output linkable binary which would mean loading a 2 pass linker, binary library tapes etc. etc.

      The point is that there was a lot of time between steps and you generally used it to understand your program better, which led to programs with few if any bugs.

      Of course things are different today but I still retain a lot of that "know what you are doing and why before you compile" attitude.

      Sometimes my customers complain because such development does result in a larger bill. Eventually they find they are happy though because their maintenance costs are zero or close to it. I went through this recently with one customer - thought I wouldn't hear from them again because they had been very unhappy with the bill. A good year or so later they came back, quite happy because they had discovered all the new abilities they had with the software, and asking me to look at it because they thought they might have discovered the first bug. They hadn't but the interesting point is that they had never before experienced running any significantly complex piece of software and not finding bugs/problems on a regular basis.

      The direct and consequential costs of software bugs can be staggering. Even so it is very difficult to really convince someone that reducing maintenance is a huge cost benefit making it well worth spending more up front on development costs. They will nod their heads and then want to go the way with the cheapest initial outlay.

      And more than three decades ago we had time-sharing systems, interactive systems etc. that worked reliably. They ran on main-frames that didn't crash - although if you got all the disk drives seek

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    56. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      I have to laugh at you young idiots who think, when we talk about "old times," that we are referring to DOS, Windows 3, and 386 processors! No, that's not old.

    57. Re:Perfection Has a Price by Have+Brain+Will+Rent · · Score: 1

      I already replied to this but one other point is this... there are the people who bear the cost of developing software and there are the people who bear the cost of using the software. The greater the separation between the latter group and the former group the more likely that the software will have problems.

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    58. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      You'd run your program and it was ready in a second, you'd exit and it left no trace. Crashes were virtually unheard of. We have people where I work who only do data entry, and they still use wordperfect 4.2 on 386 hardware.

      I do not believe you have these people with that hardware. Also, on what are they running it? The wonderfull windows '95? '98?

      Come on! Some things got worse or could be better, but many got much better. There are many stable lightweight wordprocessors in the world today. There is a lot of good software around in general, good being: fit for purpose and more.

    59. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      If the floppy disk wasn't corrupted[...]

      What does "not corrupted" mean? When I was a kid I only had a high density drive.

    60. Re:Perfection Has a Price by Cramer · · Score: 1

      there was a combination for the zmodem that passed the hangup code to the modem

      I've seen this myth repeated for, well, decades. The only way to get a modem immediately into command mode is by dropping DTR -- in some configurations, that'll hangup as well. The in-band method of "+++" requires a specific delay between each "+" and after the entire string -- that's why your chat scripts always had "+\p+\p+\p OK" in there. X/Y/Zmodem does not pause at all between characters, so it is 100% IMPOSSIBLE to get a modem to enter command mode and hangup simply by transfering a file. (or reading an email, or sitting in an IRC channel.)

      (Not have an 8-bit clean path -- e.g. dialed into a terminal server -- and the stress of continuous character streams are far more likely sources of issues. If the transfer aborts and drops you back to the command line, 99% of the time the remaining stream of junk would end up logging you out.)

    61. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      "it compiles, ship it"

      You optimistically assume a compilation step is needed and has to be performed on vendor's machines.
      If this is not the case, a lot of shops are more like : "if it is in the repository, ship it at any random date, disregarding whatever has been entered in the BTS".

      And yet i'm probably too confident in assuming most shops use VCS and BTS.

    62. Re:Perfection Has a Price by umghhh · · Score: 1

      I think you do not understand. The way it works is this:
      Hardly anybody understands what software quality and software engineering really mean so they cut corners and send work to whoever says can do this in half the time and for half the price. To profit they have to halve the cost and the time to market again. Obviously all this is possible only the product does not work according to spec so what do then - try and rework, try and rework etc until it does. Last project I took part in that did such exercise was almost three times over budget and took a year longer to complete (original time frame was 12 months or so).
      And yes our organization has few geniuses that earn well and their task is to fix all - otherwise nothing would be ready. The point there is that some simple rules of engineering needs to be followed to make product working reliably - but nobody is interested in paying for it in advance so we pay for it afterward.
      I do not mind actually being at QA but I worry sometimes especially when my life depends on asshole who coded board computer of my car that told engine to shut down on the highway while I was overtaking a lorry with 120km/h. In the garage they said - the fault code was overwritten - how nice.

    63. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      The easier it is to patch something, the sloppier the original implementation is. You'd see exactly the same with hardware if it wasn't so terribly hard (read: impossible) to rewire that damn printed circuit. I dread the day when they find some way to actually do it. Then the same will apply to hardware that you have today with some OSs: It's not done until it reads "SP1" on the cover.

      Hardware upgrading is AFAIK doable right now with FPGA technology, isn't it?

    64. Re:Perfection Has a Price by mwvdlee · · Score: 1

      AFAIK, Way back in the days when software became supplied on large reels of tape, patching was done regularly. Not quite as regular as these days, but you could still easily get multiple updates a year.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    65. Re:Perfection Has a Price by tsm_sf · · Score: 2, Insightful

      Software is bad because it's not designed by MBAs, or even marketing departments. It's designed by engineers and developers with no practical experience.

      (( I agree with your statement as well, btw ))

      --
      Literalism isn't a form of humor, it's you being irritating.
    66. Re:Perfection Has a Price by againjj · · Score: 1

      The most common errors: SQL injection, command injection, cleartext transmission of Sensitive Information, etc.

      Interesting, for me I read: 10 out of 25 most common errors are using tainted data. (items 20, 89, 79, 78, 642, 73, 426, 94, 494, 665) Perl taint mode anyone?

    67. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      "It is too expensive" is almost always an excuse. There's a simple test: Ask "How much, exactly?"

      I worked for a company who had a huge re-org, chat, company vision introduction, and general pow-wow. The CTO boldy stood in front of everyone and proclaimed, "Quality costs too much. We do not want quality. We want good enough." They are a major retailer. Oddly enough, despite selling some of the world's most profitable widgets, they seem to constantly struggle to remain in the black.

    68. Re:Perfection Has a Price by TaoPhoenix · · Score: 2, Funny

      We might be seriously seeing the Ultimate Slashdot Car Analogy. My library informs me that the auto industry struggled with exactly this 30 years ago. Spurred by the Japanese that time, someone noticed that while the cost profile shifts, it really wasn't all that bad making quiet quality improvements across the line.

      Yes, we have some fun little beta tech fragments in the works, but the big engines of Office and Browsers are pretty solid, and the OS market is going to hit the comparable maturity in another 5ish years.

      With nothing earth shattering available, someone is gonna get 100 OldTimers into a big building for a month and decide to razor down the cruft of existing apps to sell the next iteration on speed improvements.

      --
      My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
    69. Re:Perfection Has a Price by plover · · Score: 2, Insightful

      Yes, on the whole applications have become more stable, while growing an order of magnitude more complex. But TFA is not about stability as much as it is about security -- people leaving inadvertent holes in software that a hacker can exploit. You can have a perfectly functioning program, one that passes every test 100% of the time, but it may still have a SQL injection flaw or fail to validate input.

      --
      John
    70. Re:Perfection Has a Price by gbjbaanb · · Score: 1

      You are probably thinking about your old DOS PC.

      No, I bet he isn't. He'll be thinking of green-on-black data entry terminal software that just worked and was written, carefully, by people who planned what they were doing, often screen by screen.

      As a very good example, look at all the old COBOL programs still running banks and payroll systems. Just why do you think they are *still* running them? Hint: cost of upgrading isn't a problem for the kind of companies that do run these.

      Perhaps the problem is complexity in the system, though I doubt its the requirements made of the system that are at issue, but the solutions that are produced nowadays to fulfil them. ie whereas once you did it in a boring, careful way, today its slapped together with whatever the latest framework is, with all the inefficiency of the language/platform/framework we have nowadays. End result is that despite computers getting vastly more powerful, the overall response and performance of the systems we produce are still pretty much the same as they were 20 years ago. I think the ERP, SOP, payroll and CRM systems of today still do very little over what they used to years ago - except that they're sure prettier and more colourful!

    71. Re:Perfection Has a Price by rah1420 · · Score: 1

      We just got a communication from our corporate overlords specifically prohibiting us from recommending, commenting on or in any other way disclosing what software we are using/have used/will use. A vendor may include our company in a list of clients, but That's It.

      Don't ask me why.

      --
      Mit der Dummheit kämpfen Götter selbst vergebens.
    72. Re:Perfection Has a Price by HeronBlademaster · · Score: 3, Interesting

      At the company I work for, I used to be on one of the software teams (now I'm in charge of IT infrastructure). When I was given a task, I would ask for details, and would receive vague comments that would only suffice for a vague implementation. Whenever I would ask for more details (knowing that the manager had them), my manager would say "just go implement what you can, then we'll change it later for what we need." No amount of begging would get more out of him.

      One particular piece of the software was reimplemented a grand total of five times (twice by me, three times by someone else); all of the information that would have prevented the rewrites was in the manager's possession before the first implementation was written (as he later admitted).

      Granted, the early versions were never released to the public (beyond a few development partners), but you can see how this mentality might cause poor code to end up in the "finished" product.

      I finally transferred to IT because that manager refused to allow me, or anyone else, to clean up poor code as I went about implementing new features. Incidentally, he did put some code cleanup tasks on the to-do list, but he assigned them to a guy who didn't want to do them, despite both me and the manager's boss asking that those tasks be assigned to me.

      Before anyone asks - no, I have no idea why I wanted to clean up old code. Maybe I'm insane. But I figure, if a guy has an itch to clean up old code, and you know it needs to be done, why on earth would you give it to a guy who doesn't want to do it instead of the guy who wants to do it (assuming equal skill sets)?

    73. Re:Perfection Has a Price by HeronBlademaster · · Score: 1

      The schools teach you the theory but don't give you the real world practice needed to be a good programmer.

      Isn't that something they should do?

    74. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      Except the correct amortization isn't over a few million copies, but over the few thousand additional copies that the difference between that kind of analysis and not doing that will sell.

    75. Re:Perfection Has a Price by HeronBlademaster · · Score: 1

      No, he's not saying you can afford it, he's saying that unless you actually run the numbers, you can't claim it's too expensive, because you don't know.

      Being unable to say "it's too expensive" is not the same as being able to say "it's affordable."

      The key is to figure out how much it would cost to write good, effectively bug-free software, and then figure out how much you're willing to spend, and find a compromise somewhere in the middle.

    76. Re:Perfection Has a Price by Bromskloss · · Score: 1

      We just got a communication from our corporate overlords specifically prohibiting us from recommending, commenting on or in any other way disclosing what software we are using/have used/will use. A vendor may include our company in a list of clients, but That's It.

      Don't ask me why.

      Thanks for answering. I get annoyed when directives are handed down without any reason given for why they are sensible. If I know why those in charge want it in a certain way, I'm much more inspired to put my heart into following it. When I am the boss at some place, I have therefore decided, I'll always motivate my decisions and thereby hopefully get employees who trust me and willingly stand up to fight by my side.

      --
      Swedish plasma phys. PhD student; MSc EE; knows maths, programming, electronics; finance interest; seeks opportunities
    77. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      What's behind bad software?

      1. "Git R Dun!". When it becomes more important to shove something out the door ASAP than to think about what's going on and what the side-effects may be. Use of scripting languages for major apps because they make stuff "work" quicker, since no one had to go in and make the compiler happy with all the sloppy data-typing and other stuff. Then they blow up when an untested condition appears while running production.

      2. "Do R Cheap!". When the quality isn't as important as the cost, and you expect smart IDE's and fancy development tools to compensate for cheap labor that doesn't have a clue what's really happening in the software.

      3. "Do it all!". Feature creep. Design-by-committee. Bloat that complicates the system just because one person thought it would be cool.

    78. Re:Perfection Has a Price by ASBands · · Score: 1

      Not to throw down, but do we even have a definition for "perfect" software? Because I could quite easily argue that not only does the definition not exist, but it is impossible to create a consistent definition for all potential users. The field of MP3 players is a good example: The iPod dominates the market for some strange reason, but many people view other MP3 players as "worse." More buttons would break the "perfect simplicity" of the system, but the inability to arbitrarily build and shuffle playlists is quite obnoxious.

      Internet browsers are another interesting domain. My company uses a web-based MIS designed with Internet Explorer 6 in mind. One could blame the system for poor design for reliance on proprietary ActiveX controls, but we're stuck with it. That said, IE6 is the "best" browser can offer to our employees, because Firefox, Opera and Chrome will not function. We're not even touching "perfect" yet.

      But I haven't really address the question of the cost of developing "perfect" software, so let's make some assumptions. Let's view "perfect" from a security standpoint (accessibility, confidentiality and integrity) and use Common Criteria as the metric of software goodness.

      The first EAL of CC are pretty easy to come by, since the basic definition is that the software works are doesn't crash. The next levels require discretionary (optional) protection, followed by mandatory object protection. That's nothing too interesting, as software of any importance should be doing this stuff anyway. Top-tier perfect software development involves formal verification of the software - as in, developing a description and proving that it will always work. More work is involved proving that your software actually matches the mathematical description of your software, which costs money. If you've ever tried to formally verify software, you will quickly realize that it takes AT LEAST the same amount of time to verify the software as it did to initially develop the software. There are shortcuts such as Automated Theorem Proving, but it's an NP-complete problem and you're going to need to pay (at least) a person who understands it.

      So what if we don't want to formally verify our software, but at least check it until it's "good enough." You could hire some hackers to independently test your software, but that costs money. You could internally check it, but that takes time (read: money).

      What we really need is a testing facility that integrates well into and speeds up development, which is pretty much what unit testing is for. I can say a lot of good things about unit testing, but they're certainly far from perfect. They take time to develop, but if they help catch glitches, then you're actually speeding along development. Honestly, I couldn't tell you if the net result is time savings, but I can tell you that you can only catch the errors that you are looking for.

      In conclusion: I disagree with your statement that developing "zero defect" software costs the same as developing and shipping software with defects. Formal verification is nice, but completely unreasonable to ask for. Independent testing will always cost more money and internal unit testing lacks the independent thought that really finds errors. I would love for software to be perfect, but it is simply too much to ask for out of developers today.

      --
      My UID is a prime number. Yeah, I planned that.
    79. Re:Perfection Has a Price by nlawalker · · Score: 1

      Software today is so damn buggy.

      The parent's point is that if it wasn't buggy, it wouldn't exist for years and years yet.

      The market has shown that it will tolerate buggy software, so that's what ships and what sells. If the market wasn't that way, we'd have software that worked a hell of a lot better with a lot fewer features.

      Good for the people using WordPerfect on those 386's. Seriously, that's not sarcasm - modernizing for the sake of modernizing is a plague. But when we're talking about new features, new capabilities, and scales that require the newest software and hardware, buggy software is going to win the day, simply because it *exists* by virtue of the fact that someone wanted to get it out the door.

    80. Re:Perfection Has a Price by Entrope · · Score: 1

      The problem is that too many people think that easy modifications mean it is a good idea to try something and see what breaks. Sure, that works for sufficiently trivial applications. It doesn't work so well for most applications that grow beyond a thousand lines of language statements. Writing truly robust software requires the use of abstract reasoning about the requirements and constraints for each piece of software.

    81. Re:Perfection Has a Price by Smauler · · Score: 1

      Bug-free software does not exist. I took your advice, and googled "zero defect software development", and _in the first line_ of google results, we get this : "Not to be taken as meaning "bug-free,"". Either you're confused, or they are.

      I'm personally a fan of good code... however, there are times when quick, cheap and dirty is the most appropriate code. If you don't like that fact... well, sorry.

    82. Re:Perfection Has a Price by Alex+Belits · · Score: 1

      Strange.

      For me it always was:

      DON'T VALIDATE INPUT. YOUR IDEAS OF WHAT IS OR ISN'T VALID ARE MOST LIKELY WRONG. Yes, some person name may actually happen to be "Bobby'); Drop Table", or something else that is not supposed to be stuffed into the input of some interpreter you use. Assume that anything can be at the input, and make your code properly work no matter how exotic the input looks like.

      On the other hand, detect all error conditions and produce output that always corresponds to specifications. Never propagate chunks of input to output unless specification says to do so. Usually there is some conversion or validation procedure involved, and this is where it belongs.

      --
      Contrary to the popular belief, there indeed is no God.
    83. Re:Perfection Has a Price by Opportunist · · Score: 4, Interesting

      Best practices? Following any sensible practice would already be a blessing!

      Now, I know I'm jaded and cynical, but having to deal with people you get from temp agencies does that to you. It's the latest fad, and it arrived at "coding jobs". Watch your productivity plummet, code quality leaping off the cliff and your sanity following close behind.

      First of all, what do you get from a temp agency? Hell, it's not like programmers have a really, really hard time finding a job around here. If they can code, they have a normal job. So what the hell do you think you get from a TA? Right. The sludge of the trade. The ones that cling to "doing something with computers" despite all odds and the fact that they simply can't.

      The few gems that you might get, because they're young and need some sort of work experience, are gone before you got them up to par. And that time is spent mostly trying to find some better (read: permanent) job. You'd be amazed how often people get "sick" just before they jump ship and are miraculously hired by some other company.

      The average turnover is 3 months. Now, I'm sure anyone who spent more than a week in programming knows what sort of productive work you get out of someone in his first three months (remember: You get either sludge or fresh meat, nobody with experience would willingly waste his time in a TA employment situation).

      After a year or two you end up with code written by about 20-30 different people, every single of them caring more about their next lunch than the project, with 20-30 different coding styles, and near zero documentation.

      I left the company, too. I still have a tiny bit of sanity that I treasure.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    84. Re:Perfection Has a Price by Opportunist · · Score: 2, Insightful

      Now, I don't think that code got less secure. I rather think there are simply a hell lot more ways a system's insecurities can be exploited, and the propagation of such malicious code is magnitudes faster.

      Think back to the 80s. Whether you take an Amiga or a PC, both had horrible systems from a security point of view. It was trivial on either system to place code into ram so it could infect every disk inserted, every program executed, much more than it is today, with home users having systems that have at least nominal levels of security. Yet the propagation of malware was way slower. Because most people rebooted between using programs (they sometimes had to because the programs were not kind to the system and simply kicked it out of the ram so they could use more of it... and a program being able to do that just shows how secure the system was in the first place). Even if the malicious program could somehow survive as a TSR program, spreading from one machine to another required more often than not that a disc was carried over to the next machine and put into this other machine...

      This is all a matter of the past today. Dozens of programs running at the same time, machines getting rebooted maybe once a day and spreading malware through the internet is a matter of seconds.

      The same applies to databases. How many databases were actually "online" in the old days, with people having (potentially) access to them that had no business there? Most databases were inside a company's local network. Maybe accessable by other company outlets somewhere, but it was usually a quite well shielded network, not accessable by "mundane" means. The amount of hackers (or people who would like to pose as one) that could possibly access the database and inject something was way smaller.

      So I doubt systems got more secure. They're just exposed to more insecure input these days.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    85. Re:Perfection Has a Price by Anonymous Coward · · Score: 0
      Tell that to the aerospace [software] industry, where they went from MIL-STD-2167 (more) to MIL-STD-498 (less) to J-STD-016 (less++) to then some IEEE standard (not much). It's not perfection, but what's good enough is purely based on 'I need it yesterday'--that's a recipe for disaster (hence why more s/w products fail and are replaced by more bad products).

      .

      As for the military, thank William Perry for that (i.e. the U.S. military did not require special standards any more, from hammers to systems)...

      .

      For the sake of time to market, I think the need to rethink how 'fast' we write software is needed.

    86. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      You make a very good point. It applies to games too: As more and more games go online, it becomes increasingly acceptable to ship games with serious bugs, because even console owners can now download patches.

    87. Re:Perfection Has a Price by Anonymous Coward · · Score: 1, Insightful

      Even worse, for at least the last 10 years, consumer grade hardware drops out of it's support cycle before all the firmware/driver bugs and features are worked out.

      You just end up buying one piece of crap after another, and that's just the way companies like it, buy more stuff, not make better quality. Quality means you don't replace it as often.

    88. Re:Perfection Has a Price by DragonWriter · · Score: 1

      As a very good example, look at all the old COBOL programs still running banks and payroll systems. Just why do you think they are *still* running them? Hint: cost of upgrading isn't a problem for the kind of companies that do run these.

      Because the bugs have been slowly worked out over decades of use, the requirements are basically static, and, contrary to your suggestion, the cost of upgrading would be exorbitant even for the large players involved, for very little gain because, again, the requirements are static. Plus, incremental updates are made difficult, because the interrelationships between components and systems aren't well documented. Where these considerations don't all apply, you do see massive legacy production COBOL systems being replaced, either all at once or piecemeal, by newer systems.

    89. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      Interesting that they call vulnerabilities like SQL Injection and Cross Site Scripting "coding errors". Sort of like saying my house has a construction error because a thief can smash a window and steal my stuff.

    90. Re:Perfection Has a Price by Anonymous Coward · · Score: 0
      "And for the money at stake, what's so wrong with hiring a few Ph.D's to analyze code."

      Cause they want the top range of those 6-figure engineering salaries for analyzing code based on what they learned from theory and do nothing else. I worked with 4 PhDs reviewing design and code on a dev team of 30 and it took twice as long to build [what ended up to be] a failed] system because they ran into "analysis paralysis" and keep redirecting us and arguing amongst themselves over the 'right way' to build the system/code. What a waste.

      .

      Get a couple senior s/w engineers (Masters Deg folks) that have real experience, are interested in s/w development as a discipline, team them up with a systems engineer (domain expert) and let them focus on code analysis and you'll end up with a decent, successful system. You'll save time AND money.

    91. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      Dells blade management web console is a fun thing.
      If you connect with IE, it'll work like a charm.
      If you connect with firefox, every pageload takes at least thirty seconds -- i vaguely recall somewhere around two and a half minute to log in.

      Safari? hah, no chance.

      Zeus ZXTM load balancers?
      The web gui works pretty well in IE, works great in firefox, and in safari?... submit buttons don't work.
      Or rather, I was the one who pointed it out.
      Given that we did pay a bit of cash for the ZXTMs we had, the hotfix appeared rather quickly, and by the next patch everything was dandy.

      I'm glad I had enough ram to keep a full windows vm running from my mac pro for the dell stuff though.

    92. Re:Perfection Has a Price by ozphx · · Score: 2, Interesting

      I pull a 6-digit salary (even when you convert our shitty AUD to USD ;)) - and its worse.

      If anything I am more rushed than I was when I was a junior dev. Managers flat out don't care what you are doing when you are on 50k. You could whack off all day if you like.

      As soon as you start earning more than your manager it all goes to shit. Possibly an ego thing - I don't really care about the reasons - but every place I've had managers over my shoulder monitoring my times, trying to cut schedules, etc. Where I'm consulting at the moment is a good case in point - every 3 weeks theres a new "final deadline". I think its to try and motivate us to finish up (theres a good several months of work left) - all they are getting is bandaid fixes.

      --
      3laws: No freebies, no backsies, GTFO.
    93. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      You know i was thinking almost the same... funny how most of this errors doesnt apply to "modern" languages like oberon2 and eiffel

      And i prefer to know whats going on without needing experts... thank you

    94. Re:Perfection Has a Price by Grishnakh · · Score: 1

      It's already a reality: a lot of high-end hardware is implemented with FPGAs, and has been for many, many years now, and is actually updated with new firmware (which includes new FPGA code) from time to time.

      However, you're not likely to see this in any consumer-level hardware for a very long time, for two reasons: 1) FPGAs are very expensive. They make sense for the military, because they have a huge budget and don't produce many copies of anything, but when you're making 10 millions units of some electronic widget, it's a lot cheaper to make an ASIC. 2) FPGAs are slow, compared to dedicated hardware, so you'll never be able to, for instance, come close to matching the performance of the latest Intel processor or Nvidia GPU with an FPGA.

    95. Re:Perfection Has a Price by nonsequitor · · Score: 3, Informative

      The horror you described is for Level C certification. Level B has the requirement of testing each implied else. Meaning for every standalone if statement, you have one test that makes sure it does the right thing when the conditions are true, and a second test which makes sure that thing does not happen when the conditions are not true.

      Level A certification requires Modified Condition Decision Coverage (MCDC). The means a test case must exist for every possible logical combination of terms for every conditional expression. These are extensions of the structural coverage requirements for Level C which is only statement coverage, every line has to be exercised at least once by a test case.

      This sort of exhaustive testing is done because of a very different operating environment from desktop software. Desktops don't have single bit events. A single bit event occurs when a gamma ray strikes a 0 in RAM and turns it into a 1. As a result some places forbid the use of pointers in their code, since a single bit event could have catastrophic consequences. Every function has to be tested to be able to best withstand random garbage input and fail gracefully since you cannot rely on RAM storing values correctly.

      However, the medical industry has similar guidelines for things like X-Ray machines and ventilators, which I believe have a very similar set of best practices codified into a certification process. Depending on the certification level, the cost of testing varies. It is VERY expensive to develop software this way since Test Driven Development doesn't cut it. For these industries the testers need to be independent of the developers meaning developers don't write their own unit tests, which in turn leads to more cumbersome software processes.

      I still work in safety critical embedded software, but am eternally thankful I no longer have to worry about certification with a mandated software process. I now write software for boats instead of planes and have started doing model based controls design, test driven development, and in general have tailored the software process to best suit the company. The goal is to produce better software faster, in order to respond to changing business needs, not to fill out checklists to pass audits. The FAA process is the most reliable way to the highest quality software possible; it is not efficient, cheap, or even modern.

    96. Re:Perfection Has a Price by Grishnakh · · Score: 3, Interesting

      The hardware designers were under the same sorts of pressures, if not more so, than the software guys and I saw many bugs that would end up in the shipping silicon. The general attitude was always "oh! a bug: well the software guys will just have to work around it."

      Most of my work involves software workarounds for hardware bugs. The reason is a little different, though. My company, in its infinite wisdom, completed the very first revision of this particular chip, did a preliminary test and the core seemed to work (it's a system-on-chip), so they laid off the hardware design team! Then they started finding the many bugs in the hardware, and ran around looking for another design team to fix the bugs, but it took several years, and they had to ship millions of the buggy chips to customers, which are deployed in the field.

    97. Re:Perfection Has a Price by JumpDrive · · Score: 1

      ]I happen to have worked in an industry that requires perfect coding. [...] The industry I'm referring to is the chip industry. [...] Hardware companies can't afford a single mistake because once the chip goes to fab, that's it. No patches like software, no version 1.0.1.

      I've worked in chip manufacturing also and I know that they sometimes get it wrong. I remember that we had a lot go through and it had zero yield. After we analyzed the photo plates and each step we found that the emitter/base/collectors were not aligned.
      I've also seen roughly the same type of problem with CMOS and BiCMOS structures where the photoplates had gates misaligned or other structures at the metal levels.
      So there are some version 1.0.1 in programs and there are changes to mask levels to enhance yield.

    98. Re:Perfection Has a Price by jellomizer · · Score: 2, Informative

      Very true I have worked on maintaining these old systems; your statement is quite true.
      The cost to replace legacy apps are massive, like millions of dollars.
      Why...
      Analysis of all the features of the old app: Before you buy an app you should know what your current one does... A form that fits on a 80x25 display could be doing a bunch of complex calculations.
      Analysis on the current usages of the program: Some parts are used all the time others code hasn't been touched in decades and will never be used again, some havent been used in a while but is needed once in a blue moon. You don't want to code unneeded code but you need to make sure when they upgrade they are not missing anything.
      Analysis of the data: How is the data layout how can you migrate the data from one system to an other. Are those values in easy to read text numbers. Or in a binary form with one number next to each other, with an endianness that is unknown, and with data types of undocumented size. (1 Bit bool or an 8 bit bool?)
      Then after all that Analysis there is the coding of the new app.
      Importing all the data from the old app to the new one, and insure data integrity.
      Finding a group of people willing to test the new software.
      Training people to use the new software.
      Getting people to STOP using the old software (and there will be resistance on this, as there be that one stupid feature that was nicer on the old system vs the new one)

      This is a HUGE Process and I am not factoring bugs. So cost of upgrading is defiantly a big problem.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    99. Re:Perfection Has a Price by Mozk · · Score: 1

      Information visualization expert? I think that's my official job title, but I go by pie-chart-maker.

      --
      No existe.
    100. Re:Perfection Has a Price by mollymoo · · Score: 2, Interesting

      First of all, what do you get from a temp agency? Hell, it's not like programmers have a really, really hard time finding a job around here. If they can code, they have a normal job. So what the hell do you think you get from a TA? Right. The sludge of the trade. The ones that cling to "doing something with computers" despite all odds and the fact that they simply can't.

      I used to do contract work (if that's what you mean by "temp agency"), not because I couldn't get a permanent job - I was offered a permanent position at every single place I did contract work - but because being paid twice as much as you'd get in a permanent position, getting to work on a variety of projects with a variety of companies and being able to take several months a year off is just a nicer way of working.

      --
      Chernobyl 'not a wildlife haven' - BBC News
    101. Re:Perfection Has a Price by Frostalicious · · Score: 1

      I don't know exactly how far it is to Alpha Centauri, but I'm still gonna go ahead and make the call not to ride there on my bike.

    102. Re:Perfection Has a Price by JumpDrive · · Score: 1

      We just retired our last Windows 3.1 box. God knows how many years it had worked. I even forgot we had it until the hardware crashed.

    103. Re:Perfection Has a Price by ozphx · · Score: 1

      I think that defect rate being a function of QA effort and invese to developer noobitude is a fair assumption. Both of those are costs.

      How much?

      Hardware manufacturers can usually specify FIT with a handful of parts which can fail. Software has potential defects on every line. You could pick a naieve measurement, say defects per kloc, measure this per dollar spent on QA.

      That would give you a nice diminishing returns graph. Pick a point where your defect rate is acceptable and that gives you your cost. If your manager asks in his PHB way how much it will cost for zero defects, then you can give him the one-in-a-million cost (which will be expensive) and ask if he wants to spend even more.

      (Someone else can go google for the actual evidence, I'm going off memory and I really CBF searching for things).

      $50k these days will get you a basic developer that has probably heard of unit testing, and can code according to spec, but can't be trusted with design.

      $100k will get you someone that can handle complex algorithms and understand modelling, and can effectively code-review the juniors, kicking some arse where appropriate.

      $200k will get you someone that won't fuck the domain model up either, and can make the seniors feel sufficiently inferior that they'll keep their dicks in their pants and not overengineer the hell out of things. (Keep them doing what they can do well, and not overextending themselves).

      Then if your project is big enough you may need someone that can take an overall technical lead role. Of course now we are well into fantasy land - because its extremely unlikely you can convince your managers to have more than one "senior" on 100k, supervising a whole bunch of juniors (add more men to get through those man-months!).

      --
      3laws: No freebies, no backsies, GTFO.
    104. Re:Perfection Has a Price by ozphx · · Score: 1

      All that stuff is great. Like all tools, if you don't know how the damn things works, then you can't use it properly.

      So many people downloading the latest "cool" tools and not knowing how it works. People love getting an IOC container and trying to use it without understanding the component lifecycle. Heck, they have the same problem with ASP.Net - I've worked with "senior" developers that don't understand the basic page lifecycle (and expecially that the page instance is _not_ reused between requests).

      Drives me insane. So yeah, the GC might work most of the time, but you are still going to have devs getting screwed because they don't understand how finalization works.

      If you don't have a rough idea on how to build the tool you are using (or how it is built), then you shouldn't be using it.

      --
      3laws: No freebies, no backsies, GTFO.
    105. Re:Perfection Has a Price by mollymoo · · Score: 1

      Plenty of software is bad because it's not designed at all.

      --
      Chernobyl 'not a wildlife haven' - BBC News
    106. Re:Perfection Has a Price by awol · · Score: 1

      And all without managed memory, automatic garbage collection, etc., imagine that! Seriously, I see so many devs (and M$, who has a product to sell) insisting that all that junk is what will save us. What they're doing is attempting to create a Fisher Price dev environment where you don't have to think anymore because they've done it all for you. What's going to happen to this world when GenC# programmers replace the old guard and they don't have the least clue about what is going on inside the computer that makes the magic happen?

      And more power to them because there are a hell of a lot of applications that can be written that way (by that way I mean with the training wheels on "insert tab a into slot 27" style) and they should be written that way. Maybe even written by those people. But, and it is a big but, there are other applications that need the kind of knowledge of which you speak. It is "hard" (certainly compared to the fisher price model) and hence it is expensive. It is also mostly interesting and so it is where I want to apply my skills, and hopefully receive the comensurate compensation.

      --
      "The first thing to do when you find yourself in a hole is stop digging."
    107. Re:Perfection Has a Price by pdbaby · · Score: 1

      Rather than contract work, where you're self-employed, temp agencies are essentially a CV/Resume bank for companies who want to hire someone for a relatively short period of time (usually a few months); on the whole they tend to be for low-pay low-skill positions - so I wouldn't imagine you'd have [m]any skilled coders/architects signed up since they'd know they can get a much better price by going to the companies directly to sell themselves as contractors or permanent employees

      --
      Global symbol "$deity" requires explicit package name at line 2. - If only $scripture started "use strict;"
    108. Re:Perfection Has a Price by Eskarel · · Score: 2, Insightful

      The software of yester-year ran largely on single threaded operating systems, didn't have to interact with the internet or defend against attacks originating from it, had to manage miniscule feature and data sets, and was still buggy.

      There was no magical era of bug free computing, there was an era when systems were orders of magnitude less complex, where about a tenth of the software was running, and where features which most people depend on didn't exist. The software was still buggy and most of it was so full of security holes that it may as well have been a sieve.

      Complex systems have more bugs, modern systems are more complex. The workflow of your data entry people might be fast, and perfectly adequate, but what does it cost to support those 386's, what does it cost to train someone to actually use word perfect 4.2(the old dos verisons of word perfect had a pretty high learning curve). Data entry folks are basically doing monkey work, but training them up on an older system could take days.

    109. Re:Perfection Has a Price by notwrong · · Score: 1

      All of my code was reviewed by a senior developer for a period of time until I gained their trust and I could work independently.

      ...

      Every development crew needs to have senior folks to show the junior people the ropes and talk them through the pitfalls that all young programmers fall into.

      I agree that it is a good idea to have senior developers review junior developers' code - but I don't think this should ever have to stop. Having someone else actually pay attention to and sign off on code before it goes out is a good idea, irrespective of seniority. Having a less experienced person reviewing a more experienced developer's code is also useful: it can help them to understand the codebase and learn from the experience. They might even catch problems or laziness in the code, or have some useful ideas of their own.

    110. Re:Perfection Has a Price by bigg_nate · · Score: 1

      It seems obvious that you should test 4, 5, 20, and 21. And I can understand that in some cases, you'd want to test 0 and 255 as well. But what bugs could your software reasonably have that would cause the other cases to fail if those succeed?

    111. Re:Perfection Has a Price by BitZtream · · Score: 1

      If you've got one web browser that works and others that don't, someone needs to learn how to use tcpdump, ethreal or some other sort of sniffer to figure out the problem, its not hard really.

      You probably won't be able to fix it, but you should be able to spot the flaw with tcpdump, diff, and some very minor script ninja skills.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    112. Re:Perfection Has a Price by pdbaby · · Score: 1

      Memory management isn't a Hard Problem but it is a problem - making sure you free all your various allocations can be difficult. Knowing that someone magically frees your memory lets you keep your focus on what the code's *really doing*

      The fundamentally hard thing in programming - understanding the problem, making models to reason about it & architecting a solution - is essentially unchanged. It's just black-boxing another boring aspect of programming.

      You may get a few more incompetent programmers now that the barrier for entry is lower (why, you might say it's the same as the Assembly to C days! Real men code in assembly, after all...) - but they're pretty easy to weed out if you ask an architecture or process question that's obvious to someone who's accustomed to thinking things through.

      --
      Global symbol "$deity" requires explicit package name at line 2. - If only $scripture started "use strict;"
    113. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      I thought your post was common knowledge, I'm surprised to see so many FPGA posts on slashdot.

    114. Re:Perfection Has a Price by LingNoi · · Score: 1

      The problem with your nvidia comparison is that the product design isn't flawed, the manufacturers are producing the product with shitty parts and not telling Nvidia.

    115. Re:Perfection Has a Price by BitZtream · · Score: 1

      Objective-C is pretty horrible to develop in when you're used to a modern language and IDE.

      I've been doing dev for roughly 15 years as a hobby (since early highschool) and the last 5 or 6 professionally. I like to think of myself as a rather dynamic developer. I don't care what the language is I can code for it, sure I prefer some over others, but the language is just a tool and has little to do with your ability to write a program in my mind.

      To see someone else say that about obj-c makes me feel so good. It has always been thorn in my side and just doesn't feel right to me, I've written it off as just being unwilling to accept a change, but I have no problem with Java, C, C++, C#, and god knows how many scripting languages, even dealing with the VB6 and VB.NET apps that I have to maintain until they are replaced I can deal with as long as I have an IDE that doesn't suck.

      Objective-C on the other hand, does nothing but piss me off, and I gave it a far chance when OS X first came out, helping to port a couple X11 apps to native Cocoa. I just can't stand it. Right now I have a Apple iPhone cert and a good app that I should port and sell on the app store, I know it would sell and most of the code is already written, its just a matter of porting. Yet ... I can't stand the thought of having to deal with obj-c to do so :(

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    116. Re:Perfection Has a Price by eh2o · · Score: 1

      Anyone who has coded for microprocessors knows that silicon fabs contain bugs also. It is common practice to publish an "errata" to go with the datasheet that lists all the known problems with each revision of a processor. Sometimes the bugs have software workarounds, sometimes not and certain features will simply be unusable.

      The reasons for hardware bugs are also quite similar--increasing complexity, and design tools that let you drop in large "prefab" modules.

    117. Re:Perfection Has a Price by BitZtream · · Score: 1

      That said, it's not impossible to write safe C code. In fact it's not even all that difficult, but it does mean that even small otherwise unrelated errors in your code can be surprising security problems.

      Couldn't agree more.

      I've written cryptography related apps in C, and it is not hard at all. What it does require is that you are VERY VERY METICULOUS. The smallest silly little error in something seemingly unrelated can break the whole thing wide open. I love using C, but only because I'm into the pain of having to make sure the math is right EVERYWHERE. I guess I still dream of working at NASA and using slide rules to save space probes from certain doom.

      As I write this I think ... funny, they've been known to miss one of those mundane little errors (imperial vs metric) and lose probes too ... hrm, maybe I would fit in at NASA.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    118. Re:Perfection Has a Price by BitZtream · · Score: 1

      Did the hardware guys know this was going to happen in advance? I ask because I've seen so many slashdotters say 'I wouldn't work there if they did XXX' and its just computer courage since they probably work for exactly one of those places. But this is the first time I can say 'Id have to quit if I saw them do that'.

      Well, maybe not quit outright cause I'm old and like income, but holy shit would it be time to find a new job.

      What happened to moral at that place? Seems like people would be fleeing in panic.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    119. Re:Perfection Has a Price by BitZtream · · Score: 1

      Reading your post makes me think I should probably write some unit tests soon.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    120. Re:Perfection Has a Price by chaim79 · · Score: 1

      Check out nonsequitor's post, that level of testing is expected for Level C, Level B and Level A certification are even more stringent.

      As for what we are hoping to find with all that testing, we have to be sure the software fails as defined (pass and fail actions are defined in requirements as well) and doesn't do a hard crash. There can be lots of funky things going on inside the function that we may not know about, all we know is what it's supposed to accept and what it's supposed to reject. Edge cases are checked heavily to make sure they are coded correctly, limits of the data type to make sure there isn't any weirdness going on there, then toss in a few extra values just for random testing (middle values for pass and fail).

      Between defining data types, pointer arithmetic, and working in confined memory/hardware requirements the code involved can get very squirely in unexpected places, and what you don't want in a 747 at 40,000 ft is an important bit of the controls going squirrely!

      --
      DEMETRIUS: Villain, what hast thou done?
      AARON: Villain, I have done thy mother.
      Shakespeare invents 'your mom'
    121. Re:Perfection Has a Price by chaim79 · · Score: 1

      Right, level C, actually most of my experience is Level C and B, haven't had to do a Level A yet, it sounds like fun. :)

      --
      DEMETRIUS: Villain, what hast thou done?
      AARON: Villain, I have done thy mother.
      Shakespeare invents 'your mom'
    122. Re:Perfection Has a Price by Opportunist · · Score: 1

      Temp agencies here are more a convenient way to circumvent the rather strict work contract codes. You see, you have to give at least 2 weeks (or was it a month? I rarely need it) notice before you can lay someone off, you have to pay a fair lot of separation compensation when you do and so on. A company can circumvent that all and more when they "hire" (or rather, lend) people from temp agencies. They enable you to hire&fire at will.

      Also, large companies usually also have pretty strong internal unions that managed to get quite nice bonus packages for workers (think car industry in the US), which don't apply to temps. So it's quite tempting to use such hire&fire people, even if you don't plan to use them only "temporary", as the name implies, some people in "temp" contracts stay in such positions for years, mostly because they can't find anything better. It's a pretty sad dead end situation for the worker, most of the time.

      A company can do that with unskilled people, mostly because they have no choice and no chance to escape this. Of course it is prone to fail when you try to do it with people who can actually escape such a contract because their skill is sought after in the market. The logic result is that the only kind of people that stay in a "temp" programmer position are people who are even SO unfit for the job that nobody would hire them for the pennies those people actually make. Remember, temps are anything but well paid, so even something like 8 bucks an hour would already make them jump out before you notice they took their jacket with them.

      And you, as their coordinator, often only notice that they quit because they suddenly stop to show up for work. Because turnaround is fair game here, they needn't give you any notice when they decide to vanish either.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    123. Re:Perfection Has a Price by hitmark · · Score: 1

      FPGA = patchable chip, no?

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    124. Re:Perfection Has a Price by erroneus · · Score: 1

      When I was coding in assembler, validating input was always a part of the input functions I wrote. I will grant that some code was copied from previous projects, but invariably, it was always modified in some way to be more suitable to the task at hand.

      While it is NICE to have library functions that already exist performing mundane tasks, I find that dependency on these library functions [read: black boxes] is not good policy. When one sets out to create a project, one should strive to make that project completely one's own to the fullest extent possible. I recall the first time my older brother "wrote a web browser" in Visual Basic. He didn't write a web browser! There is a LOT to writing a web browser. Spawning a window and assigning button clicks to some MSIE and Windows APIs is not "writing a web browser."

      If I cannot trust an existing library function, then I write my own. If it cannot be done efficiently enough within the language itself, I will write it in assembler. Is it REALLY so hard to "get a character", "run some checks", "place it in array if good" and "repeat"? Sure some of that code can be mind-numbing, but no one gets into programming for a rush of instant gratification.

      Bad programmers build with LEGO. Good programmers are watch makers.

    125. Re:Perfection Has a Price by frehe · · Score: 1

      It doesn't help that most programming languages are lousy at validating input.

      The software in this world would work a lot better if people prayed more to the Lord for their software to work well, instead of wasting their time, and endangering their souls, by performing pagan/satanic rituals such as "validating input". In addition, the Good Book tells us that the best and easiest way to get high quality software is to instill a strong healthy fear of God in all software developers, but good old fashioned common sense methods like that are unfortunately taboo in this politically correct secular world.

    126. Re:Perfection Has a Price by Sicnarf · · Score: 1

      except he's talking about modern technology, and i think voltaire is generalizing about everything..
      i wouldn't even agree to voltairs statement, since perfection is achievable.

    127. Re:Perfection Has a Price by chthon · · Score: 1

      We used to use Notes in the last 8 years, last quarter we changed to Outlook.

      I never had Notes crash on me in those 8 years, while Outlook seems to crash every 2 or 3 weeks, and that is with restarting my computer every day.

      And let's not talk about the fact that our mail is not maintained anymore by someone from the company, but outsourced to HP, just to be able to say if you cannot get access to your mail, that it is someone else fault.

      And do not begin about the integration with calendaring and all that other shit. I use emacs + org-mode to organise my work and planning, and I am the one who is always on time, not the people who rely on Outlook for that.

      And the interface of Outlook is still the same as PCTools 5.0, which included the same functionality, except that it was not network savvy and did not have e-mail.

    128. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      Because you're motivated to produce clean code, which doesn't equate to profit, at least not soon. The other guy just wants to be done - while they view his output to be as worthless as yours he'll be done sooner.

      Don't ever trust your life to anything that company makes.

    129. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      Computers were slow in the 80's - because they were slow .... nothing to do with software (in fact the software made them acceptably fast)

      Crashed all the time .. .well they did under some operating systems because there was not protections and all ran at the same privilege level (or even replaced the OS while they ran)

      Programs still crash as often but they a) do not take the whole system down b) thanks to the OS are less likely to lose data

      What you are forgetting is that throughout computer history reliable systems have always been reliable and surprisingly consumer products have mostly been fairly reliable (with a few notable exceptions) as well...

    130. Re:Perfection Has a Price by Sicnarf · · Score: 1

      the faa process is impressive.. i took a look at their "nas system engineering manual". what kind of systems require level A certification? that sounds like a huge endeavor..

    131. Re:Perfection Has a Price by One+Monkey · · Score: 1

      I don't know whether you meant the "I'm Feeling Lucky" for the search term you gave but... well, did you look at what it is the guy who wrote the article does these days?

      Not that I necessarily disagree with his life choices but I think you have to question the sustainability of his model. After all even though he's now a superhuman he ran away from software development pretty damn quick given the chance.

      --
      www.nodicerpg.com - Some RP stuff for free, some not so for free, but still cheap.
    132. Re:Perfection Has a Price by happy_place · · Score: 1

      Chip developers and hardware developers are starting to have the same nonchalaunt attitude about prototyping and getting hardware out the door... as software folks... I was in chip verification for ten years and have watched much of that work go bye-bye... The favored methods for many hardware folks is to design using FPGAs...you can even convert your fpgas to asics nowadays... Even in full blown asics its unusual not to use huge component libraries of hw macros because they've already been tested by someone else... and where possible programmable logic that can be upgraded and patched in subsequent releases of Firmware. Of course there are security holes and stability issues in such a thing, but your hardware is out faster... and you saved in needing a whole huge verification team...

      --
      http://www.beanleafpress.com
    133. Re:Perfection Has a Price by DarenN · · Score: 1

      It's a problem with testing though, and why beta-testing is so important. The "wow-factor" is a known problem in HCI, and will override usability concerns for a time.

      So testing can be a problem. The solution? Bitter bastards, imo :)

      --
      Rational thought is the only true freedom
    134. Re:Perfection Has a Price by Jason1729 · · Score: 1

      But when it crashed your whole computer there was nothing to take down like there is today. There wasn't a difference between an app crashing and the computer crashing.

    135. Re:Perfection Has a Price by Digital+Vomit · · Score: 1

      The debugger would cost half a million dollar per seat (gdb is free). There would be an entire industry dedicated to analyzing your source code and doing all kinds of proofs, coverage, what-if analysis and other stuff that require Ph.Ds to understand the results.

      The industry I'm referring to is the chip industry.

      Man, those guys at Old Dutch sound pretty hardcore.

      --
      Modern copyright is theft of culture from everyone and it retards the progress of the useful arts and sciences.
    136. Re:Perfection Has a Price by MagicBox · · Score: 1

      The /. artcile is a biased piece of cr4p. Nowhere was the PC mentioned in the article. With that said, the SANS list is also a piece of cr4p. They are trying to make me believe that these "25" errors are the holy grail of secure programming! That if I (somehow) make sure I have them covered, that everything will be fine? I am sure Keving Mitnick would love to disagree with that one. I do too. We are not at a stage where we can write "secure" software yet. The most basic input device for a computer is still the same thing that was in place 30 years ago: the Keyboard. We may have come a long way, but whenever I see a keyboard and mouse it's a grim reminder of how primitive technology still is.


      The gratest threat I tend to see for example has nothing to do with code. It has to do with an unsecured laptop left on a desk, that can easily dissapear. So although the list of 25 is a valid list, it's far from anything new and unknown. There's many factors that affect how secure technology is produced - and code quality suffers as a result.

      --

      The phaomnneil pweor of the hmuan mnid. Fcuknig amzanig eh!
    137. Re:Perfection Has a Price by NeoSkandranon · · Score: 1

      With product like that is it any surprise?

      --
      If you can't see the value in jet powered ants you should turn in your nerd card. - Dunbal (464142)
    138. Re:Perfection Has a Price by NeoSkandranon · · Score: 1

      As a very good example, look at all the old COBOL programs still running banks and payroll systems. Just why do you think they are *still* running them?

      Because quite likely nothing is documented, no one who worked on it initially is around anymore, and no one has the balls to make any much needed changes or port it on the off chance that something subtle breaks. Then the bank comes down on you and your company like the wrath of an angry god.

      --
      If you can't see the value in jet powered ants you should turn in your nerd card. - Dunbal (464142)
    139. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      You can have a perfectly functioning program, one that passes every test 100% of the time, but it may still have a SQL injection flaw or fail to validate input.

      But I want my username to be 'OR''='!

    140. Re:Perfection Has a Price by clone53421 · · Score: 1

      Actually, I think the saying goes that you can have any two of those but not all three.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    141. Re:Perfection Has a Price by clone53421 · · Score: 1

      DON'T VALIDATE INPUT. YOUR IDEAS OF WHAT IS OR ISN'T VALID ARE MOST LIKELY WRONG.

      Sometimes yes, sometimes no.

      Yes, some person name may actually happen to be "Bobby'); Drop Table", or something else that is not supposed to be stuffed into the input of some interpreter you use. Assume that anything can be at the input, and make your code properly work no matter how exotic the input looks like.

      Ok, in some instances this is accurate. However, look at Slashdot's registration for example: Usernames can contain a certain set of characters (and some of the "allowed" characters will need to be escaped in an SQL query). "Disallowed" characters are stripped out. This is an example of both input validation and robust code: it both makes sure the input is valid, and works for all valid input.

      To use your example, if there's a law saying you can't use non-alphabetical characters in a legal name, then test for those characters (and yes, assume that anything can be received as input: your program should either reject the input or work properly for any possible input value). That's what input validation is. Maybe your program shouldn't accept "Bobby'); Drop Table" as valid input, but it shouldn't crash (or kill the database) either.

      In short, do validate input, but be damn sure your idea of "valid" is correct. If you're asking the user to enter an integer, you're pretty damn sure they shouldn't be entering alphabetic or symbolic digits. And, of course, as I said before: assume that any input is possible, and make sure your program is robust enough to handle both valid and invalid input.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    142. Re:Perfection Has a Price by T.E.D. · · Score: 1

      The old stuff was always failing and had a bunch of problems...

      Thank you.

      They were talking "software crisis" and complaining about crappy code back when I was in school in the '80s. Before then, back in the vaccum tube days, I understand computer owners often had to employ a guy full-time to ride around on a unicycle with a backpack full of tubes to replace failed vaccum tubes on the computer all day. How reliable do you think results from those machines were?

    143. Re:Perfection Has a Price by HeronBlademaster · · Score: 1

      That, indeed, is the key - "at least not soon". Better code produces more profit in the long run, generally speaking, because it needs less maintenance; finished code produces more profit in the short run, because it gets out the door sooner.

      If only more companies cared more about the long-term than the next fiscal quarter :/

      Oh, and ironically, our software is used to model various water-related civil engineering problems. If the Federal Highways and Waterways Department builds a new freeway and they want to make sure that if the nearby levee breaks it won't flood the road, they'll use our software. So basically, we all very well could be trusting our lives to this software, in the event of a dam break, flood, etc.

    144. Re:Perfection Has a Price by bwcbwc · · Score: 1

      It's not just the ease of patching, it's also the loss of the philosophy of change management. Apart from the non-digital technology used for the change management, compare the level of detail in the change management in Tracy Kidder's The Soul of a New Machine with change management standards used nowadays.

      I blame the fact that instead of using expensive Electrical or Computer Engineers, software companies base their development teams around computer science (strong on programming theory, weak on proceses) or Business IT (good business process knowledge, weak technical) people. Just because a person can code doesn't mean they can design or manage. Or vice versa.

      --
      We are the 198 proof..
    145. Re:Perfection Has a Price by clone53421 · · Score: 1

      No, it's more like saying a vending machine is faulty by design because it will deliver products when someone puts a green slip of paper into the money scanner.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    146. Re:Perfection Has a Price by agbinfo · · Score: 1

      [snip]

      The industry I'm referring to is the chip industry. Hardware designers code pretty much like software developers (except the languages they use are massively parallel, but apart from that, they use the same basic constructs). Hardware companies can't afford a single mistake because once the chip goes to fab, that's it. No patches like software, no version 1.0.1.

      [snip]

      Dream on

    147. Re:Perfection Has a Price by Tom · · Score: 1

      Both of the terms are used as describing the goal and purpose, which we all know are not reachable. Just like "justice" is a goal of our justice system, but it does fail now and then.

      The point is to not shrug and accept the failure, but consider it something out of the ordinary, something that should not have happened, and investigate why it did and what you have to do to prevent it from happening again.

      That sounds like a lot of work, initially. Then you realize it also means you only make the same mistake once. And that dramatically reduces cost and time.

      --
      Assorted stuff I do sometimes: Lemuria.org
    148. Re:Perfection Has a Price by Surt · · Score: 1

      That was my point. The suggestion that life was better back then when any application crashing meant a full reboot is crazy. And oh the convenience of only being able to run one application at a time! Who needs cut and paste!

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    149. Re:Perfection Has a Price by Grishnakh · · Score: 1

      Did the hardware guys know this was going to happen in advance?

      This all happened before I came to work here, but my understanding is no, they had no idea this was coming. I imagine if they did, they probably wouldn't have finished their work very quickly.

      I ask because I've seen so many slashdotters say 'I wouldn't work there if they did XXX' and its just computer courage since they probably work for exactly one of those places. But this is the first time I can say 'Id have to quit if I saw them do that'.

      I found out about this just after I got hired, and then when I was here for only a few months, they came in and laid off a bunch of people, including the guy next to me who was hired only 1 month before me.

      I'm still here. :-P I figure I'll stick around as long as they keep giving me a paycheck. After that, there's a bunch of defense contractors here that are hiring, so I guess I'll go over there, but I'm in no hurry. I did a co-op at a defense contractor when I was in college, and let's just say I wasn't impressed with the way things worked there.

      What happened to moral at that place? Seems like people would be fleeing in panic.

      Morale's been terrible the whole time I've been here (about 2 years).

    150. Re:Perfection Has a Price by 615 · · Score: 1

      One thing I cannot understand: How programmers continue to fail to encode data in a context-appropriate way before operating on it. When I code, I don't even think about it - I just do it. The brain cycles I save, I spend on higher-level problems.

      If I need to output some data in the context of an XML document, I entity encode the data. Bam! - done. I don't stop to think about how likely it is the data will contain control information; whether it'd be worth the extra 1.5 seconds (of typing) to encode it; that the data provider (a user, say) ought to know better than to include "funny" characters...

      I agree with you that the price of perfection is too high for most applications, but come on. Failing to sanitize data moving across major boundaries (the client/server boundary, for example) is like failing to check whether the garage door is open before attempting to drive through it. Don't excuse that crap.

    151. Re:Perfection Has a Price by Alex+Belits · · Score: 1

      To use your example, if there's a law saying you can't use non-alphabetical characters in a legal name, then test for those characters.

      My full name is actually . AFAIK, it doesn't mean "drop table" in anything, however some characters that it contains were known to wreak havoc in all kinds of communication software, databases and text editors. They are STILL used for messing with domain names, URLs, bulletin board wordfilters and other things written with wrong assumptions.

      --
      Contrary to the popular belief, there indeed is no God.
    152. Re:Perfection Has a Price by Alex+Belits · · Score: 1

      The name was supposed to be this sequence of characters: Александр Валерьевич Белиц , however Slashdot "validated" it into oblivion, so all I can do is to post them as codes.

      --
      Contrary to the popular belief, there indeed is no God.
    153. Re:Perfection Has a Price by nonsequitor · · Score: 1

      The Level A systems I worked with did stuff like engine monitoring for helicopters; Attitude Displacement Indicators, Horizontal Speed Indicator with slip slide bar, traffic collision avoidance, color weather radar, and 3-d terrain plotting with runways and such for military and commercial aircraft. Basically anything monitoring the health of a critical system or being used for real time navigation needs to be level A.

      There are similar requirements for determining how critical mechanical systems are and what sort of redundancy is required. For instance level B systems can be downgraded to level C if you double the hardware to make it redundant.

      Developing level A software is all about process. Certification requires that you strictly follow the waterfall model of development to the point of naming the artifacts required to transition to the next phase in development. System Requirements flow to Software Requirements to Design to Detailed Design to Code to Unit Test to Integration Testing and finally System Testing with traceability forwards and backwards from system requirements to system tests, such that every test case and even every line of code, is linked to requirements and design, nothing more, nothing less. Periodically throughout the process the customer might send auditors to observe the adherence to this process and collect artifacts for review. Basically its the worst job ever, its the most tedious, boring thing I've ever accepted money to do. At least no one dies when the Slashdot Editors post a dupe.

    154. Re:Perfection Has a Price by Anonymous Coward · · Score: 0

      The problem is that software doesn't even ship as "good enough" anymore. It's more like "it compiles, ship it".

      I've been working in a desktop application for a GIS for the past months. Last week I found a problem with the application we're developing that will cause users to lose (very important) data. I rushed to my boss and told him about it, what did he had to say? "Don't worry about that now, we will ship it as is and send a patch later if users start to report errors."
      The thing is, wouldn't it be less expensive to correct it now??

    155. Re:Perfection Has a Price by clone53421 · · Score: 1

      "Characters which don't exist in a language set" are a slightly different problem from "characters which exist and cause bad things to happen", but yeah, that's a problem too.

      Of course, depending on how Unicode characters are handled, you might end up getting undesired characters in ASCII input which might end up causing the latter problem, but that's more of a side-effect.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    156. Re:Perfection Has a Price by Jason1729 · · Score: 1

      The software of yester-year ran largely on single threaded operating systems, didn't have to interact with the internet or defend against attacks originating from it, had to manage miniscule feature and data sets, and was still buggy.

      And the modern multi-threaded operating systems provide an API to do all of that for you. It's is no more complex for the programmer. That's like saying it's harder to drive now than it was 80 years ago because the car has so much onboard electronics, a more powerful engine, etc. When the truth is it's so much easier to drive now, you don't have to crank the engine, you have a radio, etc.

      Complex systems have more bugs, modern systems are more complex.

      Taking this as self-evidence is absolute BS. Complex systems *should* be compartmentalized and abstracted with each compartment and layer of abstraction properly tested.

    157. Re:Perfection Has a Price by eclectechie · · Score: 1

      I've never been a user of a mainframe system, and I understand they were coded to be a lot more reliable than desktop class microcomputers. But having started using computers in the early 80's as a small child, and seeing where we are now, there's just no comparison.

      I was programming the IBM System/34 in 1981.

      If my program produced incorrect output, or failed to compile, the first thing I did was check my code for errors. Why? Because it was always my own coding error that caused the problem.

      If there were any errors in the implementation of either the hardware or the software of that System/34, I never found any of them. I didn't find my first platform bug (an issue in SEU on an AS/400, if I recall correctly) until about 1988 or 1989.

      I'm not coding for those platforms any more. Today when I experience incorrect output from my programs, I immediately suspect the platform implementation. And often, it is the platform implementation, not my source code. That was to me utterly unthinkable on any mainstream platform before about 1985.

      (Actually, in my experience there is an exception to this miserable situation. OpenBSD is like a 1980's IBM System/38: everything is documented; the documentation is findable, complete, correct, and matches the behaviour of the documented system; and, with very,very few exceptions, everything works exactly as intended. That's why I use it, and that's why my name is on the donations page.)

      --
      "The empty vessel makes the greatest sound." -- William Shakespeare; Henry V, 4. 4
  2. a book never written by jollyreaper · · Score: 5, Funny

    Fred Brooks's 'The Mythical Man-Month',

    I read that as "the Mythical Man-Moth." I bet that would be a great book.

    --
    Kwisatz Haderach
    Sell the spice to CHOAM
    This Mahdi took Shaddam's Throne
    1. Re:a book never written by otis+wildflower · · Score: 1

      I read that as "the Mythical Man-Moth." I bet that would be a great book.

      Or a movie?

      Where Richard Gere is drawn to a small West Virginia-based software consultancy, whose master hacker, living unseen in a locked, windowless office, demands a constant flow of wool sweaters be slipped under the door.. All wonder how so much code can be written so quickly..

    2. Re:a book never written by LMacG · · Score: 2, Funny
      --
      Slightly disreputable, albeit gregarious
    3. Re:a book never written by FurtiveGlancer · · Score: 1

      Perhaps it's a reference to Arthur from "The Tick" How can one forget a "superhero" with the battle cry of: "Not in the face! Not in the face!"?

      --
      Invenio via vel creo
    4. Re:a book never written by jd · · Score: 1

      The Man-Moth is not mythical. I saw him only this morning, chewing on people's jackets. He's not keen on the jackets of managers - he complains they're tasteless. Man-Moth is a moth that got bitten by a radioactive man and has acquired supermothian powers of wearing digital watches and burping in front of the television.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    5. Re:a book never written by nine-times · · Score: 1

      The Man-Moth is not mythical. I saw him only this morning, chewing on people's jackets.

      Well that's why they're specifying the "Mythical Man-Moth" instead of the "Real Man-Moth." They're different, mainly in that the mythical one only exists in myth.

    6. Re:a book never written by Anonymous Coward · · Score: 0

      Here, above,
      cracks in the buldings are filled with battered moonlight.
      The whole shadow of Man is only as big as his hat.
      It lies at his feet like a circle for a doll to stand on,
      and he makes an inverted pin, the point magnetized to the moon.
      He does not see the moon; he observes only her vast properties,
      feeling the queer light on his hands, neither warm nor cold,
      of a temperature impossible to records in thermometers.

                          But when the Man-Moth
      pays his rare, although occasional, visits to the surface,
      the moon looks rather different to him. He emerges
      from an opening under the edge of one of the sidewalks
      and nervously begins to scale the faces of the buildings.
      He thinks the moon is a small hole at the top of the sky,
      proving the sky quite useless for protection.
      He trembles, but must investigate as high as he can climb.

                          Up the faÃades,
      his shadow dragging like a photographer's cloth behind him
      he climbs fearfully, thinking that this time he will manage
      to push his small head through that round clean opening
      and be forced through, as from a tube, in black scrolls on the light.
      (Man, standing below him, has no such illusions.)
      But what the Man-Moth fears most he must do, although
      he fails, of course, and falls back scared but quite unhurt.

                          Then he returns
      to the pale subways of cement he calls his home. He flits,
      he flutters, and cannot get aboard the silent trains
      fast enough to suit him. The doors close swiftly.
      The Man-Moth always seats himself facing the wrong way
      and the train starts at once at its full, terrible speed,
      without a shift in gears or a gradation of any sort.
      He cannot tell the rate at which he travels backwards.

                          Each night he must
      be carried through artificial tunnels and dream recurrent dreams.
      Just as the ties recur beneath his train, these underlie
      his rushing brain. He does not dare look out the window,
      for the third rail, the unbroken draught of poison,
      runs there beside him. He regards it as a disease
      he has inherited the susceptibility to. He has to keep
      his hands in his pockets, as others must wear mufflers.

                          If you catch him,
      hold up a flashlight to his eye. It's all dark pupil,
      an entire night itself, whose haired horizon tightens
      as he stares back, and closes up the eye. Then from the lids
      one tear, his only possession, like the bee's sting, slips.
      Slyly he palms it, and if you're not paying attention
      he'll swallow it. However, if you watch, he'll hand it over,
      cool as from underground springs and pure enough to drink.

    7. Re:a book never written by azenpunk · · Score: 1

      me too, i pictured godzilla and mothra in an epic battle while waiting for code to compile.

    8. Re:a book never written by untorqued · · Score: 1
    9. Re:a book never written by lawpoop · · Score: 1
      --
      Computers are useless. They can only give you answers.
      -- Pablo Picasso
    10. Re:a book never written by Anonymous Coward · · Score: 1, Funny

      I read that as "the Mythical Man-Moth." I bet that would be a great book.

      Don't be fooled. The Man-Moth is no myth.

    11. Re:a book never written by Anonymous Coward · · Score: 0

      Yep. Perdido Street Station by China Meville. Damn good book.

  3. Don't forget peer review. by Anonymous Coward · · Score: 0

    It would have avoided the embarrassing typo of 15, when in fact the article states 25. Oops!

  4. Top 15? by Anonymous Coward · · Score: 0

    Someone must be counting in the wrong number base or something, because the article clearly states 25 in about a million (in base 400) places.....

  5. When I was breaking in by PingXao · · Score: 5, Insightful

    In the early '80s there were no "older" programmers unless you were talking mainframe data processing. On microprocessor CPU systems the average age was low, as I recall. Back then we didn't blame poor software on "youthful programmers". We blamed it on idiots who didn't know what they were doing. I think it's safe to say that much hasn't changed.

    1. Re:When I was breaking in by Skapare · · Score: 5, Insightful

      This is true with any group. There are geniuses and idiots in all groups. The problems exist because once the supply of geniuses have been exhausted, businesses tap into the idiots. And this is made worse when employers want to limit pay across the board based on what the idiots were accepting. Now they are going overseas to tap into cheaper geniuses, which are now running out, and in the mean time, lots of local geniuses have moved on to some other career path because they didn't want to live at the economic level of an idiot.

      --
      now we need to go OSS in diesel cars
    2. Re:When I was breaking in by 77Punker · · Score: 5, Interesting

      After working 3 months at my first programming job, the other two developers quit which left just me. I felt inadequate until I started interviewing other programmers to fill in the gap. Apparently lead developers with 10 years of experience can't solve the simplest programming problems, explain how databases work, or explain OOP. I'm convinced that most software sucks because most people writing it have no idea what they're doing and shouldn't be allowed to touch a computer. I'm currently in my 5th month at the same job and we've got someone good who will start soon, but it took a long time to find even one competent developer.

    3. Re:When I was breaking in by Opportunist · · Score: 5, Interesting

      Quite dead on. But the difference is that today, with all the RAD tools around, you have a fair lot of "programmers" who don't even know what they're doing and get away with it. They got some course, maybe at their school (and that's already the better ones of the lot), maybe as some sort of an attempt to get them back onto a job from their unemployment services, and of course tha intarwebz is where da money is, so everyone and their dog learned how to write a few lines in VB (or C#, the difference for this kind of code molesters is insignificant) and now they're let loose on the market.

      Then you get hired by some company that signed up those "impressively cheap programmers, see, programmers needn't be horribly expensive" when the project goes south because deadlines lead to dead ends but no product, and you're greeted with code that makes you just yell out WTF? You got conditional branches that do exactly the same in every branch. You get loops that do nothing for 90% of the loop time and when asked you just get a blank stare and a "well, how do you think we could count from 80 to 90 besides counting from 0 to 90 and 'continue;' for 0-70?", because that's how they learned it and they never for a nanosecond pondered just WHAT those numbers in the 'for' block meant. And so on.

      Granted, those are the extreme examples of people who learned programming like a poem. By heart. They have a hammer as a tool, so every problem has to be turned into a nail. But you'd be amazed at the blank stares and "what do I need that for?" when you ask some of those "programmers" about hash tables (include snide joke about Lady Mary Jane here...) or Big-O notation. And we're talking people who are supposedly able to write a database application here.

      This is the problem here. It's not youthful programmers. It's simply people who know a minimum about programming and managed to trick some HR goon into believing they could actually do it.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    4. Re:When I was breaking in by fishbowl · · Score: 5, Funny

      >There are geniuses and idiots in all groups.

      Most of both groups are within two standard deviations of a norm. Your idiots are probably smarter than you think and your geniuses are probably not as smart as you'd like to believe.

      --
      -fb Everything not expressly forbidden is now mandatory.
    5. Re:When I was breaking in by frosty_tsm · · Score: 2

      I'm convinced that most people presenting themselves as lead developers in interviews are far from it. There's a reason why thedailywtf.com has a "Tales from the Interview" section.

    6. Re:When I was breaking in by Tom · · Score: 1

      No, but there is a fairly high correlation between "young" and "idiot".

      The older people have had more time for mistakes, and more opportunities to learn from them. Also, they have often learnt the most important lesson: You don't always know better, and sometimes what looks like sheer stupidity has a reason to it that you just don't know.

      There is, however, another kind of stupidity that is more often present among older people. That of being stuck to the "we've always done it like that" way. It is just less common (they've also had time to thin their ranks out) and more obvious, so easier to avoid.

      Honestly, after several companies and experiences from excellent to horrible, I'm fairly sure that you can show me the people in your IT department and I can tell you if your IT sucks. And age is one factor.

      --
      Assorted stuff I do sometimes: Lemuria.org
    7. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Have you ever read "Blink"? If you had maybe you'd understand why someone with 10 years experience sometimes has trouble eith explaining how a database works or explaining OOP. Regarding "simplest programming problems", define simple.

    8. Re:When I was breaking in by Anonymous Coward · · Score: 0

      When they went overseas, they only went for cheap. Geniuses or idiots never came into it, so we got lots of idiots. I mean, if the code we had to fix every time it came back from overseas was the result of geniuses, I'm very scared of what the idiots would produce.

    9. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Keep in mind that only people looking for jobs are interviewing. Theoretically your best developers are employed, and their employers don't want to lose them.

      That said, people get in a routine doing only what their company needs. If your software development job is working in Excel and Access every day, you could very easily get paid to do that for 10 years and have no idea about SQL or compilers, for instance.

      Hiring often means finding someone who is a good fit for the company, works well with others, and is interested or motivated enough to learn. From there you can always teach them your company's arcane mixture of software.

    10. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Agreed.
      Last 'genius' I worked with made a complicated reporting program that worked automatically with some minor maintenance (flushing out the old data when Access hit row limits... we didn't have a choice on the tools).

      When he left the tool stopped working as there was 0 documentation and no code comments.

      He left to start up his own business selling custom implementations of a design toolkit he'd produced but hadn't had any pickup sales after a couple months.

      The program he left worked wonderfully and was incredibly complicated until he wasn't there due to poor coding practice with documentation/comments to allow others to manage the tool.

    11. Re:When I was breaking in by 77Punker · · Score: 3, Interesting

      "Write a function to sum all the numbers from 0 to 100"

      Every code question I ask is about that simple. The solutions I get to EASY questions are almost always really stupid, incorrect, or get answered with "I don't know how to do that"

    12. Re:When I was breaking in by rtechie · · Score: 0, Troll

      maybe at their school

      Actually, I tend to have a dim view of those that took a few classes in computer programing and think they're a programmer.

      If I was being real, I mean really real, my interview would consist of one question:

      "When did you code your first C application?"

      If it was any older than 12 (twelve), I'd reject them. *I* did this, and I don't even consider myself to be a programmer.

      Experience has taught me that high-school dropouts with a passion for programming are generally LIGHT YEARS beyond people who aren't passionate that scraped through a BA in Computer Science. The dropout is far more likely to have real experience using software to solve real problems.

      Self-taught programmers are almost always superior to those that have learned in a class. They're "doing it the hard way" and the extra effort shows.

    13. Re:When I was breaking in by PeanutButterBreath · · Score: 1

      I felt inadequate until I started interviewing other programmers to fill in the gap.

      Okay but how did you make the transition from inadequate to qualified to determine the adequacy of others? You say that developers with 10 years experience can't explain things to the satisfaction of some one with 5 months experience? That proves nothing coming when it comes from the latter.

    14. Re:When I was breaking in by Tom · · Score: 1

      But the difference is that today, with all the RAD tools around, you have a fair lot of "programmers" who don't even know what they're doing and get away with it.

      Mod parent up. Twice!

      That's the exact problem we are having. When I was at university, as an assistant in the C programming courses, I made it a habit to enter "abc" or just return or whatever when the program asked for an integer, and it broke those poor students programs left, right and center.

      I never thought I'd see that kind of beginners' mistakes after university. Boy was I wrong!

      So, if I'll ever get to make those decisions, I would not hire a programmer without a code example, and a thorough search for the kind of mistakes that you simply should not make unless you're still in school.

      --
      Assorted stuff I do sometimes: Lemuria.org
    15. Re:When I was breaking in by SpacePunk · · Score: 1

      Do you specify the language? What if someone wrote that in basic or Forth?

    16. Re:When I was breaking in by 77Punker · · Score: 1

      Well, I started with the questions that I was asked in the interview for my own job. A lead developer should be able to fulfill the required abilities of his junior developer, shouldn't he?

    17. Re:When I was breaking in by clone53421 · · Score: 1

      Piece of cake. Start debug.exe and assemble and run:

      xor ax,ax
      xor bx,bx
      ;_loop
      inc bx
      add ax,bx
      cmp bx,64 ;64 hex = 100 decimal
      jb 0104 ;_loop
      call 0114 ;_printInt
      mov ax,4c01
      int 21 ;return to DOS
      ;Prints the value in AX to STDOUT in decimal
      ;_printInt
      mov bx,ffff
      mov cx,000a
      mov byte ptr [013f],30 ;_intTemp
      ;_printLoop1
      xor dx,dx
      div cx
      or dl,30
      inc bx
      mov [bx+013f],dl ;_intTemp
      cmp ax,0000
      jnz 011f ;_printLoop1
      mov ah,02
      ;_printLoop2
      mov dl,[bx+013f] ;_intTemp
      int 21
      dec bx
      cmp bx,ffff
      jnz 0132 ;_printLoop2
      ret
      ;_intTemp
      ;This is a stack to hold the digits before printing them
      db "65535"

      The answer is 5050.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    18. Re:When I was breaking in by 77Punker · · Score: 1

      Any language (or pseudocode) he cares to use. If he picked something really odd (nobody did), I'd ask him to explain how it works. Explaining how it works counts for just as much as a good section of code.

    19. Re:When I was breaking in by David+Gerard · · Score: 1

      Great programmers are famously a hundred (not exaggerated) times as productive as mediocre ones.

      --
      http://rocknerd.co.uk
    20. Re:When I was breaking in by AuMatar · · Score: 1

      Its possible that he's the problem, but as someone with 7 years experience who does a good amount of interviewing others- there's some really brain dead people out there. I've had interviews where I've asked a question and even ended up giving them algorithms and they still couldn't code it. I seem to run a ratio of 3 trainwrecks and 5 unqualified but not totally horrible candidates to every prospect.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    21. Re:When I was breaking in by wgaryhas · · Score: 1

      Would you expect a brute force answer using loops, or the much faster single line equation?

      int SumNumbers(int x){
      x * (x + 1) / 2
      }

      --
      "For every complex problem, there is a solution that is simple, neat, and wrong." - H.L. Mencken
    22. Re:When I was breaking in by diablovision · · Score: 1

      I hate code written by "geniuses." It can often be incomplete, incomprehensible, and dripping with disdain for those poor unfortunate souls who can't comprehend it. Often it is so fast when it doesn't matter and too slow when it does, and it's never the straightforward, simple solution. God forbid you should find a case it doesn't handle or an input that produces incorrect results, or worse--a race condition!

      If you find one of these "geniuses," whack them over the head with their keyboard. Tell 'em it was from me.

      --
      120 characters isn't enough to explain it.
    23. Re:When I was breaking in by Neeperando · · Score: 1

      Does this mean that even though I'm a competent (dare I say, good) developer, that when I'm applying for a job I need to claim I'm a lead developer with 10 years experience to get an interview? Thanks for the tip!

      Signed, a programmer whose only work experience is 3 years working on an in-house database in an arcane language no one has heard of.

      --
      Being a computer scientist means you tell people how computers should work, not that you know how they actually work.
    24. Re:When I was breaking in by Anonymous Coward · · Score: 1, Informative

      er....what you have described is code written by an idiot. Any idiot can be a self-proclaimed genius. That doesn't actually make him a genius, however.

    25. Re:When I was breaking in by wgaryhas · · Score: 2, Interesting

      That should have been:

      int SumNumbers(int x){
      return x * (x + 1) / 2;
      }

      --
      "For every complex problem, there is a solution that is simple, neat, and wrong." - H.L. Mencken
    26. Re:When I was breaking in by mrsquid0 · · Score: 1

      In general people are not as dumb as you think they are, and not as smart as they think they are.

      --
      Just because you are paranoid does not mean that no-one is out to get you.
    27. Re:When I was breaking in by Surt · · Score: 5, Insightful

      Do you care whether they write a loop or return (n*n+1)/2? (where n=100 in this case?)

      (curious whether you are looking for the person who knows the clever solution, or the guy who can write a basic loop).

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    28. Re:When I was breaking in by 77Punker · · Score: 2, Informative

      That's a very good answer, but any good answer would be one that didn't involve declaring an array of all the number between 0 and 100 and then iterating over the array. Yes, that's a typical solution.

    29. Re:When I was breaking in by Anonymous Coward · · Score: 1, Informative
      "When did you code your first C application?" If it was any older than 12 (twelve), I'd reject them. *I* did this, and I don't even consider myself to be a programmer.

      That is a bit elitist. Although C was available when I was 12, it wasn't many years old, and the K&R book had not been published. So I learned first on Basic (on a mainframe!), and when it became possible to build (!) home computers, on some strange game-language (chip-8?), and then machine code. By the age of 16 or so I had written my own assembler, and sold my first programs - written in directly in hexadecimal machine code

      I agree that there is a lot to be said for us self-taught programmers. But I must admit that I have seen some good programmers who started late, and learned it all in the school.

    30. Re:When I was breaking in by Colonel+Korn · · Score: 1

      In the early '80s there were no "older" programmers unless you were talking mainframe data processing. On microprocessor CPU systems the average age was low, as I recall. Back then we didn't blame poor software on "youthful programmers". We blamed it on idiots who didn't know what they were doing. I think it's safe to say that much hasn't changed.

      I still hear stories from friends who programmed in the 80s and designed hardware in the 60s-70s about how the youthful programmers who had never touched hardware were idiots who didn't know what they were doing.

      --
      "I zero-index my hamsters" - Willtor (147206)
    31. Re:When I was breaking in by Colonel+Korn · · Score: 1

      >There are geniuses and idiots in all groups.

      Most of both groups are within two standard deviations of a norm. Your idiots are probably smarter than you think and your geniuses are probably not as smart as you'd like to believe.

      The most widely used definition of genius in the US is an IQ more than 2 standard deviations above average. I submit to you that no geniuses are within 2 standard deviations of the norm.

      --
      "I zero-index my hamsters" - Willtor (147206)
    32. Re:When I was breaking in by 77Punker · · Score: 2, Interesting

      I'm just looking for a guy who can solve the problem at all and explain how he solved it. You know, just trace it by hand and tell me why he decided to approach the problem the way he did. I tend to go for "no wrong answer" types of questions. I count this question in that group since the only wrong answers are "I can't do it" or the interviewee writes an obviously wrong solution and can't trace his own code well enough to know that it's wrong even after having it explained to him.

    33. Re:When I was breaking in by powerlord · · Score: 1

      Sad to hear. Off the top of my head I can think of three different ways to answer that question though, depending on the context.

      Its comforting to hear that these are the sort of questions that get asked in interviews. I've been either lucky or unlucky enough to never have really gone on one (working in the field for ~12 years). I've usually just picked up a new job through a contact and have gotten hired entirely on the word of who was bringing me in (and a lite HR interview or two).

      --
      This space for rent. All reasonable inquiries will be entertained at proprietors discretion.
    34. Re:When I was breaking in by ishobo · · Score: 0, Troll

      Ten years is middle level in my book and not anywhere close to lead material. At my conpany, less than 3 years is entry level, 3-8 is junior, 8-20 is middle, 20+ is senior and all team leads have to come from this pool. I am an old timer; I remember when you could start as a computer operator changing data tapes and the like, slowly moving up the career ladder much like it is in other skilled trades. Now, young adults come out of college and expect $100k (in the SF Bay Area).

      I do not know which are worse, the folks that know they don't know or don't know they don't know.

      I usually give them a general knowldge test (and they have to get 100%) before we start on the technical skills, with questions such as 1) name five state capitols in the U.S., 2) name five countries in North America, 3) explain the theory of evolution as it applies to biology, 4) give an example of circular resasoning. Most people fail the test. The number one area folks need to work on is geography. I guess we need more maps in the U.S.

      --
      Slashdot - The great and glorious cluster fuck of Internet wisdom.
    35. Re:When I was breaking in by Anonymous Coward · · Score: 0

      echo count_to_n(100);
      echo count_to_n2(100);

      function count_to_n($n)
      {
              $temp = ($n > 0) ? count_to_n($n-1) : 0;

              return $temp + $n;
      }

      function count_to_n2($n)
      {
              $temp = 0;
              for( $i = 0; $i <= $n; $i++ )
              {
                      $temp = $temp + $i;
              }

              return $temp;
      }

      One to test the other. I try to write as much recursively in coding examples as possible. Either they realize I'm not an idiot, or I don't want to work for them...

    36. Re:When I was breaking in by TerranFury · · Score: 1

      f(x) = x*(x+1)/2

      My algorithm runs in O(1) time. Gauss FTW!

      (But yes, the loop version is the first thing I program, after "Hello World," whenever I look at an unfamiliar language.)

    37. Re:When I was breaking in by Opportunist · · Score: 4, Insightful

      What you describe is a wannabe-genius. A showoff. Not a genius.

      The code that makes me mutter "that's pure genius" is usually not the kind of code you can't understand or is winded, twisted and a worthy entry for the obfuscated C-Code contest. It's usually code that is brilliantly simple yet very functional, fast and easy to understand.

      Genius code isn't the code that takes a year to read and a decade to understand. It's the code that makes you wonder why you didn't come up with it because it, well, looks so simple that it's pure genius. A good example of "pure genius" code is the square root function that relies on the quirks of the IEEE754 format. Works only on 32bit little endian, but there it works and is fast.

      Pure genius code doesn't mean it has to be complicated, quite the opposite. "Pure genius" is what it mostly attributed to finding new ways to do something in a better way. Not making it overly complicated to look like you did something great.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    38. Re:When I was breaking in by Chabo · · Score: 3, Insightful

      Well that's unfair...

      First off, I started off as self-taught, then moved on to get a B.S. in Computer Science (is there a school that offers a B.A.?). Would you fault me for getting an education?

      Second, I started teaching myself at age 18. You'd reject me simply because I started six years later?

      Just because it's harder to learn something later in life doesn't mean you can't learn it, whether it be French, Italian, or C.

      --
      Convert FLACs to a portable format with FlacSquisher
    39. Re:When I was breaking in by clone53421 · · Score: 1

      I hated C. I didn't want to mess with null-terminated strings, and none of the books gave the slightest mention of colours, graphics modes, or cursor control. "Hello World" is entertaining, but printf was ridiculously complicated compared to the simplicity of BASIC's PRINT statement. In short, I learned to do "cool" stuff in BASIC (graphics and colours, not to mention sound) and when I decided I should try learning C I quickly discovered that nothing I read would tell me how to do similar things in the C language. Did I mention that BASIC implemented strings natively, whereas strings in C were awful? I think so, but it bears repeating.

      Considering how much BASIC was capable of, especially since it came with pre-written routines to do routine things such as reposition the cursor, clear the screen, change the print colour, or enter a graphics mode and draw shapes on the screen. My only complaint was lack of mouse support – and as luck would have it I discovered a mouse routine on the internet (all it did was copy its four arguments into AX, BX, CX, and DX, call INT 33h, and copy the registers back to the arguments – but I didn't know that at the time), invoked using the CALL ABSOLUTE statement IIRC. After that, my only complaint was that BASIC was slow, and even then the advances in technology were more or less adequate to keep me happy. I did have a BASIC compiler – and the binaries it created didn't require runtimes, which I liked. (Well, I also wished it supported higher resolutions and colour depths, but that was more of an aesthetic concern and it wasn't really the end of the world for me.)

      I didn't even touch another language until I started playing with JavaScript/HTML, which was probably in the late 90's sometime (I remember Netscape Navigator, and I remember when DHTML was just starting to catch on – discovering that I could change the page's background colour, using Javascript, after the "layout" had completed was pretty cool). At community college I had to take a class on Fortran (yes, they actually taught that), which didn't transfer to the university, so I finally had to take C++, although I skipped the "intro to programming" C++ class. (Program flow, control structures, and basic data manipulation isn't really that different from language to language, and I decided it would be a waste of my time – and money.) I started right into the second C++ class, which taught more C++ specific things as structs, classes, pointers, and templates.

      I also took data structures & algorithm analysis in C++. For some of my other classes I had to write programs in MATLAB, Excel, 80x86 assembly (shameless plug: see my journal), MIPS assembly, assembly for the 68HC12 embedded microprocessor, and I did one project using Java's Swing toolkit (if I'm not forgetting anything...). On my own (outside of classes) I picked up some PHP and SQL.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    40. Re:When I was breaking in by Amazing+Quantum+Man · · Score: 1

      C wasn't invented till I was 18, you insensitive clod!

      --
      Fascism starts when the efficiency of the government becomes more important than the rights of the people.
    41. Re:When I was breaking in by michaelmalak · · Score: 1

      Sorry, C compilers weren't commonly available when I was 12. I was, however, a published programmer for the TI-59 calculator (1K of RAM) at the age of 11.

    42. Re:When I was breaking in by powerlord · · Score: 1

      If it was any older than 12 (twelve), I'd reject them. *I* did this, and I don't even consider myself to be a programmer.

      Not disagreeing, but I'd point out that a number of us might not have had access to a computer when we 12 (mainframe access was tough and more restricted in those days I guess).

      --
      This space for rent. All reasonable inquiries will be entertained at proprietors discretion.
    43. Re:When I was breaking in by Anonymous Coward · · Score: 1, Informative

      return (n*n+1)/2

      You mean n*(n+1)/2

    44. Re:When I was breaking in by Anonymous Coward · · Score: 0

      5000.5 you say.....

    45. Re:When I was breaking in by Anonymous Coward · · Score: 0

      "Write a function to sum all the numbers from 0 to 100"

      function Sum0to100: integer;
      begin
      Result := 100 * 101 / 2;
      end;

      Who was that mathematician again?

    46. Re:When I was breaking in by sanosuke001 · · Score: 1

      wtf... I know I logged in for that /facepalm

      --
      -SaNo
    47. Re:When I was breaking in by Gordonjcp · · Score: 2, Insightful

      Sometimes the right answer is "do it the stupid way and buy a faster computer"...

      Look at it this way, if I cost £50 an hour, and a new fast-as-blazes CPU costs £100, then will two hours of my work make as much improvement as putting a faster chip in? If not, I can go and do some useful coding and you get new shiny to play with.

    48. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Do you care whether they write a loop or return (n*n+1)/2? (where n=100 in this case?)

      I believe you left out some parentheses. The function would return (n*(n+1))/2.

    49. Re:When I was breaking in by 16384 · · Score: 1

      "When did you code your first C application?" If it was any older than 12 (twelve), I'd reject them.

      Uhmmm, I had my first computer at 11, a ZX Spectrum+, and didn't use a real PC until a few years latter. Other people may have had other interests, and only started programming latter in life. One of the best programmers I know started using computers when he was 15. Your test is not good at all. I agree with the rest, self-learning is essencial to be a good programmer.

    50. Re:When I was breaking in by ucblockhead · · Score: 1

      Bastard. When I was twelve, my family couldn't afford a PDP-11!

      --
      The cake is a pie
    51. Re:When I was breaking in by Anonymous Coward · · Score: 1, Informative

      "When did you code your first C application?"

      If it was any older than 12 (twelve), I'd reject them.

      Those of us who were twelve before the Internet pervaded every home would not have had access to a C (or any language) compiler. QBasic came with MS-DOS at the time (early 1990s), and how many parents would lay out the hundreds of dollars for a piece of software they don't understand? I personally was lucky to have a programmer for a parent, so I had a modem and BBS access (with all the pirated Borland products you could ask for), but most kids didn't, and few public schools had CS curricula (mine sure didn't). Believe it or not, but there was a time when all software wasn't free and instantly available.

      Something tells me you're likely no older than 20, and hence unlikely to be interviewing anyone for development positions, which is a good thing as you are clearly unfit for that role.

    52. Re:When I was breaking in by Anonymous Coward · · Score: 0

      What do you believe is the right answer? Do you value people memorizing the gauss formula or constructing a simple loop? Either way I don't see how exactly that evaluates any programming skill or problem solving skill whatsoever.

      It's due to HRs pulling a fast one because they believe they are being clever that unskilled programmers get hired.

    53. Re:When I was breaking in by Bloke+down+the+pub · · Score: 0, Flamebait

      Oxford and Cambridge (they're in England) do mostly BAs, even for subjects like maths, physics and enginerering. Why is anybody's guess but it's probably because they're a bunch of tossers.

      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    54. Re:When I was breaking in by SlashRdr · · Score: 1

      Having passion and a related formal education aren't mutually exclusive.

      I don't think you will see too many people going into CS these days in the west solely for an easy paycheck, unlike during the tech boom in the late 90s.

      The boom mentality seems to be alive and well in India though. I suffered through interviewing several people from a commercial tech training school there last year that had no clue... people from other walks of life, like an arts grad, hoping to magically get a high pay tech job by taking a few classes.

    55. Re:When I was breaking in by sanosuke001 · · Score: 1

      I don't think they expect $100k jobs because they're great programmers, I think it's more trying to live on your own while paying ridiculous student loans off.

      When your loans are $1000/mo and housing is $1000/mo, you can't live on 45-50k/year.

      --
      -SaNo
    56. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Probably around 15 for me, because I hadn't managed to get hold of a C compiler until then. The Internet not being around except in universities in those days made this task a lot more difficult.

      I'd been programming 80286 code using DEBUG.EXE (no assembler either) since about 10 or 12 - but of course you won't have asked me that.

    57. Re:When I was breaking in by internerdj · · Score: 1

      A few months after being hired to my first job, I was out to lunch with a coworker who was also one of my interviewers. It came up that I was the only candidate who had no experience and the only one who came up with answers to: Write a program to do something, anything. And also, write an IP address, any IP address.

    58. Re:When I was breaking in by Anonymous Coward · · Score: 2, Funny

      int f() { return 5050; } ?

    59. Re:When I was breaking in by 77Punker · · Score: 1

      It doesn't actually evaluate programming skill, it just checks to see if it exists. It's not the most important part of my interviewing. Basically the only role it plays for me is that if someone can't solve the problem, they probably can't solve any problems. If they pass, I've got plenty of open-ended non-code questions that should reveal more about their abilities.

    60. Re:When I was breaking in by PeanutButterBreath · · Score: 1

      Well, I started with the questions that I was asked in the interview for my own job. A lead developer should be able to fulfill the required abilities of his junior developer, shouldn't he?

      There are wrong answers, but there are also poorly framed questions.

      As for lead fulfilling the required abilities of junior -- not necessarily. In 10 years I have found no correlation between effective leadership and leaders who can fulfill the abilities of their juniors (trends towards the opposite, IME). Good leaders are effective advocates, delegators and motivators. There is a lot more to developing software than coding (hence this thread).

      Frankly, I think your organization put you in a preposterous situation, and I wish you the best of luck. At least they are giving you an opportunity of sorts. However, I have witnessed unrealistic expectations founded on specious reasoning drag software down on several occasions.

    61. Re:When I was breaking in by CorporateSuit · · Score: 4, Funny

      "Write a function to sum all the numbers from 0 to 100"

      easy

      dim a a = 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25;
      a = a+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50;
      a = a+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75;
      a = a+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100; print a;

      --
      I am the richest astronaut ever to win the superbowl.
    62. Re:When I was breaking in by earlymon · · Score: 1

      I set a policy in interviews over 20 years ago and it has served me well. Whenever the applicant announces that he has X years of any kind of programming experience, I always warn them that we are about to find out if they've had X years of experience or One Year of Experience, X Times.

      --
      Pathological kinda promises Path + Logical - but instead, you get stuck with pathetic.
    63. Re:When I was breaking in by clone53421 · · Score: 1

      I'd been programming 80286 code using DEBUG.EXE (no assembler either) since about 10 or 12 - but of course you won't have asked me that.

      Really? What sort of things have you done? I haven't started messing with that until lately... we used DEBUG in one of my assembly language classes since the assembler didn't have its own debugger.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    64. Re:When I was breaking in by plague3106 · · Score: 1

      I disagree. A lead developer is still a developer, and their duties would likely still include, you know, developing. At least every company I've ever worked at had that as the lead developer's role. What you're describing is a manager.. not a lead developer.

    65. Re:When I was breaking in by againjj · · Score: 2, Insightful

      "Write a function to return the sum of all the numbers from 0 to 100" is even more fun. Because many people, while getting the "return n(n+1)/2" solution, miss "return 5050".

    66. Re:When I was breaking in by clone53421 · · Score: 1

      Although I wouldn't re-calculate a value at runtime if it should be a defined constant, I also wouldn't dream of answering that question with return 5050;. That's just me, I guess... the number of examiners who are clueless enough that they meant to calculate the value is much larger than the number of examiners who wanted to see if you'd notice they just asked for the answer. It's pretty obvious that you're better off giving the examiner what he or she more likely wants.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    67. Re:When I was breaking in by UnknownSoldier · · Score: 1

      Uh, you do know Sum(i=1,n,i) = n*(n+1)/2, but yeah, iteration works too...

    68. Re:When I was breaking in by trolltalk.com · · Score: 1

      That's a very good answer, but any good answer would be one that didn't involve declaring an array of all the number between 0 and 100 and then iterating over the array. Yes, that's a typical solution.

      I really REALLY hope you're joking, and that nobody actually proposed creating an array of numbers and adding up the array . . .

      Just for fun, if / when anyone proposes that, why not give them the task of summing up the total number of different combinations of numbers to a 6/49 or other related lottery . . . how many arrays of arrays of arrays of ... gak! Talk about brain-dead "solutions."

    69. Re:When I was breaking in by Bromskloss · · Score: 1

      Do you care whether they write a loop or return (n*n+1)/2? (where n=100 in this case?)

      Ugh. It hurts, but you give me no choice but going for the loop.

      --
      Swedish plasma phys. PhD student; MSc EE; knows maths, programming, electronics; finance interest; seeks opportunities
    70. Re:When I was breaking in by Richard+Steiner · · Score: 1

      Heck, C wasn't even taught when I was in college (1981-1987) because we used PCs, UNIVAC 1100's, and VAXen in school rather than UNIX boxes, and I'd written code in several BASIC variants, several assemblers, Pascal, PL/1, FORTRAN, COBOL, SNOBOL, SSG, and Forth before I ever saw a line of C code. :-)

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    71. Re:When I was breaking in by Anonymous Coward · · Score: 0

      "When did you code your first C application?"

      If it was any older than 12 (twelve), I'd reject them.

      Then you'd miss out on a fairly significant number of decent coders. I cut my teeth on BASIC (yes, I know; I got better.) Progressed on to Pascal. Didn't actually learn C until I hit university.

      Those were the languages that were readily available. I didn't even have a computer at home until my father bought a 286. I would have been around 14 or 15 at that point (we're talking 1990 or so); there was no way that I could have learnt C before then.

      I'm not a genius. But I do know the meaning of big-O notation, hash tables, and other such things.

      Having said that, I do understand where you're coming from - I remember being asked by a fellow student why her code was seg faulting. Gee, maybe because you haven't initialised this pointer here - which any halfway competent coder would have picked up on inside a minute. And this was third year computer science. Sigh.

    72. Re:When I was breaking in by plague3106 · · Score: 1

      Heh... /. bug.

      Anyway... technically your code proves that both functions give the same answer.. not that they give the RIGHT answer.

    73. Re:When I was breaking in by agrounds · · Score: 1

      Just out of curiosity, would you have accepted this?:

      perl -e '$c=0; for (0..100) {$c+=$_;}; print $c;'

      I mean.. how simplistic would you want it?

    74. Re:When I was breaking in by chill · · Score: 1

      Not only should you not get the job, the interviewer should write you one hell of a recommendation -- on the condition you take it to his biggest competitor.

      Thank the Lords of Cobol you didn't fake a loop using a GOTO statement and line numbers!

      --
      Learning HOW to think is more important than learning WHAT to think.
    75. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Shouldn't that be (n*(n+1))/2

    76. Re:When I was breaking in by PeanutButterBreath · · Score: 1

      What you're describing is a manager.. not a lead developer.

      Those are skills that a CEO, manager, team leader etc. should posses and be able to apply appropriately.

      Of course a lead developer should be able to develop. But what is the point of employing a "lead" if they are to spend their time on trivial tasks? And if that isn't to be their job, why make it the basis of determining their qualifications?

      This is like hiring a head chef and asking each applicant to prepare Rice-a-roni. Give me the applicant who says "WTF is this box for?"

    77. Re:When I was breaking in by beaviz · · Score: 1

      "When did you code your first C application?"

      If it was any older than 12 (twelve), I'd reject them. *I* did this, and I don't even consider myself to be a programmer.

      Hey that's totally unfair. I was like older than 30 (thirty) when I designed C. Well, I'll just go tease Bjarne some more. See ya.

      - Dennis Ritchie

    78. Re:When I was breaking in by againjj · · Score: 1

      "When did you code your first C application?"

      If it was any older than 12 (twelve), I'd reject them.

      Never. I wrote Pascal early on, and only learned C because I transfered into a school where CS1 used C. I very quickly went C++. Anyone older than I am will probably not be able to have done it either: home computers with C compilers were not exactly common in the 80's. Further, someone who has not found his passion in computer science until after becoming a teenager should be penalized why? Do note, I am assuming that when you say "application" you do not mean "program" -- applications are measured in KLOC, but programs are not necessarily.

      Second, you seem to be rather snobbish about school learning. While there are many people who learned their educated trade individually, most people went through school to do it. When skipping formal training in something, one risks forming bad habits that will haunt you through your life. Musical instrument teachers know this well. Often, those programmers that learn in a vacuum are those that cause so much grief later on when they do not understand best practices, or fail to bend to others' coding styles, or whatever.

      Last, yes, there are many people with a BS in CS that are incompetent. Similarly, there are many without them that are incompetent too. Making a snap judgment based on a degree or any other binary attribute is just stupid (unless it is "Do you plan to rip off our company?")

    79. Re:When I was breaking in by Nethemas+the+Great · · Score: 1

      I'd rather have the loop since it doesn't require something arcane where bugs are easily hidden and easily overlooked...

      Efficiency where it counts, elegance and clarity everywhere. You might be the author but it isn't your code, make sure others can maintain it.

      --
      Two of my imaginary friends reproduced once ... with negative results.
    80. Re:When I was breaking in by clone53421 · · Score: 1

      I had forgotten that, but if I change the program now I'll have to recalculate all the jump addresses. (Actually, I won't because I wrote a program that does that for me.)

      xor ax,ax
      mov ax,0064 ;64 hex = 100 decimal
      mov bx,ax
      inc bx
      mul bx
      mov bx,0002
      div bx
      call 0117 ;_printInt
      mov ax,4c01
      int 21 ;return to DOS
      ;Prints the value in AX to STDOUT in decimal
      ;_printInt
      mov bx,ffff
      mov cx,000a
      mov byte ptr [0142],30 ;_intTemp
      ;_printLoop1
      xor dx,dx
      div cx
      or dl,30
      inc bx
      mov [bx+0142],dl ;_intTemp
      cmp ax,0000
      jnz 0122 ;_printLoop1
      mov ah,02
      ;_printLoop2
      mov dl,[bx+0142] ;_intTemp
      int 21
      dec bx
      cmp bx,ffff
      jnz 0135 ;_printLoop2
      ret
      ;_intTemp
      ;This is a stack to hold the digits before printing them
      db "65535"

      The program will obviously fail if x*(x+1)/2 is larger than 65535 (DIVIDE OVERFLOW), but since I know it isn't I'm not going to try to use a DWORD instead of a word. (It successfully handles the case where x*(x+1) > 65535, though, because MUL and DIV work with AX:DX when your operand is 16-bit.)

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    81. Re:When I was breaking in by 77Punker · · Score: 1

      My Perl isn't particularly strong, but this looks like it works. That doesn't mean you have the job just yet because I have other questions to ask, but it looks like an answer that works. All I'm really looking for is evidence that you actually can write a computer program. There's more to the job, though.

      You need to have good enough social skills to make me want to work around you and you also need to be able to talk to customers on occasion and provide support. I've still got to ask if you know enough Linux to fix a problem with the server because our sysadmin only does Windows which means everything that isn't our DB backups, e-mail, or network is in my hands. It's actually kinda funny since he's a die hard Apple user that doesn't understand anything about UNIX, but claims his OS is so much better than Windows even though he doesn't really know how to use it and he can only administer Windows systems.

    82. Re:When I was breaking in by Anonymous Coward · · Score: 0

      I'd prefer them to write n*(n+1)/2, which gives the correct answer.

    83. Re:When I was breaking in by pintpusher · · Score: 1

      (is there a school that offers a B.A.?)

      OT, but yes. My school (Eastern Washington) does. It's a BA in CS Theory, designed for those moving on to grad school. I'm in the program because of three things:

      1. It's a shorter path to a degree, and interestingly, it's easier to shove more math into the degree with that option.

      2. It allows me to use my 4 quarters of french credit from a proficiency test years ago. (I guess that's part of the shorter path thing).

      3. I'm 38 y.o. and want to get back into programming and *don't* want to learn how to work in a chem lab. I mean it's definitely cool, but is a distraction from what I want to do at this point.

      My question is, does that make me less attractive to employers? or grad-schools? Maybe it does, but I'm hoping the real-world experience, and acquired work-ethic of being an adult will help balance that. We'll see.

      --
      man, I feel like mold.
    84. Re:When I was breaking in by bigstrat2003 · · Score: 1

      I do not know which are worse, the folks that know they don't know or don't know they don't know.

      Easy. The ones who don't know they don't know. They're often willfully ignorant of their weakness, and in that case, there's no hope for them. I find it's usually people who accept their lack of knowledge that can be taught.

      Of course, there's no shortage of people who don't know and don't care to learn, either, so nothing is guaranteed. Still, on balance, I'd say that those who know they don't know are more teachable.

      --
      "16MB (fuck off, MiB fascists)" - The Mighty Buzzard
    85. Re:When I was breaking in by clone53421 · · Score: 3, Insightful
      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    86. Re:When I was breaking in by nine-times · · Score: 1

      I'm convinced that most software sucks because most people writing it have no idea what they're doing and shouldn't be allowed to touch a computer

      I'm convinced that there's a sort of paradox when it comes to filling skilled jobs: the people doing the hiring are usually not in a position to evaluate whether the candidate can actually do the job.

      It's not always the case, but often when you're hiring someone for their expertise, it means that there's no one on your staff who already has that expertise. That put a severe limitation on your ability to vett the candidate, since they may know the answers to your questions better than anyone you have on staff, and yet still be giving you bad answers. Often, with highly technical issues, there isn't simply a "right" and "wrong" answer, but there's grades of rightness, including some dissent among some people. You could have the right basic idea, but still be far enough off to cause trouble.

      There's ultimately nothing on the resume that can tell you whether someone is a good candidate. There's no magic rule that can guarantee you that you find someone who knows what they're doing. This contributes to people getting into positions that they're not qualified to fill.

    87. Re:When I was breaking in by ClosedSource · · Score: 1

      I think that famous claim is off by a bit less than 2 orders of magnitude. Of course given that there's no comprehensive, widely-accepted definition of programmer "productivity", who knows?

    88. Re:When I was breaking in by shmlco · · Score: 1

      "If it was any older than 12 (twelve), I'd reject them..."

      Wish you'd reconsider that, as I was probably 40 or so before I got into C/C++. My first programing was done on an IBM System/3 (RPG, COBOL, FORTRAN, Assembly) located in the basement of my high school (6 semesters of CS, class of '75). Owned my own computer since '78.

      Have done the above, plus DEC PDP-8e assembly, DEC PDP-11 assembly, 6502 assem, 68K assem, a multitude of BASICs (including a couple of interpreters that I wrote myself), Forth (don't ask), Smalltalk, Pascal, Object-Pascal, C, C++, Java, Objective-C, CF, .NET, some PHP, and played with quite a few others here and there. (The Apple/Mac track is probably showing through.) Written languages, business software, commercial shrink-wrapped applications, client/server stuff, drivers, and, of course, web-based systems.

      Just goes to show that hard and fast rules run often up against boundary conditions... (grin)

      --
      Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
    89. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Really? I was probably able to write code in a dozen languages, long before I learned C. And probably years before you wore your first diaper. We didn't have PCs when I was 12.

    90. Re:When I was breaking in by ShadoxPrime · · Score: 0

      Do you care whether they write a loop or return (n*n+1)/2? (where n=100 in this case?)

      (curious whether you are looking for the person who knows the clever solution, or the guy who can write a basic loop).

      Not the burst your bubble but unless your programming language of choice has some quirky order of operations your answer would be incorrect. :P

    91. Re:When I was breaking in by ClosedSource · · Score: 1

      "The problems exist because once the supply of geniuses have been exhausted, businesses tap into the idiots."

      What makes you think that geniuses are hired first? In my experience friends and family are usually the first to be hired.

    92. Re:When I was breaking in by Have+Brain+Will+Rent · · Score: 1

      In the early '80s there were no "older" programmers unless you were talking mainframe data processing.

      And all the programmers who had been working on lab computers for more than a decade by then. Those machines were called mini-computers and they had reached the size/complexity of vaxen by the early 80's. And workstations had been around for a while by the early 80's as well.

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    93. Re:When I was breaking in by Opportunist · · Score: 1

      *whine*

      But when I was 12, computers that you could get a C compiler for weren't affordable! :)

      My interview (for the position of a malware analyst/reverse engineer) consisted (mostly) of this:

      pop ebx
      inc ebx
      push ebx
      retn

      Why would someone do this? And what do you do when you see this in a subroutine?

      I don't look at degrees. I don't look at work experience. Either is mostly irrelevant for this (rather specific, granted) field. I can neither use a top notch database programmer nor someone who blizzed through his master's in 2 years. I need people who can 'feel' code. Who enjoy the puzzle behind it, who can think outside of the box, who can see past the obvious. Most of the tricks can be taught, it's not rocket science. But it showed me two things instantly: Does the person know assembler? And is he able to deal with something he has (probably) not seen before and decypher its meaning?

      We hired the person who could answer this. And it was a damn good choice.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    94. Re:When I was breaking in by Shikaku · · Score: 1

      #include <stdio.h>
      int main(void){
         int i,sum=0;
         for(i=0;i<100;i++){
            sum+=i;
            sum++;
         }
         printf("The sum is %d\n",sum);
         return 0;
      }

      //While I agree the Gauss solution is the quickest and best solution to the problem, this is the most readable in my opinion.  It's the process of going through the sum I think people would want if it was really needed, where a special case could arise in the middle of the sum or something.
      //Also this is C.  Is it correct C though?

    95. Re:When I was breaking in by azenpunk · · Score: 1

      how many pretty decent coders that can produce solid, though non-genius, code would you turn down that way?

    96. Re:When I was breaking in by nabsltd · · Score: 1

      "When did you code your first C application?"

      If it was any older than 12 (twelve), I'd reject them.

      When the first edition of K&R came out, I was 14 years old. So, you're saying you would dump me because I didn't invent the language myself?

      I was writing FORTRAN programs by then, if that counts for anything.

    97. Re:When I was breaking in by squidfood · · Score: 1

      int f() { return 5050; } ?

      Too much overhead.
      #define SUM_0_100 5050

    98. Re:When I was breaking in by Opportunist · · Score: 1

      BASIC is shunned by many C enthusiasts, mostly for what you love it for: It hides the system from you. You get everything perfectly abstracted away from you and it gives you a "clean" interface to work with.

      This is perfect to get things done quickly. It's the worst thing you could have to deal with when you're trying to learn something.

      There is a reason why even today many training programs (not in programming, mostly in handcraft) start out with making you do the "manual" approach. Yes, there are machines that do it a lot better, faster, more exactly, but you have to know why things are the way they are. You have to understand whya machine starts to drill slowly and speeds up later, and you learn that by trying it by hand and noticing how your precious piece of wood splinters and cracks when you try to drill into it at full speed.

      It's the same with code. Everything starts to make a lot more sense and you are prone to fewer errors when you know why something is the way it is. That's why I consider RAD tools and script languages great for getting work done, but aweful when it comes to learning. Because you don't learn too much with them. You don't see the wiring under the board, you don't gain the insight into the how and why of your code, it's comfortably hidden away under the beautiful interface.

      That's all nice until you run into an error that somehow just doesn't make sense because you cannot figure out its reason. ByRef and ByVal are nice to see, the explanation is nice to read but it doesn't tell you the whole story behind the difference of passing a reference and a value. It's not just whether the variable can be manipulated in the subroutine...

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    99. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Well, let's see... Intel assembly. It looks like it pops off the return address, increments it, and pushes it back on the stack. As for why? I don't know. To screw up the program when retn is executed?

    100. Re:When I was breaking in by Anonymous Coward · · Score: 0

      void sumNumbersFrom0to100(void) {
                      int i, sum = 0;
                      for (i = 0; i<100; i++) sum += i;
      }

      How hard can it be to follow a simple request without adding something that wasn't asked for?

    101. Re:When I was breaking in by againjj · · Score: 1

      I am thinking more along the lines of how many different ways there are for solving a problem. The 5050 solution is an optimization. Missing a place where an expensive calculation can be replaced with a cheaper one is one that often happens. Normally the replacement is not nearly so obvious as this one, nor as simple, but replacing an O(n^2) op with an O(n log n) op is something that happens, which is really what the loop to the formula is, but it can be taken one step further. Seeing how far you can go in a direction before turning back is valuable. Often people err on the side of false generality, which can be harmful.

      Oh, and for the record, I would answer it three times, giving the loop, the formula, and the constant, with the constant last. You never know what the person is looking for, and any of the three could be the answer.

    102. Re:When I was breaking in by oliderid · · Score: 1

      I would not hire a programmer without a code example

      This is precisely what I do. I ask them to come with their USB key and to show me a piece of their code. It can be anything they wish I don't mind. I ask them to comment it. I won't say you don't need resume, but it is quite difficult to lie in front of your own code. Of course you think that they could come with somebody else code, but well it works until now .

      It also helps me to spot those with bad habits, like no comment, non meaninful variables, method, classes names, etc. They might be great coder, but they would be terrible inside a team.

    103. Re:When I was breaking in by Just+Some+Guy · · Score: 1

      That's a very good answer, but any good answer would be one that didn't involve declaring an array of all the number between 0 and 100 and then iterating over the array.

      Even implicitly?

      print sum(range(101))

      --
      Dewey, what part of this looks like authorities should be involved?
    104. Re:When I was breaking in by Opportunist · · Score: 1

      Every language has its place. If you want to write code, use C. If you want to write a story, use Pascal.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    105. Re:When I was breaking in by 77Punker · · Score: 4, Funny

      I'm beginning to realize that I chose a terrible sample question to post here.

    106. Re:When I was breaking in by GooberToo · · Score: 1

      The code that makes me mutter "that's pure genius" is usually not the kind of code you can't understand or is winded, twisted and a worthy entry for the obfuscated C-Code contest. It's usually code that is brilliantly simple yet very functional, fast and easy to understand.

      The problem is, it normally takes genius to recognize genius. This is why far too many coders see their code, as your first characterization, and assume that's the standard for genius. Which is, after all, entirely your point.

      For those wanna-be geniuses out there, if you can not refer to your code as "elegant", it is unlikely your code is "genius."

    107. Re:When I was breaking in by CptNerd · · Score: 1

      Well, then, mark me down for an "epic fail" of your interview, because C didn't exist when I was 12. Also, I didn't write my first WATFOR program until I was 18. I have written code in Fortran, C, C++, Objective-C, Smalltalk, Perl, Javascript, various Unix shells, and Java since then, but that hasn't been good enough for the interviews I've been on. According to HR, Old Farts Can't Write Software Anymore.

      --
      By the taping of my glasses, something geeky this way passes
    108. Re:When I was breaking in by Anonymous Coward · · Score: 2, Funny

      ah ah you failed. You forgot to add the zero. Idiot.

    109. Re:When I was breaking in by agrounds · · Score: 1

      My Perl isn't particularly strong, but this looks like it works. That doesn't mean you have the job just yet because I have other questions to ask, but it looks like an answer that works. All I'm really looking for is evidence that you actually can write a computer program. There's more to the job, though

      I assumed so. I asked mostly to see if someone answering with something that can quickly be executed on a command-line was acceptable, or if you would specifically want something deeper or demand a specific language or if you were using the question to leverage a deeper insight into the candidate's style or personality. Language choice and style of answer to that would speak volumes.

      Since I work on the network side, it is always interesting to see what those guys on the other side of the house have to do. I do something similar in my interviews where I start the real Q&A with a fairly basic question like "When you are working with chassis switches, do you prefer CatOS, Native, or Hybrid setups and why?"

      There is no right answer. Any of the three is totally acceptable (and reveals a little about the personality, in my opinion) but it is the 'why' that I want to hear. People that have been doing networking for a while have very definite opinions on this and feel quite strongly about their particular convictions. Someone who is new or doesn't know will give an answer that is the equivalent of a shoulder shrug. It also helps that I like working with people that are not afraid to voice their opinions, so this question does have relevance even though it is simple.

    110. Re:When I was breaking in by Opportunist · · Score: 1

      I was an assistant for database classes. I made it a habit to type ";drop table name;" into the input field. Made quite a few students uneasy. Especially those without a backup...

      But there were highlights as well, I remember one student who actually caught the "hack" attempt, logged it and locked out the IP address that tried it. Quite well done, with the only flaw that I couldn't grade him because, well, his implementation locked me out after my attempt to trash it.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    111. Re:When I was breaking in by Just+Some+Guy · · Score: 1

      Heh! No, we all got the gist of it. But we're programmers, after all, and genetically predisposed to find the flaws in everything we see.

      --
      Dewey, what part of this looks like authorities should be involved?
    112. Re:When I was breaking in by gbjbaanb · · Score: 1

      I'm beginning to realize that I chose a terrible sample question to post here.

      no, I don't think so. Having interviewed people, I can say that quite a few will look at your super-simple, gormless question and think "erm uuuh duh, dunno".

      Then many others will (smugly) tell you a simple way to do it. Those people at least know something and might be worth hiring (if they could get on with the rest of the team :) )

    113. Re:When I was breaking in by GooberToo · · Score: 1

      I've got to ask, are you looking for programmers who have a background in web development (including perl), VB, or Java?

      I'm not trying to insult anyone, and please don't read anything into what I'm saying, but in my experience, these are the types of answers I typically see from coders who have those types of backgrounds.

    114. Re:When I was breaking in by Wildclaw · · Score: 1

      Congratulations on calculating the sum of numbers from 0 to 99.

    115. Re:When I was breaking in by Anonymous Coward · · Score: 0

      interestingly enough ... you are wrong in any event
      it is return (n*(n+1))/2

    116. Re:When I was breaking in by 77Punker · · Score: 1

      I like to ask "What is your favorite programming language?"

      Not everyone will have one, but everyone who's written many programs will have things that they prefer about some language. Also, it makes interviews go faster because "rubyonrails" is not a programming language. Ruby could be a valid answer and Rails could be a nice framework to talk about when explaining the answer, but it's not a language and that should be clear to anyone who knows what a programming language is.

    117. Re:When I was breaking in by teh_commodore · · Score: 1

      I would make the condition of the for loop i <= 100 and take out the sum++ line.

      --
      --"insert clever quote here"
    118. Re:When I was breaking in by ishobo · · Score: 1

      Several ways to reduce the cost of living: live with parents while attending school, take lower division classes at a junior college, share an apartment.

      --
      Slashdot - The great and glorious cluster fuck of Internet wisdom.
    119. Re:When I was breaking in by Anonymous Coward · · Score: 0

      return (n*n+1)/2

      You mean n*(n+1)/2

      No, he means (int)(n*((n+1)/2.0))

    120. Re:When I was breaking in by teh_commodore · · Score: 1

      You're only going to be summing from 0 to 99, so your answer would be short by 100. You need the condition in your for loop to be less-than/equal to, not just less than.

      --
      --"insert clever quote here"
    121. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Good God, I hope you don't accept that.

      'Cause it's OBVIOUSLY wrong. There is no way summing all the integers from 1 to 100 can give you a fractional part. That one gives 50000.5

      The correct answer is n*(n+1)/2. Parentheses matter!

      Is that really how you test for quality coding?

      It's only clever if it's RIGHT.

    122. Re:When I was breaking in by vux984 · · Score: 1

      Is it really a good answer though?
      What are we really testing for here? Surely its not the ability to actually obtain the answer?

      Your version is certainly clever, but it has several defects:

      It has the 0 implicitly hard coded. Granted the specific question posed was computer Sum(0..100) but is solving Sum(0..n) correct? Or should we be solving Sum(m..n)?

      Its also non-obvious to most code maintainers what x(x+1)/2 actually does. I suppose with some comments it would be ok. But without comments, I'd almost rather a dumb array with a loop.

      Perhaps worst of all though, is that its got some serious range checking issues. It fails to check for negative numbers, and worse than crashing, it returns the wrong answer if you pass in a negative number. The sum of the numbers from 0 to -3 is -6 not 3. This could lead to some nasty bugs.

      It also will fail horribly on large positive values, returning god knows what once int overflows.

      My point is that sometimes 'dumb' is smarter than 'clever', depending on what is REALLY being tested here.

      Your solution scores good in terms of clever, and I would recognize that you've got better math skills than most... but the guy who wrote:

      int SumRange(start, stop)
      {
            Assert(start <= stop, "Error if range not in order");
            Assert(start >= 0, "This only works for non-negative values");
            Assert(stop >=0, "This only works for non-negative values");
            Assert(stop <= Sqrt(MAXINT)-1, "result will overflow int");

            int sum = 0;
            int iterator = start;
            while( iterator < 32942 which is -32594, which you then divide by 2 to -16297. (Actually I might be wrong on that... it would really depend on what the compiler and cpu do with it. But potentially at least, your program breaks at a mere 181 on some compilers/chipsets/c-implementations.)

      Probably should have made this function use at least long. ;)

    123. Re:When I was breaking in by pavon · · Score: 1

      But he asked for a function. This will do the same thing, and will be just a fast with a modern compiler, but will meet the interface specifications.

      inline int sum0To100 ()
      { // calculated using formula n(n+1)/2
              return 5050;
      }

    124. Re:When I was breaking in by 77Punker · · Score: 1

      Ugh, yeah we use PHP here. Something about having a language that's so easy to use makes people think that every PHP app is as simple as making a three table database with a form on a webpage.

    125. Re:When I was breaking in by Opportunist · · Score: 1

      Read the original post again and consider what you would be applying for. You're on the right track, though.

      Now, I do not doubt that many here can solve this little "riddle". It's not really rocket science, but you'd be really amazed how many apply for such a position and think assembler is something they should be looking for at the assembly line of GM.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    126. Re:When I was breaking in by Opportunist · · Score: 1

      Doesn't solve the problem. The wannabe-genius will simply call the clusterfuck "elegant" and you're of course a dimwit if you cannot understand it.

      Most of them actually know they ain't so great. But that's the problem with people whose self esteem comes from others...

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    127. Re:When I was breaking in by vux984 · · Score: 1

      Aaargh. Sorry for the double post... the first one got munched by slashdot's inability to hand a less than symbol in plaintext without mangling the whole thing. I thought I caught them all, and converted to the xml entity before posting... but no added one at the last minute and blew it up.

      Is it really a good answer though?
      What are we really testing for here? Surely its not the ability to actually obtain the answer?

      Your version is certainly clever, but it has several defects:

      It has the 0 implicitly hard coded. Granted the specific question posed was computer Sum(0..100) but is solving Sum(0..n) correct? Or should we be solving Sum(m..n)?

      Its also non-obvious to most code maintainers what x(x+1)/2 actually does. I suppose with some comments it would be ok. But without comments, I'd almost rather a dumb array with a loop.

      Perhaps worst of all though, is that its got some serious range checking issues. It fails to check for negative numbers, and worse than crashing, it returns the wrong answer if you pass in a negative number. The sum of the numbers from 0 to -3 is -6 not 3. This could lead to some nasty bugs.

      It also will fail horribly on large positive values, returning god knows what once int overflows.

      My point is that sometimes 'dumb' is smarter than 'clever', depending on what is REALLY being tested here.

      Your solution scores good in terms of clever, and I would recognize that you've got better math skills than most... but the guy who wrote:

      int SumRange(start, stop)
      {
            Assert(start <= stop, "Error if range not in order");
            Assert(start >= 0, "This only works for non-negative values");
            Assert(stop >=0, "This only works for non-negative values");
            Assert(stop <= Sqrt(MAXINT)-1, "result will overflow int");

            int sum = 0;
            int iterator = start;
            while( iterator <= stop)
            {
                  sum +=iterator;
                  iterator++;
            }
            return sum;
      }

      From a certain point of view this is orders of magnitude better code, even if it isn't nearly so clever or efficient. Of course the two could be combined, to get the performance advantage of yours and the robustness of mine.

      Mine is almost robust to a fault. Technically the assertion on stop for non-negative is redundant because the fact that start is non-negative, and stop must be greater than start implies it won't negative... but I'm thinking ahead to the maintainer who will fix it up to add support for summing ranges even when they aren't specified in order.

      If in the mean time, we'd implemented the sum as a difference between two x(x+1)/2 expressions, this would result in a bug being introduced. (Since x(x+1)/2 isn't valid on negative numbers, and I'm going to assume we didn't bother adding the fixes for that since the entire function was restricted to postive ints.)

      So the 'redundant' assert might save some seriously hard to find fault one day.

      Finally, as a tangential aside. I mentioned you didn't do range checking, and that it would fail for large positive ints.

      Just off the cuff how large do you think I'm talking here? 1000? 10,000? A million? A billion?

      In my code, I set the max to sqrt(MAXINT)-1 which is somewhat clever, because it adjusts to the current bit width of int automatically, but what are we actually talking about here?

      The C int is defined as being at least 16 bits wide, meaning it could start flaking out as low as sqrt( 2^15)... 181. I bet that's a LOT lower than you'd have guessed.

      Interestingly, if int width is 16 bits, then your version function starts flaking out right at 181: 181*182 => 32942 which is -32594, which you then divide by 2 to -16297. (Actually I might be wrong on that... it would really depend on what the compiler and cpu do with it. But potentially at least, your program breaks at a mere 181 on some compiler/cpu implementations.)

      Probably should have made this function use at least long to be useful. ;)

    128. Re:When I was breaking in by Surt · · Score: 1

      yes, i did, thanks.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    129. Re:When I was breaking in by Anonymous Coward · · Score: 0

      That isn't a very good answer at all.

      >> def sum(n)
      >> return((n*n+1)/2.0)
      >> end
      => nil
      >> sum 100
      => 5000.5
      >> sum 2
      => 2.5

      I must be misunderstanding this solution's description because it is completely wrong.

    130. Re:When I was breaking in by clone53421 · · Score: 1

      The how and why of your code aren't really significant when you're learning to program. You're interested in the what, and not focusing overly on the how and why allows you to attack the problem in a step-by-step manner where each step, although its exact method is not known, produces the what that is appropriate to solve your problem.

      Now yes, I agree that understanding the how and why is invaluable when something goes screwy, as often things will, but learning the basic logical constructs of the language – if/then/else, looping, and so on – gives you the blocks to build a program from. Actually performing the input/output doesn't need to be unnecessarily complicated, and having graphics libraries makes it easy to program games... which require complex logic, thorough testing, and pay off the reward of actually being able to play them – as opposed to a C program that does some fancy dynamic memory allocation, manipulates some pointers, crunches some numbers, and dumps raw, ugly output to STDOUT or a text file. (I'm reminded of a C.S. Lewis story where children were taught story-telling as their language instruction; Lewis pointed out that essays are dull to write and dull to read, whereas people actually enjoy reading or hearing the stories and therefore it was a more palatable way to learn to write.)

      Yes, I could have learned to program using the different interrupts to achieve the same effects that BASIC did with simple commands, but the method would have been unnecessarily complex and would have distracted from the algorithm – the blueprint in my head that described what the computer needed to do. (I never did flowcharts or wrote my algorithms down, despite the books telling me I should – I preferred to write straight code and test it thoroughly at each step of the process to make sure it did what I expected.)

      Maybe I'm blind to some larger fact, but I've seen far too many people who know what a function is, know how to pass arguments by reference, and know what a pointer is – yet they can't come up with an algorithm that will actually solve the problem they needed to solve. They don't know why they should pass an argument by reference or where a pointer should be used, and even if their program finally compiles and runs, it either crashes because it managed to fall into a case that they hadn't expected or it just utterly fails to accomplish what it was supposed to.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    131. Re:When I was breaking in by j_sp_r · · Score: 1

      You mean this would be wrong

      sum(0:100)

    132. Re:When I was breaking in by Surt · · Score: 1

      Thanks for being the only person courageous enough to post the correction non-ac. Want to come have an interview?

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    133. Re:When I was breaking in by Surt · · Score: 1

      Yeah, thankfully my test-first implementation caught my mistake.
      ((n)*(n+1))/2, for clarity.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    134. Re:When I was breaking in by Todd+Knarr · · Score: 1

      I do not know which are worse, the folks that know they don't know or don't know they don't know.

      The ones who don't know they don't know. The ones who know they don't know at least have the possibility of following with "but I know where to find out".

    135. Re:When I was breaking in by fwarren · · Score: 1

      Genius code is elegant code

      Thinking Forth is a book about how to write elegant code. It is a skill that can be learned.

      --
      vi + /etc over regedit any day of the week.
    136. Re:When I was breaking in by Anonymous Coward · · Score: 0

      You mean n(n+1)/2.

    137. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Pet peeve: it's assembly, not assembler. Do you call C "compiler"?

    138. Re:When I was breaking in by cjHopman · · Score: 1

      True. Great programmers are about 10000 times as productive as mediocre ones.

    139. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Do you care whether they write a loop or return (n*n+1)/2? (where n=100 in this case?)

      (curious whether you are looking for the person who knows the clever solution, or the guy who can write a basic loop).

      This only works for natural numbers.
      But the question is to sum "all the numbers", so
      the correct answer is as simple as "return infinity"

    140. Re:When I was breaking in by Surt · · Score: 2, Informative

      Yes, I mean (n*(n+1))/2.
      Tens of AC's are all trying to correct me, and I assume none can see each other's posts.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    141. Re:When I was breaking in by Anonymous Coward · · Score: 0

      There is nothing wrong with your typical solution. It does exactly what you ask: "sum all the (natural) numbers from 0 to 100"

      You did not put any restriction in memory usage or any running time constraint.

      As far as I know, your typical sollution has complexity O(n) the same that you expected.

    142. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Great programmers are famously a hundred (not exaggerated) times as productive as mediocre ones.

      Those great programmers would end up getting rejected at the job interview since no one would believe they are that good.

    143. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Well, I originally assumed you were trying a sneaky way to execute data. But you would have to know that the top of the stack is pointing to your data. Plus, I assumed that the increment was part of the subterfuge. But there must be easier ways....

    144. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Tell me about it.
      I interviewed thirty people to find a good developer.

      The best test I came up with was to have them describe how they'd code "FizzBuzz!" up to a hundred results in their language of choice.

      It's a numbers game, great as a drinking game.
      Start counting from one.
      A multiple of 3 is "Fizz", a multiple of 5 is "Buzz".
      A multiple of both? FizzBuzz.

      I'm sad to say that less than half actually managed to produce anything in fifteen minutes.
      I'm sad to say we had a guy who used a print statement 100 times; though he did know how to use copy/paste.

      Eventually, we hired the guy with a broken hand who explained the solution.

      Later that night, after what I can only assume to be one-handed-coding, he sent us a rudimentary graphical app that added in rotational switching on fizzes, buzzes and fizzbuzzes for shits and giggles.

      He was a javadeveloper with no php experience, and we looked for a php developer.
      Languages don't matter so long as you get someone who understands what he's doing.

    145. Re:When I was breaking in by pyro_peter_911 · · Score: 1

      easy

      dim a a = 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25;
      a = a+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50;
      a = a+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75;
      a = a+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100; print a;

      You forgot to add the initial 0.

      Peter

    146. Re:When I was breaking in by seasunset · · Score: 1

      This is a true story: Once a coleague (a test engineer in the case) asked me to give an afternoon explanation on how Java Servlets work. I sit with the guy for a couple of hours, give a general overview of the architecture, show some code... His last move after that couple of hours: ammend his CV in order to put "experience with Java Server Side Testing".

    147. Re:When I was breaking in by rtechie · · Score: 1

      By the age of 16 or so I had written my own assembler, and sold my first programs - written in directly in hexadecimal machine code

      I think too many people are reading into the fact the I specifically mentioned C. By C I meant "real programming language" as opposed to BASIC and Pascal. I like BASIC too and I use it a LOT nowadays, but I'm not a real programmer (by my own definition).

      Some posters argue that C wasn't readily available on computers in the 80s. This isn't true, but even if it was I'd expect those people to be writing in assembler like the poster above did.

      And getting share time on public access unix systems back then was pretty easy.

      Musical instrument teachers know this well.

      Musical instruments (I'm talking about rock music here) are one of the areas where most amateurs are professionally trained and most professionals are self-taught. The opposite is true of orchestral musicians, but that's for a very good reason. In an orchestra you "follow the line", in a rock bend you have to make your own line. You HAVE to innovate. I've briefly worked as an audio engineer and most of the musicians I've worked with can't even read music. Most do it by ear. All the greatest composers were self-taught obsessives.

      You picked one of the areas that perfectly illustrates what I'm talking about. The key is creativity, to be able to think of your own solutions to problems. This is best taught by not having answers handed to you.

    148. Re:When I was breaking in by Opportunist · · Score: 1

      Actually, both is needed. You need theory and practice to be a good programmer.

      As you point out, it's not worth a lot if you know how to optimize your code if you don't do it. But knowing how to do it enables you to do it. And, most of all, tells you when it's actually good enough.

      I'm also not asking people to go down to assembler and learn coding in it 'til they're good enough to write essentially an OS in it. But understanding a hint of assembly tells you why it's asking for trouble to not bound-check your stack based variable that will be filled with user input. This is one of the core reasons why code injection works at all and you will not be able to eliminate this security problem before you understand how such a variable is treated at the system level and why such a malpractice allows an attacker to redirect your code execution.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    149. Re:When I was breaking in by Opportunist · · Score: 1

      And when do you know what the top of your stack points to? So, where are we probably in the execution of the program when we encounter this piece of code?

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    150. Re:When I was breaking in by rtechie · · Score: 1

      I picked that statement for a reason. To some extent I want to specifically exclude old farts like you (if they didn't have PCs when you were 12 you'd have to be around 50).

      Really old programmers tend to be set in their ways and are reluctant to learn new things, which is one of my key criteria in hiring. "I have to assuming this guy knows nothing. How long will it take him to teach HIMSELF something?" That 50-year-old would have to demonstrate to me that he was exceptionally good at teaching himself. In his case a CS degree would hurt him. What I would like to see is someone with 30 years of high-level experience and NO degree. It was a lot harder to get a programming job without a degree back in the day, and it says a lot about his TALENT.

    151. Re:When I was breaking in by Anonymous Coward · · Score: 0

      n * (n + 1) / 2

      experience has taught me that it's generally a good idea to be both clever *and* correct :).

    152. Re:When I was breaking in by Anonymous Coward · · Score: 0

      You should read the question, he said sum the numbers from 0 to 100. Not 1 to 100.

      The correct answer would start like this:

      dim a a = 0+1+2+3...

    153. Re:When I was breaking in by 5i · · Score: 1

      Does it matter that your answer is wrong?

      I think you're looking for (n*(n+1))/2

      I just wish I was smart enough to instinctively see this when first presented with the problem, like Gauss, rather than only knowing it because I read about it somewhere else first.

    154. Re:When I was breaking in by eulernet · · Score: 1

      Easy with some recursion:

      int f(n)
      {
        if (n==0) return 0;
        return n+f(n-1);
      }

      Do I pass ?

    155. Re:When I was breaking in by cjHopman · · Score: 1

      return (n*n+1)/2

      You mean n*(n+1)/2

      No, he means (int)(n*((n+1)/2.0))

      No he means n * (n + 1) / 2.

      For those unable to follow at home, n * (n + 1) is always divisible by 2. Let's not convert to and from floating point just for fun.

    156. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Ahem, I have a BA in computer science. Cambridge and Oxford both give BA, no matter what the subject (as far as I know).

    157. Re:When I was breaking in by Anonymous Coward · · Score: 0

      I'll bite:

      int sum0to100()
      {
          return 5050;
      }

      What do you pay?

    158. Re:When I was breaking in by Anonymous Coward · · Score: 0

      You would have to know how a particular OS, program, or compiler sets up its call stack. Assuming its a compiled language, you have to know how the arguments, locals, and frame pointer (if any) were put on the stack. I assume, knowing this, would know what's at the top, and if you could cause a buffer overrun of a local the override it... Then again, if it is pure assembly, the program can use its stack however it wishes.

    159. Re:When I was breaking in by ozphx · · Score: 1

      Look at it this way, if I cost £50 an hour, and a new fast-as-blazes CPU costs £100, then will two hours of my work make as much improvement as putting a faster chip in?

      Depends. Are we deploying this to more than one node? ;)

      --
      3laws: No freebies, no backsies, GTFO.
    160. Re:When I was breaking in by dhavleak · · Score: 1

      That depends: see REPNZ and SCASB and cousins, for example.

      But I'll grant you this -- a loop in a high-level language will generally become a goto in assembly. Compiler optimization will sometimes have the last word on the matter, but in general you're right.

    161. Re:When I was breaking in by Draek · · Score: 1

      Clever? that's sixth-grade algebra. Me, I'd take the loop, easier to extend to other cases (such as non-zero start, or intervals different than 1) plus it's practically self-documenting.

      Still, both are way better than using explicitly-declared arrays. Anyone caught doing that should be promoted to management so they stop interfering with the people doing the actual production ;)

      --
      No problem is insoluble in all conceivable circumstances.
    162. Re:When I was breaking in by drachenstern · · Score: 1

      Does this count?
      ----
      void main(){return 0;}
      ----
      it's 22 characters long, and has a distinct and useful purpose. By changing the return value, one can test a script or other program which relies on return values to branch. For instance, if you need to monitor a program for a return value of 18, but don't have time to wait for the actual program to return 18 to validate your code, you could use this program with the slight modification to test your script. Voila, a useful program that does something that took no time to come up with.

      --
      2^3 * 31 * 647
    163. Re:When I was breaking in by kudokatz · · Score: 1

      Experience has taught me that high-school dropouts with a passion for programming are generally LIGHT YEARS beyond people who aren't passionate that scraped through a BA in Computer Science.

      Yes, but those with passion and a good education are better yet. There is a lot that can be learned in a class that allows for quicker and more thorough education than someone who is completely self-taught. How many people who teach themselves go out of their way to do things like understand the apriori algorithm or look into advanced dynamic programming techniques and distributed locking protocols?

      Quite honestly, drop-outs aren't all that special. I'm a high school drop-out, but only so I could start college early. Seriously. People can put effort into their assignments, add functionality, focus on clean code and even write test suites for the more complex ones (and yes, it helps quite a bit because they're typically much more complete than what the underpaid TA uses).

      And finally, "doing it the hard way" is typically the uneducated way. There's a reason the slogan for google scholar is "stand on the shoulders of giants"--learning from others' advances is the way to go. Unless, of course, you're convinced you can sort stuff in faster than O(n) time and figure out if an arbitrary program will halt; then you have something, or maybe just never had the educated prompting required to realize they are horribly futile.

      But you are definitely right that CS education has a problem. I was absolutely floored when a co-worker couldn't write a recursive algorithm, and just wondered how he ever got past his data structures class!

    164. Re:When I was breaking in by tqk · · Score: 1

      Fast-forward to 2009.

      Java.

      --
      "Tongue tied and twisted, just an Earth bound misfit ..." -- Pink Floyd.
    165. Re:When I was breaking in by $0.02 · · Score: 1

      10 PRINT 5050

      --
      If enithin kan gow rong it whil. (Murfey)
    166. Re:When I was breaking in by greg1104 · · Score: 2, Interesting

      xor ax,ax
      xor bx,bx ;_loop
      inc bx
      add ax,bx
      cmp bx,64 ;64 hex = 100 decimal
      jb 0104 ;_loop

      You damn wasteful kids, just using a CMP like it doesn't cost anything. For the love God, can't you just load bx with the upper boundary and use dec/jnz in that loop? Been faster since day one, and both instructions execute in one cycle on the Pentium and later. Makes it easier to turn into a subroutine, too--make setting bx the first instruction, then you just can put the number you want to sum up to into bx and jump into the second instruction.

      Don't even get me started on how you just throw in a div there like they're giving them away for free at the store or something.

    167. Re:When I was breaking in by clone53421 · · Score: 1

      True. My point is basically that a beginning programmer needs to have something that can be relatively fun, that isn't too involved in the intricate details of the how and why, and that lets them put together a logical approach that solves their problem algorithmically. Once they know how to solve a problem, they can get into the details, but confusing them with details before they know how to solve the basic problem isn't going to be very helpful.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    168. Re:When I was breaking in by clone53421 · · Score: 1

      I'm already familiar with those. :p

      And yes, that's true. However, they do very specific things and as such they're going to have very limited application.

      REPNZ tells the microprocessor to perform the single following instruction repeatedly until the zero flag is unset. SCASB will scan through memory until a particular byte value is found or until the CX register reaches zero, IIRC. (I could look it up, but I'm feeling too lazy at the moment.)

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    169. Re:When I was breaking in by clone53421 · · Score: 1

      Interesting, it didn't occur to me that dec/jnz would have been slightly more efficient. (Admittedly, I wasn't really concerned about efficiency of a loop counting to 100 in assembly on a machine with a clock speed in the gigahertz, but I digress.)

      Don't even get me started on how you just throw in a div there like they're giving them away for free at the store or something.

      Ok, now I'm curious... is there a better way to print an integer?

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    170. Re:When I was breaking in by clone53421 · · Score: 1

      INT 18

      16 bit MS-DOS Subsystem:

      C:\WINDOWS\system32\cmd.exe - debug
      NTVDM does not support a ROM BASIC. Choose 'Close' to terminate the application.

      [Close], [Ignore]

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    171. Re:When I was breaking in by Rakshasa+Taisab · · Score: 1

      template <unsigned int n>
      struct adder {
        static const unsigned int result = n + adder<n-1>::result;
      };

      template <>
      struct adder<0> {
        static const unsigned int result = 0;
      };

      int main(int argc, char** argv) {
        std::cout << "The result of n=100 is: " << adder<100>::result << std::endl;
      }

      ./adder
      The result of n=100 is: 5050

      --
      - These characters were randomly selected.
    172. Re:When I was breaking in by ClosedSource · · Score: 1

      I think that would require great programmers to complete the project a few months before it is assigned to them.

    173. Re:When I was breaking in by CptNerd · · Score: 1

      The last language I was taught was PL/1, in 1980. Every language I've written applications in since then (as in my other post), Smalltalk, C and C++, Javascript, Perl, C and Korn shell, and Java, have all been self-taught. I'm basically learning Java and the AJAX suite for web application design now, and I'm having to do it on my own, yet again. Oh, and I've been studying Japanese for 3 years. But, I'm 50 years old, and so I now have to "prove" myself to arrogant whelps such as yourself. Then again, when I was an arrogant whelp, I had to prove myself to old farts, too. I'd say you have a ways to go, yourself...

      --
      By the taping of my glasses, something geeky this way passes
    174. Re:When I was breaking in by Anonymous Coward · · Score: 0

      You fail!

      First the parent said: "Write a function to sum all the numbers from 0 to 100"
      Yours doesn't do what it was required. The requirement was to sum all the numbers. Your code doesn't sum all the numbers. Sure the result in case of n=100 is the same but is not what was required.

      Second: your "formula" doesn't work all the time. Let's take n=2
      We have (2*2+1)/2 = 2.5
      The proper way: 1+2=3

      This is a perfect example of "errors behind code". Developers don't understand what is required to do and / or try to "cheat".
      In your case "cheat" means you tried to be a smart ass.
      In other cases "cheat" means they try to cut corners to finish faster because implementing a proper solution would require more time/effort and they don't feel like doing it (for whatever reasons).

    175. Re:When I was breaking in by Opportunist · · Score: 1

      I'm not talking about beginner. Even a beginner would probably be better off with Java or something similar today. And that's fine and ok to start with programming, to learn how to connect various logic pieces to solve a problem. It's not really a good idea to struggle against pointers and worrying about terminating your strings when you're still trying to grasp the whole concept of imperative programming languages.

      But once you move on from this and, most importantly, before you start to write programs in earnest and maybe for a living, you have to understand the implications and pitfalls that the underlying structures will hassle you with. Every time I get to see another unchecked stack variable being exploited for code injection I feel that never ending urge to strangle someone, preferably the person responsible for it. You just DO NOT put a structure on the stack and let code fill it, or at the very least you do a sanity check of the data before you fill it into this structure!

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    176. Re:When I was breaking in by dhavleak · · Score: 1

      Yep, that's good stuff..

      I got screwed (grade-wise) in a lab assignment once for using those instructions. I had to write a program in assembly to read a file, take a word as input from the user, and output the number of times that word occurs in the file. DOS interrupts did the job for reading the file, and getting user input..

      Anyway - long story short - my code was good but the bastard who was checking my assignment wasn't familiar with repnz scasb (or rather rep and derivates, and scas and derivatives - or SIMD instructions in general). He kept asking me for a "more elegant" approach - by which he meant a version that he could understand. I stood there stumped 'cos I couldn't think of anything more elegant in the proper sense of the word. I'm still carrying the scars from that assignment..

    177. Re:When I was breaking in by Opportunist · · Score: 1

      CS education is lacking here, too. My WTF-moment was when I met someone again who started his university education with me a few years after graduation, funny coincidence put us into the same company.

      When you see someone with a masters in CS who is unable to write Visual Basic code worth a damn, you really, really start to wonder what went wrong. And how the heck he got that degree.

      Now, I'm no VB wiz myself. By choice more than anything, I don't really like touching it either because it's boring to write code in it. But I can do it. It's a bit like asking an animator whether he can make a cube spin. You just can do it. Seeing someone hold a masters and being unable to wrap his mind around a few lines of VB really shook my world a little bit.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    178. Re:When I was breaking in by cibyr · · Score: 1

      In python 3.0, since range has been replaced with xrange that doesn't actually create the list (it's a generator instead, so it just keeps spitting out the the next number as you iterate over it).

      For python2.x the way to do it is

      print sum(xrange(101))

      Of course, that doesn't matter much with only 100 numbers, but for a few thousand or million it starts to hurt pretty bad.

      --
      It's not exactly rocket surgery.
    179. Re:When I was breaking in by darkwing_bmf · · Score: 1

      I picked that statement for a reason. To some extent I want to specifically exclude old farts like you

      You'd be the perfect target for an age discrimination lawsuit.

      Also, you'll never know how valuable good experienced software engineers are until you've worked with a few. It's really your loss more than it is theirs.

    180. Re:When I was breaking in by _xeno_ · · Score: 1

      So:

      var c=[];
      for (var i=0;i<=100;i++)
      /* */ c.push(String(i));
      eval(c.join('+'));

      Would be considered wrong? I'm not storing an array of numbers and I never iterate over the array...

      (Retarded comment for indentation due to deficiencies in Slashdot's commenting code, not to make the answer more wrong.)

      --
      You are in a maze of twisty little relative jumps, all alike.
    181. Re:When I was breaking in by Anonymous Coward · · Score: 0

      As the result generated by most compilers is a constant it is actually quite good code, a lot better than using a loop which leaves stuff to be done at runtime.

    182. Re:When I was breaking in by Rockoon · · Score: 1

      I agree.

      I would like to add tho, that part of the problem is the death of the algorithmist. That guy who not only knows what big-O notation is, but also knows through-and-through why its important.

      Even otherwise bright people who do know the basics of big-o notation sometimes still don't get it. A healthy percentage of slashdot posters, for instance, think that raytracings O(log n) superior runtime complexity isnt 'good enough' to eventualy trounce rasterizations O(n) complexity. They just don't get it, but for an algorithmist it is as plain as mergesort vs bubblesort. The algorithmist knows that for a sufficiently large n, the better runtime complexity not only wins, but wins by such an overwelming landslide that there isn't even an interresting debate about it.

      I for one hope that these managed languages become more popular, because the current state of affairs is that there are a lot of C and C++ programmers who can't even program something mildly complex without leaking memory or allowing stack busting/buffer overflowing. They insist that they need the power of C or C++ but are not capable of using it.. the reality is that they need the best optimizing compiler available to them because they don't know shit about optimization. Experts armed with only vbscript can run circles around their C code.

      Someone needs to make them understand that programming in C/C++ does not make them an expert, and that actualy their 100% reliance on C/C++ is pretty good evidence that they are NOT experts.

      --
      "His name was James Damore."
    183. Re:When I was breaking in by greg1104 · · Score: 1

      Sometimes cycle counts still matter, because not everybody is using a GHz machine--ask any good embedded systems programmer. Back in the 1MHz days when I got started, you never counted up if you could count down instead because it cost you a couple of cycles per loop; standard practice to any 6502 or Z-80 programmer.

      When you have a fixed divisor and only care about a limited range, it's possible to reduce integer division to set of more primitive operations like shift/add, which used to be much faster on older hardware. A good example is http://www.agner.org/optimize/optimizing_assembly.pdf , P137 shows a division by 10 method. Table 9.1 breaks down how much slower integer division is than these smaller operations.

      Not that any of this really matters, because of course the screen output is the only bottleneck in your program. Now if you'll excuse me, I have a lawn to keep clear.

    184. Re:When I was breaking in by Anonymous Coward · · Score: 0

      (is there a school that offers a B.A.? [in Computer Science])

      Vassar College has only a B.A program, being a small liberal arts school. Got the chance of a well-rounded education, though I transferred back to New York City for my last 3 semesters.

      I can't pin the B.A.'ness well because every school is different. Vassar's B.A. didn't force physics 101 on you. Queens College did for their own B.A, I think. They offer a joint program for an Engineering degree elsewhere, but don't seem to have a B.S. yet.

      http://www.cs.vassar.edu/_media/depthandbook08.pdf?id=courses%3Atop&cache=cache

    185. Re:When I was breaking in by Anonymous Coward · · Score: 0

      I ask a similar question and I accept both answers. Kudos to the guy who gets the clever one, but it's no big deal. It's just to make sure they know some basic programming abilities. 50% of the candidates can't write a loop and the phone screen stops there.

      It's about ramping up the difficulty in questions to quickly weed out the non-qualified candidates and you have to start with something simple. In phone screens communication problems are rampant and thus I want to start out with something simple to understand to gauge the candidates communication abilities.

    186. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Do you care whether they write a loop or return (n*n+1)/2? (where n=100 in this case?)

      (curious whether you are looking for the person who knows the clever solution, or the guy who can write a basic loop).

      Maybe n*(n+1)/2 ?

    187. Re:When I was breaking in by tyrione · · Score: 1

      Not to be overshadowed are the enormous egos the self-proclaimed geniuses are who more often than not are just complete dickheads to work within a team focus.

    188. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Hey! You forgot to add the zero!

    189. Re:When I was breaking in by Anonymous Coward · · Score: 0

      You do know that the multiplication is executed always before the addition in an expression ?
      your solution is : (n*n+1)/2=5000.5
      the correct solution is :(n*(n+1))/2=5050
      I wouldn't hire you...

    190. Re:When I was breaking in by Anonymous Coward · · Score: 0

      how about this one:
      print 5050;

    191. Re:When I was breaking in by clone53421 · · Score: 1

      When you have a fixed divisor and only care about a limited range, it's possible to reduce integer division to set of more primitive operations like shift/add, which used to be much faster on older hardware.

      Oooh yeah, I remember that now...

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    192. Re:When I was breaking in by GooberToo · · Score: 1

      The wannabe-genius will simply call the clusterfuck "elegant"

      And there are people living under bridges who really do believe aliens are trying to control their thoughts. It doesn't make it true. Delusions of grandeur will always exist. Thankfully I've only run into a handful of such people in my career.

      I really wasn't trying to solve a problem. I was agreeing with you. The only point I had was, far too often "genius code" is far from anything anyone would call elegant, including the author.

      Some of the most genius code I've ever seen was jaw dropping in its simplicity, readability, and elegance. It showed an intuitive insight into the problem domain. IMO, that's what separates good code from genius.

      and you're of course a dimwit if you cannot understand it.

      A bit hostile are we? Perhaps I shouldn't agree with you in the future.

    193. Re:When I was breaking in by nahdude812 · · Score: 1

      That works for a specific case. But the more times you play that card, the higher the cost for the next faster CPU. If that's the standard approach to most problem solving, eventually you end up with an application which on the very best distributed hardware you can buy, still performs like a dog.

    194. Re:When I was breaking in by Tokerat · · Score: 1

      What's all that stuff mean? ;-)

      --
      CAn'T CompreHend SARcaSm?
    195. Re:When I was breaking in by Anonymous Coward · · Score: 0

      I do hope you mean n*(n+1)/2

    196. Re:When I was breaking in by plague3106 · · Score: 1

      All the leads I've ever worked with helped come up with the project plan, delegated work to others AND to themselves. Once we started coding, they coded with us as well. Of course they spent less time coding, because they did have other administrative tasks we didn't, but they did spend time (sometimes a good chunk) developing. They are still developers, with some manageral tasks added. They are not managers with some developer tasks. That's also why they were paid more than normal developers, but still less than full blown managers.

      Any good head chef had best be able to prepare Rice-a-roni, just as they also need to prepare other dishes as well. Head chefs DO cook when needed.

    197. Re:When I was breaking in by clone53421 · · Score: 1

      Now that I'm thinking about it, I need the remainder, which means I'd have to re-multiply the quotient by 10 and subtract that from the dividend, which would have to be saved in another register since the division will destroy it. I'd also need to preserve the quotient. I don't know if that's still faster than performing the DIV, but the code would look something like this:

      xor ax,ax
      mov bx,0064
      ;_loop
      add ax,bx
      dec bx
      jnz 0105 ;_loop
      call 0112 ;_printInt
      mov ax,4c01
      int 21 ;return to DOS
      ;Prints the value in AX to STDOUT in decimal
      ;_printInt
      mov di,0000
      mov byte ptr [014c],30 ;_intTemp
      ;_printLoop1
      mov bx,ax ;copy AX into BX to save its value
      mov dx,cccd
      mul dx
      shr dx,1
      shr dx,1
      shr dx,1
      mov ax,dx ;AX now holds the /10 value
      shl dx,1
      shl dx,1
      add dx,ax
      shl dx,1 ;multiply DX by 10
      sub bx,dx
      or bl,30
      mov [di+014c],bl ;_intTemp
      inc di
      cmp ax,0000
      jnz 011a ;_printLoop1
      mov ah,02
      ;_printLoop2
      mov dl,[di-1+014c] ;_intTemp
      int 21
      dec di
      jnz 0142 ;_printLoop2
      ret
      ;_intTemp
      ;This is a stack to hold the digits before printing them
      db "65535"

      Notice that 16-bit assembly doesn't allow shifting by constants larger than 1 (e.g. shr dx,3). For such small values as I was using, I didn't think it would be any better to use mov cl,3; shr dx,cl – but I suppose I might be wrong.

      I also switched my memory index from BX to DI (I thought I needed another register, which I didn't actually since I never ended up needing to use CX, but meh) and I optimized the looping slightly to eliminate the CMP (trivial because I'm only looping a handful of times, but again meh).

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    198. Re:When I was breaking in by Opportunist · · Score: 1

      That last part was not directed at you. What I meant is that our wannabe-genius will simply call anyone a dimwit who dares to express his doubt about the quality of the code because it's hard to read and understand.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    199. Re:When I was breaking in by clone53421 · · Score: 1

      Yup... anything times an even number will yield an even result (it has to do with the number having the prime factor 2). If n isn't even, n+1 will be, so either way you have at least one even factor.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    200. Re:When I was breaking in by clone53421 · · Score: 1

      Clever? that's sixth-grade algebra. Me, I'd take the loop, easier to extend to other cases (such as non-zero start, or intervals different than 1)

      Great, now I'll have to do more 6th grade algebra I guess...

      function sum(a,b) { return (b*(b+1)-a*(a-1))/2; }

      function sum(a,b,i) { return (b^2/i+b-a^2/i+a)/2; }

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    201. Re:When I was breaking in by clone53421 · · Score: 1

      Come to think of it, I totally should have used

      shr dx,1
      rcr ax,1

      instead of

      mov bx,0002
      div bx

      Furthermore, I said MUL and DIV operate on AX:DX when they really operate on DX:AX! What was I thinking?!

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    202. Re:When I was breaking in by clone53421 · · Score: 1

      My function is better than your function....

      inline int sum0To100 ()
      { // calculated by creating a 101-element array containing the integers 0-100 and summing it in a loop
              return 5050;
      }

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    203. Re:When I was breaking in by clone53421 · · Score: 1

      Agreed. I can't possibly see why summing n+1 over n=(0:99) would be more "readable" than summing n over n=(1:100).

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    204. Re:When I was breaking in by clone53421 · · Score: 1

      void sumNumbersFrom0to100(void) { // 5050
              printf("I know the answer, but I'm not telling!");
      }

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    205. Re:When I was breaking in by Anonymous Coward · · Score: 0

      I think something that really tells about times is that I don't see much recursive replies to this question. Especially if the answer is to write a function, a natural response would be recursion...

      ((lambda (f n) (f f n)) (lambda (f n) (if (> n 0) (+ n (f f (- n 1))) 0)) 100)

    206. Re:When I was breaking in by Surt · · Score: 1

      Yeah, I typoed the parenthesis. Careless.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    207. Re:When I was breaking in by Surt · · Score: 1

      You should have read the follow up before posting. Embarassing for you.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    208. Re:When I was breaking in by Surt · · Score: 1

      You should have read the follow up, I typoed the parenthesis.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    209. Re:When I was breaking in by Surt · · Score: 1

      My point was only that there is an obvious looping solution (linear in N) and an inobvious solution (constant time). At least it is inobvious if you don't have a great memory, or haven't done a lot of 6th grade algebra lately.

      It really didn't help the discussion that I typoed the parenthesis, that really distracted from the discussion I was more interested in having.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    210. Re:When I was breaking in by clone53421 · · Score: 1

      xor ax,ax / ;_loop / xor si,si / inc ax / mov cx,ax / mov bx,0003 / xor dx,dx / div bx / cmp dx,0 / jnz 0117 ;_nofizz / inc si / call 0188 ;_fizz / ;_nofizz / mov ax,cx / mov bx,0005 / xor dx,dx / div bx / cmp dx,0 / jnz 0129 ;_nobuzz / inc si / call 0195 ;_buzz / ;_nobuzz / mov ax,cx / cmp si,0 / jnz 0133 ;_CRLF / call 0149 ;_printInt / ;_CRLF / mov ah,02 / mov dl,0d ;CR / int 21 / mov dl,0a ;LF / int 21 / mov ax,cx / cmp ax,64 ;64h = 100 decimal / jl 0102 ;_loop / mov ax,4c01 / int 21 / ;Prints the value in AX to STDOUT in decimal / ;_printInt / mov di,0000 / mov byte ptr [0183],30 ;_intTemp / ;_printLoop1 / mov bx,ax ;copy AX into BX to save its value / mov dx,cccd / mul dx / shr dx,1 / shr dx,1 / shr dx,1 / mov ax,dx ;AX now holds the quotient / shl dx,1 / shl dx,1 / add dx,ax / shl dx,1 ;multiply DX by 10 / sub bx,dx / or bl,30 / mov [di+0183],bl ;_intTemp / inc di / cmp ax,0000 / jnz 0151 ;_printLoop1 / mov ah,02 / ;_printLoop2 / mov dl,[di-1+0183] ;_intTemp / int 21 / dec di / jnz 0179 ;_printLoop2 / ret / ;_intTemp / ;This is a stack to hold the digits before printing them / db "65535" / ;_fizz / mov ah,09 / mov dx,0190 ;_strfizz / int 21 / ret / ;_strfizz / db "Fizz$" / ;_buzz / mov ah,09 / mov dx,019d ;_strbuzz / int 21 / ret / ;_strbuzz / db "Buzz$"

      (Replace the / characters with \n.)

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    211. Re:When I was breaking in by fishbowl · · Score: 1

      "The most widely used definition of genius in the US is an IQ more than 2 standard deviations above average. I submit to you that no geniuses are within 2 standard deviations of the norm."

      Yes, and I'm telling the OP that he probably doesn't have "geniuses" OR "morons" working for him. He's probably making arbitrary designations based on personality traits.

      --
      -fb Everything not expressly forbidden is now mandatory.
    212. Re:When I was breaking in by Anonymous Coward · · Score: 0

      A small comment is all it takes to make it perfectly clear and maintainable.

      And what on earth do you mean by "arcane" in this case? There's nothing arcane about it.

      Would you resort to the loop for n = 1000000000 as well? Why not? Would you branch and implement both? Why?

    213. Re:When I was breaking in by Anonymous Coward · · Score: 0

      I care because (n*n+1)/2 is not going to get me the correct answer. Why don't you stick to writing loops?

    214. Re:When I was breaking in by Anonymous Coward · · Score: 0

      (n*n+1)/2 != (n*(n+1))/2

    215. Re:When I was breaking in by nimblebrain · · Score: 1

      There are those who write just to be "cool". There are even those who know a lot and like to exercise it but find correctness "boring". Avoid those at all costs. If a "genius" can't be bothered cleaning up their own messes, then they really don't know their subject matter as well as they say they do, and you will have to rewrite those fancy pieces of crap on your own dime.

      That's not to say that there aren't geniuses that listen to needs and clean up their own messes around, but they are more rare than the lazy self-professed pseudo-geniuses you sound like you have already had the misfortune of meeting.

      There isn't really one overarching "programming IQ". There's programming, empathy (why should I put in that feature? for idiots!?), debugging, testing, designing, analyzing. Someone can be a savant in one area and an untrainable mess in another.

      See also: Dunning-Kruger Effect :)

      --
      Binary geeks can count to 1,023 on their fingers :)
    216. Re:When I was breaking in by Surt · · Score: 1

      You should have read the follow ups, how embarrassing for you.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    217. Re:When I was breaking in by Surt · · Score: 1

      Yes, feel free to read the follow-up next time.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    218. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Feel free to get tired of responding to the Anonymous Cowards repeating themselves anytime now.

    219. Re:When I was breaking in by ciderVisor · · Score: 1

      Ah, but have you done one interview/year 20 times ?

      --
      Squirrel!
    220. Re:When I was breaking in by earlymon · · Score: 1

      Ah, but have you done one interview/year 20 times ?

      No and thanks for asking.

      Ever write any code?

      --
      Pathological kinda promises Path + Logical - but instead, you get stuck with pathetic.
    221. Re:When I was breaking in by Draek · · Score: 1

      Now do it for arbitrary powers of x, biatch! ;) though no, it's not sixth-grade math, my Calculus teacher showed it to us but refused to prove it and frankly, I wouldn't want to try either :D

      Personally, I prefer the simpler and way more flexible iterative version, in Python: (take _ as space, freakin' Slashdot)

      def f(min,max,interval,function):
      __sum = 0
      __for i in range(min,max+1,interval):
      ____sum += function(i)
      __return sum

      // Special case using the identity function as argument
      print f(0,100,1,lambda x: x)

      Using range() feels a bit like cheating, but implementing the same functionality with a C-style for loop is quite trivial in any case. And it also works for other stupid things, like calculating the sum of the cosine of all odd integers between 11 and 51 ;)

      --
      No problem is insoluble in all conceivable circumstances.
    222. Re:When I was breaking in by Surt · · Score: 1

      Eh, it's entertaining. Plus you tend to get a lot of karma for slamming AC.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    223. Re:When I was breaking in by clone53421 · · Score: 1

      Depending on your algorithm, that might be appropriate – if saving the space is worth the additional cost of the extra function call, anyway. E.g. you're going to be using it a lot with many different choices of function. Otherwise, I wouldn't say it's worth it.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    224. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Do you care whether they write a loop or return (n*n+1)/2? (where n=100 in this case?)

      (curious whether you are looking for the person who knows the clever solution, or the guy who can write a basic loop).

      16. Missing parenthesis in (n*(n+1))/2.

    225. Re:When I was breaking in by againjj · · Score: 1

      Boy, that's myopic. Code is not written in {Pascal, Delphi, Java, C++, Perl, FORTRAN, LISP, Shell, Assembly, Python, Objective C, JavaScript, C#, COBOL, Ruby, Tcl, Basic, Ada}? Maybe one day you will grow up a bit more and have your horizons broadened. Meanwhile, take a look at Wikipedia's List of programming languages.

      Oh, BTW, Pascal was the favored programming language for a major OS at the time I was learning how to program. It's kind of hard to say you can't write code in Pascal when most of the initial OS was written in it. Another fun note on the page is that TEX was written in a language based on Pascal (new info to me).

    226. Re:When I was breaking in by Opportunist · · Score: 1

      Don't worry, you needn't duck, that whooshing sound you hear overhead is nothing to be worried about.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    227. Re:When I was breaking in by rtechie · · Score: 1

      But, I'm 50 years old, and so I now have to "prove" myself to arrogant whelps such as yourself.

      How old do you think I am? I've notice that everyone here is assuming I'm a kid. I'm not.

      It's been my experience that younger programmers TEND to be more open to learning new things than older programmers. They're also willing to work longer hours and put up with more bullshit. And not all programming tasks involve lots of new learning. You might be great at learning, but that means you're exceptional. In fact, I happen to know how exceptional you really are.

      Example: At one of the last jobs I had we required someone with 10 years of C and C++ programming experience, 5 years of Java, a couple years of XML, networking experience, the ability to invent a new language from scratch, and the ability to do this all from day one with no training or help whatsoever. In Silicon Valley it was very difficult to find this guy. We interviewed at least 20 people before we found someone who we thought could do the job, He didn't work out. We went through 3 rounds (about 60 interviews) before finding the right guy. We didn't rule out ANYONE due to age, it wasn't a factor. But how many people over 50 do you think even applied?

      All of this is anecdotal. I haven't seen any studies on this issue, unless you can cite one this is really just my experience vs. your experience and I've seen this A LOT. Especially in large companies.

      If you want to be constructive, tell me how to distinguish between someone like you who is a good learner at 50 and a someone who is a bad learner at 50 by looking at their resume.

    228. Re:When I was breaking in by Anonymous Coward · · Score: 0

      You guys all suck! The sum from 0 to 100 is trivially solved using Gauss's grouping algorithm: 0 + 1 + 2 + ... + 100 = (1 + 99) + (2 + 98) + ... + (49 + 51) + 50 + 100 = (50 * 100) + 50 = 5050.

    229. Re:When I was breaking in by clone53421 · · Score: 1

      That can be re-written...

      50*100 + 50 = 50*(100 + 1) = 100*(100 + 1)/2

      If you look at the general form, your formula is more complex:

      (n/2*n + n/2 = n*(n + 1)/2

      Plus, n*(n + 1)/2 is more efficient in another way: You don't have to use floating point; the formula works using integer calculations. Using the formula n/2*n + n/2 will result in round-off errors for odd values of n unless you convert to floating point.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    230. Re:When I was breaking in by Anonymous Coward · · Score: 0

      or:
      int j = 0;
      for (int i = 0; i = 100; i++)
      j = j+i;

      print j;

    231. Re:When I was breaking in by Anonymous Coward · · Score: 0

      Wow, what kind of precedence is that?

      let s n = ((n * n) + 1) / 2
      let s' n = (n * (n + 1)) / 2

      These are not identical!

      map s [1..5] --> [1.0,3.0,6.0,10.0,15.0]
      map s' [1..5] --> [1.0,2.5,5.0,8.5,13.0]

      let yours = (n*n+1)/2
      map yours [1..5] --> [1.0,2.5,5.0,8.5,13.0]

      s 100 --> 5050.0
      s' 100 --> 5000.5

      But note!

      foldl1 (+) [1..100] --> 5050

      :type it
      it :: Integer

      s 100 --> 5050.0

      :type it
      it :: Double

      Type promotion: another fun source of calculation and storage error in many languages.

      Idiosyncratic rounding: another even more fun source of calculation errors in "portable" C.

    232. Re:When I was breaking in by Surt · · Score: 1

      Yes, please see any of the previous two dozen followups on this thread.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    233. Re:When I was breaking in by againjj · · Score: 1

      Sorry, I have never met a person who said what you said and was not serious. My apologies.

    234. Re:When I was breaking in by Opportunist · · Score: 1

      I've seen a few people who claim Pascal is too "wordy". Well, it is for my tastes. But a friend of mine, an avid supporter of Pascal, made an interesting point: Pascal comments its own code. And that's quite true.

      C has the tendency to tempt you to write very terse and sometimes hard to read code, because you can fit some things much more easily into fewer lines. This is true. Unfortunately, when you look at the assembly, your terse code rarely if ever really translates into terse ASM. It looks like you saved a lot of processing time, but actually, you saved nothing.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  6. Waterfall by Brandybuck · · Score: 4, Insightful

    The waterfall method is still the best development model. Uou have to analyze, then plan, then code, then test, then maintain. The steps need to be in order and you can't skip any of them. Unfortunately waterfall doesn't fit into the real world of software development because you can't freeze your requirements for so long a time. But cyclic models are a good second place, because they are essentially iterated waterfall models. When you boil all the trendy stuff out of Agile, you're basically left with a generic iterated waterfall, which is why it works. The trendy crap is just so you can sell the idea to management.

    --
    Don't blame me, I didn't vote for either of them!
    1. Re:Waterfall by Timothy+Brownawell · · Score: 5, Insightful

      The waterfall method is still the best development model. [...] Unfortunately waterfall doesn't fit into the real world

      WTF? Not working in the real world makes it a crap model.

      When you boil all the trendy stuff out of Agile, you're basically left with a generic iterated waterfall, which is[...]

      ...not a waterfall.

    2. Re:Waterfall by Anonymous Coward · · Score: 1, Insightful

      The waterfall method is still the best development model.

      I agree and that's why I painted over the windshield on my car and drive everywhere by dead reckoning. Pre-planning is the way to go for everything, I say!

      (CAPTCHA: unaware. How appropriate.)

    3. Re:Waterfall by Anonymous Coward · · Score: 0

      That's like saying a rollercoaster lacks properties of a hill just because it goes back to the start at the end of the run.

    4. Re:Waterfall by radish · · Score: 5, Insightful

      The waterfall is broken, seriously. I'm paraphrasing from an excellent talk I attended a while back, but here goes.

      For a typical waterfall you're doing roughly these steps: Requirements Analysis, Design, Implementation, Testing, Maintenance. So let's start at the beginning...requirements. So off you go notebook in hand to get some requirements. When are you done? How do you know you got them all? Hint: you will never have them all, and they will keep changing. But you have to stop at some point so you can move onto design, so when do we stop? Typically it's when we get to the end of the week/month/year allocated on the project plan. Awesome. Maybe we've got 50% of the reqs done, maybe not. It'll be a long time until we find out for sure...

      Next up - Design! Woot, this bit is fun. So we crank up Rose or whatever and get to work. But when do we stop? Well again, that's tough. Because I don't know about you but I can design forever, getting better and better, more and more modular, more and more generic, until the whole thing has flipped itself inside out. So we stop when it's "good enough" - according to who? Or more likely, it's now 1 week to delivery and no-one's written any code yet so we better stop designing!

      Implementation time. Well at least this time we know when we're done! We're up against it time wise though, because we did such a good job on Reqs & Design. Let's pull some all nighters and get stuff churned out pronto, who cares how good it is, no time for that now. That lovely, expensive design gets pushed aside.

      No time to test...gotta hit the release date.

      Sure this isn't the waterfall model as published in the text books, but it's how it works (fails) in real life. And the text books specifically don't say how to fix the problems inherent in the first two stages. What to do instead? Small, incremental feature based development. Gather requirements, assign costs to them, ask the sponsors to pick a few, implement & test the chosen features, repeat until out of time or money.

      --

      ---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"

    5. Re:Waterfall by Brandybuck · · Score: 3, Insightful

      You can't create quality software without planning before coding. Ditto for not testing after coding. This isn't rocket science, yet too many "professionals" think all they need to do is code.

      The waterfall model isn't a management process, it's basic common sense. It's not about attending meetings and getting signatures, it's about knowing what to code before you code it, then verifying that that is what you coded. The classic waterfall took too long because you had to plan Z before you started coding A, but with an iterated waterfall (which is still a waterfall, duh) you only need to plan A before you code A.

      --
      Don't blame me, I didn't vote for either of them!
    6. Re:Waterfall by pixelpusher220 · · Score: 1

      It works fine the *real* world. The one where its done when it's done and meets your requirements competently.

      I'd call it unreal, to expect a bug free, optimized, intuitive application with anything *but* an intensive and robust requirements/design period. Most projects don't have the time, so everything is shortchanged in the goal of the ship date. Complaining about what the outcome is after you subvert that is like complaining your house fell down when they used balsawood twigs instead of 2x4's.

      And to define a waterfall, just read the friggin word, water 'falls'. it doesn't say how much or whether it has to be x feet high. A 'rapids' is just a long series of very small waterfalls.

      If you have to get from point a to point b along a line, do you want just one shot to get it right, or have multiple adjustable shots so that you end up closer to your actual goal?

      Agile dev is good, but it's also damn hard to find people well versed in it to make it successful.

      --
      People in cars cause accidents....accidents in cars cause people :-D
    7. Re:Waterfall by Richard+Steiner · · Score: 1

      The steps of analyzing, planning, coding, testing, and maintaining are used in all types of software development, not just those using formalized waterfall methodologies. You just do it in smaller steps if you're using a more agile development methodology in an in-house development environment.

      Agile developers aren't idiots. They just tend to release finished software on the module level rather than as an entire cohesive product.

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    8. Re:Waterfall by MrBigInThePants · · Score: 1

      I am sorry dude. Either you have never done agile or you just never got it.

      Agile is not "iterative waterfall". It never was and never is. If you find yourself doing "iterative waterfall", then you are doing it all wrong.

      You are not the first person I have heard say this and I dare say you wont be the last...

    9. Re:Waterfall by Brandybuck · · Score: 1

      You describe the classic waterfall, the one that does not work. Your solution, "small, incremental feature based development", is in essence an iterated waterfall. You can't gather all possible requirements, but you need to gather at least one or you can't even begin coding.

      --
      Don't blame me, I didn't vote for either of them!
    10. Re:Waterfall by Anonymous Coward · · Score: 0

      but with an iterated waterfall (which is still a waterfall

      um, no it's not...the definition of waterfall means it is not iterative in nature. Moving away from waterfall is a sizing issue and making the development cyclical not the removal of planning tasks. People need to learn their terms before they provide "insight"...words mean something.

    11. Re:Waterfall by Anonymous Coward · · Score: 0

      Try developing software for some company in some country whose language is different, They may use a very different character set to interact with your program and the system they use are very different. We were doing a spiral model .. what ever little we know, implement, push it ,watch it and get crashes or not working mails, again work on and after 10 to 12 iterations we made it working without issues.

      So always you cant have one model works for all situations. Thatz why we have different models.

      i read a comment from 3 months programmer (up somewhere ) : I was also feeling i know almost all things on that time, when time passed and met GOOD people, I understood i know much less. try to interview some good people too, you may understand who better people exists in this world unless you are in a country where no people know anything about computers.

    12. Re:Waterfall by mattwarden · · Score: 1

      > The trendy crap is just so you can sell the idea to management.

      Thanks a lot, jerk. Didn't you ever think that some of our bosses might read slashdot?

    13. Re:Waterfall by mattwarden · · Score: 1

      Waterfall doesn't mean you can't adjust requirements after some arbitrary date. That's, you know, living in the real world.

      What waterfall does mean is realizing that you need to go back and consider your general and detailed design documents when your requirements change in development.

      Parent was more right than you gave him credit.

    14. Re:Waterfall by Val314 · · Score: 1

      The waterfall method is still the best development model. Uou have to analyze, then plan, then code, then test, then maintain. The steps need to be in order and you can't skip any of them.

      Nope

      You have to "test" (review) the Analysis too. If you start the test-Process after the coding is done, you are (way) to late.

    15. Re:Waterfall by mattwarden · · Score: 1

      Oh good, another bad car analogy. Perhaps we should start driving without any thought to where we're going until our pre-fabricated test shows that we finally made it to the shopping mall.

      (Just about as accurate as your analogy.)

    16. Re:Waterfall by Surt · · Score: 1

      Could you clarify any of the differences between iterative waterfall and agile. We have a very successful agile process at my shop, but I would be hard pressed to define a difference between what we do and iterative waterfall.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    17. Re:Waterfall by mattwarden · · Score: 1

      > Typically it's when we get to the end of the week/month/year allocated on the
      > project plan. Awesome. Maybe we've got 50% of the reqs done, maybe not. It'll
      > be a long time until we find out for sure...

      Um, no. Have you ever been involved in a waterfall-style project? The phase is over when the stakeholders agree and sign off on the requirements.

      > So we stop when it's "good enough" - according to who? Or more likely, it's
      > now 1 week to delivery and no-one's written any code yet so we better stop designing!

      Again, you are asking very trivial questions. According to whom? According to the stakeholders who mutually agree on the design. This isn't rocket science.

      > We're up against it time wise though, because we did such a good job on Reqs
      > & Design. Let's pull some all nighters and get stuff churned out pronto, who
      > cares how good it is, no time for that now. That lovely, expensive design
      > gets pushed aside.

      Look, waterfall is not a cure for ignorant management. Bad management will be bad whether it's agile or waterfall or spaghetti-on-wall-see-what-sticks.

      > Sure this isn't the waterfall model as published in the text books, but it's
      > how it works (fails) in real life.

      Says who? Says you who very clearly have not been on a large waterfall project with people who know what they're doing? I do this every day. We have to. Our clients demand it. I could take everything in your hyperbole above and turn it around from a cost perspective. If your company is so poorly managed that it could not pull off a waterfall style project, then perhaps you should take a look at some other companies. I could give you a few names...

    18. Re:Waterfall by Amazing+Quantum+Man · · Score: 1

      Actually, a spiral model is better. Each delivery has smaller scope, and the results of the previous spiral feed into the requirements phase of the next spiral.

      --
      Fascism starts when the efficiency of the government becomes more important than the rights of the people.
    19. Re:Waterfall by Anonymous Coward · · Score: 0

      For fuck's sake, do you know *anything* about XP/agile development?

    20. Re:Waterfall by EastCoastSurfer · · Score: 1

      Hmm...from wiki about agile:

      Each iteration is worked on by a team through a full software development cycle, including planning, requirements analysis, design, coding, unit testing, and acceptance testing when a working product is demonstrated to stakeholders.

      This sounds like a more complicated way of saying "iterative waterfall."

      You are not the first person I have heard say this and I dare say you wont be the last...

      Because that's is exactly what the Agile development method is!

    21. Re:Waterfall by arevos · · Score: 1

      The waterfall method is still the best development model. Uou have to analyze, then plan, then code, then test, then maintain. The steps need to be in order and you can't skip any of them. Unfortunately waterfall doesn't fit into the real world of software development because you can't freeze your requirements for so long a time.

      The waterfall model is a nice model that is unfortunately entirely disconnected with reality. Even if your requirements are fixed, the waterfall model is too rigid to be of any use. To effectively plan a software project, you need to be aware of all the pitfalls that you will only discover in the coding phase.

      Software development should be strategic. Construct a plan with the best information you have at the time, but be aware that plans rarely survive battle intact. You need to continually adapt your plan as new information is obtained. You need to scout out difficult terrain, and be ready to retreat when the tide turns against you. Try out unusual tactics and unconventional weaponry: this may result in failure, but when it succeeds the results can rewrite the rulebook.

    22. Re:Waterfall by swilver · · Score: 1

      I've found though that the "stakeholders" are usually people who have no clue about software. You've covered your ass that way though atleast.

    23. Re:Waterfall by Richard+Steiner · · Score: 1

      Waterfall can work fairly well in a large software development environment with strictly defined and relatively lengthy release cycles. We used it when I worked at the Unisys Airline Development/Support Center for the large USAS products sold to airlines (development cycle roughly 12-18 months between versions), and it worked just fine.

      The end result was a good software application with a fairly low number of defects, and this with a customer base that was willing to pay enough for their own copies of the source code. If there were major issues, they would have found them!

      However, I think shorter cycles and a different mindset are required if you have to write software in-house and deal with the real-world requirements of end users. Sometimes shifts in functionality or project requirements are driven by factors outside of both you and your end users (changing federal regulations, changes in another system you interface with, etc.), and that requires a flexible mindset not usually found in a pure waterfall environment. And sometimes large changes have to be designed, implemented, and tested very quickly.

      I've see it done well. It requires skilled and experienced people, usually.

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    24. Re:Waterfall by againjj · · Score: 1

      an iterated waterfall (which is still a waterfall, duh)

      Waterfall is Requirements, Design, Implementation, Testing, Maintenence. An iterated waterfall is not a waterfall, it's a series of (possibly overlapping) waterfalls. Waterfall is bad precisely because you plan A to Z before doing A. Basically every model other than waterfall is an attempt to do something other than that, like only plan A before doing A.

    25. Re:Waterfall by IronChef · · Score: 1

      I prefer "agile" over waterfall, but it has its problems too.

      One of the main commandments in agile development is that the requirements cannot change. Also, you are supposed to plan and code for a feature to be shippable when it is done.

      On paper, it looks great. Your requirements are fixed, you break development into short sprints and at the end of a sprint a feature is done and shippable, or at least one of that feature's components is in that state.

      But in the office, requirements keep changing as much as they did with waterfall because no one will say no to the boss. This messes up the schedule. And features only get to the "done enough for now" stage which means that they are good enough to sort of work and build on, but they are not complete or shippable. (Then you need a bug-fixing and polishing sprint to clean up the messes.)

      Agile's way of solving these problems is simply sticking to the method's rules, which is not really a solution at all because in the end, not everyone is going to say no to the boss, or do something the right way instead of the quick way.

      The seminar example was a web app, which is easily broken into features that can almost stand alone, like authentication. In my office, the software is much more complex, with loads of interdependencies. It is very hard to make one of our features shippable-quality, all by itself.

      Still, it's better than waterfall, IMHO. I like it. It is vulnerable to the same human weaknesses but the frequent iteration method makes mistakes easier to see and recover from.

    26. Re:Waterfall by StrawberryFrog · · Score: 1

      You can't create quality software without ... testing after coding.

      Yes you can. You can test before coding.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    27. Re:Waterfall by radish · · Score: 2, Insightful

      The phase is over when the stakeholders agree and sign off on the requirements.

      Hahahahahahahahahahahahahaha...breathe....Hahahahahahahahahahahahahaha!!

      I have no idea where you're coming from (government?) but in _my_ real world stakeholders change requirements all the time. Like daily. And saying "no you can't have this because you signed off on something last week" is a great way to dramatically shorten your career. The real world that my stakeholders live in changes all the time, so their requirements change all the time, so you have to be able to react.

      According to whom? According to the stakeholders who mutually agree on the design

      I've had stakeholders who understand requirements, and even some who understand specs. Never one who understood a design in any useful way. This ties into my first point though, without knowing the requirements are right how can you validate a design?

      Says you who very clearly have not been on a large waterfall project with people who know what they're doing?

      As far as I'm concerned, anyone who tries to do anything useful with a rigid waterfall doesn't know what they're doing by definition, so I guess not :)

      --

      ---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"

    28. Re:Waterfall by 0xABADC0DA · · Score: 1

      The waterfall is broken, seriously. ...

      What's broken is people thinking each step has to be 100% complete and 100% detailed. For instance later in your post when you say you end up with "maybe we've got 50% of the reqs done, maybe not". There is no 100%.

      Waterfall is great when loosely adhered to:

      * Requirements: get everybody on the same page to start with... what is this thing?
      * Design: how are we going to do it... what languages, client/server, mysql vs sqllite, etc.
      * Implementation: make it so
      * Testing: make sure it works

      I don't see how there can be any other way; even a prototype has to generally follow those steps in order. How can you design something if you don't have the foggiest what it will do? How can you implement parts without knowing how they will fit together? How can you test something that hasn't been written yet?

      The real problem with waterfall is at each step the people feel like the people doing the next step (or 'grading' their step) are idiots. So they try to be 100% complete and spell everything out in 100% excruciating detail. It's like testing, which ironically is only worth doing if the program is written well and has few bugs. If you don't trust that the next step is competent then you all fail.

    29. Re:Waterfall by arevos · · Score: 1

      Waterfall can work fairly well in a large software development environment with strictly defined and relatively lengthy release cycles. We used it when I worked at the Unisys Airline Development/Support Center for the large USAS products sold to airlines (development cycle roughly 12-18 months between versions), and it worked just fine.

      Perhaps I was too harsh :)

      Obviously I can only speak from my own experience, but all the waterfall-based projects I've worked on would have benefited from a more fluid approach to software development. Perhaps there are projects that work well with waterfall, but personally I've never seen the waterfall methodology do anything but hinder, even for long-term projects.

    30. Re:Waterfall by oliderid · · Score: 1

      Try developing software for some company in some country whose language is different,

      I had this experience. We were working with a Greek company. They did a quite remarkable financial web based application (java applets). 2003 I think.

      Everything worked like a charm in Athens...I installed it on my computer it worked too (I had to install greek fonts previously). Then back here in Brussels, we started some life demo in our customer office. It was the nightmare of my life. I was in front of all those guys and java kept crashing for non reason while initializing the applet. The presentation was cancelled.

      After days of debugging we finally found why, the piece of software was extremely verbose while running...And every single sentences was in Greek Alphabets. These characters were unsupported on a "latin" based Windows XP computer and it led to a crash.

    31. Re:Waterfall by gbjbaanb · · Score: 1

      Lets see - you say "For a typical waterfall you're doing roughly these steps: Requirements Analysis, Design, Implementation, Testing, Maintenance.", then you say "What to do instead? Small, incremental feature based development. Gather requirements, assign costs to them, ask the sponsors to pick a few, implement & test the chosen features"

      So you go requirements, analysis (ie figure out costs), design ('cos surely you don't just start tapping away coding the new features without some thought), implementation, testing and obviously maintenance (as you've got to fix the bugs in your current release when you release the next).

      Hmm - so really, your "spiral" model is just a lot of little waterfalls. The problem was never the waterfall method, just that it was stretched out so far beyond manageability.

    32. Re:Waterfall by Renraku · · Score: 1

      The plan is sound and reasonable. The customers are not. Most people that order software will not tell you to ship the product when its good and ready. They'll ask you if you can have it done in half of the reasonable amount of time. As soon as you say no, you've just heard them hang up. Supposing that you for some reason do agree to their terms, their requirements and scope of the project will fluctuate wildly. If you try to pidgen hole them into coming up with a design and sticking to it, or tell them that you can't change that email program you bid for into a fully functional custom secure web-browser and 3d engine by the deadline, they'll probably walk out. Supposing that you for some reason accept these and try to get the product out, it will be either late or very close to the ship date. The company will tell you that there's no time for testing and to ship the product now. If you refuse, you're going to face large fines/breach of contract/etc. If you accept, you've just shipped shitty and incomplete software. The problem, again, is not in the design. The issue is twofold: There will always be someone to say 'yes' and that people do not understand the time and money required to develop GOOD software.

      --
      Job? I don't have time to get a job! Who will sit around and bitch about being broke and unemployed then?
    33. Re:Waterfall by mattwarden · · Score: 1

      > I have no idea where you're coming from (government?) but in _my_ real world
      > stakeholders change requirements all the time.

      I didn't say anything about requirements not changing. I said the requirements phase ends when the requirements are agreed to by the stakeholders.

      > Like daily. And saying "no you can't have this because you signed off on
      > something last week" is a great way to dramatically shorten your career.

      Why would I say that? I would instead say "we will take that and work on an impact analysis for you, and let you know what this will do to the cost estimate." If you are increasing scope without regard to cost, you are either starting off with a huge margin (in which case you will just get underbid by your competitors without mercy) or you are going to end up in the poor house.

      > The real world that my stakeholders live in changes all the time, so their
      > requirements change all the time, so you have to be able to react.

      Absolutely. We're not talking about being inflexible. We're talking about the process to handle changes and the recognition of their impact.

      You can continue laughing now...

    34. Re:Waterfall by MrBigInThePants · · Score: 1

      NB: I am defaulting to SCRUM here, fully realising there are other flavours.

      Agile encompasses a new style of requirements gathering, customer focus, team structure and ethic, etc AS WELL as development process. There are discussions around agile architecture, refactoring, TDD, priority setting, costing, pigs and chickens, etc.
      Now obviously this process is iterative (e.g. in Scum it is sprints), but that does not make it "the same" as iterative waterfall.
      Now I am sure that the waterfall model has discourse around all these issues and I am also sure that the discussions come to vastly different conclusions.
      e.g the waterfall model does NOT prescribe specific methods and techniques for focussing on customer requirements and priorities of work. This is nebulus to the waterfall model.

      Is agile iterative? Of course it is!?

      Does that make it iterative waterfall? NO.

      Agile is as much about the team and its interaction with the company and client as it is about the development process itself.

      Apples and oranges to be honest.

    35. Re:Waterfall by MrBigInThePants · · Score: 1

      No. And quoting one sentence from wiki does not win an argument.

      Of course Agile is iterative?? Just because two things share a subset of common features does not make them the same - even if some of those features are fundamentals.

      Airplanes have wheels, engines, seats and a steering mechanism. Cars have these also. Wheels etc are fundamental.
      Are they both modes of transport? Yes.
      Are airplanes and cars even close to being the same? No.

      Before this discussion would even start you would have to point out that "waterfall" only covers the design, coding and testing portion of development. Agile ALSO covers organisational and team structure, philosophy, interaction with the customer, etc.

      I have spoken more in response to another post.

    36. Re:Waterfall by Jherek+Carnelian · · Score: 1

      The waterfall method is still the best development model.

      That's funny because the waterfall model was first described by Winston Royce in a two-part article using it as a fictional "bad" approach to software engineering.

      Due to the two-part setup of the article, many people only read the first part that described the waterfall model but not the second part where he lays out just why it is a bad model. Consequently, thousands of papers have gone on to cite Royce's paper as the source of the model without realizing that his only reason for describing it was to discredit it.

      Kind of like the way people often refer to Ben Franklin as the creator of "daylight savings time" when in fact it was a big joke.

    37. Re:Waterfall by DragonWriter · · Score: 1

      Waterfall is Requirements, Design, Implementation, Testing, Maintenence. An iterated waterfall is not a waterfall, it's a series of (possibly overlapping) waterfalls.

      Or, rather, its a bunch of subprojects, each of which are developed with a waterfall methodology. The key difference between "traditional waterfall" and "agile" methods, in terms of big-picture process, is that agile methodologies involve some analysis as to the proper units of work to which the basic waterfall methodology is applied (different specific methodologies that are within the broad "agile" umbrella often have slightly different approaches to determining what the appropriate units of work are), whereas the more traditional waterfall doesn't even consider this factor and just takes the whole project scope as the unit of work, putting the determination of the unit of work to which the basic series of tasks are applied outside the scope of the methodology. And organizations that use the waterfall methodology will divide work into subprojects (usually, larger ones than the units you'd expect with most agile methodology), but usually in an ad hoc way, agile methodologies tend to present particular (even if somewhat subjective) criteria to apply to determine what the units of work should be.

      Agile methodologies are probably best seen, collectively, as refinements to the basic waterfall methodology, rather than rejections of it.

    38. Re:Waterfall by Anonymous Coward · · Score: 0

      You meant idiots that doesnt do feature priorization and dont decompose the whole project in milestones reached by repetitive application of waterfall are doomed and fail... wow (I have believed is because they are idiots, not because the method is broken)

    39. Re:Waterfall by mattwarden · · Score: 1

      I was including the application team. Like I said, it's not rocket science; it's over when the people involve agree on the deliverable. Happens every day...

    40. Re:Waterfall by ozphx · · Score: 1

      A rollercoaster is a similar size to a hill - and is basically waterfall, with versions.

      When you take the tiny tiny iterations of the Agile process, the bumps become so small that the closest analogy is sticking a vibrator up your ass - which describes the process quite exactly, IMHO.

      --
      3laws: No freebies, no backsies, GTFO.
    41. Re:Waterfall by ozphx · · Score: 1

      You finish Design, when it is Done.

      If you knew shit about your problem domain, then you would be able to determine when your model matches the problem domain, and can support the functional requirements.

      --
      3laws: No freebies, no backsies, GTFO.
    42. Re:Waterfall by Brandybuck · · Score: 1

      Out in the real world you'll find that successful software projects plan before coding and then test. They might not plan Z before coding A, but they damned sure planned A before coding A!

      --
      Don't blame me, I didn't vote for either of them!
    43. Re:Waterfall by jstott · · Score: 2, Insightful

      Hint: you will never have them all, and they will keep changing. But you have to stop at some point so you can move onto design, so when do we stop?

      This is a solved problem in engineering. You write the contract so that if the customer [internal or external] changes the requirements it carries a financial penalty and allows you [the developer] to push back the release date. On the other side, if you discover a problem after you've shifted out of the design phase, then you are SOL and your company eats any associated cost. Contracts like these are motivation for both of you to get it right the first time.

      -JS

      --
      Vanity of vanities, all is vanity...
    44. Re:Waterfall by Brandybuck · · Score: 1

      I was talking about real world software development, not mythology. Test first all you want, but you still need to test afterwards. Period. Sometime after you make your last commit and before you ship, you need to test. It doesn't matter how many unit tests you wrote before coding, if you don't run them you haven't tested. You also have integration and systems testing as well, which your link blatantly ignores.

      --
      Don't blame me, I didn't vote for either of them!
    45. Re:Waterfall by Brandybuck · · Score: 1

      You are too hung up on terminology. I'm an English major and it amuses me to no end to see engineers getting hung up on mere words.

      Agile Software Development may be a rigorously defined term with religious adherent, but "waterfall" is not. Agile uses (not "is", but "uses") an iterative waterfall model because it is iterative and each iteration includes (but is not limited to) planning, designing, coding and testing, in that order. Of course, since you are a langauge lawyer, I have to further clarify that you can indeed test all through the process, but significant testing still occurs after the coding. Thus it's a waterfall.

      Plan before coding and test afterwards. Duh.

      --
      Don't blame me, I didn't vote for either of them!
    46. Re:Waterfall by Anonymous Coward · · Score: 0

      Hahaha!
      I've attended Software Engineering classes last semester, and that`s exactly how it happened!

      We had a semester-long project, with a waterfall schedule. We spent a couple of months analysing requirements, and came up with all sorts of features one could think of.
      After that, we spent a few weeks designing but, since we had soooo many planned features, we had to give up half of them.
      Then, in the last week or two of the semester, we implemented it. Most of the features were cutted off because of the time constraints, and the final "product" was buggy, had an awful interface that allowed you just to log-in, log-out and register new users. Duh.
      Oh, and inspite of having it separated in maaaaany modules, just 2 of them would actually do something, and they comunicated using a "forwading-chain" made by the dozens of modules planned on the previous step. Duh.

      I'm ashamed of that. But what makes me mad is that it was exactly what our professor expected. That's a pity we can't quit some classes.

    47. Re:Waterfall by recharged95 · · Score: 2, Interesting
      Obvious you were working in the consumer-commercial side of the waterfall practice.

      .

      On the DoD Space Systems side, we had stuff like:

      • A Requirements Traceability Matrix
      • PDR: Preliminary Design Review with the Customer
      • CDR: Critical Design Review with the Customer
      • IOC: Initial Op capability
      • FAT: Preliminary Acceptance Testing
      • FOC: Final Op capability
      • FAT: Final Acceptance Testing

      And never had a launch delay due to writing software last minute. And as long as the h/w flew fine, we had birds that ran in space for years. Years.

      .

      The Waterfall model "failed" because of a. it got too expensive due to competition (mainly smaller firms that cut corners resulting in more failures); it wasn't "faster, cheaper". And b. all the OO and Agile guys were better salesmen.

      .

      I bet DeMarco is enjoying the responses.

    48. Re:Waterfall by turbidostato · · Score: 2, Informative

      "One of the main commandments in agile development is that the requirements cannot change."

      Maybe you read the wrong book. In my book requirements don't change *within a sprint*.

      "Also, you are supposed to plan and code for a feature to be shippable when it is done."

      And you plan it so it can be done within a sprint. So before the sprint you get the client to accept feature "A" (you will show him a list of features so is he, not you, then one that sorts them). After the sprint you offer your client the promised feature "A" (and ideally, you bill your client for the feature).

      "But in the office, requirements keep changing as much as they did with waterfall"

      And that's exactly why agile exists: because it recognices requirements *will* change. Since they'll change why expend a lot of time on producing a very long list of intermingled requirements, then a long (and costly) development cycle, then after a long time and expenditure show the whole list of asked for requirements done only to find that 25% of the original requirments were not indeed required because the client didn't properly understood them, 25% of them were wanted no more because on such a long time situation changed and 50% new requirements arosen because, again, the long time awaited?

      You better agree on a sketchy *cheap* and *fast* gross list of requirements, short them as for the client's percieved value and start producing functionally complete code ASAP. The client is glad because gets to see the advance on the project; your company is glad, because the client is glad, it can suck money faster from it, and due to the constant exchange of ideas is easy to engage on new projects. When agile is possible is a win-win proposition.

      "This messes up the schedule."

      That clearly means you are not doing agile at all. If you have a long run schedule, you are not doing agile. If you are doing agile, then there's no long run schedule to mess up with. You can have a starting grosstimate at best and the continous feedback with your client will make him easly understand and accept any delays because it will have strong feedback about being him not you the main responsible for the slippage.

      "And features only get to the "done enough for now" stage which means that they are good enough to sort of work and build on, but they are not complete or shippable."

      Again, you are clearly not doing "agile". Of course bugs can arise but if you do it the proper way there's no way for a feature to be so long running and complex that they can slip too much (they should fit within a single sprint), and since you are doing tests->autodoc->prototype->implementation there's no chance of shipping "done enough" features as is the case when you develop functionality for the easy cases->corner cases->documentation (this too common way is the one that always gets cut up at step one "easy cases" since then it "seems" to work; the first way only seems to work when it indeed works).

      "not everyone is going to say no to the boss"

      Again, "agile" works on the assumption that in fact nobody can say "no" to the boss producing a framework where you won't need to say "no" to the boss.

      "The seminar example was a web app [...] In my office, the software is much more complex"

      This seems to be the only sensical assertion you made to this point. Yes it's true: agile is not the solution for every project. While proper practice and experience can help you to find a way to split more and more problems so it can become "agile-tractable" there will definetly be situations where due to the inherent complexity and internal coupling of the problem "agile" is not the way to go. If the seminar guy explicitly told or make the impression that "agile" is a silver bullet for any software project, then that just were a "snake oil vendor seminar", not to say that there are no little numbers of them.

    49. Re:Waterfall by Seth+Kriticos · · Score: 1

      I'm tired of people knowing the "true" way. It is true that without a decent planing and design period you will get nothing workable, but you can easily get lost in these phases. Also requirements often change late when first running something is up and someone actually tries it.

      In my experience it works best if you do a decent planing and design without too much fuss and then create a prototype to have something to analyze. Then you complete your plan and do/redo the development. What also works out good is test driven development, writing the tests while developing. Greatly increases the maintainability and you also get a sort of documentation that has actually something in common with the actual implementation. When the basics are done, you add the features you need and then test the application. Then you let someone how is supposed to use it and is not involved in the development test it and find the stuff you would not look for. This way with added competent personal you may end up with something workable (i.e. not crappy).

      Of course this would imply some conditions which are almost never met in reality:
      * Assignment of the necessary resources to the project (enough time and money)
      * Developers who have a clue what they are doing (rare, expensive)
      * Sane development guidelines and practices.

      In the end it is a question of what works out the best for you and what kind of environment, requirements and customers you have.

    50. Re:Waterfall by chromatic · · Score: 1

      It doesn't matter how many unit tests you wrote before coding, if you don't run them you haven't tested.

      That's why in test-driven development, you write a test, you run it, you watch it fail, you make it pass, you refactor the code, and then you repeat. No one who's ever done test-driven development would ever suggest that you write all of your tests before writing any code or that you run all of your tests only after you've written all of your code. TDD is a design exercise intended to produce well-factored, testable code which does only what it needs to do and includes comprehensive regression tests.

    51. Re:Waterfall by chromatic · · Score: 1

      This is a solved problem in engineering.

      It's only a solved problem if you're exceedingly lucky, if you've built the exact same thing multiple times before, or if "solved" also includes "your customer is unhappy because the software doesn't do what he realized he needed it to do."

      Contracts like these are motivation for both of you to get it right the first time.

      Have you ever seen that work? I haven't. I've only ever seen such contracts devolve into finger-pointing and name calling and budget and deadline slips.

    52. Re:Waterfall by IronChef · · Score: 1

      Yes, I meant to say "within a sprint" several times, I didn't mean to say that requirements can't change at all.

      You are right in that we are clearly not doing pure "agile" development. What I was trying to get across, albeit poorly, is the problems that you can see in agile when you don't stick to the rules, which often happens in my office.

      I think this is partially because our product may be ill-suited to agile, and partially due to cultural issues. There's still very much a waterfall mentality lingering on, in that we have a ship date and other must-hit targets.

      Even then though, the agile process (malformed though it may be) seems to provide transparency, accountability, and flexibility that we didn't have before.

    53. Re:Waterfall by Anonymous Coward · · Score: 0

      Trendy "Agile" crap development has produced the worst code bases I've ever worked with. They managed to hit end of life cycle before beta was finished, and needed CONSTANT resuscitation through refactoring not to be thrown in the trash.

      The worst "model" ever to be introduced was Agile Development. It rarely produces anything but undocumented end-of-life junk. I have stopped hiring anyone that proclaims Agile as the end all in development. Even mentioning Agile in the interview is enough for me to circular file the resume.

    54. Re:Waterfall by EastCoastSurfer · · Score: 1

      From the same wiki article:

      some agile teams use the waterfall model on a small scale, repeating the entire waterfall cycle in every iteration.

      And then you say:

      Before this discussion would even start you would have to point out that "waterfall" only covers the design, coding and testing portion of development.

      You clearly don't know your development methodologies. Have you actually ever read Royces paper on the waterfall method? How about many of the papers since then describing the waterfall method and comparing it to many other methods? I suggest you first read "Managing the Development of Large Software Systems" by Dr. Winston Royce and then get back to me. Here's a hint, 'waterfall' only describes the order (and the lack of ability to return farther back than the previous step) of the steps taken and not the actual steps. In the original paper he makes notes of all the steps of creating software: system requirements, software requirements, analysis, program design, coding, testing, and operations. No where are the steps limited.

    55. Re:Waterfall by Anonymous Coward · · Score: 0

      Maybe your professor wanted you to fail horribly so you'd *know* why waterfall is such a bad idea? And that way, you don't have to learn it later by using waterfall in a real project.

    56. Re:Waterfall by NeoSkandranon · · Score: 1

      Where do contracts like that exist again? In my experience sales will always make a contract as easy on the customer as possible.

      --
      If you can't see the value in jet powered ants you should turn in your nerd card. - Dunbal (464142)
    57. Re:Waterfall by agbinfo · · Score: 1

      The difference is that with Agile development, you do your meetings standing up. In the waterfall model, you can sit down.

    58. Re:Waterfall by StrawberryFrog · · Score: 1

      You also have integration and systems testing as well, which your link blatantly ignores.

      Yes, those links ignore a lot of things, but that doesn't make those things bad and wrong. They are just less important if you have good tests upfront, and run them before you commit (and after as a CI build).

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    59. Re:Waterfall by DragonWriter · · Score: 1

      For a typical waterfall you're doing roughly these steps: Requirements Analysis, Design, Implementation, Testing, Maintenance. So let's start at the beginning...requirements. So off you go notebook in hand to get some requirements. When are you done? How do you know you got them all?

      When you take the brief description of the project goal that you was generated before even requirements gathering, before a decision was made to start work on a project, and which is what the decision being made to start work on the project was based on, and take the list of the requirements gathered so far, and the answer to the question "Will the system satisfy (brief description) if it satisfies (all of requirements gathered so far)?" Then you know you've gathered all of the requirement at the level you are gathering requirements currently.

      (You also should ask "Will the system satisfy (brief description) without any of (requirements gathered so far)?" so you can parking lot anything that is out-of-scope.)

      Next up - Design! Woot, this bit is fun. So we crank up Rose or whatever and get to work. But when do we stop?

      When you have a design for a system that meets the requirements.

      So we stop when it's "good enough" - according to who?

      According to a decision-maker whose job it is to review the design against the requirements.

      Sure this isn't the waterfall model as published in the text books, but it's how it works (fails) in real life.

      Yes, if you do it wrong, it fails. So does Agile, and the problems are pretty much of the same type. The principal advantage with Agile is that it manages risk by reducing the harm resulting from any single failure, by breaking up the work into smaller chunks which are specified, designed, developed, etc.

    60. Re:Waterfall by MrBigInThePants · · Score: 1

      You should stick to what you know. I am not hung up on terminology at all. I am hung up on calling two completely different things the same.

      Since you are an english major, or a student at all, I assume you do not have a working knowledge of both these?

    61. Re:Waterfall by MrBigInThePants · · Score: 1

      And these are all completely different to agile.

      Thanks for proving my point.

    62. Re:Waterfall by Anonymous Coward · · Score: 0

      "No time to test...gotta hit the release date.".............. and then it fails spectacularly, and you spend another 3 years chasing bugs, and EVENTUALLY understand the business processes behind the app.....

      INSTEAD of doing it properly the first time.

      I have designed and built systems since 1976. The "quick and dirty" ones ALWAYS fail. The "OMG THAT LONG" ones, done properly, last forever. And yes, sonny, I do web based eye-candy shit as well..... but the system I did in 1983 is STILL running.

      There is NO substitute for proper analysis and design. And don't tell me "the requirements changed!" - nope, you just didn't ask the right questions.

  7. Top 10 Most Dangerous Summary-Writing Errors by Anonymous Coward · · Score: 0

    10. Writing '15' instead of '25'

  8. Modus Operandi by HockeyPuck · · Score: 1

    modus operandi of cramming in as many features as possible, and then fixing problems in beta.

    Sure his waterfall method works when you can guarantee that 100% of the features/functions you need in a product are determined during a Requirements phase. However, when company X will buy $10m of your product if you paint it red; then you agree to it; let the date slip and paint it red.

    1. Re:Modus Operandi by John+Hasler · · Score: 2, Insightful

      Except that what you actually do is promise to paint it red even though you know that you do not have and cannot get any red paint. Then you deliver it green and try to tell the customer he is colorblind and besides the next model really will be red.

      --
      Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
    2. Re:Modus Operandi by yttrstein · · Score: 1

      If you're the right kind of company that consistently sells a very high quality product, you have enough breathing room in every case to say "no" to a customer who's asking for things that will destabilize their product.

      I do it all the time, and I've never once lost a customer doing so.

      Grow some fucking balls.

    3. Re:Modus Operandi by molotovjester · · Score: 1

      I think what we need here is a car analogy rather than a color analogy.

    4. Re:Modus Operandi by sakdoctor · · Score: 1

      Can I get that steaming pile of crap in cornflower blue?

    5. Re:Modus Operandi by Cro+Magnon · · Score: 1

      We're not allowed to let the date slip. We just cut out the tests for lead so we can ship the painted product on time. What could go wrong?

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    6. Re:Modus Operandi by dacut · · Score: 2, Funny

      Except that what you actually do is promise to paint it red even though you know that you do not have and cannot get any red paint.

      It doesn't matter, anyway, because the customer changes his mind mid-project and wants it blue. After it's delivered, they realize they wanted a bicycle, not software. Nonetheless, they attempt to ride it.

      While this makes about as much sense as the Chewbacca Defense, this explains a good 50% of the projects I've worked on. Hm. Right, I'll just sob in my tea now...

    7. Re:Modus Operandi by sjames · · Score: 1

      There is that. The damage is contained, however, if the basic product is clean and well done as a result of the waterfall method. Alternatively, there is the approach of iterative waterfall to get more rapid cycles.

      Unfortunately, a lot of what happens today is more like throw a bunch of code at it and see what sticks. Then duck tape over any cracks and ship it.

    8. Re:Modus Operandi by AgentGibbled · · Score: 1

      "let the date slip and paint it red."

      I'd typically be more than happy to paint it red, but management never seems too interested in letting the date slip.

  9. Perfection Has a price by Anonymous Coward · · Score: 0

    The industry I'm referring to is the chip industry. Hardware designers code pretty much like software developers (except the languages they use are massively parallel, but apart from that, they use the same basic constructs). Hardware companies can't afford a single mistake because once the chip goes to fab, that's it. No patches like software, no version 1.0.1.

    Yeah...Right:

    -There is never a revision AB/BB silicon

    -Microcode updates don't exist

    -No hardware designer has ever had to ECO something in

    -The synthesis program NEVER makes mistakes

    -The formal equivalence program is perfect

    -The simulation environment is perfect

    Keep dreaming...

  10. Damn Lazy Programmers! by pete-wilko · · Score: 3, Interesting

    Yeah, those good for nothing programmers cramming in features all over the place and not ad-hearing to time honored development practices like waterfall!

    And requirement changes? WTF are those? Using waterfall you specify your requirements at the beginning, and these are then set in stone, IN STONE! Nothing will ever change in 6 -12 months.

    It's not like they're working 60-80 hour weeks, been forced to implement features, having new requirements added and not being listened to! That would be like marketing driving engineering! Insanity!

    As an aside - why is he dragging OO into this? Pretty sure you can use waterfall with OO - you even get pretty diagrams

  11. typo in summary by drquoz · · Score: 1

    The list is actually 25, not 15.

    1. Re:typo in summary by marcosdumay · · Score: 1

      Yeah, but /. is following the waterfall model. Time to write the summary has passed, now only the comments may change.

  12. Extensible Framework by should_be_linear · · Score: 2, Interesting

    Most horrible projects I've seen were "extensible frameworks" that can do just about anything with appropriate extensions (plugins or whatever). But currently, without any existing extensions, it is bloated pile of crap. Also, there is nobody in sight willing to make one extension for it (except sample, done by author himself, on how to easily create extension).

    --
    839*929
    1. Re:Extensible Framework by Anonymous Coward · · Score: 0, Flamebait

      See: Eclipse

    2. Re:Extensible Framework by Anonymous Coward · · Score: 1, Informative

      Yup. Eclipse is definitely an example of this. Except that it does a lot without any plugins installed, and there are literally hundreds of plugins available to fill practically every need.

  13. Those who fail to learn the lessons of history by overshoot · · Score: 3, Insightful
    ... are destined for greatness, because their bullshit is not burdened by reality.

    I've heard from several ex-Softies that the company inculates its recruits with a serious dose of übermensch mentality: "those rumors about history and 'best practices' are for lesser beings who don't have the talent that we require of our programmers." "We don't need no steenking documentation," in witness whereof their network wireline protocols had to be reverse-engineered from code by what Brad Smith called 300 of their best people working for half a year.

    However, I'll note that they were right: anyone who wants to say that they did it wrong should prove it by making more money.

    --
    Lacking <sarcasm> tags, /. substitutes moderation as "Troll."
    1. Re:Those who fail to learn the lessons of history by jd · · Score: 2, Insightful

      The Brinks-Matt Robbery, in which thieves brazenly stole truck-loads of gold bullion, and the two gigantic heists at Heathrow Airport, were all 100% correct - from the perspective of the thieves. And given that next to nothing from any of these three gigantic thefts was ever recovered, I think most people would agree that the implementation was damn-near flawless. As economic models go, though, they suck. They are so utterly defective in any context other than the very narrow one for which they were designed, and even then only from the very narrow, short-sighted perspective of the thief, that they have zero reusability.

      Just because something makes a person rich doesn't mean that something is worth copying, would even work for someone else, or could ever be to the advantage of anyone but the original person. It is equally flawed logic to assume that "correct" behaviour could be equally profitable to one-off flawed behaviour. Flaws can make some damn good income, short-term, even if they must degenerate in the long-term.

      You will find socially-irresponsible companies have the fastest-rising stocks in the stock-market. Well, until they crash and burn. Cults are the most profitable of all societies. Until they self-destruct. Extremists have the ultimate in work ethics, until they die from the strain. In the Dark Ages, you could build far and away more wooden palisades than you could build stone fortifications. Well, until the builders all died horribly from Greek Fire (early napalm).

      And nobody will ever make more money than Microsoft by writing responsibly and sensibly. In the long-term, Microsoft's code is unsupportable and its methodology is unscalable. Vista showed that they are approaching (but are not yet) at the limits. They might not reach the limits for another 10-20 years, but they will someday reach them in such a way that they have blocked off all avenues of escape.

      A software company producing a good, solid product won't necessarily make much money in any given year, now or ever, but if the design is truly as good as all that, it will sell longer and require less maintenance. Instead of a 50-year lifespan for the company, you might well be looking at a 250-year lifespan or more. (There are companies today that are much older than that.) I'd say that such a company can legitimately say that it is doing things right, because they meet the ultimate requirement: will you adapt or will you die?

      It is also possible that a company that lasts that long will actually end up making more money than Microsoft (as a sum of gross revenue, not net), even if they never matched the sorts of sales Microsoft have achieved and even if they never end up as rich because they spent that resource on improving their product over and above improving their bank balance. Failure to invest is not an admirable quality in my book, nor is cutting corners. In terms of social evolution and being able to adapt to new environmental pressures, Microsoft is an evolutionary dead-end. Massively successful in the short-term, but incapable of survival on a meaningful timeframe.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  14. Re:The biggest software bugfix by Anonymous Coward · · Score: 0

    7.

  15. Users are to blame by Chris_Jefferson · · Score: 5, Insightful
    The sad truth is, given the choice between a well-written, stable and fast application with a tiny set of features and a giant slow buggy program with every feature under the sun, too many users choose the second.

    If people refused to use and pay for buggy applications, they would either get fixed or die off.

    --
    Combination - fun iPhone puzzling
    1. Re:Users are to blame by curunir · · Score: 4, Interesting

      The even sadder truth is that when faced with the choice of the two apps you describe and a third buggy application with a tiny set of features, users will choose the most visually appealing app, regardless of lack of features or the app being buggy.

      The under-the-covers stuff is important, but finding a good designer to make it pretty is the single most important thing you can do to make people choose your product. If it's pretty, people will put up with a lot of hassle and give you the time necessary to make it work reliably and have all the necessary features.

      --
      "Don't blame me, I voted for Kodos!"
    2. Re:Users are to blame by poot_rootbeer · · Score: 1

      The sad truth is, given the choice between a well-written, stable and fast application with a tiny set of features and a giant slow buggy program with every feature under the sun, too many users choose the second.

      Do you mind if I rephrase this statement in a way that makes the users' choice somewhat more sympathetic?

      "Given the choice between an application which never meets their needs and a program which sometimes meets their needs, users often choose the second."

      It's better in the minds of many to have a feature which works right 90% of the time but fails the other 10% than it is for the feature to be entirely absent.

    3. Re:Users are to blame by Taagehornet · · Score: 1

      It's probably a fact, but while the programmer in me is having a hard time accepting this I'm not entirely convinced that it's a sad fact.
      Users are rarely idiots. It may well be that the bells-and-whistles version, despite all its flaws, cracks and leaks, will fit their needs better than the trimmed down version.

    4. Re:Users are to blame by Piranhaa · · Score: 1

      Every feature under the Sun

      Oh like how Solaris and OpenSolaris comes with every program imaginable, installed by default?

    5. Re:Users are to blame by Belial6 · · Score: 1

      You know, it's kind of funny that you are posting this on a web browser with HTML, as it is a perfect example of your second type of application.

      Don't take that as an insult, as I am also posting to a discussion thread using a giant slow buggy program with every feature under the sun.

      The question is though, would you rather be using a stable and fast application with a tiny set of features to read and post to Slashdot, or do you like using a huge generic buggy app?

    6. Re:Users are to blame by mrjantz · · Score: 1

      "Those who would give up stability for features deserve neither and will lose both." -Ben Franklin

    7. Re:Users are to blame by Chris_Jefferson · · Score: 1

      I'm not saying I don't just this group too. Just that this is why there is buggy software, and no amount of process is going to solve it. We, including me, are willing to trade bugs for features, so that is the kind of software the clever person is going to create.

      --
      Combination - fun iPhone puzzling
    8. Re:Users are to blame by gandhi_2 · · Score: 1
  16. Re:The biggest software bugfix by McGiraf · · Score: 1

    of.

  17. Its all true by yttrstein · · Score: 0, Troll

    Which is precisely why I would *never* in a million years hire a programmer under 30, and rising.

    I interviewed someone who became proficient enough in computer programming to get a masters degree from what was, when I was in school, an amazingly advanced Comp Sci program -- who didn't know what a linker does.

    1. Re:Its all true by Cornflake917 · · Score: 5, Insightful

      I think refusing to hire someone solely because of their age is naive. Is there some magical event at the age of 30 that bestows knowledge of linkers to the aging programmer? Give me a break. You are making bad assumptions. Your first bad assumption is that just because of your anecdotal experience dealing with one individual, that all schools no longer teach anything about linkers. Your second bad assumption is that even if that was true, no programmer would learn that information on their own, as if no one is generally interested in learning comp sci any more outside of the classroom.

    2. Re:Its all true by yttrstein · · Score: 2, Funny

      You must be under 30.

    3. Re:Its all true by joh6nn · · Score: 1

      comments like yours are precisely why people my own age embraced sayings like "never trust anyone over the age of 30". you're right, though; a sweeping generalization is way better than admitting that Sturgeon's Law is the norm in every generation, and you ALWAYS have to work hard to separate the wheat from the chaff.

      --
      i am a loser geek, crazy with an evil streak, yes i do believe there is a violent thing inside of me.
    4. Re:Its all true by Anonymous Coward · · Score: 0

      And that leads to a lawsuit for ageism. While I understand your reasoning, it's only going to lead to trouble should the people you're interviewing or dismissing find out.

    5. Re:Its all true by CaptainMordecai · · Score: 1

      Don't you think that part of your job as a more experience programmer is to share your knowledge with juniors/graduates?

      Universities are mostly interested in who can pay,. I'm 24 and I've got a computer science degree - real comp sci with maths and algorithms, i wrote a compiler, studied language theory you name it. Now I'm doing a masters degree (at one of the top universities in Australia) and as part of it I've worked with guys who couldn't write software. I've also met a bunch of really talent and smart guys all in their early 20s.

      But I've also worked with guys who have been around for years with no idea on how to write software either and churned out crap code without even a single unit test in sight. Point is - there are bad developers of all ages and you shouldn't discount an entire group because of one idiot who didn't know what a linker does.

    6. Re:Its all true by Lord+Grey · · Score: 1

      I think refusing to hire someone solely because of their age is naive.

      You are absolutely right. I don't care about age, height, skin color, gender, etc.. What I care about is flexibility and skill.

      That said, from my own personal experience (which undoubtedly varies wildly from other people's experience), a candidate that learned how to program by writing Java code fails. When faced with a new programming task, the first thing they do is fire up Google.

      Those people tend to be under the age of 30.

      --
      // Beyond Here Lie Dragons
    7. Re:Its all true by yttrstein · · Score: 2, Funny

      You know, once you GET to 30, you do immediately understand why you should never trust anyone over 30.

      It's because we know how fulla shit people under 30 are. Don't worry, you'll agree before ya know it, champ.

    8. Re:Its all true by yttrstein · · Score: 1

      1. I'm not a programmer
      2. If you remember how you wrote that compiler, you know what a linker is
      3. I discount an entire group that has very few good programmers in it to save myself quite a giant lot of time.

      And you know what time is.

    9. Re:Its all true by Neeperando · · Score: 1

      Unless you're writing a compiler, how much does a person need about linkers besides that .c files get compiled into .o files and .o files get linked into an executable?

      Many people only know what they have needed to know so far in their lives/careers, but it doesn't mean they're incapable of learning, nor does it mean that Compilers is a required course for a Masters' degree.

      --
      Being a computer scientist means you tell people how computers should work, not that you know how they actually work.
    10. Re:Its all true by swilver · · Score: 1

      No bestowing is ever done, cause the age limit goes up by 1 every year :)

    11. Re:Its all true by yttrstein · · Score: 1

      Bingo. You can really tell the modders in this thread are under 30...which makes sense when you think about it, since really they're the only ones who would be offended by my statement.

      Yet another reason to not hire them. They're still too damn sensitive. There's no crying in computer programming!

    12. Re:Its all true by UnrefinedLayman · · Score: 1

      When faced with a new programming task, the first thing they do is fire up Google.

      Heavens to Betsy, I've seen this happen so many times it's insane. There was even this one time when someone on my team was working on a problem, and the guy picked up a book. That's right, a fucking BOOK. I cringed, but that's just how some people were made.

      After seeing that I wrote out my resignation on vellum, sealed it with wax, and left it for my boss. If that's the kind of shop they wanted to run, they could do it without me.

    13. Re:Its all true by Xtifr · · Score: 2, Interesting

      Not necessarily. I'm well over 30, and I agree with him. Programming is a talent that people have or they don't, and age doesn't seem to be a big factor either way. Skill (as opposed to talent) can be acquired with age, but I'd rather have a 22 year old with great talent and instinct than a 40 year old stick-in-the-mud who's been dragging down his teams for the last 18 years. I'd even more rather have a 40 year old with great talent and instinct, but you take what you can get.

      Or to put it another way--just because the schools often seem to miss out on teaching certain useful skills, that doesn't mean that someone fresh out of school can't have acquired them by other means. For example, a kid might know what a linker is because she's been hacking her dad's Linux box since she was in grade school. (I have strong hopes that this will end up being a valid description of at least one of my nieces.) The 22 year old just might have more real-world practical experience hacking Debian than the 40 year old who spent years doing nothing but generating reports with RPG, Access and VB "programming".

    14. Re:Its all true by UnknowingFool · · Score: 1

      . Is there some magical event at the age of 30 that bestows knowledge of linkers to the aging programmer?

      No, you have look over 30. Three words: Long-ass beard. Look at these guys. They must be some of the best programmers in the world.

      --
      Well, there's spam egg sausage and spam, that's not got much spam in it.
    15. Re:Its all true by againjj · · Score: 1

      I will never work for you. Age bigots are no better than race bigots or gender bigot. Those who assume that they can know exactly the qualities that they will find based on an arbitrary trait are not people that I like to work for. Besides, I am 31.

    16. Re:Its all true by Lord+Grey · · Score: 1

      After seeing that I wrote out my resignation on vellum, sealed it with wax, and left it for my boss.

      A resignation carved in hand-chipped stone is more durable, leaves a lasting impression, and can be used as a handy paperweight or doorstop after the dust settles.

      To fill in the between-the-lines reading: The folks I'm referring to start with Google (or a book) and stop right there. They search for a solution that already exists (which is good) but, if it doesn't exist, one of two things happen:

      1. They find a framework that does part of the job and proceed to customize the hell out of it. That can work out great, but all too often the customization is a nasty bundle of spaghetti code (to work around constraints in the framework) that never would have existed otherwise. Then it breaks when the maintainers update the framework.
      2. They redefine the problem so that the framework solves everything neatly (MBA types and managers like this one best).

      You have a good point in that a wheel shouldn't be invented twice. But if a 'wheel' doesn't exist then by all means invent it, don't try to shoehorn a square block of wood in there. My goal is to find those people who are able invent that wheel and, perhaps just as importantly, know when it needs to be invented. In my personal experience, the "Java mentality" doesn't seem to extend to that second bit.

      --
      // Beyond Here Lie Dragons
    17. Re:Its all true by bigstrat2003 · · Score: 1

      Well, only someone under 30 would be offended by your statement, but most people would find it really damned stupid. Competence is not caused by age, and you would do well to hire the greenest programmer around if that person is willing and able to be taught, and has basic competence at the job. Hire based on where you think they'll go, not where they are right now.

      --
      "16MB (fuck off, MiB fascists)" - The Mighty Buzzard
    18. Re:Its all true by gravos · · Score: 1

      At GMU even Computer Engineering (a field closer to Electrical Engineering than Software Engineering or Computer Science) undergrads learn all about the linking process, strong symbols, weak symbols, all that good stuff. You just had a bad candidate.

    19. Re:Its all true by Eskarel · · Score: 1

      The other thing is that, to be honest, the vast majority of computer programmers are not, and do not need to be, computer scientists.

      It's important to know what dynamic libraries are, why you would use them, and how to invoke the linker for the language you're working on, if necessary. It's not necessarily true that you need to know exactly how the linker works, or even that it's called a linker.

      This information can be useful, and you should certainly be able to find out the information(I double checked my recollection was right with a 30 second google search), but not knowing it doesn't make you a lousy programmer(maybe you're not a good fit for working on a compiler implementation though).

      The nuts and bolts which older folks spent years having to know like the backs of their hands are all pretty well implemented these days. The linkers, compilers, etc pretty much just work, and knowing their insides is sort of specialized knowledge.

      I work in health care, and I know more about the HL7 specification than probably 95% of the folks on slashdot, but that doesn't make me a better programmer, it just makes me a programmer who works in health care.

    20. Re:Its all true by yttrstein · · Score: 1

      "Competence is not caused by age"

      I never claimed it was. It's caused instead by experience, and experience and age are not mutually exclusive.

      And why the bloody hell would I want to waste time and money teaching someone their job? I do not run a school, buddy. You have to pay to go to those, and there's a reason for that. It's expensive to pack knowledge into the heads of future programmers and engineers.

      Though now that I'm thinking about it, I suppose if someone were to offer to pay me to give them a position for which they are in no way qualified, so that they can learn to be qualified, I'd probably say something along the lines of "yeah, ok."

    21. Re:Its all true by yttrstein · · Score: 1

      "Not necessarily. I'm well over 30, and I agree with him."

      Then you'd be a terrible hiring manager.

      "I'd even more rather have a 40 year old with great talent and instinct, but you take what you can get."

      These people are everywhere, and a lot of them are out of work right now. If you're not finding them, you're not looking hard enough.

    22. Re:Its all true by quacking+duck · · Score: 1

      You have a good point in that a wheel shouldn't be invented twice. But if a 'wheel' doesn't exist then by all means invent it, don't try to shoehorn a square block of wood in there. My goal is to find those people who are able invent that wheel and, perhaps just as importantly, know when it needs to be invented. In my personal experience, the "Java mentality" doesn't seem to extend to that second bit.

      Is this mentality exclusive to Java? Would .NET (as an example) not see similar problems?

      Just wondering why you singled out Java specifically, rather than any number of buzzword-compliant languages.

    23. Re:Its all true by RobBebop · · Score: 1

      I'm 26. I got a Master's Degree in CS without knowing about the specifics of linkers. In the past year I've had to learn about them due to the need to maintain a set of linker scripts for an embedded project.

      Now, I'm not sure what linker programs the original post was talking about, but the one that I'm working with is "ld". From what I've seen, it's default options do a pretty good job of arranging the memory/sections of the final executable without any user intervention and when this isn't enough it provides a highly capable system that lets you feed it a customized script with the options you want. However, learning the cryptic markings that control the flow of the customized linker script was one of the harder GNU-based projects to understand because of poor documentation and once I really got going with the customized script platform it took about 5 minutes for me to discover that there's no way to feed any sort of variable into the linker file at buildtime, a feature that I'd have thought would be extremely nice to have.

      But anyway, I think the real gripe of the original post was that few programmers truly understand how to setup and configure the tools that comprise their applications "build system", and that is for good reason. The customizations within a "build system" are crucial to "just work" and should be maintained by an expert who truly understands what changing small details will do so that all the rest of the developers on the project can get away with "just clicking the build button". I think Brooks called this role the "Architect", though its been a while since I've read Mythical Man Month. Anyway, expecting students who are fresh out of school to understand these details that they can get by without needing is kind of a joke. As much as you'd like to assess people based on knowledge of these minor details, the details aren't the big picture and an inexperienced programmer should only be expected to know "Big Picture" things (which I'd include Big-O Notion referenced in the summary as a part of).

      --
      Support the 30 Hour Work Week!!!
    24. Re:Its all true by bigstrat2003 · · Score: 1

      And why the bloody hell would I want to waste time and money teaching someone their job?

      How nice for you that we have employers with clearer vision than you. If no one gives the new guys so much as a chance, where the hell do you expect your experienced guys to come from?

      Your position is extremely short-sighted, and only works out for you because most people grasp the flaw in it. If they didn't, you'd be SOL.

      --
      "16MB (fuck off, MiB fascists)" - The Mighty Buzzard
    25. Re:Its all true by geoffball · · Score: 1

      Give them their 7th place trophy and they'll be fine.

    26. Re:Its all true by The_reformant · · Score: 1

      Oh yes the linker elves.

      --
      I have discovered a truly remarkable sig which this post is too small to contain.
    27. Re:Its all true by Xtifr · · Score: 1

      Then you'd be a terrible hiring manager.

      Why? Because I try to judge people by their skills and talent rather than their age? If that would make me a terrible hiring manager, I'd be proud to be one! I've worked with too many people, young and old, who were amazing at software development (and too many people, young and old, who were terrible at it) to think that age is really any sort of factor in this field. There is a skill-and-experience factor, but it generally tends to be dwarfed by differences in sheer talent.

      If you think I should overlook a brilliant youngster and hire a plodding old fart just because he's old, then I think it's more likely you that would make a terrible hiring manager. That's almost as bad as the idiots who refuse to hire anyone over 30 because they think us old farts can't keep up with the changes in the field.

    28. Re:Its all true by yttrstein · · Score: 1

      "If you think I should overlook a brilliant youngster and hire a plodding old fart just because he's old"

      I don't, and you need to take a logic class.

  18. This is clearly Microsoft's fault! by sheldon · · Score: 3, Insightful

    Oh great a rant by someone who knows nothing, providing no insight into a problem.

    Must be an Op-Ed from a media pundit.

    And they wonder why blogs are replacing them?

    1. Re:This is clearly Microsoft's fault! by Taagehornet · · Score: 1

      To be fair, the cheap stab at Microsoft was added by the submitter or the editor, in an attempt to stir up the pot a bit. Other than that, yes, your assessment is spot on.

  19. cheap shot by Anonymous Coward · · Score: 5, Informative

    I work at Microsoft. We use agile development and almost everybody I know here has read the Mythical Man Month. Get your facts straight before taking cheap shots in story submissions. Thanks.

    1. Re:cheap shot by Richard+Steiner · · Score: 1

      Microsoft's monolithic products (and its traditionally slow production cycles and bug response times) don't seem to reflect the same types of results that are seen from the use of "agile" practices used in other commercial software operations and in various open source projects.

      My own guess is that it isn't the fault of the developers, but rather lengthy processes at both ends which at least partially remove some of the advantages of agile development.

      It's too bad that those with a clue in your company don't have more say into the design, marketing, and maintaining of the products bearing your company's label.

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    2. Re:cheap shot by berend+botje · · Score: 0, Troll

      And see what it got you: the steaming turd called Vista. Nice jorb.

    3. Re:cheap shot by Taagehornet · · Score: 1

      Nice jorb.

      Priceless!

    4. Re:cheap shot by jesdynf · · Score: 0, Troll

      ACs, as a general rule, should not attempt to dictate fact without citeable proof.

      Thanks.

      --
      Yahoo! Pipes are awesome. How awesome? http://pipes.yahoo.com/jesdynf/slashdot
    5. Re:cheap shot by Anonymous Coward · · Score: 0

      Logged in users, as a general rule, should refrain from making statements which can be answered with a short "says you and what army?".

    6. Re:cheap shot by eulernet · · Score: 1

      I think that Microsoft only recently converted to agile methods, when Jim Allchin realized that Vista would never finish if they didn't use agile methods.

      The problem is their large legacy trunk code (millions of lines without any unit test), and the fact that they have to be compatible with some old bugs, thus maintaining some very old code.

  20. Software Engineering is Expensive by Anonymous Coward · · Score: 1, Insightful

    Most companies simply refuse to spend the money do get it right. The reason that early programmers didn't have as many bugs is that their development efforts had virtually unlimited funding to resolve errors, because a bug in the system was far more expensive relative to the cost of development (compared with today, where you can reboot the machine and try again in 5 minutes "for free").

  21. It is pretty simple to see... by Anonymous Coward · · Score: 0

    The reason that Microsoft or any other company finds itself using these methods of cramming everything it can into a build and then BETA testing is because of some marketing group who told the world that the product could be built in half the time that it really takes. I really don't see that business model changing anytime soon but it will definitely continue to cause engineers grief since it basically feels like we are always living a lie. This capitalistic world we live in will not allow this to change I fear

  22. Waterfall versus OOD by BarryNorton · · Score: 2, Insightful

    A waterfall process and object-oriented design and programming are orthogonal issues. The summary, at least, is nonsense.

  23. Complete BS? by DoofusOfDeath · · Score: 4, Insightful

    For the life I me, I can't figure out what the choice of {waterfall vs. cyclic} has to do with {writing code that checks for error return codes vs. not}.

    Waterfall vs. cyclic development is mostly about how you discover requirements, including what features you want to include. It also lets you pipeline the writing of software tests, rather than waiting until the end and doing it big-bang approach. Whether or not you're sloppy about checking return codes, etc., is a completely separate issue.

    Despite the author's protests to the contrary, he really is mostly complaining incoherently about the way whipper-snappers approach software development these days.

    1. Re:Complete BS? by dedazo · · Score: 1

      For the life I me, I can't figure out what the choice of {waterfall vs. cyclic} has to do with {writing code that checks for error return codes vs. not}.

      Nothing whatsoever. You can produce quality software with both of them.

      The first one just takes twice as long, costs twice as long as is twice as aggravating to everyone involved. But companies (especially large ones) love it because it gives them fuzzy (but bogus) sensations of control and continuity.

      --
      Web2.0: I love when people Flickr my cuil and digg my boingboing until my google is reddit and I start to yahoo
    2. Re:Complete BS? by DragonWriter · · Score: 1

      Sure this isn't the waterfall model as published in the text books, but it's how it works (fails) in real life.

      Someone just needs to find a better way to communicate agile methodologies to executives; with "big lump" waterfall development, you have, essentially, nothing of value until the system is done. No matter what some progress chart says about % completed, you essentially have a binary completion: its either done or you have nothing to show for your work.

      With agile methodologies, you have definite value delivered and usable throughout the life of your project, in units defined by discrete business needs that are useful on their own. Meaning that when the project is X% complete, you have delivered something at least remotely resembling X% of the value, and if you decide to redirect effor midstream, the effort you've expended to date isn't wasted (there'll probably be some loss in whatever components are currently midstream, but not the total loss you'd have if you abandoned a big-lump project halfway through.) Which means that executives in organizations that implement those methods have more control than with waterfall methodologies.

  24. Microsoft? by dedazo · · Score: 5, Informative

    Most of the teams I've had contact with inside the tools group at MS (in the last four years or so) use SCRUM.

    I don't know how widespread that is in other divisions (say the MSN/Live folks or the Microsoft.com teams) but that clever comment in the submission is nothing more than an ignorant cheap shot.

    Don't be so twitterish and make up crap about Microsoft. Get your facts straight or you just come across as an idiot.

    --
    Web2.0: I love when people Flickr my cuil and digg my boingboing until my google is reddit and I start to yahoo
    1. Re:Microsoft? by Anonymous Coward · · Score: 0

      sorry guy, this is slashdot, facts never get in the way when it comes to the two minute hate session. especially when microsoft is involved.

    2. Re:Microsoft? by Jeff+Hornby · · Score: 1

      But on Slashdot insults directed towards Microsoft are always considered insightful. It doesn't matter if they're demonstrably false. Hell it doesn't matter if they're true but a good thing (Bill Gates is the devil because he feeds starving children in Africa).

      --
      Why doesn't Slashdot ever get slashdotted?
    3. Re:Microsoft? by Deanalator · · Score: 1

      I think the jab in the summary was less about Microsoft employees, and more about .NET junkies. In general, most of the people I have met from Microsoft are pretty sharp.

      What I have seen quite often are those ethereal companies that flicker in and out of existence, and for some reason they tend towards .NET development. Often some rich kid gets some wacky idea, hires up some .NET programmers, shows off some flashy demo 6 months later, then sells off all the assets, and then starts over again.

      The code is only written to impress venture capitalists, or VPs at some megacorp, so the quality of the code is never quite up to par with proper coding standards.

    4. Re:Microsoft? by dedazo · · Score: 1

      It's idiotic to imply that only people who use .NET produce bad code. I've seen bad code on just about every mainstream language written for every mainstream platform in existence. At startups and established corporations alike.

      --
      Web2.0: I love when people Flickr my cuil and digg my boingboing until my google is reddit and I start to yahoo
  25. Waterfall was never valid by wezeldog · · Score: 2

    Dr. Royce used it as an example of a methodology that doesn't work, but what he described was easy to understand so it gained traction with management types. It's like the joke where the guy says he's looking for a lost quarter under a streetlamp because the light is better than where he lost it.
    http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
    I think his suggestion was to 'build it twice' via prototyping to discover what was missed in the requirements gathering and design phases.

    1. Re:Waterfall was never valid by ClosedSource · · Score: 1

      Yes, waterfall is the ultimate straw man.

  26. Re:The biggest software bugfix by Erie+Ed · · Score: 1

    nine!

  27. Typical: blame the process by SparkleMotion88 · · Score: 5, Interesting
    It is very common for people to blame all of the problems of software engineering on some particular methodology. We've been shifting blame from one method to another for decades, and the result is that we just get new processes that aren't necessarily better than the old ones.

    The fact is that software development is very difficult. I think there are several reasons why it is more difficult to develop robust software now than it was 20 years ago. Some of these reasons are:
    • The customer expects more from software: more features, flashier interfaces, bigger datasets -- all of these things make the software much more complicated. The mainframe systems of a few decades ago can't even compare to the level of complexity of today's systems (ok, maybe OS/360).
    • There is just more software out there. So any new software that we create is not only supposed to do its job, but also interconnect with various other systems, using the standards and interfaces of various governing bodies. This effect has been growing unchecked for years, but we are starting to counter it with things like SOA, etc.
    • The software engineering talent has been diluted. There, I said it. The programmers of 20-30 years ago were, on average, better than the programmers of today. The reason is we have more need for software developers, so more mediocre developers slip in there. Aggravating this issue is the fact that the skilled folks, those who develop successful architectures and programming languages, don't tend to consider the ability level of the people who will be working with the systems they develop. This leads to chronic "cargo cult programming" (i.e. code, test, repeat) in many organizations.
    • Software has become a part of business in nearly every industry. This means that people who make high-level decisions about software don't necessarily know anything about software. In the old days, only nerds at IBM, Cray, EDS, etc got involved with software development. These days, the VP of technology at Kleenex (who has an MBA) will decide how the new inventory tracking software will be built.

    I'm sure there are more causes and other folks will chime in.

    1. Re:Typical: blame the process by benj_e · · Score: 1

      I'd note that everything you mention above has been an issue for the 24 years I've been a programmer.

      The customers always want more features or a different interface, interfacing with other systems has always been a problem (witness SNA, EDI, and a host of other painful solutions), some programmers have always felt that the "new" generation is less talented, and in 1984 the CFO at the company I worked for spent most of his time writing Lotus macros and "designing" how our freight dispatching system would work.

      That said, anyone who has been in the business for more than a day has seen paradigms come and paradigms go.

      All that usually means is that someone, somewhere, is making a shitload of money from convincing someone else that they need to change the way they are doing development.

      --
      The Tao that can be spoken is not the one eternal Tao
    2. Re:Typical: blame the process by Anonymous Coward · · Score: 0

      Another reason is that software development has a lot of artistic elements, yet most software developers would never claim they are artistic people or very "creative". Development processes try to eliminate uncertainty, but most of the time, uncertainty is just part of the creative development activity.

    3. Re:Typical: blame the process by dkf · · Score: 1

      This leads to chronic "cargo cult programming" (i.e. code, test, repeat) in many organizations.

      If they're actually using testing, they're doing better than many shops...

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    4. Re:Typical: blame the process by Anonymous Coward · · Score: 0

      Its all relative. Basically hardware improvements have driven software complexity. 25 years ago, you wouldnt write the apps that are out today because it would take a sh1tload of computers to run just one of them, minus the OS. I can talk to my PC and have it understand (some) commands, while watching streaming video! That was practically science fiction in 1984. It has always been about increasing expectations. I bet Quattro Pro for DOS v25.0 would be 99.999% bug free if the developers were just focused on improving code quality over time, but nobody would use it either. People don't buy software for code quality, they buy it for what the code does for them. And yes they want the maximum quality level too, but they also will tolerate some defects for new *useful* functionality.

    5. Re:Typical: blame the process by Anonymous Coward · · Score: 0

      I invite people to read the article and realize that many of the errors/bugs didnt even apply/exist 25 years ago. Even bugs change over time and newer bug possibilities are invented. 25 years ago I'd guess proper memory allocation/deallocation and using NULL or invalid pointers were the dominant problems, but with people using VM's like Java and .NET, or using scripting languages like Javascript software is much more bug free now right?

    6. Re:Typical: blame the process by GWBasic · · Score: 1

      The fact is that software development is very difficult. I think there are several reasons why it is more difficult to develop robust software now than it was 20 years ago. Some of these reasons are:

      Here's one more:

      • The "free ride" from Moore's Law: The assumption that computers double in speed and memory every 18 months is often mis-interpreted as a reason for writing sloppy code. Customers expect that a program will run twice as fast and handle twice as much data every 18 months; thus programmers don't get to ride Moore's Law as much as we're taught in school.
  28. It's economics, too... by gillbates · · Score: 5, Insightful

    As long as:

    • Consumers buy software based on flashy graphics and bullet lists of features, without regard for quality...
    • Companies insist on paying the lowest wages possible to programmers...
    • Programmers are rewarded for shipping code, rather than its quality...

    You will have buggy, insecure software.

    Fast. Cheap. Good. Pick any two.

    The market has spoken, and said that they would rather have the familiar and flashy than secure and stable. Microsoft fills this niche. There are other niches, such as the Stable and Secure Computer market, and they're owned by the mainframe and UNIX vendors. But these aren't as visible as the PC market, because they need not advertise as much; their reputation precedes them. But they are just as important, if not moreso, than the consumer market.

    --
    The society for a thought-free internet welcomes you.
    1. Re:It's economics, too... by Opportunist · · Score: 1

      Fast. Cheap. Good. Pick any two.

      Judging from the market and how people choose, even one can be enough if it is 'cheap'.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  29. Why they get away with it by Anonymous Coward · · Score: 0

    The software industry gets away with it, because they can.

    -Becase software is 'licensed' with :

    -NO WARRANTY

    -NO 'FITNESS FOR A PARTICULAR PURPOSE'

    -May Contain ERRORS/OMISSIONS

    Taken from the license agreement of 99.999% of the software out there.

    Programmers are responsible to nobody. Shoddy work, because users have no recourse, nobody to sue, no rights to complain, etc.

  30. Re:The biggest software bugfix by YrWrstNtmr · · Score: 1

    9.

  31. Re:The biggest software bugfix by Ethanol-fueled · · Score: 1

    Fuck.

  32. Re:The biggest software error by Anonymous Coward · · Score: 1, Insightful

    The biggest impact on software quality is putting the release schedule in the hands of businessmen. speaking as a former (long ago) MS SDE, the coders I worked with there were at least as good as a random developer (frequently /much/ better). However their job is to code things in triaged order, not make release schedule decisions. When the execs tell everyone to stop typing and RTM, then that's it. The state of the software is generally known prior to ship because of their full-time /real/ QA teams with ad-hoc testing, automation, and metrics that are all much better than all other teams I've been on before or since. Don't rag on the MS devs for their suits' decisions to release with known bugs.

  33. There (was) is no such thing as Waterfall Method by hopopee · · Score: 3, Informative

    I find it more than a little amusing that summary mentions waterfall method being a time honed, excellent example of how all software should be made. Here's the history of the none existent waterfall method has to say about it.. Waterfall Method does not exist!

  34. Problem in a nutshell by Ukab+the+Great · · Score: 1

    An experienced programmer can differentiate the concept of "can" from the concept of "should". For a younger, novice programmer, the concept of "can" and "should" are one in the same.

  35. Quality is Job 1.1 by Prototerm · · Score: 1

    The real source of the problem isn't the development model itself, but in the way Management does its own job. This isn't anything new. Ten years ago, I was working for a small software company (less than 100 employees), and was told by the owner to meet the promised deadline "at any cost". He was quite happy with fixing bugs later "when the customer complains about them", telling me that this would allow them to promise the customer a new (later) deadline. The result was an endless stream of unhappy customers, and a rapidly deteriorating reputation in the field.

    In my experience, delivery deadlines are made by management hacks to meet customer requirements, instead of the restrictions placed upon the project by budget (only so much money for resources) and Physics (only so many hours in the day), and not the poor schleps tasked with meeting those impossible dates.

    Good. Fast. Cheap. : Pick two. Or, to quote Star Trek's Montgomery Scott: "I canna change the laws of Physics, Captain!"

    --
    "My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
  36. Re:The biggest software error by Mistshadow2k4 · · Score: 1

    ME. Vista is still in 2nd place compared to the Millennium Edition. I know, I've used both.

    --
    I dream of a better world... one in which chickens can cross roads without their motives being questioned.
  37. You are right, waterfall doesn't scale by coryking · · Score: 1

    Waterfalling your entire project will doom it to failure. But that doesn't mean you you don't use waterfall on a small level. Most modern techniques are iterative versions of the waterfall model. You take a small chuck, plan it, spec it and ship it. If somebody thinks you scale waterfall to an entire project, well, get with the times gramps.

    Scaling waterfall to a large project is a huge waste of resources. It would require your usability dudes, marketing dudes and stuff to do the plan and then sit idle for the remainder of the project. Likewise your programmers would only be usefully in the middle part and your testers in the final stages.

    Lord help you if something changes. And guess what, it will change because this is reality and not the "good old days when I was a kid programming on punch cards uphill in the snow" that gray-beards wax poetic about. Unless you are designing an "about box", nobody knows the problem nor its solution initially. It takes many iterations to get to both a definition and a solution.

    Waterfall died long before I ever entered the scene and it cracks me up when I hear people still promoting it as a good idea. These days we just sit down in front of the keyboard and click buttons in fancy "IDE's" using un-proven things like "Object Oriented Programming". Kids these days... we don't even manage our memory, the garbage collector does it for us. ;-)

  38. Re:The biggest software bugfix by Anonymous Coward · · Score: 0

    You're all niggers in a troll thread

  39. grumpy old coder by girlintraining · · Score: 3, Insightful

    It's just another "I have 40 years of experience doing X... Damn kids these days. Get off my lawn." Hey, here's something to chew on -- I bet he screwed up his pointers and data structures just as much when he was at the same experience level. Move along, slashdot, nothing to see here. I will never understand the compulsion to compare people with five years experience to those with twenty and then try to use age as the relevant factor. Age is a number... Unless you're over the age of 65, or under the age of about 14, your experience level is going to mean more in any industry. This isn't about new technology versus old, or people knowing their history, or blah blah blah -- it's all frosting on the poison cake of age discrimination.

    P.S. Old man -- reading a book won't make you an expert. Doubly so for programming books. I'd have thought you'd know that by now. Why not get off your high horse and side-saddle with the younger generation and try to impart some of that knowledge with a little face time instead?

    --
    #fuckbeta #iamslashdot #dicemustdie
    1. Re:grumpy old coder by benj_e · · Score: 2, Insightful

      Meh, it goes both ways. How many younger coders feel they are god's gift to the industry?

      Personally, I welcome anyone who wants to be a programmer. Show me you want to learn, and I will mentor you. I will also listen to your ideas and will likely learn something from your fresh insight.

      But show me you are an asshat, and I'll treat you accordingly.

      --
      The Tao that can be spoken is not the one eternal Tao
    2. Re:grumpy old coder by lawpoop · · Score: 0, Flamebait

      Personally, I welcome anyone who wants to be a programmer. Show me you want to learn, and I will mentor you. I will also listen to your ideas and will likely learn something from your fresh insight.

      Yikes, another geek who thinks God appointed him to teach everything to everyone. Oh, you'll let your young apprentice get a word in edgewise? How magnanimous of you! I'll bet you'll also wince patronizingly when s/he completes his thought.

      I'm sick of finding myself becoming a Jedi padawan every time I ask some elder geek a damn question.

      --
      Computers are useless. They can only give you answers.
      -- Pablo Picasso
    3. Re:grumpy old coder by Anonymous Coward · · Score: 0

      Ah, young coder. First, you need to learn to read, then you can start to understand, then you can comment without training wheels.

  40. models by Tom · · Score: 1

    The main point he's making, I think, is a little hidden: "At least we had a model."

    The problem with almost every software development department I've seen so far is that they rely entirely on the abilities of their coders. The few guidelines they have for coding style and documentation can be called something like a "standard", if you are gracious. But that's where it ends. There are few processes above the code level. Many heads of software developments can't answer trivial questions that are perfectly normal in every other industry where stuff is being built or developed - like "how many known problems do you have at the moment?" or "what is your margin of error before you pull the product?" or even just "what's the date of your last QA?".

    So don't bother them with anything more complicated, like a development process. They think "process" is another word for "deadline" because that's what the process consists of "ship on this date, or as close as you can manage". That's it.

    --
    Assorted stuff I do sometimes: Lemuria.org
    1. Re:models by Hairy1 · · Score: 1

      I violently disagree. Yes, the quality of coders is important, but process is also critical. Most shops I have worked with have a good grasp of development process. In my last position we had a very good idea of project progress based on burndown charts. We had determined what level of quality we were aiming at, and had processes and people in place to ensure the quality was achieved. We had automated test processes run every night, and testers that developed new test descriptions. While not every company is this well resourced every company I have worked for in the last decade have had quality processes.

      New processes like Agile are not excuses for sloppy coding. In fact it is the opposite; the pwe may not be bogged down in paperwork, but the processes we follow are more rigorous and followed by development teams. Some practises in use now that were not in the early days of PC development: Source code version control, code review of all code, unit tests, daily build and test, planning game, iteration planning, daily check ins, and many others.

    2. Re:models by Shados · · Score: 1

      Thats what the previous poster was saying. He said that companies can't be bothered with a process, instead relying entirely on the skill of individual developers... and since individual skill vary widely (and often time constraints prevent a company from hiring only "top tier" devs), they end up totally screwed. Without a proper process, junior programmers can take a good codebase and ruin it within days or weeks.

      A lot of companies (the majority by far from my experience) don't even know what processes are available to them. Not even Agile or Scrum, never heard of CMM, nothing, zero. So they just code away and everything falls in the hand of a project manager... and when he invariably fail (without process, even the best will screw up), they push all the blame on said PM. Its awful.

    3. Re:models by DragonWriter · · Score: 1

      New processes like Agile are not excuses for sloppy coding.

      Unfortunately, in other shops, new processes, and particularly any that, like Agile, become trendy buzzwords, are often, IME, used as excuses for sloppy, well, everything. Sloppy coding, sure, but also sloppy requirements gathering, sloppy project planning, sloppy change management, sloppy test development, sloppy testing...

  41. Shockingly? by internerdj · · Score: 1

    From the article:
    "Shockingly, most of these errors are not well understood by programmers; their avoidance is not widely taught by computer science programs; and their presence is frequently not tested by organizations developing software for sale."
    Shockingly programmers are not all knowing. Programmers are also, oddly, doing very poorly at designing against and testing for things that have not and are still not being identified as major issues within the academic community that produces programmers.

    This is a field that has become vital to many businesses in the developed world. It is a field that is very young compared to other scientific and engineering disciplines. It is a field that is undergoing major changes because it isn't working with set rules of nature, but instead is built on top of the changing products of other disciplines.

  42. Defects have a cost. Who pays? Change that. by Animats · · Score: 1

    Indeed.

    The reason software is so bad is that the customers absorb the cost of defects. That's a political decision. Cars used to be that way; today, if a car even stalls unexpectedly, that's considered a manufacturing defect. In the US, the manufacturer has to pay for the recall to fix the problem. Cars are far more reliable, and much safer, as a result.

    In a few industries, the software developer is financially liable for errors. The gambling industry works that way. The companies that run lotteries pay back a few percent of their revenue as penalties for failures and errors. (And they try very hard not to have expensive errors.)

    Back before the Bush administration caved on the Microsoft antitrust case, I proposed the Full Warranty remedy. The FTC took a look at this issue in 2000, but the Bush Administration didn't do anything. It may be time to revisit this.

    1. Re:Defects have a cost. Who pays? Change that. by TheLink · · Score: 3, Insightful

      So how does full warranty work for OSS software?

      --
    2. Re:Defects have a cost. Who pays? Change that. by Anonymous Coward · · Score: 1, Interesting

      Ah, that explains the Motorola DVR box Comcast uses -- you know, the one that can just absorb remote clicks for several minutes doing nothing -- and then zip through the whole list of queued commands at breakneck speed.

      The cost of the number of hours wasted by customers across the country using that piece of crap must, collectively, be huge and way more than it would cost to fix (or, at least, mitigate) the problem. However, the customers individually absorb the cost like good little sheep (and sometimes have few alternatives if they want other than OTA programming).

      Although, it's likely the minimum wage fresh-out moronic programmers who wrote the code wouldn't have a clue how to fix or mitigate the problem even if they were asked to.

    3. Re:Defects have a cost. Who pays? Change that. by ozphx · · Score: 1

      That doesn't sound very conducive to there being complex software avaliable. Can you imagine any modern OS being avaliable with full warranty? Can you imagine any complex software at all being released without serious defects?

      Software is too complex to provide at $50 a license / "average contribution an hours work" per license if you want it to come with a warranty.

      Hell you'd think BIND would be fairly bug free right now, being effectively "new Dictionary<string, IP>()".

      Or was your "Full Warranty" remedy you linked to designed to only apply to Microsoft because of some butthurt about them being a monopoly?

      Yeah, thought so.

      --
      3laws: No freebies, no backsies, GTFO.
  43. Nonsense by coryking · · Score: 1

    They aren't to blame. They dont care. That is fine.

    Rule number one of being a programmer: nobody but you gives a shit about what you've done. They only care if it works (using *their definition of works, not yours*), it is is fun, and it is easy to use.

    This rule is a tough pill to swallow because dammit sometimes you just feel proud of whatever crazy coding stunt you pulled off. But the sooner you learn nobody but you cares *how* something was done the happier you will be. Happy you say? Yes happy. Why? Because maybe you'll refocus your efforts into things that *will* make your users happy instead of tech-crap like shaving .25ms off a database query (one of my favorite jobs). Things like a good interface or fixing a silly but annoying bug will make them way more happy then refactoring your pile of spaghetti code.

    Happy users = happy programmer. The reciprocal isn't always true. Sure swapping out the template system for something cooler is fun and makes you happy, but unless if adds something new or fixes something for the user, you've wasted your time.

    If people [refused to do|started doing] XYZ, [everything would be better].

    Anytime you say "If people do blah", the problem isn't with the people, it is with your argument. "If everybody did blah" means "what I want is impossible, so maybe I'm the one who is wrong".

  44. Told you so! by David+Gerard · · Score: 1

    The reactionary forces of the twentieth-century United States finally conceded defeat and shut down the Five-Year Plan Tractor Plants of Detroit, where ridiculous oversized transport was bashed together by semi-literate peasants between fifths of vodka from the nerve gas factory next door, and the Five-Year Plan Software Plants of Redmond, where ridiculous oversized operating systems were bashed together by semi-numerate fresh graduates between fifths of Red Bull.

    Hiring in most Microsoft divisions has frozen in the last six months and 30GB Zunes are already on suicide watch. "The workload's impossible to keep up with," said blog technical evangelist Gary M. Stewart. "I've even been answering Slashdot comments on Boycott Novell or Groklaw. It's impossible to keep track of! Anyway, you're just another Twitter sockpuppet. Or Mini-Microsoft. Admit it."

    --
    http://rocknerd.co.uk
  45. It's the fault of the Internet. by rickb928 · · Score: 2, Interesting

    Several posters have alluded to this, but I blame the Internet. Just follow me here:

    - Back in the 'Old Days', productivty software at the time was dominated by WordPerfect, VisiCalc and then 1-2-3, and what else? MS-DOS as the operating system. Everything shipped on diskettes. There was no Internet.

    - Fixing a major bug in WordPerfect required shipping diskettes to users, usually under 'warranty'. Expensive, time-consuming, and fraught with uncertainty.

    - Fixing bugs in MS-DOS really wasn't done. It was a minor release. Again, diskettes everywhere, and more costs.

    - Patch systems were important. Holy wars erupted on development teams over conflicting patch methods, etc. Breaking someone else's code was punished. Features that weren't ready either waited for the next release or cost someone their job.

    Today, patches can be delivered 'automatically'. It take how long, seconds, to patch something minor? Internet access is assumed. the 'ship-it-now' mentality is aided by this 'ease' of patching.

    If it weren't for Internet distribution, we would see real quality control. It would be a matter of financial survival.

    No, Internet distribution is not free. But it's both cheaper, I suspect, than shipping any media, and also less frustrating to a user than waiting at least overnight (more likely 5-7 days) for shipment.

    And it leads to the second distortion - Bug fixes as superior service. The BIG LIE.

    It is not superior service to post a patch overnight. It is not superior service to respond immediately to an exploit. It is a lie. Having to respond to another buffer overflow exploit after years (YEARS) of this is incompetence, either incompetence by design or incompetence of execution. This afflicts operating systems, software, utilities, nothing is innocent of this.

    The next time you marvel just a little bit when Windows or Ubuntu tells you that you were automatically updated, or that udpates are awaiting your mere consent to be installed, remember - they just admitted your software was imperfect, and are asking you to take time to let their process, designed with INEVITABLE errors expected, perform its task and fix what should never have been broken to begin with.

    ps- I love Ubuntu. I cut it some slack 'cause you get what you pay for, and many who work on Ubuntu are unpaid, and any rapid response to problems is above expectations. Microsoft, Symantec, Adobe, Red Hat, to name a few, are not in that business. They purport to actually *sell* their products, and make claims to make money. When they fail to deliver excellent products, the lie of superior service is still a lie.

    Just the voice of one who remembers when it was different.

    pps - EULAs tell it all. I wish I had an alternative. Oh, wait, I do... envermind, lemme get that Ubuntu DVD back out here and... Except at work...

    --
    deleting the extra space after periods so i can stay relevant, yeah.
    1. Re:It's the fault of the Internet. by PitaBred · · Score: 2, Insightful

      Don't forget that Ubuntu patches EVERYTHING on your system, versus the monthly Microsoft patches which are just the core OS and possibly Office. And since most of the developers of those other programs that Ubuntu patches are not on Ubuntu's payroll... well, they don't really have much control on whether something is patched or not. They'll patch some egregious things themselves and send them upstream, but... Anyway, you probably know all that. Just wanted to make sure it was clear to everyone else who may not use it ;)

    2. Re:It's the fault of the Internet. by Anonymous Coward · · Score: 0

      are you being facetious or not?

    3. Re:It's the fault of the Internet. by Anonymous Coward · · Score: 0

      Bugs happen. The reason we have more bugs now then we used to is because software is more complicated then it used to be. Quit being so butthurt about it.

  46. What is the problem? by rabenja · · Score: 1

    Taking a step back from the coding errors and even a step back from software development errors, there is a fundamental where failure to adhere to it will produce bad results from start to finish. This idea is not unique to software development but I see large software development projects that do not follow it fail on many levels. Problem statement: Automation is required to solve a specific problem. Each and every part of the project has a problem statement (or should). Gratuitous features are gold-plating. Take Microsoft Word, for instance. A large majority of the problem-solving features (WYSIWYG, spell-checking, grammar checking, etc ) were solved years ago. That means that most of what was left to provide had not much to do with solving the basic problem that the tool is designed for: Editing and printing documents. Yet Microsoft has to create an illusion of need so that consumers will be willing to shell out $400 for the next upgrade. Basically, this is gold plating on a huge scale. So, with no problem to solve, the developers have no fundamental rule to follow. Taking Microsoft Word to illustrate what happens with gold plating: Every single person in our company dislikes Office 2007. Microsoft completely changed the interface forcing the user to re-learn the most basic tasks. The code for the new interface functions perfectly. There are no apparent coding errors. The error was made at the top of the decision ladder. After several years of learning, users had no trouble navigating the tools and options. There was no problem to solve. Microsoft needed to feed its illusion machine so it created eye candy at the expense of the users. Microsoft just happened to be the biggest target, but this issue is apparent throughout the industry.

    1. Re:What is the problem? by cdrguru · · Score: 1

      I don't think your analysis of Word and the UI rework stands up to much scrutiny. Microsoft spent heavily on research and focus groups because Word XP/2003 was such a behemoth with monolithic menus that people could not find the options they really wanted to use. Training was a huge issue and without it all people could do was get lost in the menus.

      Yes, the 2007 interface is different, but it is different for a reason. The intent is to display the commonly used functions and push the ones less commonly used away from the user. Which does mean that if you are trying to find the way to print an envelope with an address from the current document it can take you 15 minutes to figure out where they hid it. But changing the justification of text is up front and even the most unfamiliar user can see it immediately.

      Did they get it 100% right in what to bury and what to bring out? No, I don't think they did. Supposedly, there are ways to adjust the interface so if everyone in your company uses Word in a particular way your specific feature set can be put on the forefront - but that takes work to do that most people aren't going to do for themselves.

      In many ways 2007 is a big imporovement over the 2003 menu structure. At least they decided to do something about it, and they were willing to take the risk that enterprise users that had customized Word 2003 would never pick up any changes no matter what.

    2. Re:What is the problem? by I_want_information · · Score: 1

      And yet, there I was in a computer lab with my students (third year university general education) with the shiny new improved ribbon interface and, golly if I didn't have 30 hands shoot up simultaneously asking "how do I open/save/print?"

      If M$ thinks that they keep changing their UI to please their customers, then they're truly delusional.

      Nobody likes to be made to feel stupid. Having to learn again how to use a software product that you've been using for 15 years is not a productivity enhancement!

  47. error 26: 15 !=25 by cylcyl · · Score: 3, Funny

    The article link says top 25 errors....

  48. Question by coryking · · Score: 4, Insightful

    When you were working on those punch cards, using your green screen console (kids these days with color monitors and mice), what were you doing?

    Did you ever transcode video and then upload it to some website called Youtube on "the internet"? Did you then play it back in a "web browser" that reads a document format that your grandma could probably learn? Did your mainframe even have "ethernet"? Or is that some modern fad that us kids use but will probably pass and we'll all go back to "real" computers with punch cards.

    Did you ever have to contend with botnets, spyware or any of that? And dont say "if we used The Right Way Like When I Was Your Age, we wouldn't have those things because software would be Designed Properly". because if we used "The Right Way" like you, software would take so long to develop and cost so much that we wouldn't even have the fancy systems that even make malware possible.

    Old timers crack me up. Ones that are skeptical of object oriented programming. Ones who think you can waterfall a huge project. I'd like just one of them to run a startup and waterfall Version 1.0 of their web-app (which, they wouldn't because the web is a fad, unlike their punch cards).

    Sorry to be harsh, but get with the times. Computing these days is vastly more complex then back in the "good old days". Your 386 couldn't even play an mp3 without pegging the CPU, let alone a flash video containing one.

    I've seen their workflow and how fast it works for them and I can see if they "modernized" it would cripple their productivity.

    Until they try to bring in new-hires. How long does it take to train somebody who is used to modern office programs to use a DOS program like wordperfect? You think they'll ever get as proficient when what they see isn't what they get (a fad, I bet, right?)

    Again, sorry to sound so harsh. You guys crack me up. Dont worry though, soon enough we'll see the errors in our ways and go back to time honored methods like waterfall. We'll abandon "scripting languages" like Ruby or C and use assembler like god intends.

    Sheesh.

    1. Re:Question by C0vardeAn0nim0 · · Score: 1, Insightful

      serious troll is trolling...

      take this argument for example:

      Sorry to be harsh, but get with the times. Computing these days is vastly more complex then back in the "good old days". Your 386 couldn't even play an mp3 without pegging the CPU, let alone a flash video containing one.

      do you know what "data entry" is ? it's pretty much reading something from a sheet of paper (like a form filled by hand) and typing it. i did that on my first job ever on a PC-XT runing MUMPS. after sometime, it gets so mechanic you don't even look at the screen anymore. and who gives a f**k if the CPU can't play MP3s ? if you want to listen music on the job, buy an iPod. data entry can be done on a dumb terminal, for cry out loud. and it's usually quicker an less distracting using a keyboard only, text only interface than messing with GUIs. i see this everytime i stop at a gas station. when it's time to pay, service is much quicker on the ones where the register machine have a text only interface.

      Until they try to bring in new-hires. How long does it take to train somebody who is used to modern office programs to use a DOS program like wordperfect? You think they'll ever get as proficient when what they see isn't what they get (a fad, I bet, right?)

      let me guess, less than what it takes to train them on GUIs ? learning curve have nothing to do with the nature of the interface (text or graphical) but how well the particular interface of the appliation was writen. and "what you see is what you get" in most cases is irrelevant. not all data inputed is supposed to be printed. in this age of e-mail, even less. so let the WYSIWYG stuff for who actually needs it.

      oh, and out of order, but still relevant,

      Did you ever have to contend with botnets, spyware or any of that? And dont say "if we used The Right Way Like When I Was Your Age, we wouldn't have those things because software would be Designed Properly". because if we used "The Right Way" like you, software would take so long to develop and cost so much that we wouldn't even have the fancy systems that even make malware possible.

      MacOS, Linux, FreeBSD, OpenSolaris, they are as complex as Windows but are much more resistant than what MS sells. and with the exception of MacOS, they're all free. the diference is in the methodology used to develop them. which is to say, the people who work on them actually _DO_ have methodologies, while microsoft seems to have none.

      so, well fed already, mr. troll ?

      --
      What ? Me, worry ?
    2. Re:Question by ClosedSource · · Score: 3, Interesting

      Not all of us "old timers" think everything was great "back in the day" and shit now.

      As you say, what is being built now is much more ambitious than what we used to make. There were challenges then too, they were just different.

      Newer technologies can be a two-edged sword. Way back when a serious bug in an embedded system would require a new PROM or EPROM to be made and installed by a technician.

      Today you can download an update over the Internet in a few minutes. That convenience weakens a company's motivation to getting it right the first time.

      Of course today your product probably relies on software that you didn't write and aren't familiar with. We used to write every byte we delivered and couldn't blame an error on libraries because we didn't use any. But you couldn't compete in the market that way now.

      The constant in this business is there will always be those who try to push the limits whatever they are.

    3. Re:Question by DoofusOfDeath · · Score: 5, Informative

      Sorry to be harsh, but get with the times. Computing these days is vastly more complex then back in the "good old days".

      You. are. fucking. kidding. me., right?

      The sources of complexity have changed, but not significantly increased.

      When's the last time your code had to:

      • Employ overlays to make your code fit into memory?
      • Write a large, complex algorithm in assembly, or even (in the 50's) straight machine language?
      • Consider writing self-modifying code, just to make the program require less memory?
      • Make "clever" use of obscure, corner-case behavior of certain machine instructions, not because you like to screw the people who will inherit the code, but because you have only a time amount memory to work with?
      • Intentionally mis-DIMENSION an array in fortran 77 code, knowing that it will work out okay at runtime, just to avoid (by necessity) the runtime cost of using array-slicing functions?
    4. Re:Question by shmlco · · Score: 1

      "Computing these days is vastly more complex then back in the "good old days". Your 386 couldn't even play an mp3...."

      Guess that depends on how you define complex, since today you're probably doing something like...

      player=system.getMediaPlayerObject();
      player.play('xyz.mp3');

      Systems have gotten more complex true, but you also tend to have bigger building blocks to play with.

      --
      Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
    5. Re:Question by catbertscousin · · Score: 1

      Old timers crack me up.

      Laugh away. The great old ones are chuckling with you, for they were young once as well and told their forefathers to get with the times, only to find, after several decades, that they were the ones trying to communicate their experience to the new hires who considered them all has-beens.

      Skepticism is a result of cynicism, a factor of age and experience. It is not stupidity or unwillingness to embrace the latest beta, it's more a matter of preferring that which is known to work over that which may work better eventually but will cause problems now. Thirty years of non-technical bosses screaming at him will do that to a person. You'll find that out, young grasshopper.

      --
      No good deed goes unpunished. - Avon, Blake's 7
    6. Re:Question by DiegoBravo · · Score: 1

      You have a point, for example when I remember a great big application like Lotus-1-2-3 that was really stable, fast and AFAIK pure assembly. But when you start with:

      >> Consider writing self-modifying code, just to make the program require less memory?
      >> Make "clever" use of obscure, corner-case behavior of certain machine instructions...

      You're talking about hacking (and currently virus writing); past programming doesn't mean convoluted coding. I remember those weird undocumented machine instructions applied in some cheap micros in order to boost graphical performance of some games, but these were singular cases. Nothing destined to live more than 5 years or some mayor platform upgrade.

      In my work we live with a venerable COBOL environment and several Unixes/Linuxes. Of course there are Java and .NET applications doing several auxiliary works, but nothing like you are mentioning.

    7. Re:Question by DoofusOfDeath · · Score: 1

      You're talking about hacking (and currently virus writing); past programming doesn't mean convoluted coding.

      Agreed. But I am talking about a missile computer my dad worked on, and in another case, a scientific program that I'm becoming the maintainer of.

      It's fair to say that there existed both simple and complex software 40-30 years ago, and there exists both simple and complex software today. By coryking's statement had basically been that complex software was purely modern phenomenon, which I was trying to refute by counter-example.

    8. Re:Question by SL+Baur · · Score: 1

      Old timers crack me up. Ones that are skeptical of object oriented programming. Ones who think you can waterfall a huge project. I'd like just one of them to run a startup and waterfall Version 1.0 of their web-app (which, they wouldn't because the web is a fad, unlike their punch cards).

      Hmmm. Old timer? Check. Skeptical of object oriented programming? Check (functional programming FTW!). Dislike the waterfall development model? Check.

      If I had to lay blame on anything, I'd lay it on CS degree programs. I've seen too many clueless kids with fancy paper proclaiming them Highly Educated. Perhaps as much blame can be attached to fad languages. Perhaps there is a connection.

      Oh well, as sarcastically as you put it:

      soon enough we'll see the errors in our ways and go back to time honored methods like waterfall. We'll abandon "scripting languages" like Ruby or C and use assembler like god intends.

      I agree with you in spirit (quibble - C is not a "scripting" language and is as much of a problem as an assembly language attitude). I hate the term "scripting language", by the way. Interpreted computer languages are not in the slightest inferior to compiled languages. _Real_ old-timers know that ...

      Now Get Off My Lawn and hand me that deck of punch cards over there son. I've got a SNOBOL program to finish debugging.

    9. Re:Question by Anonymous Coward · · Score: 0
      "When's the last time...?"

      Never...

      .

      Nowadays it's just writing code to parse, sort, extract and analyze 2 TB of information based on 64 constraints and spit out a report to a nit-wit that doesn't understand how to use a keyboard, and likely wants the report in flash and wants it today.

      .

      Of course, this is spread out over 50 computers networked around the world and charges my credit card.

      .

      You're welcome...

    10. Re:Question by Anonymous Coward · · Score: 0

      OOP was a fad, the academic world was expecting the popularity of functional programming

      modern GUIs are pretty but doesn't follow proper human-machine interface design (overlaping... why? Inferno, Oberon, SmallTalk where more like SDI with panels) There are advantages traded between personalization and productivity, currently we lose to much time baby sitting our windows

      WYSIWYG lets not designers waste time thinking they have graphic talent, better let then put the meat in raw text and pretty print it at the end using intitutional templates... what? to much "old times" to your taste?

      The problem is that now IT is so full of marketing and questionable engineering that the status quo no longer follows hard technical reasons

      (by the way... I was born in 1985 program for a living but majored in mathematics)

    11. Re:Question by Anonymous Coward · · Score: 0

      Mod parent troll.

    12. Re:Question by guru42101 · · Score: 1

      Got one for you. When I was in college I needed recursion to handle something in Fortran. The version of Fortran I was using didn't support recursion, the compiler rejected it. So, I wrote a function and a functionB they called each other for forced recursion.

    13. Re:Question by Anonymous Coward · · Score: 0

      We'll abandon "scripting languages" like Ruby or C and use assembler like god intends.

      Sadly, this point has some legitimacy. I've interviewed with older programmers that treat you like you're the scum of the earth if you use Python, Perl, Ruby, etc. They seem to believe that we are still using 386s. Now, I can understand profiling, and optimizing certain parts of code, but, in the words of a good old timer (or two) "Premature optimization is the root of all evil."

      Old timers crack me up. Ones that are skeptical of object oriented programming.

      Why shouldn't they be? I'm in my 20s and have been using OOP for most my programming life. That being said, I think OOP is one of the most over-hyped software engineering tools.

      Am I saying that OOP is universally bad? No, but I'm tired of people (particularly in my own age group) who think it is the second coming and will save them from their own ineptitude.

      Most old timers I meet are a little too conservative for my tastes. But the good ones have probably spent a career fixing other people's mistakes and have watched various silver bullets come and go. Thus, skepticism is a reasonable default.

      Get off my... Balcony?!? I can't afford a lawn yet.

    14. Re:Question by Gr8Apes · · Score: 1

      Trolling indeed. Computing these days is no more complex than in the "old days". Matter of fact, much to your probably surprise, you're most likely still reinventing the same wheels for the upteenth time, except you don't realize it because your blinders will only let you see GUIs and high level languages and you most likely don't have a clue what really goes on under the hood.

      Here's a couple of hints: Modern office programs and Wordperfect for DOS. Hmm, type letters from keyboard and save. Wow, hard.... Take a close look - I'll wager over 90% of all documents are barely formatted text only.

      Parallel programming: it's still a problem, and the new languages are looking to techniques and paradigms invented decades ago to solve them (Functional languages, multi-threading, locks, mutexes, etc)

      Botnets et al exist primarily because of a certain company's total ineptitude with coding.

      But, you keep on thinking you're superior. BTW, we do waterfall, and are on our 4th release in 12 months. It's Java, and our pieces are as OO as the several integrated components will allow us to be.

      --
      The cesspool just got a check and balance.
    15. Re:Question by J4 · · Score: 1

      What a punkass! Yeah, geezers are funny but just because you have to live with garbage like MP3's & YouTube doesn't meant there isn't room for improvement.

       

    16. Re:Question by Anonymous Coward · · Score: 0

      My code had to do that today actually with the fortran replaced by some in-house scripting voodoo. What you describe sounds like a good day in the games factory to me ...

    17. Re:Question by BitZtream · · Score: 1

      Did you then play it back in a "web browser" that reads a document format that your grandma could probably learn

      I work with some web designers that apparently should be replaced by your grandmother, is she looking for a job?

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    18. Re:Question by BitZtream · · Score: 1

      Having done most of what you mention(No Fortran experience though), I'd still call that simplier than writing Office Addins and dealing with the Word rendering engine.

      You are right though, modern large scale multi user operating systems do the same thing as they did then. Just now there is more layers of the same abstractions over and over again. Now we call them databases, swap files, and virtual memory, and we take slightly different approaches, but its still the same crap.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    19. Re:Question by Anonymous Coward · · Score: 0

      Sorry to be harsh, but get with the times. Computing these days is vastly more complex then back in the "good old days".

      Ummm, yeah... when do you think most of the code doing process control in nuclear reactors was written? Would you trust anything you are running to do that?

    20. Re:Question by Anonymous Coward · · Score: 0

      ohhh the memories....

    21. Re:Question by Anonymous Coward · · Score: 0

      The task are the complex thing now. The stuff you're describing is for simple things, but under a limited environment. Now both have changed. Thank god.

    22. Re:Question by Anonymous Coward · · Score: 0

      Maybe (today) you don't have to make overlays, write assembly or worry about memory. But, in the 80's, no one cares for race conditions, child procs, daemons, semaphores, multiusers, permissions, sessions, asyncs communications, etc.

      Today programming IS more complex, in the Computer Science point of view. 80's programming were simple, and it sucked. Today's compilers are far more better than 80's compilers, and today's programmers are far more qualified than in the 80's.

    23. Re:Question by BBandCMKRNL · · Score: 1

      Maybe (today) you don't have to make overlays, write assembly or worry about memory. But, in the 80's, no one cares for race conditions, child procs, daemons, semaphores, multiusers, permissions, sessions, asyncs communications, etc.

      Maybe in the PC world you didn't, but we even did that in the 70's on minis and mainframes.

      The tools have improved over time so that we don't have to worry about overlays or for that matter, the proper way to update a master file on tape with a transaction tape. As a result, we are free to concentrate on more complex applications.

      --
      Without the 2nd Amendment, the others are just suggestions.
  49. The less you know the higher you can go! by Anonymous Coward · · Score: 0

    The worst I have had is the Senior programmers wrote code and then passed it off never to touch it again. It was assumed to be 'good enough' if it came from the Senior programs and then in QA the issues came back and a random method to the junior programs. Some of the Senior programmers could not write anything - 100% error code and never compiled. The poor junior programs typical said nothing and fixed everything. Guess who looks good at the end of project review - Senior guy who was in the PM view worked just the 8 hours a day and produced lots of and lots of code or the junior guy who spent a long time to fix everything and put in lots and lot of overtime. Next guess who got the promotions... Lastly take guess how many of the project turned out as a result of largely having junior guys write (fix) everything. Yeah I am working somewhere else and I brought along with me some of the best team members so we are highly skilled teams that works really well together.

  50. Rise of the Community College Computer Scientist by Anonymous Coward · · Score: 0

    is to blame for this. Once it became clear that computing/technology actually represented the first new "industry" of any scale in a generation, every school in the universe rushed to offer it as a career path and untold numbers of students whose only facility for the material is "I want to make money, so yeah, programming would be good" enrolled.

    I was in CS for two years in the late '80s at a top ten department. Our computer science courses were theoretical and heavily mathematical, not tied to any single language, and trafficked in tons of theory, tons of hardware, tons of calculation and proofs, and tons of machine state diagrams.

    In the course of two years we worked in C, C++, Pascal, Forth, various assemblers, Scheme, LISP, and a bunch of UNIX tools (sh, awk, perl, etc.) but the language was always merely a tool, not a worldview unto itself.

    To this day, I (without a CS degree, even an undergrad one) can routinely solve problems that M.S. C.S. people get befuddled at. I can troubleshoot TCP/IP and routing problems once the network guys are throwing up their hands. They all think I'm a genius. In reality, I simply didn't learn utter shit at my CS department for the brief moment I was there.

    Why did I leave? It was too difficult. :-) My grades were falling and I was getting in over my head in physics and math. I went into publishing (English degree) instead, and later into the social sciences.

    But I find it constantly frustrating just how much our current society looks like H.G. Wells' time machine society. We have the Magic Machines that nobody (even the experts) really understand. The few people who do understand them are either retired, marginalized, or unemployed because the HR managers don't recognize a worthwhile, serious set of C.S. skills over a "got a degree in programming Java from Local U" resumes.

  51. Complain much? by Nitewing98 · · Score: 1

    Geez! For people who are fortunate enough to work in the field they love, some of them sure complain a lot! Y'all sound like a gaggle of old crones kvetching about the new butcher in town.

    --

    Nitewing '98

    Everything works...in theory.

  52. I call bullshit by Anonymous Coward · · Score: 0

    I really get annoyed by so many people blaming users. At best it is just laziness. At worst is used as a cover for malicious action. As there is no perfect user there is no perfect user interface. Life with perfect users and user interfaces would be dull and unrewarding.

    The user trade off that you propose to be at the crux of the problem is unlikely to be relevant. Users face many other trade offs before they ever get a chance to ponder the one you propose.

    Blaming the user is a disgraceful habit the MicroSoft has done so much to advance. It is a shame to see others accepting it blindly.

  53. Spammer, and your friends are smear artists by Anonymous Coward · · Score: 0

    Instead of links to your "funny" monetized blog (which is pretty much the only thing you do on Slashdot, thus the "spammer" label), you should also link to Roy Shitsforwitz' examples of libel and personal smears against Wikipedia users.

    1. Re:Spammer, and your friends are smear artists by Anonymous Coward · · Score: 0

      You posted this to the wrong blog. You're headed for a 10% rating.

  54. Time-Honored WHAT?! by mihalis · · Score: 2, Informative

    he lays the blame on PC developers (read: Microsoft) who kicked the time-honored waterfall model to the curb

    The waterfall model is long-discredited and its downfall is nothing to do with Microsoft. Ian Sommerville in his Software Engineering book was discussing this in the early 90s. I recall a diagram of the spiral model which is very much like agile development, although we didn't call it that then.

  55. Went on to fame and fortune by CarpetShark · · Score: 4, Funny

    A project I was on in 2000ish went as follows:
    Steppings A0, A1, A2, and A3 were halted in-fab because someone found a critical bug in simulations.
    A4-A7 did not work.
    B0-B4 did not work B6 did not work
    C0-C4 did not work
    B5, B7, C5 sorta worked.
    The company folded.
    That's what a software mentality working on hardware will get you.

    Luckily Microsoft stepped in and bought the company, and now market the product as X-Box.

    1. Re:Went on to fame and fortune by Anonymous Coward · · Score: 0

      I think you meant "Zune".

  56. Not only that.. by Anonymous Coward · · Score: 0

    But modern software systems are orders of magnitude larger and more complicated than they used to be a few decades ago.

    I mean, large software projects will contain millions or even tens of millions of lines of source code, all written a few lines at a time by humans.

    Is it any wonder that software isn't perfect?

  57. The customer pays in the end. Every time. by Opportunist · · Score: 1

    No matter how you put it. No manufacturer, ever, paid for the expense of risk. Or, rather, no manufacturer that's still in business ever did. Because guess what? If cost outmatches profit, the company goes under eventually.

    So what would companies do when facing the risk of having to foot the bill for software faults? Simple, the same the car industry did to stay in your analogy: Assess it, put a price to it and add this to the price of the product. Simple as that.

    Nobody takes a risk for free. Risk has a price, and that price has to be paid, and in the end it's the customer that pays it.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    1. Re:The customer pays in the end. Every time. by tbannist · · Score: 1

      That might be a good thing. If the quality of the software was included in the price, then it'd be much easier to either avoid or put out of business the worst offenders.

      --
      Fanatically anti-fanatical
    2. Re:The customer pays in the end. Every time. by Opportunist · · Score: 2, Funny

      You know that managers buy the software with the best box design and the best marketing spinners, right?

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    3. Re:The customer pays in the end. Every time. by tbannist · · Score: 1

      I thought they bought from the company with the best steaks and hookers. Wow. Managers these days don't check anything out.

      --
      Fanatically anti-fanatical
    4. Re:The customer pays in the end. Every time. by DragonWriter · · Score: 1

      No matter how you put it. No manufacturer, ever, paid for the expense of risk.

      The customer always pays the cost, the question is really not who pays but who is exposed to risk (i.e., who pays unexpectedly if things go wrong.)

      If the manufacturer is exposed to the risk, it is in their interest to make software only if there is a market at the price necessary to justify the cost of largely eliminating the risk; this will improve quality, but reduce cost. Now, for cars (where failures have substantial public safety implications, and other costs to people other than the direct customer -- i.e., burden to everyone else on the road) it makes sense for government to mandate that the manufacturer pick up most or all of the risk of defects, since otherwise the public bears a large share of the risk, even though they aren't involved in the individual purchase decision.

      OTOH, for most software, I don't think their is as clear a socialized risk in event of defects; clearly, the customer is at risk, but the customer is free to demand performance guarantees that they are willing to pay for or just not buy the software. Mandating that the risk is born by manufacturers would just eliminate low-cost software even for those willing to accept the risk. Certainly, for some classes of software, there might be clear socialized risk, but I don't see it being generally the case.

  58. Re:There (was) is no such thing as Waterfall Metho by EEBaum · · Score: 1

    Tell the publishers of Software Engineering textbooks (i.e. $70 doorstops) that.

    --
    -- I prefer the term "karma escort."
  59. User Interface? by MazzThePianoman · · Score: 1

    Before you get into the nitty-gritty of the code I think many programmers need to better consider the end user and the user interface in their designs. Nothing is more stressful than interface options that are non-responsive. Limiting mouse clicks and mouse travel also increases user speed and limits the chances of repetitive task injuries.

    --
    "They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety" Franklin
    1. Re:User Interface? by darkwing_bmf · · Score: 1

      If you're into user-interface, I highly recommend the book Set Phasers on Stun: And Other True Tales of Design, Technology, and Human Error by S. M. Casey. It's a collection of true and entertaining short stories about how poor user interface can lead to horrible disaster. Only about one or two of the stories are software specific, but the general lessons learned can apply to any kind of design, including software. Very interesting.

  60. Pop quiz hot shot by coryking · · Score: 1

    Define Quality. Define "Secure" and define "Stable".

    For extra credit, define them in terms of engineering cost/benefit. I'll wait.

    PS: Any student who blames Microsoft will automatically fail the test.

    1. Re:Pop quiz hot shot by Draek · · Score: 1

      My personal definitions:

      Quality: bugs per subsystem ratio, lower ratio means higher quality.
      Secure: bugs allowing priviledge scalation per subsystem ratio, lower ratio means higher security.
      Stable: numbers of instances where the software fails to accomplish its required task due to programming (as opposed to user or system) error, lower number means higher stability.

      Beats me how to translate them to an engineer's cost/benefit ratio, though, and I don't know if that's even possible since it might require the cost of finding/fixing bugs to scale linearly instead of exponentially.

      PS: Any student who blames Microsoft will automatically fail the test.

      The OP didn't, he blamed consumers who accept subpar software simply because it's shiny, and I'd personally agree with him.

      --
      No problem is insoluble in all conceivable circumstances.
  61. There is no shortage of good coders or IT people by jeko · · Score: 4, Insightful

    I bought three Mercedes. Two of them got repossessed. Now, the dealers won't finance me when I go to buy another. Clearly, there is a shortage of Mercedes.

    Look at your story. You had three programmers. Two quit (Yeah, I know, it wasn't because they were unhappy. Look, no one wants to be known as a malcontent or difficult. They lied to you.) Now, you can't get anyone in to interview who knows what they're doing.

    You think maybe it's possible that your company's reputation precedes it? I know of half a dozen places in my town that nobody in their right mind would agree to work for.

    Show me a man who says he can't find anyone to hire, and I'll show you a man nobody wants to work for.

    Take that same man, triple the wages he's offering and wire a pacifier into his mouth and the ghosts of Ada Lovelace and Alan Turing will fight for the interview.

    --
    He put his boots up on the table and made a face. "The sig," he smirked. "You can waste your life in search of the sig."
  62. Big-O notation by troll8901 · · Score: 1

    But you'd be amazed at the blank stares and "what do I need that for?" when you ask some of those "programmers" about ... Big-O notation.

    I don't know Big-O notation. Never learned it in school. I'm so ashamed!

    No wonder I can't code simple algorithms like the Google PageRank system. Looks like I'm still stuck learning the Towers of Hanoi (recursive) algorithm.

    Can we simply outsource the optimizing of complex algorithms to Computer Science interns? ;)

  63. Time honoured waterfall model??? by Channing · · Score: 1

    There was never a time honoured waterfall model, I quote Winston Royce that wrote the following under the diagram of the standard waterfall process:

    the implementation described above is risky and invites failure ⦠The testing phase which occurs at the end of the development cycle is the first event for which timing, storage, input/output transfers, etc., are experienced as distinguished from analyzed ⦠The required design changes are likely to be so disruptive that the software requirements upon which the design is based and which provides the rationale for everything are violated. Either the requirements must be modified, or a substantial change in the design is required. In effect the development process has returned to the origin and one can expect up to a l00-percent overrun in schedule and/or costs.

    read craig lahman's overview of incremental and iterative methods to learn the real history.

  64. Trick Question? by raftpeople · · Score: 1

    "Write a function to sum all the numbers from 0 to 100"

    Don't be so hard on them, I don't know how to do that either due to the fact that the set of numbers from 0 to 100 is infinite. However, if you meant integers, here it is: x=(100*100)/2

    1. Re:Trick Question? by raftpeople · · Score: 1

      I see other posters have n*(n+1)/2. Looks like my (100*100)/2 has a bug (how fitting that I posted it in this thread about bugs).

  65. Re:There is no shortage of good coders or IT peopl by 77Punker · · Score: 1

    They didn't hate the job, they hated the software. It's a nice place to work and is too small to have a reputation bad enough to drive people away. In fact, I don't know why someone wouldn't want to write software here except that the software itself is mundane and cumbersome. We have no dress code, decent salaries, plenty of paid time off, a boss who is easy to deal with, and a foosball table. I'm beginning to think that our HR person just does a terrible job at finding resumes for me, but it's just a hunch.

  66. No, it's the top 25 errors... by SecurityGuy · · Score: 1

    ...ironically the 16th error is the dreaded "off by 10" error.

  67. They do build prototypes. by TheLink · · Score: 1

    "I think his suggestion was to 'build it twice' via prototyping"

    They do that already except that they ship and sell the prototypes to the customers too ;).

    See the problem with software is:

    When the "blueprint" compiles and mostly works, you ship it as version 1.0
    When the prototype/"clay model" works, you ship it as version 2.0
    When the first production build works, you ship it as version 3.0
    After fixing some more bugs you ship 3.1

    And why do you ship "blueprints" etc?

    Because each step costs about as much, and sometimes the first step costs even more than the subsequent steps.

    People often compare software engineering with civil engineering or other stuff, and ask "why can't software be just as good?".

    For civil engineering, the cost of making a blueprint is usually a fraction (10%? ) of making the "real thing". In event of concerns/problems the bosses will be more inclined to spend millions to redesign that multibillion dollar skyscraper before actually starting to build it.

    In contrast it should be no surprise that bosses are seldom inclined to spend millions to redesign "million dollar" software ;).

    The build phase of a skyscraper could involve thousands of labourers, machinery and could cost billions and take years.

    Whereas the build phase of software often involves the programmer doing "make all" and going for a coffee break.

    Civil engineering:
    design cost << build phase cost

    Software engineering:
    design cost >> build phase cost

    --
    1. Re:They do build prototypes. by Brandybuck · · Score: 1

      People often compare software engineering with civil engineering or other stuff, and ask "why can't software be just as good?".

      Actually, there's a different reason than what you cite. In nearly every other field, what you build today is remarkably similar to what you built yesterday. Most bridges civil engineers build are 95% identical to each other. Ditto for automobiles refrigerators, LCD screens, etc. But in software everything is always different. Version 1.0 is totally new. Version 2.0 adds new features that are not present in 1.0. Version 3.0 adds new features that are not in 2.0 or 1.0. And so on and so on.

      --
      Don't blame me, I didn't vote for either of them!
  68. Some people are more comfortable with.. by msimm · · Score: 1

    the high horse because when they get off they realized their just standing at ass level.

    --
    Quack, quack.
  69. The issue is a lack of local coding standards. by Richard+Steiner · · Score: 4, Insightful

    If you perform certain types of validation on a routine basis, write a set of common routines to do the work, and reuse them over and over again. Standardize your code. Define standard buffer names, sizes and buffer attributes, and make sure that anyone working on that code is acutely aware of the standards which are already in place.

    Reject code that doesn't follow the standard. Even if it works otherwise.

    Modular coding isn't rocket science, and one can be very structured and modular in any language. No OO needed. We had an extensive library of common routines, common buffers, etc. back when I wrote Fortran 66 and 77 code at my last major place of employment, and we have the exact same thing here on both the C and Fortran sides of life.

    --
    Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
    The Theorem Theorem: If If, Then Then.
    1. Re:The issue is a lack of local coding standards. by GooberToo · · Score: 1

      Very telling you even needed to create that post.

    2. Re:The issue is a lack of local coding standards. by Samah · · Score: 1

      Where I work, we do have coding standards, but no-one follows them, and no-one cares (except me). When I review code, I'll throw it back in their face if it doesn't follow standards. The problem is, I very rarely review code anymore since I'm too busy writing it, and the people who review code without checking for standards are the same ones who code like that.

      I've sent out emails to the entire development team reminding them of coding standards, but no-one listens. Some of the standards refer to code formatting, and I've told everyone that it's as difficult as pressing Ctrl+Shift+F in Eclipse, and I still see random whitespace everywhere and poor indentation. It's almost enough to make me leave, to be honest.

      --
      Homonyms are fun!
      You're driving your car, but they're riding their bikes there.
    3. Re:The issue is a lack of local coding standards. by JumpDrive · · Score: 1

      It would be nice if more of the C++ books and name the language would concentrate more on preventing these types of errors.
      I thought I had escaped or prevented accidental or intentional SQL Injection from an application when I first started out. Imagine my horror when I found out that users were entering '--' in there input and I didn't realize that it was a comment demarcation in SQL.
      So I have been always on the lookout for books that will help me understand the pitfalls. Where are they?
      Because it seems like most people end up building these routines by trial and error. I can only recall one book that said this is how you prevent a buffer overflow.

  70. Feature, not bug ... by trolltalk.com · · Score: 2, Informative

    The program he left worked wonderfully and was incredibly complicated until he wasn't there due to poor coding practice with documentation/comments to allow others to manage the tool.

    It's called "coding for job security . . ."

    It also comes with a companion use case "coding for future consultancy gigs . . ."

  71. Boo Hoo Hoo... Blame Microsoft by Anonymous Coward · · Score: 0

    "Blame Microsoft"... the battlecry of losers everywhere.

    This may shock and amaze FOSSies, but bad programming is not CAUSED by Microsoft, or Windows. Bad programming has existed as long as programming, and will always be around so long as people are creating software.

    Last time I checked, even Teh Lunix was still releasing new versions. Guess that whole "if only they would take the time to code it right" thing only applies to MS, but never to FOSS.

  72. Good books by DavidHumus · · Score: 1

    The two books mentioned should be required reading for everyone in the field. I was lucky (or unlucky) enough that these were two of the first I ever read. The "unlucky" branch was spending the following twenty years wondering why almost no other book was as good as these two.

  73. software is a snapshot of knowledge of a problem by Anonymous Coward · · Score: 0

    companies/executives/managers ... need to realize that software is simply a snapshot of the current knowledge to solve a problem. the code is an implementation of the combined knowledge of all the people that wrote the code. compiling or interpreting the code essentially takes a snapshot of that knowledge and applies it to the input. if the people that wrote the code have no knowledge, or very little knowledge, of computer science/engineerting, then you get stupid code.

    as has been discussed in the comments, the level of knowledge of most "programmers" is abysmal. managers/execs hire flunkies that take a 2 month, "programming" course and set them to writing code. since they have little knowledge, the code is crap.

    i've been lucky to work in several groups where the managers/execs understood that good programmers are first and foremost, knowledgeable. so when the code is compiled, that snapshot, executable, has knowledge in it. it's not just a shot in the dark at the problem. in addition, there are very few people in the group. and we're not solving small problems, one group i was with wrote a pcb (board) router and there were only 7 developers.

    i've also been in groups were the managers cut corners on hiring. they would hire a few senior developers, then hire a boat load of "certified" coders. what a disaster. as one of the senior developers, i spent all of my time tracking down idiotic mistakes in the code. suffice to say, those projects never made it out the door.

    schleprock

  74. HR couldn't find a hooker in Vegas by jeko · · Score: 2, Insightful

    "I'm beginning to think that our HR person just does a terrible job at finding resumes for me"

    Well, there's your problem...

    You sound like a great, amiable guy who'd be a great coworker. HR is screwing that up for you.

    Why are you letting HR dictate who you're going to get saddled with? HR doesn't bring you resumes, you should be taking resumes to them. Talk to your friends and acquaintences, guys in the users' group. People that you know can do the job.

    "Hey, we need a coder for Project X. Ya want it, or know anybody?"

    "Whatcha offering?"

    "120K, 30 days vacation, free milk and cookies..."

    "See you Monday morning."

    .
    .

    "Hey, we need a coder for Project X. Ya want it, or know anybody?"

    "Whatcha offering?"

    "$4.25 an hour plus all the stress and scapegoating you can handle..."

    "Gee, not really looking myself. Let me see if I can find anyone for you...."

    Basically, with unemployment penciled in to hit nine percent next month, you WILL find someone competent to hire. You just have to be offering market rates.

    --
    He put his boots up on the table and made a face. "The sig," he smirked. "You can waste your life in search of the sig."
    1. Re:HR couldn't find a hooker in Vegas by ciderVisor · · Score: 1

      "$4.25 an hour plus all the stress and scapegoating you can handle..."

      Hmmmmm...thinks. "All the [...] goating you can handle".

      Where do I sign ?

      --
      Squirrel!
  75. Waterfall a startup, I dare you. by coryking · · Score: 1

    If you were a startup, would you use waterfall your first release? Who is your stakeholders in a startup? Oh wait, you are the stakeholder. That and your users, but since you are a startup on a shoestring budget, you can't afford to do proper usability research yet. Who is the "management"? Oh wait, since you are like programmer #1 or #2, odds are you are pretty much the management.

    Go ahead, take your waterfall model that works so well for mission critical things like, well, whatever and apply it to web-anything. Go ahead, design your system The Right Way (tm). Let me know if your 1000 page thick binder containing The Specifications(tm) creates a product customers will buy, even when I'm positive you dont yet know what they will. And if for some reason you actually manage to ship a product before your competition, who aren't using waterfall, let me know how long it takes to ship the next version (or is your Master Specification so perfect you will never need a second version). And if hell freezes over and you IPO, let me know so I can short your stock.

    Blah. Whatever. Waterfall probably works for some boring mega-project that needs a million different bureaucrats to sign off on any minute change. I'll stick with something that works in a more lively environment where where the cool stuff happens.

    1. Re:Waterfall a startup, I dare you. by mattwarden · · Score: 1

      I was responding to the "waterfall doesn't work in reality" comment. I didn't say waterfall is the right way to do everything.

  76. Top 25... I mean 24... 23... by argent · · Score: 1

    First three entries, and I'm already objecting to the list...

    CWE-20: Improper Input Validation
    CWE-116: Improper Encoding or Escaping of Output
    CWE-89: Failure to Preserve SQL Query Structure (aka 'SQL Injection')

    But CWE-89 is a special case of CWE-116.

    So is CWE-78: Failure to Preserve OS Command Structure (aka 'OS Command Injection')

  77. Business model and developer values by Device666 · · Score: 1

    In the end there is the difference between the quality market and the price market, a different business model and thus a different way to compete. If you compete on quality and not so much on price it's possible to have the right kind of commitment to quality. If time-to-market is dominant (which is most of the time true) than you can expect sloppy development methodologies (like waterfall) and also it will be harder to retain people who are more quality minded. It might sound a little bit black and white, but from my kind of experience it makes all the difference. If been there and done that and than started my own business, I rather focus on quality and have more stamina for the long term. Anyone can compete on price, and most who compete on price in the end will be suffering a shakeout. If you have some passion as a developer and some passion for clients, you rather want to work with high quality developers and people who now how to make a business around great products. Quality means also greater challenges and less tension on idiotic number of features and put stability in the forefront of business.

  78. It's not just the model, it's the people by Pebby · · Score: 1

    I think what needs to be said is that ANY model can be driven into the ground by people who don't know what they're doing. Having good managers who can create and follow through with a working strategy is better than having the best laid plan that no one is following.

    For the car analogy, you can't say 'well, if the car was better, he wouldn't have crashed' - the driver still neglected to stay on the road.

  79. Bad software is management problem by saigon_from_europe · · Score: 1

    I have worked for 4 companies so far, and I worked on some projects on my own.

    So far, I was able to see that coding is the least problem. Major problem with software are related to poor management i.e. lack of planning.

    It is generally accepted that you cannot collect good specs, that user will change his mind in the middle of the project, that some initial design decisions will prove to be bad ones etc. But that is not an excuse for good ol' planning.

    As a first, you have to decide what features you want to implement. But I have heard zillion of excuses just to avoid to make a list to start with. Because, if you make a list, then you are responsible for the list, and then someone can ask you about the list. So the solution is not to make a list.

    Without feature list, there could be no good and precise architecture. And good architecture is significantly more important than good code.

    Finally, once you have to make changes, noone will let you to do refactoring. It is impossible to make any significant changes if you don't change architecture. But refactoring is never calculated and financed. So you get bad product even it had a decent architecture in version 1.0.

    Testing is first thing that is reduced if deadlines is approaching. Testers are not paid enough. Often they don't even exist, and programmers are notoriously bad in testing it's own code.

    Programming is like shooting a moving target. But it does not mean that you can shoot randomly. Moving target means that you have to shoot more cleverly.

    --
    No sig today.
    1. Re:Bad software is management problem by jawtheshark · · Score: 1

      Amen.... And I'm speaking out of 10 years of experience. :-(

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
  80. Re:Your examples: who cares? by DoofusOfDeath · · Score: 1, Informative

    I'm afraid you've entirely missed the point. You may want to re-read your original post and my response.

    Any further elaboration would come across as trolling, so I'll simply say good day to you.

  81. Promoting our work as crap by ClosedSource · · Score: 1

    It's nice to know that the daily wtf has expanded its negativity to new aspects of our profession.

  82. Re:Good Enough by TaoPhoenix · · Score: 1

    Food.

    That crowd mastered Old School marketing of junk. "Contains 10% RDA vitamin C!" (And nothing else.) Hooray for 4 cents. Now you can charge an extra dollar and market it as Enriched.

    --
    My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
  83. Sorry Dennis by ClosedSource · · Score: 1

    "When did you code your first C application?"

    If it was any older than 12 (twelve), I'd reject them. *I* did this, and I don't even consider myself to be a programmer."

    So apparently Dennis Ritchie need not apply.

  84. Re:There (was) is no such thing as Waterfall Metho by DavidHumus · · Score: 1

    The guy who wrote the link you posted is kind of an idiot but he's also kind of right, at least about the problems with overly-rigid frameworks.

    In spite of what he says, the 1970 Royce paper is generally accepted as the earliest mention of the waterfall method (see Wikipedia) even though Royce did not call it that. However, he did diagram it quite clearly in the form that is frequently used today.

    I work for a large company that produces lots of software and the waterfall method is still mentioned seriously - something I find astounding as it's been seen as a very poor method since this earliest known mention. However, Joel Spolsky apparently sticks up for it and he often seems to have a clue. However, I suspect he may be working with small waterfall-like steps inside a larger, iterative framework.

  85. You are really Dumb by omb · · Score: 1

    None of us wants to bring back the _bad_ part of the old days, but your attitude is really stupid, if it is more complex, it is more important to do it right. I take, from your comments that you think that OO is the answer to a maiden's prayer and that you do not believe in prototyping and bottom-up feasability analysis.

    Simple, functional tools are almost always the best, especially for the non-technical non-specialist. Design patterns, use cases ... are crutches for those that wont think. Wordstar may be better for text input than Wordperfect. but nedit, kedit, joe ... would all do the job. I prefer vi (now vim) even on windows.

    Finally, the training argument is nonsense. If someone cannot learn the basics of using an editor in a day it or them need changing.

    Finally the M$ approach leads to expensive crap, every time I see a document typeset in Word I cringe at the awfulness of it. Troff was better.

  86. You are correct, but by coryking · · Score: 1

    I'm not a million years old, but I've been around the block a little. Once upon a time, I used to do stupid programmer shit, but not anymore.

    It is not stupidity or unwillingness to embrace the latest beta, it's more a matter of preferring that which is known to work over that which may work better eventually but will cause problems now.

    That was me a while ago, but these days I never run beta anything (unless there is a very compelling reason to do so). While I built my computer, I dont even know or care what speed it was or anything, all I care about is that it was high quality "boring" hardware (pretty much pure Intel).

    What makes me laugh though is when people, especially tech people, get so god damn cranky and laggard they can't accept anything. I remember working with somebody who had to write some UI stuff in Visual Basic (gag me with a spoon) and he just couldn't get over the fact VB managed all the memory. All the time he'd mumble about how it must be a huge waste of resources and "Microsoft" must be doing something shady under the hood.

    The thing is, I think a lot of us "kids" (i.e. under say 40) learned computers when they were just becoming mainstream instead of when they were mysterious things in basements. I think we see them in slightly different ways. Computing going mainstream was huge. Everybody had one and they are to this day so new that none of us really know what the hell we are doing it. We still have a lot to learn, things like usability, "development process" and such are still things we need work at.

    Good times. But dammit, anybody who says back in their day code never crashed lies. Shit back then crashed *all the time* for no good reason at all!

  87. I'm sure I missed the point by coryking · · Score: 1

    But given the number of people on slashdot who seem to think the examples you gave are what we should be doing now, you can probably understand me mis-reading you.

    The amount complexity may not have changed, but what is complex has. Is that what you are saying?

    1. Re:I'm sure I missed the point by DoofusOfDeath · · Score: 1

      Correct.

  88. Re:Your examples: who cares? by Vellmont · · Score: 1

    I think the point was supposed to be that the challenges in software development have merely changed over time. Software does a lot more than it did 30 years ago, mostly because the tools, languages, and computing resources have gotten a lot bigger/better.

    It shouldn't really be all that surprising. Programmers likely aren't a lot better or worse now than they were 30 years ago, they just face a different environment. Good software developers will always expand what they're capable of to the point where they reach the limits of the human brain. That's what we call "complexity".

    --
    AccountKiller
  89. actually by coryking · · Score: 1

    I think OO has major flaws that people gloss over. For example, OO doesn't map worth shit to any kind of database. I'm also getting the feeling it doesn't quite map well into the massively parallel future we seem to be headed.

    Prototyping? A wise old programmer once said to me "If you can't write it down, you can't pull it off". That applies to the code, the database schema and most important the UI.

    Design patterns, use cases ... are crutches for those that wont think.

    Naw. You gotta start somewhere. Design patterns are kind of like the programming equivalent of the Rule of Thirds in photography. You should adhere to it until you are good enough know when and were it doesn't apply.

  90. No excuses, please! by Anonymous Coward · · Score: 0

    Posting as "Anonymous Coward" to avoid unpleasant repercussions, although I don't think I'm at all cowardly and I really think the inference is offensive and unwarranted. Regardless ...

    I am very pleased that my digital clock, which syncs by radio with NIST time broadcasts, does not crash or exhibit buffer overflow or other "bugs". I'm glad my TV cable box doesn't go on the fritz, not even at the most possibly annoying time (only the delivery service goes on the fritz and at the most annoying times). No one seems to have been able to hack into my fax machine, ever, and I'm so grateful. The little computer that controls "Cruise Control" in my auto has never put either the gas or brake pedals to the floor at the same time (or even independently), and I bet the insurance companies are appreciative of that.

    These devices, and innumerable others, just work as expected and refuse to work in unexpected ways. Some are very cheap, others very expensive, but being it that they all have that performance expectation nailed down and trustworthy I'm left wondering how all that testing and debugging (that had to occur before a shipment date) could ever result in inexpensive products that do not misbehave. Perhaps the testing argument as reason for bad design, because the product has to ship someday, is a little overstated. Perhaps the reality is that with misbehaving products insufficient testing is performed, or how it's properly done isn't understood.

    It might help if a new product is not announced before it exists in best possible form. I'm going to say this just once. I don't want all these excuses why it's ok that we have to wait for Service Pac X updates before the consumer gets what was paid for, finally, only to find product support then immediately discontinued. I want a product that has a warranty in case it actually breaks, not a warranty that expires as soon as the last update is released to make it work when the product was not physically ever broken to begin with. So shut up with all the excuses and rationalizations for bad software and just write good code with security in mind.

  91. fair enough by coryking · · Score: 1

    But wouldn't you say the level at which the complexity takes place has also changed? It hasn't shifted to the right or left, but really shifted *up* to higher levels. Yes all the examples you gave are complex, but to be honest none of them solve any usefully problem. They were complex because they systems they were developed on weren't powerful enough to take on that level of complexity for you.

    I guess you can make a paralell to farming and industrial revolution. Farming was and still is complex. Back in the day most of humanity was busy doing it. They were all so busy farming they didn't have time to "thing about stuff". It wasn't until farming became a skill that only a small number of people needed to learn that we really started doing cool industrial stuff. Once the chore of collecting food was gone, we created machines and took on new more interesting types of complexity. Then we came up with computers to remove a lot of that complexity and brought on an even different level and type of complexity. Now we have powerful computers who can "solve" that complexity so we are free to invent even new complexity.

    Hopefully that analogy makes sense. Basically we "solved" the complexity in your example so we could be free to solve more useful types of complexity.

    1. Re:fair enough by Anonymous Coward · · Score: 0
      Speaking of levels of complexity and the power of a computer system to handle various levels of complexity for the user, freeing him or her to tackle higher levels of complexity... my computer is powerful enough to handle spell-checking so I don't have to.

      I guess you can make a paralell to farming and industrial revolution.

  92. Re:Your examples: who cares? by LowSeven · · Score: 1

    You forgot to add "whoosh".

  93. They didn't mention ''Documentation'' by Alain+Williams · · Score: 1
    Bad documentation and lack of use of existing documentation is a great source of errors in the use of code:
    • Function libraries where the arguments, return values and side effects are not fully listed
    • Programs where the command line arguments, files read/written, user interface, ... are not properly described
    • End user programs where there is no help option, so the user guesses (wrongly) or doesn't know what they can do
    • Employers who get users to use software without training them in its use

    I know that doing all the above takes time, often as much as writing the s/ware in the first place, but overall it saves time since the users of software make less mistakes and are more effective.

    Poor documentation is, unfortunately, frequent in FLOSS s/ware.

  94. Error free hardware is a myth by EmbeddedJanitor · · Score: 1
    Revising silicon has got cheaper and the cost of delaying shipping has got bigger. Most significant (and even many simple) parts these days are shipped on almost the same basis as software with a range of bugs. Look up the errata sheet for almost any microcontroller etc and some will have numerous bugs (20+ bugs in a reasonable complexity chip are not unknown).

    The difference is that most hardware engineers are a pragmatic lot and will work around the bugs as they need to to build a shipping product. The hardware rarely interacts directly with an uncontrolled environment (ie a user) and this makes work-arounds a realistic strategy.

    There are even hacks in gcc to work around CPU bugs in various micros.

    --
    Engineering is the art of compromise.
  95. Structure Matters by catchblue22 · · Score: 1

    I think what a lot of us are forgetting here is the importance of the overall structure of pieces of software. The overall design principles in a piece of software are set very early in its life. The decisions made early on about the general structure of the software echo throughout the life of the code. It may be debugged, it may even be rewritten, but if the early decisions about the general design of a program were poor, then it will have consequences, no matter how much debugging or polishing that goes on.

    As for examples: Windows...Win95 was made with little thought of network security or the internet, because the original designers didn't consider the internet important...before 1994, for the home computer, the web didn't really exist. Internet/web functionality was later bolted on to windows, but the insecure foundation echoed through many different iterations of Windows. For windows, network security was largely a kluge.

    Contrast this with Unix. Unix was used to run mainframe computers, especially at univerities. Unix was from early on a multi-user system that existed in a networked environment. Out of necessity, it was built to be secure and stable. These mainframe computers had to be able to prevent hacker students from running amok with their acounts. Now, with internet being everywhere, Unix is amongst the most secure systems for running networked computers. I would argue that a main reason for this is that Unix systems, from early on were designed with security in mind.

    NeXT computers (which later became OS X) were designed early on with an excellent hardware abstraction layer. Basically, NeXT was designed so that the software could operate with limited knowledge of hardware details. The hardware abstraction layer translates requests from the software into instructions for the hardware. And because the software has limited knowledge of the hardware, the hardware may then be changed with little disruption to the software.

    I realize that most OS's do this to some extent, but NeXT's version was so good that Apple was able to port OS X from PowerPC CPU's to Intel chips with no significant disruption, something that would be well nigh impossible with a poorly structured OS such as Windows. I argue that the reason for this portability was that NeXT/OS X was designed elegently from the beginning to be independent of hardware.

    I believe that NeXT's structural elegance is the real reason that Apple is able to put out a secure and functional operating system with a tenth the staff of Microsoft. I don't buy for a second the argument that Apple has it easy because it doesn't have to deal with as much diverse hardware as Windows. Apple doesn't need as many programmers because the structure of the operating system is elegant and clear. Windows has an inelegant structure that originates from its beginnings as a hacked together system. Microsoft needs a massive staff because the Windows codebase is an ugly beast that can barely be managed (Vista still has the Registry!!!). This is the real reason why Microsoft can't seem to get it right. This is the real reason why it took so long for Vista, and why Vista was so buggy. It isn't about perfection. It's about elegance.

    --
    This and no other is the root from which a tyrant springs; when first he appears as a protector - Plato (423 to 327 BC)
    1. Re:Structure Matters by Anonymous Coward · · Score: 0

      NeXT started out on the x86 and was then ported to others winch resulted in lots of bugs being uncovered. It seems to me that as Apple drops more support for the PPC, their code quality is decreasing which may have been caught if they were still testing on serveral CPUs.

      Also Unix isn't even close to the most secure mainframe OS... it just happens to be good enough for most jobs.

    2. Re:Structure Matters by drachenstern · · Score: 1

      So are you trolling or do you honestly believe all that crap?

      I can counter most of what you gave as examples to show that your entire argument is flawed, so I figure you knew that too already. For instance, let's just start with you're last ding at Windows, the registry. Without the registry, Microsoft would be doing exactly what Gnome is doing with it's gconf to accomplish the same ends. But instead of having a separate file for each app, the Microsoft devs made the system use a central database with similar APIs. So you're going to complain that Microsoft is doing what the Open Source movement is as well?

      But anyways, I'm not preparing to fight with a dull witted opponent, so show me that you believe your given premises to be inherently false or allow me to show you factually why you are wrong...

      --
      2^3 * 31 * 647
  96. Just one little problem.. by Anonymous Coward · · Score: 0
    1. Re:Just one little problem.. by Cramer · · Score: 1

      Fine. Find me a 25+ year old modem across which people ran zmodem. It's not at all surprising Hayes would patent it. They pretty much invented the modem.

      Wait a minute. I HAVE a 25 year old modem... the one that started it all (for RS232 anyway)... a Hayes Smartmodem 300. I've used zmodem across it (don't recommend it; a rat dragging a floppy disk is faster.) And it doesn't f'ing hang up.

  97. Managing Complexity by Anonymous Coward · · Score: 0

    When I started out in the early 80's it was almost possible to know it all. The systems were simply not that complex compared to what we have today. Todays system do more and part of the price is greater complexity, some of the complexity is the price for the way things have been done.

    Becuase systems are now more complex that noone really understands the system we have system being changed in part by people who dont understand the whole (the system is very complex) and much worshipping at the shrine of ytilbitapmoc.

    Simply evaluating the available tools is impossible for any one person, information overload.

    There is also a lot of hype in software development about tools & methodogolies.

  98. Unit test it all at each level of integration. by Anonymous Coward · · Score: 0

    Want to make sure there are no bugs?

    Make clear interfaces between each code module and test every code path and every branch in the code with a unit test that is part of the code module.

    Make sure that every error return is handled and that you can sanely handle garbage passed in as values. Any function that takes a pointer should be able to handle a null without choking.

    Another area that people fail in is passing up error returns if your level of code can't handle the error. Your program needs to properly handle or shut down if you get a error from a system call or any of your own functions. If you tried to allocate more memory and it failed you have to property handle that case everywhere.

  99. Being First by Tablizer · · Score: 1

    This attitude is the number one problem with software development. When all you care about is getting it out the door, you send garbage out the door.

    But marketing experts, and Alexander Graham Bell, will tell you that being first to market often gives you a competitive advantage over your competitor. Most of the existing web services and sites we know and love are the largest in their category largely because they were first, or at least very early, to fill their given niche. It's a matter of weighing trade-offs.

    This can be found in biological evolution also: being first in a niche often gives you a leg up, even if it means more initial mutations or quirks.

    Commodity services tend to flow overseas where labor is cheaper. The US's comparative advantage is staying ahead of the curve, and this means rushing to be first and taking risks. Our economy depends on economic gambling, for good or bad.
         

  100. Re:There is no shortage of good coders or IT peopl by citylivin · · Score: 1

    "We have no dress code, decent salaries, plenty of paid time off, a boss who is easy to deal with, and a foosball table"

    No offense, but youve been there 5 months. Everyone loves the company the first company they work for after 5 months. You have been probably busting your ass, working 10 hour days. As an example, if you are the current lead developer, try taking some of that paid time off. Take a week off, and see if they a) let you or b) don't just call you every single day. The reason companies give you foosball and catered lunches is at either the expense of your time or money. Nothing is free. It took me quite a few, what I thought were, coushy jobs to realize that. In a year or two you will be burned out, demand more money and they will hire some intern to do exactly what you did to your former co workers.

    Ive seen it happen so many times I dont know why they don't teach you that in school!

    also you should probably start reviewing your own resumes if you want good people (like craigslist). hr people dont know dick about computers.

    --
    As a potential lottery winner, I totally support tax cuts for the wealthy
  101. More important than making no errors... by drolli · · Score: 1

    is having a way to handle error systematically and appreciate customer reports about errors.

    Sometimes when errors are reported, they are not fixed until 4 program versions later.

  102. Can't have your cake and eat it Mr. Wolfe by Stormie · · Score: 2, Insightful

    I love the way Alex Wolfe blames shoddy programming on the PC industry, which apparently replaced the waterfall development model with "cramming in as many features as possible before the shipping cut-off date, and then fixing the problems in beta". He then goes on to reference two books, from 1971 and 1975 respectively, which provide wisdom regarding this problem.

    They're excellent books - but I wasn't aware that the PC industry was around in 1971. Could it be.. that bad programming practices have always been with us? That the PC isn't to blame?

  103. When is "Good Enough" Good Enough? by handy_vandal · · Score: 1

    Next up - Design! Woot, this bit is fun. So we crank up Rose or whatever and get to work. But when do we stop? Well again, that's tough. Because I don't know about you but I can design forever, getting better and better, more and more modular, more and more generic, until the whole thing has flipped itself inside out. So we stop when it's "good enough" - according to who?

    Very true!

    According to ... whoever makes the decision. Somebody has to make the decision, and stand by it. That somebody should be someone who knows:
    (a) what they're talking about, and
    (b) is willing and able to take the responsibility for deciding when "good enough" is "good enough."

    And there's the rub: when is good enough good enough??

    In my experience, this is not a technical question -- there's usually no final answer, no ultimate and complete answer. (Not in a project more complex than "Hello World", anyway.)

    "Good enough" is more of an administrative question (how much "good enough" can we afford? ... or, alternately, how much "not good enough" can we not afford?)

    Or maybe (if we're lucky) it's an artistic question (this "good enough" is "beautiful enough").

    --
    -kgj
  104. People who live in the land of superlatives... by Anonymous Coward · · Score: 0

    need to wisen up. There are no methodologies that work best under all conditions, AND there is nothing more wasteful and demoralizing than implementing formality where none is needed.

  105. Bad software is a problem of culture. by Anonymous Coward · · Score: 1, Insightful

    Development culture that is. If you do not plan your development, document your system and expand the system incrementally, all with discipline to boot, then you are part of the problem. And Im sure we could all think of more to add to the above. The point is that we can talk about the Waterfall Model, the Spiral Model etc... but the real problem here is the "Cowboy Model". You do not need to staff only "genius" programmers to get a good result. What you need is the discipline to plan accordingly and then force the programmers to adhere to the standard. And if a programmer finds an issue while implementing said system, then the problem is dealt with intelligently.

    I work in the embedded systems arena. You would think that aiming to produce a system with uptime in years would provide the motivation necessary to do the above. Well it doesnt. I have just finished reviving a product where millions were lost due to absolutely horrible development practices. This particular system has multiple micro's that need to communicate. I asked for documentation... and people started to inform me verbally and draw diagrams on my whiteboard. No written documentation at all. In fact in the past 9 months I have not seen a shred of written documentation. Everything from incorrect use of watchdog timers to busy waiting all over. I could go on all night.

    But the reality is (at least with the place I am currently at) this is what you get when you have some guy who has 7 yrs of "experience" and bestows upon himself the title of "Senior Software Engineer". Then goes to an interview and nobody asks him about asymptotic analysis. Or about computer architecture. Or about databases. Or about network protocols. Or about anything else relevant to designing software to run on a computer in today's world. I have helped conduct interviews for some of the Mechanical and Electrical engineers (since we all work closely together) and I know for a fact that they get grilled after the initial formalities are over with. And you know what? 9 times out of 10, if there is a problem with one of our systems, its the software thats screwed up. I don't believe that is a coincidence.

    The simple fact is the development woes could have been alleviated to a large extent if the culture of Software Engineering was better. If the culture of Software Engineering (and I hesitate to call it that at this point in time) became more like that of other engineering fields then I think that things would improve.

  106. Re:There is no shortage of good coders or IT peopl by ozphx · · Score: 1

    ...too small to have a reputation bad enough to drive people away...

    I've worked at a place with one full time developer who used to hire one or two contractors. I say "used to" because after my predecessor and my time there, no contracting agency in the city will place staff there.

    This was merely from a small company thinking because they all worked weekends and worked their ass off to make their business a "success", that we should too. Tip: Your business, your risks. Same goes for "I choose the risky option" ... "What the hell, it all went wrong, this is your fault!!".

    --
    3laws: No freebies, no backsies, GTFO.
  107. Oh man by coryking · · Score: 1

    C is not a "scripting" language and is as much of a problem as an assembly language attitude

    Indeed. Look. C is nice. I love playing with pointers. It can produce some fast friggen code that is great for improving performance in critical areas of your system. But damn is it not up to the task of even basic GUI programming. You shouldn't *have* to worry about memory for most things (unless performance is critical). And if the language is going to mandate you worry about it, the damn thing should provide more tools then just a pointer/array thing. It should at least give you a way to figure out the size of the memory block you've allocated (rather then leaving it to you to re-invent). In fact, if it had just centered around pascal strings instead of friggen null terminated ones--that alone would have made it vastly more secure and suited to hostile environments. And yes, sure I can roll my own damn pascal string library, but why didn't the standard library do it for me?

    And why the hell is the language so damn stupid that I need to create function declarations so the brain-dead linker can find my stuff? Why can't it just figure that out like every other language on the planet?

    Every time I program in C these days, I just get pissed off. I thought I loved you C, but dammit, I've been spoiled by better lovers and I think I've moved on.

  108. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  109. 25 not 15 by Anonymous Coward · · Score: 0

    In an article about programming errors, it would be prudent to check the facts to prevent misinformation.
    Sans released 25 not 15 as was stated.

  110. Two minutes hate is exactly right by Anonymous Coward · · Score: 0

    One wonders if any of these Microsoft haters read 1980 and see the irony. Two minutes hate indeed.

  111. Why software is getting worse by Animats · · Score: 1

    In some ways, software is getting worse. There are some new problems that have appeared in the last decade. Here are some of them:

    • Customizability Users now expect massive customizability in applications. This leads to very complex configuration mechanisms. Such things are hard to test, because there are so many combinations of configuration options. Testing runs into combinatoric explosion problems.
    • Layer bloat There's an tendency to deal with problems in one layer by wallpapering them over with another layer. Over time, this gets to be a problem. Virtualization adds a layer, and most of the time, it's added because the operating system can't provide enough isolation. (If applications have to be installed as "root" or "administrator", you've blown isolation right there.) There's a "system management mode" layer under the OS. Further up, there's some interpreted virtual machine like Java or .NET. Most applications use a window system indirectly, through some other layer that encapsulates the basic window system interface. There may be multiple such layers, with something like XUL involved. Java programs today tend to involve "frameworks", "packagers", and incredible call depths. At the language level, C++ is used partly to support wrappers that hide the underlying flaws of the language. Each of these levels has overhead, and the overheads multiply. Each has its own bugs. And each has its own versions leading to version hell.
    • Extreme/agile programming The more "agile" programming models focus on "features", not architecture. This leads to programs which are a collection of features in search of a structure. If something is badly designed down at the bottom, it will probably never get fixed. Some open source projects tend to suffer badly from this problem, because there's nobody in a strong enough position to insist that some mess at the bottom be fixed.

    These are new problems, on top of the classic ones.

  112. Strong Type languages by __aahgmr7717 · · Score: 1

    The languages from Niklaus Wirth (Pascal, Modula, Oberon, Component Pascal) adhere to Edsger Dijkstra's Weakest Precondition.

    The C/C++ languages do not.

    When you write a function you need to specify the weakest precondition on the inputs that will guarantee the post condition of the outputs. These preconditions need to be specified as guards that test the input for satisfaction with the preconditions.

    Component Pascal ALWAYS checks array bounds (you can't turn it off) so you never can write to or read from unallocated memory.

    It also has garbage collection that completely avoids dangling pointers.

    Choose a good language and follow Dijkstra's principles and you code will be much better.

  113. FTA: by maz2331 · · Score: 1

    "CWE-20: Improper Input Validation
    It's the number one killer of healthy software, so you're just asking for trouble if you don't ensure that your input conforms to expectations...MORE >>

    CWE-116: Improper Encoding or Escaping of Output
    Computers have a strange habit of doing what you say, not what you mean. Insufficient output encoding is the often-ignored sibling to poor input validation, but it is at the root of most injection-based attacks, which are all the rage these days...MORE >>

    CWE-89: Failure to Preserve SQL Query Structure (aka 'SQL Injection')
    If attackers can influence the SQL that you use to communicate with your database, then they can...MORE >>

    CWE-79: Failure to Preserve Web Page Structure (aka 'Cross-site Scripting')
    Cross-site scripting (XSS) is one of the most prevalent, obstinate, and dangerous vulnerabilities in web applications...If you're not careful, attackers can...MORE >>

    CWE-78: Failure to Preserve OS Command Structure (aka 'OS Command Injection')
    When you invoke another program on the operating system, but you allow untrusted inputs to be fed into the command string that you generate for executing the program, then you are inviting attackers...MORE >>

    CWE-352: Cross-Site Request Forgery (CSRF)
    With cross-site request forgery, the attacker gets the victim to activate a request that goes to your site. Thanks to scripting and the way the web works in general, the victim...MORE >>

    CWE-209: Error Message Information Leak
    If you use chatty error messages, then they could disclose secrets to any attacker who dares to misuse your software. The secrets could cover a wide range of valuable data...MORE"

    EVERY single one of these are simply cases of the first one. All are nothing more than not validating the input.

    This thing reads like something written by the Department of Redunancy's Redundancy Department Subdivision of Redundancy....

  114. Irony by iliketrash · · Score: 1

    Apparently the author of TFA is immune to irony, stating that his favorite language is C.

  115. Software is much better today than back then. by Anonymous Coward · · Score: 0

    Just ask yourself... do you really want to go back to using only the software of old? Because if that's really what you want, you can you know. So I don't even see the supposed problem. And then look at what he actually says... none of it has any direct bearing on the quality of software today. Not catching errors? Well, I've got news for you: if something goes terribly wrong there usually is no way to fix it. At least an uncaught error gets you a stack trace. OO being underused? Well, I don't know where he works, but OO is pretty standard nowadays. And so on. It's also kind of cute how he goes on about the errors those young wippensnappers make that he never made when he was their age, working the waterfal model in there as if it were a good thing, and complaining no one read the books that a) everyone pretty much read and b) everyone pretty much agrees don't make you a brilliant programmer. How about you get off our lawn Alex Wolfe?

  116. Reads like 25 top web applications mistakes by physburn · · Score: 0
    SQL Injection, HTML Injection, Path name injection. This are all coding insecurities that allow your web site to be hacked.

    '; DELETE FROM *; Scary

    S I'm glad i read it is raised my paranoia about my web apps and cgi. But these are very different from the errors in applications, and are security problems, not bugs per se.

    Anyone got good links for the best wrappers or subroutines to check SQL inputs, etc. They belong in this thread, but i didn't see any. If you rembemer to write your code with checked inputs first time, your save yourself a lot of trouble.

  117. s/</&lt;/g is enough for me against CSS by Gunstick · · Score: 1

    Just substituting "<" by "&lt;" in user's input has kept me protected from cross site scripting and other html attacks since years.
    I did not find a need to check for anything else like ">" or even interpret the whole string for any occurences of html meta tags.

    Is this so simple? Why doesn't everyone do it?
    Intersting: I had to write the subject like "s/&lt;/&amp;lt;/g" to get it to appear correctly as "s/</&lt;/g" in the slashdot preview.

    --
    Atari rules... ermm... ruled.
  118. Re:s//</g is enough for me against CSS by Gunstick · · Score: 1

    and doing a reply on this changes the reply subject ...

    --
    Atari rules... ermm... ruled.
  119. Re:s///g is enough for me against CSS by Gunstick · · Score: 1

    and another reply... and even more of the subject is missing. This is quite fun...

    Maybe this "feature" in slashcode needs some correction.

    --
    Atari rules... ermm... ruled.
  120. Re:There is no shortage of good coders or IT peopl by pjt33 · · Score: 1

    I work in game programming, and I've had similar experiences with interviewing people (to expand the team rather than to replace people who left). It's not that no-one wants to join the company: we had plenty of applications. However, 80% or so failed the initial screening test, which asked them to write code to solve a simple problem. No time pressure, access to all the resources they could possibly need, and people couldn't solve a problem they should have encountered in the second year of the undergraduate course which their CV said they passed with a 2.1.

  121. The problem is in the tools. by master_p · · Score: 1

    The problem is not in the development model, not in the development methodology, not in the management, not in the culture. The problem is in the tools.

    In mathematics, a function is described by its inputs and outputs. Inputs have specific sets or ranges of values and produce a specific set of outputs. A math function can not be used with a number that is not contained in the input set.

    In programming languages, a function is described by inputs and outputs. Inputs have generic sets of values (integers of various bit sizes) and produce generic sets of values (again, integers of various bit sizes). A programming language function can be called with a number that is not contained in the input set.

    And that's the fundamental problem in software; until that is fixed, there would be no progress.

    In a few words: programming is not math.

  122. I'm not old but do see this by Anonymous Coward · · Score: 0

    I'm only 28 so not part of the old timers really yet. Its not just about project management practices or anything. Yes its partly the ease of which lower end programmers can write and distribute programs but even when looking at larger companies(I've worked in many fortune 100 companies) the problem is that most developers do not think about optimization at all anymore. Its due to the fact hardware is cheaper then software and if the software takes too much up just buy a bigger server! Basically the whole thing is about greed and money as normal in anything you look at. If they can get away with cheaper solutions and make the same money then why bother with anything else.

    Software is an artform same as design this is not a grunt work field...if you don't want to constantly learn don't try this.

  123. punchcards 15 years before computer screens by peter303 · · Score: 1

    Computer screens were not practical until you could store the ascii character bit pattern in affordable read-only memory - thats about 2240 bits of memory. A bit of memory cost over a dollar well into the 1960s. Intels second hit product circa 1970 was the half kilobit ROM debuting at about $100 and rapidly falling there after. That meant computer terminal prices feel to a $1000 by 1974.

  124. What ever happened to using lint? by Anonymous Coward · · Score: 0

    What ever happened to tools like lint? Why are there no more tools to provide programmers feed back about the software they write?

  125. Ironic by AG+the+other · · Score: 1

    Does anyone else find it ironic that when I visited this page there was an ad for MS Visual Studio under the article? AG

    --
    Non bene pro toto libertas venditur auro
  126. This is about generic software development by BitterAndDrunk · · Score: 1

    not Oracle!

    --
    You better watch out, there may be dogs about . . .
  127. Re:s//</g is enough for me against CSS by clone53421 · · Score: 1

    Don't forget HTML-encoding the data in form elements... do you have a textarea in your form? What happens if they type </textarea> in the box, and then they come back to edit it later? If your code doesn't HTML-encode the contents when it creates the page, all the HTML following the </textarea> will be injected into the page. Same goes for input elements, but the attack would consist of "> (or '> ) for those.

    --
    Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
  128. Re:Good Enough by stewbacca · · Score: 1

    Food is a bad example, because there is a large segment of society that pays extra for "better than just good enough". They are called foodies, or the organic crowd, or the beer and wine snobs, etc. etc. Budweiser may be good enough for Hardhat Bob, but based on the large choice of "craft beers" available, it seems "good enough" isn't the necessarily the norm. Plus, for something I put into my body, it better be better than good enough. With computers (thanks Microsoft), people have been conditioned to think "good enough" is the gold standard.

  129. "PC" developers? by DaVince21 · · Score: 1

    PC developers (read: Microsoft)

    Strange, I always thought that Asus, Sony, HP etcetera were PC developers... MS is just a software developer, right?

    He argues that youthful programmers don't know about error-catching

    Funny, because that's almost the first thing I learnt after learning how to program at all.

    --
    I am not devoid of humor.
  130. Re:Good Enough by TaoPhoenix · · Score: 1

    And before you put anything into your computer you'll pay extra to be sure it's better than Good Enough.

    I think my analogy stands.

    But if you need another example, check out the web hosting industry. Or the big ISP's. Or the Telcos.

    --
    My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine