Slashdot Mirror


Why Software is Hard

GoCanes writes "Salon's Scott Rosenberg explains why even small-scale programming projects can take years to complete, one programmer is often better than two, and the meaning of 'Rosenberg's Law.' After almost 50 years, the state of the art is still pretty darn bad. His point is that as long as you're trying to do something that has already been done, then you have an adequate frame of reference to estimate how long it will take/cost. But if software is at all interesting, it's because no one else has done it before."

409 comments

  1. Ahhh, 50 years ago? by Anonymous Coward · · Score: 0

    So, 50 years ago programmers were trying to solve the exact same problems wer'e trying to solve today? What Windows software was around in 1957?

  2. Not to take potshots, but by Mateo_LeFou · · Score: 5, Funny

    ...can anyone explain Vista's schedule in light of this discovery?

    --
    My turnips listen for the soft cry of your love
    1. Re:Not to take potshots, but by edwardpickman · · Score: 5, Funny
      ...can anyone explain Vista's schedule in light of this discovery?

      Another law explains it, Entropy.

    2. Re:Not to take potshots, but by Anonymous Coward · · Score: 0

      Or Duke Nukem's lack of one?

    3. Re:Not to take potshots, but by __aaclcg7560 · · Score: 5, Funny

      All the programmers got better jobs at Google?

    4. Re:Not to take potshots, but by dreamlax · · Score: 1, Funny

      I heard that all of the programmers suffered head injuries from having chairs thrown at them.

    5. Re:Not to take potshots, but by MindStalker · · Score: 5, Insightful

      Its esentially the problem with any large company. Any project coming out of a large company spends 90% of its time in committee and debates, and generally gets watered down to the few things those committees can agree on. Personally I disagree on the idea that two coders arn't as good as one. One coder rarely has the motivation as well as the insight to see clearly his way through a project (getting stuck on a problem and having another viewpoint is ALWAYS helpful). But there is definatly a deminishing return as project teams get larger.

    6. Re:Not to take potshots, but by donaldm · · Score: 1

      It is really quite difficult to program a ham sandwich into MS Vista and trying to prevent it from getting rather smelly and stale. Those refresh routines must be very complex. http://news.com.com/5208-1032_3-0.html?forumID=1&t hreadID=16504&messageID=142375&start=-1.

      --
      There ain't no such thing as proprietary standards only proprietary formats. Standards are by definition open.
    7. Re:Not to take potshots, but by smittyoneeach · · Score: 1

      "Please! This is supposed to be a happy occasion. Let's not bicker and argue over who [overshot the deadline on] who."

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    8. Re:Not to take potshots, but by h2g2bob · · Score: 4, Funny

      Another law explains it, Anti-trust.

    9. Re:Not to take potshots, but by Musically_ut · · Score: 1

      Well, to get the reasons straight, I recommend a through reading of last decade of Dilbert's struggles. And to give the credit to the deserving, Scott Adams has already predicted this and other not-so-trivial things. :)

      --
      Never trust a spiritual leader who cannot dance -- Mr. Miyagi
    10. Re:Not to take potshots, but by Almost-Retired · · Score: 5, Informative

      I disagree on the idea that two coders arn't as good as one

      This is a point I've come to also after 72 years, the last 35 or so of it coding this and that although not much recently as I seem to be fadeing into the dim sunset of SS mentally.

      When working in assembly, then it may be that one person is the optimum number of coders as I've done some never before been done stuff in assembly several times in the early years, sometimes with hand assembly (on an 1802 board) where you look up the nemonic and enter the hex equ in a hex monitor. It took me about 6 months to fine tune about 3k of code, but it was still running 12 years later when I last checked in at that station. And still saving the station 2-3 man hours a day and giving them a better air product at the same time.

      But for a higher level language, I think 2 can be more productive, particularly when one knows what he wants to do, and the other knows how to do it once its properly outlined. Many times the coder himself is simply too close to the code to see the job it has to do, but the partner in turn has a good idea of what its got to do. The genesis of at least 2 fairly well known amiga programs were from the mind of a younger man in another dept at the tv station, and he would hack up what he thought might work but didn't, but once I knew the requirements, the final code more than likely came from my keyboard. He had the imagination that I lacked, possibly due to my advanceing age, and was in turn concentrating on his job's duties which I wasn't always aware (I had other responsibilities too) were being done at less than optimal methods. We sure made a good combo crew though.

      I have NDI how many man-years in in vista right now, but I dare say it is a substantial investment in both time and programmer salaries. I'd also wager that at least 75% of any one programmers day was spent conferring with other programmers as to the best way to do it, and get it done within the generally immutable confines of the .h header files. This is NOT to me, best use of the programmers time, so the what does it do, and how it does that, really ought to be seperated in any large project.

      As for re-using known good code ideas, or a 150 line snippet here and there, it is to be encouraged at every staff meeting, re-inventing the wheel is not good use of his time and as others have said, only serve to intro new bugs that then have to be run down and fixed. Programmers really should get over the attitude that I can write it quicker, and spend more time reviewing older code to see if it can be recycled. There is much knowledge in 10 year old code thats still in use everyday.

      Will my little treatise make any difference at the end of the week? Donbesilly, This is after all, /. :-)

      --
      Cheers, Gene

    11. Re:Not to take potshots, but by TheRealAnonymousCowa · · Score: 1

      Salon's Scott Rosenberg explains why even small-scale programming projects can take years to complete...
      So where does Duke Nukem Forever feature here?
    12. Re:Not to take potshots, but by Maxo-Texas · · Score: 1

      Overhead can be huge at a large company because the stakes are very high.

      If your product does 15 million dollars in business a day, you can't afford any downtime.

      So... 20 days of testing for a one line change. 10 days of committee overhead to make sure all teams throughout the business are aware of your intended change. Coordinating with Outsourced (2-3 week lead time if changing an outsourced product so they can schedule the resources on their side- unless regular installations are in your contract) and offshored resources to make sure there is no impact there.

      ---

      On the other thing (2 programmers).

      Personally, I find in the vast majority of cases for *normal* programmers, that 2 programmers are much more effective than one. Two geniuses do not stack (they irritate each other). Two novices don't stack. IBM pushed the "Expert plus a couple novices" modality with good effect. The issue is ego vs expertise.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    13. Re:Not to take potshots, but by ATMD · · Score: 1

      No, they were diverted into an internal project to design automated launch and in-flight guidance systems for the chairs. Ballmer's only one man, and he has a busy schedule - he can't devote all of his time to furniture-lobbing duties.

      --
      Nobody else has this sig.
    14. Re:Not to take potshots, but by dosius · · Score: 1

      Dapple development has usually been done by 2 people also. There was just a point when I knew what I wanted but couldn't pull it off, but there were devs willing to help me get it working.

      (3 devs total worked directly on the code, no more than 2 at once.)

      -uso.

      --
      What you hear in the ear, preach from the rooftop Matthew 10.27b
    15. Re:Not to take potshots, but by dreamlax · · Score: 2, Funny

      Really? I found this in one of the leaked Microsoft emails:


      Mr Ballmer's To Do List

      1. Throw some fucking chairs at some fucking pussies.
      2. Throat surgeon appointment at 2pm.
      3. Chair-shopping with wife.
      4. Give speech about developers at 4pm (emphasize "developers").
      5. Throw more fucking chairs at more fucking pussies.
      6. Chair exercises with personal trainer.
      7. . . . something to do with chairs . . .
      8. Increase budget to allow for more robust, harder-to-break chairs, someone keeps breaking them.
    16. Re:Not to take potshots, but by Anonymous Coward · · Score: 0

      I second this. Most of the more interesting programming projects that have succeeded where I have worked have been from a combination of a very good programmer paired with a marginal programmer with a good idea and a practical vision for how to get something done. There is something about the feedback loop between the two that you just don't see in other scenarios.

    17. Re:Not to take potshots, but by miletus · · Score: 1

      This is one of the most interesting posts I have read here in a long time.

    18. Re:Not to take potshots, but by Almost-Retired · · Score: 1

      Yup, life experiences. The amiga programs referenced were EzCron and EzHome, with EzCron being the cron that aos never had, and ezhome being a programmable interface to all the x10 toys you may have scattered around the place to turn lights etc on and off on schedule.

      We wrote the cron in what was basicly self defense. We needed to have lengthy rendering projects running in the off hours in the middle of the night after the machines job of doing the news graphics was over, and that allowed us to get an additional 8 to 12 hours worth of animation rendering time out of a pair of 040 and 060 equipt 4000's + one 040 equipt 2000. EzCron also fired off the scripts that put our news stories on the stations web page, something we were doing several months ahead of ANY other tv station in the country. We must have done something right, 2 months after we started that our web page was up to over 100,000 hits a week in a 75 thousand market and has never been below a million a month that I know of since 2000. We wrote the srcs in ARexx for all that, and eventually I bought a copy of the RexxPlus compiler which made them even faster.

      EzHome came into being because someone tried to port the very early heyu to the amiga, running it through a blender set on high in the process, which was fatal as near as we could tell, so we found a copy of the x10 specs and wrote that puppy from scratch. At the end it was pretty good, but there were a lot of iterations to get it to that point.

      ARexx, FWIW, was a huge superset of Rexx/Regina, having all sorts of os specific stuff that Rexx never had and never will. Similar enough in structure that one could have called it an interpreted C, and loop constructs could be pretty much modeled on my previous C experience. The only downside was its typeless data, every statement dealing with it had to contain the instructions to make it the type of data you wanted it to spit out. All told though, it was one hell of a langauge, for the amiga, when the amiga was king. Too bad that William Hawes never got a penny from commie for writing it.

      But, time marches on, but as Stephan Hawking says, only forward.

      --
      Cheers, Gene

    19. Re:Not to take potshots, but by misleb · · Score: 1

      Well, consider that sometimes one programmer is better than two. The idea being that you can't just throw thousands of programmers at something and expect it to get done 1000 times faster. I think perhaps Microsoft is seeing dimishing returns on man-hours. Maybe they just assumed they could get Vista out on time if they just put enough resources into it....

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    20. Re:Not to take potshots, but by Anonymous Coward · · Score: 0

      9. Fire a few fucking pussies for destroying company property when the chairs break over their backs.

    21. Re:Not to take potshots, but by fuliginous · · Score: 1
      There are a few simple things that make more than one work. They can all be summed up as "when there is more than one persons work".

      Simply for one example where Bill and Ben can work on two parts that both take longer to complete by one person than the time it takes to fasten them together afterwards.

      We know also that one experienced ace can probably write three, ten maybe twenty such parts per one done by Mr Just_about_average. Plus because ace knows what he has done he can probably stitch it all ten or so parts as quickly as it takes to add each part done by Mr Jaa.

      Like so many things, reality is a lot more complex.

  3. Ah! The great unknown... by alshithead · · Score: 3, Insightful

    "But if software is at all interesting, it's because no one else has done it before."

    "Interesting" to me means something new and/or unknown...mostly. There are exceptions. Treading new ground always requires greater effort. If I cut a my way through virgin jungle then those who follow have a path.

    --
    I reserve the right to think for myself. Others' opinions are optional. Puppy on lap = typos...not illiteracy.
  4. Programmers by bendodge · · Score: 5, Insightful

    One programmer is better than two for the same reason that one woman in the kitchen is better than 2. You have to get on a pretty large scale before you need multiple cooks/programmers.

    Software programming in general is hard for 2 reasons:
    1. Computers aren't built for interfacing with humans, thus UI us terribly time-consuming.
    2. The environments people like to drop an app into can be so bizarre, that rock-solid stability is very difficult to achieve.

    --
    The government can't save you.
    1. Re:Programmers by bennomatic · · Score: 4, Funny
      Where do you live? The 50s? You may want to ask some women you know about using that particular illustrative image.

      --
      The CB App. What's your 20?
    2. Re:Programmers by cyborg_zx · · Score: 5, Funny

      Indeed.

      It is well known that men are superior in the kitchen.

    3. Re:Programmers by Anonymous Coward · · Score: 1, Funny

      You may want to ask some women you know This is slashdot, you insensitive clod! Know women? Are you from MySpace or something?
    4. Re:Programmers by Anonymous Coward · · Score: 0

      "for the same reason that one woman in the kitchen is better than 2."

      ... and yet two women in the bedroom is better than one. It all depends on the context of what you are trying to accomplish. The same thing applies to software projects.

    5. Re:Programmers by Oligonicella · · Score: 1

      By #1 I presume you mean because we don't have telepathic reader devices yet? Voice recognition, typing, mouse, pad, text recognition, visual plotting; what's missing?

    6. Re:Programmers by fireboy1919 · · Score: 3, Interesting

      Most cooking projects don't take more than 10 man-hours, but pretty much every programming project does. And, furthermore, mostly when the chef makes a mistake it's obvious to her.

      Neither condition hold for programming. It's for this reason that I think that, in general, *two* programmers can program faster than one. At least, me and my partner can program code that's more bug-free together than we can when we program separate projects, and that makes a difference. If the project is sufficiently large - i.e. takes longer than about 10 hours, the cost of communication between two people is less than the cost of switching. :)

      While we're at it, I think that there's another misconceptions in this interview.

      programmers are programmers because they like to code -- given a choice between learning someone else's code and just sitting down and writing their own, they will always do the latter

      Two of the five developers at my little software company are programmers because they like to figure things out. So we almost always figure someone else's code out before we do anything ourselves. There are varying degrees of this in a lot of the developers we've got there. I would say that none of us will write anything ourselves unless it saves us a considerable period of time.

      But even more, if you had a relative who was always wondering, "What is it that you do all day?" you could hand my book to that relative and say, This is what my work is really like.

      No. I couldn't. My experience as a developer is nothing like what he's described. And he didn't talk about the phenomenon of unknowns that I've noticed - for every project I do, if I estimate how long the known things will take, dealing with unknowns will generally take 60% longer (so multiple time estimates by 3 is generally correct). He didn't talk at all about testing.

      Almost everything he talked about are things that I thought would be true when I started but that have ended up more or less untrue. Discipline coding makes a difference. Automated unit testing catches most problems, and regression testing finds almost all the rest, and not everybody does these things.

      --
      Mod me down and I will become more powerful than you can possibly imagine!
    7. Re:Programmers by Krakhan · · Score: 1

      Well, he could have had this urge to put man or woman in the kitchen. Why do you care about the grand parent being politically correct?

    8. Re:Programmers by bennomatic · · Score: 0, Flamebait
      It's not a question of political correctness; it's an issues of living in the real world.

      --
      The CB App. What's your 20?
    9. Re:Programmers by arminw · · Score: 1, Insightful

      ......Software programming in general is hard for 2 reasons......

      Actually there is only one master reason. So far, there is no mathematical way to prove that a given non trivial software program will actually work as intended. When designing a physical thing, such as a bridge, machine or electrical circuit, there are precise mathematical formulas which can be applied that give a reasonable expectation that the building or machine etc. will perform according to expectations. There are no mathematics that can be applied that will show to even a ballpark accuracy that a given complex software system, such as an OS, will perform as its designers hoped. That is why there are alpha, beta and all sorts of other test versions where users are asked to try out the programs. My theory is that this is so, because software is not physical, but a pure product of mind to which different rules apply. Human minds do not operate nor communicate with the mathematical precision that computers and machines do. This is in fact what makes us human. All software begins in a human mind which operates in a much different manner than computers. Translating one human language to another human language is hard. Translating human thought patterns into computer instructions, which then have to usually interact with other human thought patterns is even harder.

      --
      All theory is gray
    10. Re:Programmers by Aphrika · · Score: 5, Funny

      ...and also that 2 women are superior in the bedroom...

    11. Re:Programmers by that+this+is+not+und · · Score: 2, Insightful

      Which real world? In this era of multiculturalism, we need to learn to accept that there are places where women essentially never leave the kitchen. We must respect this and fein that we admire it so as not to offend.

    12. Re:Programmers by tedgyz · · Score: 2, Insightful

      Perhaps the more generic saying is appropriate here: Too many cooks in the kitchen spoil the broth.

      The Mythical Man Month has a better principal. One really good programmer is more productive than 10 mediocre programmers. Or something to that effect.

      --
      "No matter where you go, there you are." -- Buckaroo Banzai
    13. Re:Programmers by Anonymous+Brave+Guy · · Score: 1

      So far, there is no mathematical way to prove that a given non trivial software program will actually work as intended.

      I disagree, kind of. In many declarative programming languages, for example, you can prove the effects of a program very much the same way that you'd construct a mathematical proof, as long as you assume the underlying software and hardware function as specified.

      The problem is the same as that facing some mathematicians: when things get more than trivially complex, usually so do the corresponding proofs. Then you get into the question of how you prove a proof. This is a recursive problem which may go arbitrarily deep.

      In mathematics, we hit this problem only occasionally. New results are rarely so complex, because they build on earlier results, and the key earlier results have already been proved over a period of hundreds of years.

      In software, however, almost anything beyond "Hello, world" is into the realms where proving every module functions as intended using the traditional, mathematical approach is nigh-on impossible. Even in a perfectly modular world where the base level code was proved trivially and higher level proofs were constructed on top, you get problems like ambiguities in the specification, or complications like not knowing the inputs until run-time.

      So the problem isn't that there is no mathematical way to prove a program. Plenty of techniques exist for doing that, in theory. The problem is that the practical applications of such techniques are themselves so complex that they have little real value.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    14. Re:Programmers by CastrTroy · · Score: 1

      And even if the program operated exactly as intended, with no bugs, the software would still not be perfect. People would still find flaws, because they find flaws in the specifications. One such thing could be the 17 shutdown/sleep options on Vista. Sure it was designed that way, but a lot of people see it as too complex, and think it should be designed differently with less options. Even if program never crashes, and always performs all calculations as they were intended, you still have program with lots of room for improvement.

      I would also like to point out that the GP was correct. There is no mathematical way to prove a program is correct. Sure in theory it can be done, but we don't build software in theory. We build software in practice, in the real world. In the real world, there is no way to prove a program is correct, so we are left with things that are incorrect in the program.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    15. Re:Programmers by Anonymous Coward · · Score: 0

      One programmer is better than two for the same reason that one woman in the kitchen is better than 2.

      On the other hand, you could also argue that two programmers are better than one for the same reason that two women in the bedroom are better than one.

    16. Re:Programmers by bennomatic · · Score: 4, Funny
      > Where do you live? The 50s? You may want to ask some women you know about using that particular illustrative image.

      Wow... My first ever post that got modded down as flamebait. Awesome :-) Especially funny, considering the parent post which was blatantly sexist got modded up as insightful.

      --
      The CB App. What's your 20?
    17. Re:Programmers by Sloppy · · Score: 1

      Computers aren't built for interfacing with humans, thus [the] UI [is] terribly time-consuming.
      We should throw more programmers at this UI problem.
      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    18. Re:Programmers by Anonymous Coward · · Score: 0

      software is mathematically proveable. Functional programming (lambda-calculus based languages like haskell, scheme, lisp, etc) have been mathematically proven since day 1. Procedural/iterative programming is harder to prove, but it's still possible. Daniel Bernstein mathematically proves his software (qmail, tinydns, etc, all written in C) as does Donald Knuth (literate programming).

      The error isn't in the math, it's in the people implementing it, taking shortcuts, dealing with dealdlines, and human nature. (Does "Big Dig" mean anything to you?).

    19. Re:Programmers by zullnero · · Score: 1

      Well, the best team I ever worked on for a project was configured like this: We had one guy (me) doing all the network, security, and glue code, one guy doing the xml serialization, general management stuff, and UI hookups, and another guy working on the video stuff, making a broadband media player for a customer. We got our stuff at a usable beta state by the best possible deadline (We had a few...an unrealistic one, and a realistic one. We met the realistic one). They just took all of us and put us in an executive office, and we had very clear boundaries and responsibilities.

      I've worked pretty well on a lot of projects where I was the only guy, but that one combined three and did an excellent job. So maybe it's not that there are too many cooks in the kitchen, but rather, it's having too many cooks who don't know their boundaries and get in each other's way.

    20. Re:Programmers by smallpaul · · Score: 1

      You should research the halting problem. Even given a VERY PRECISE specification of what you want a program to do, i.e. terminate, it is demonstrably impossible to write a program that answers the question "does this program meet the specification...i.e. terminate" in the general casae. Given that termination is a necessary predecessor to getting a useful answer to any question, it is clear why we don't have programs that (in the general case) verify that our programs meet our requirements! One way around this is to use bowdlerized subsets of languages that can be validated, but this hasn't proven very practical so far.

    21. Re:Programmers by mpe · · Score: 1

      The Mythical Man Month has a better principal. One really good programmer is more productive than 10 mediocre programmers. Or something to that effect.

      Also 10 really good programmers are never going to be 10 times productive as 1. Since there are overheads involved in spreading the task around and co-ordinating. (The same also applies to writing software for multi-processor computers. It's a little easier since getting identical CPUs is trivial compared with getting identical programmers.)
      Another part of this is that two people doing a "job share" is likely to be less productive and cost the employer more than having one person do the job.

    22. Re:Programmers by PresidentEnder · · Score: 1

      I would also like to point out that the GP was correct. There is no mathematical way to prove a program is correct. Sure in theory it can be done, but we don't build software in theory. We build software in practice, in the real world. In the real world, there is no way to prove a program is correct, so we are left with things that are incorrect in the program.

      No, the GP post was wrong. Program correctness can be proved or disproved. It's impractical, yes, but this has already been pointed out. There is a mathematical way to prove that a program is correct.

      Program Correctness

      --
      I used to carry a bottle of whiskey for snake bite. And two snakes. -Nefarious Wheel
    23. Re:Programmers by arevos · · Score: 1

      Especially funny, considering the parent post which was blatantly sexist got modded up as insightful. I should point out that blatant sexism and insightful words are not necessarily mutually exclusive.
    24. Re:Programmers by greyc · · Score: 1

      No, the GP post was wrong. Program correctness can be proved or disproved.
      It can be proved in some special cases; in other words, there exist some algorithms that can be proved to compute a certain, known, computable function.

      However, an arbitrary given algorithm (i.e. program) can not be proved to compute (or not compute) an arbitrary computable function. This is a fundamental result of theoretical Computer Science; solving this problem would be equivalent to solving the Halting Problem. This algorithmic unsolvability is commonly known as Rice's theorem.
    25. Re:Programmers by Jackie_Chan_Fan · · Score: 1

      sexy is a woman in the kitchen... :)

    26. Re:Programmers by wall0159 · · Score: 1


      What's even more amazing is that you wrote two 'insightful/interesting' comments that have been modded 'funny'

    27. Re:Programmers by MarkAD88 · · Score: 1

      So how much do the thought police pay you for trolling around on forums and making sure that people adhere to the politically-correct babble and unisex gender qualification rules?

      Go back to your liberal Ivory Tower and leave the rest of the populace alone.

    28. Re:Programmers by bennomatic · · Score: 1
      Good one! Way to protect the status quo! You go fight the mediocre fight!

      --
      The CB App. What's your 20?
    29. Re:Programmers by Anonymous Coward · · Score: 0

      Dammit, I hate when that happens.

    30. Re:Programmers by mcvos · · Score: 1

      One programmer is better than two for the same reason that one woman in the kitchen is better than 2.

      Actually, if your kitchen is big enough and you know how to work together, having an extra set of hands can be extremely useful. Besides, different people have different specialties. Same for software development.

    31. Re:Programmers by polar+red · · Score: 1

      Even given a VERY PRECISE specification of what you want a program to do Did you ever see such a thing ? Specs are never formulated EXACT. To add the the problem: they change during the execution of a project.
      --
      Yes, I'm left. You have a problem with that?
    32. Re:Programmers by bythescruff · · Score: 1

      "...and also that 2 women are superior in the bedroom..."

      You're not fooling anyone, you know.

      --
      Chuck Norris: Socialism == a thousand years of darkness.
    33. Re:Programmers by smallpaul · · Score: 1

      Did you ever see such a thing ? Specs are never formulated EXACT. To add the the problem: they change during the execution of a project.

      Your point is not relevant to my point. Specs are seldom exact. But even when they are exact (as in, formulated by mathematicians, using mathematical terms) it is not typically possible for software to validate other software's adherence to them. This has been proven also using mathematics.

    34. Re:Programmers by OwnedByTwoCats · · Score: 1

      My wife cooks unbelievably well, for my tastes. Way better than I could by myself.

      And I find her cooking to be sexy.

    35. Re:Programmers by Jackie_Chan_Fan · · Score: 1

      exactly. A woman in the kitchen doesnt have to be a sexist remark. Its rather nice if your wife or girlfriend is doing something nice for ya like that. Its very sexy.

    36. Re:Programmers by jo42 · · Score: 1

      ...only if the title of the show is "The L Word"...

  5. duh! by Anonymous Coward · · Score: 0

    not only software, every project is hard if it first of its kind. the fact that we have ready-made ingredients available does not mean that we know the right combinations and permutations and design from the start. a good engineer can build a great bridge out of stone, while an idiot wouldn't even if given best concrete and machinery but no helping brains.

  6. Nine women cannot have one baby in one month by euice · · Score: 5, Funny

    and of course, we are the better programmers, so better fire those other 8.

    1. Re:Nine women cannot have one baby in one month by fireboy1919 · · Score: 1

      That's 'cause nobody's figured out how to parallelize the construction process.

      The same cannot be said about programming. (Incidentally, if anyone knows how to parallelize the construction of babies, would you care to share?)

      --
      Mod me down and I will become more powerful than you can possibly imagine!
    2. Re:Nine women cannot have one baby in one month by euice · · Score: 1

      my comment was more satirical, but there is some truth in it. There are some problems that cannot be solved by x average developpers, whereas one skilled developper can do it in a day.

      OTOH, you're right too, you should always try to divide problems in reusable parts and try to use existing libraries where possible. That does enable you to share workload to a team of developpers.

    3. Re:Nine women cannot have one baby in one month by shrykk · · Score: 1

      Incidentally, if anyone knows how to parallelize the construction of babies, would you care to share?
      The stock answer is that with sufficient women you can produce a baby per month, but there's a nine-month lead time.

      No idea if that's a clever statement about planning or just a wiseass remark.
      --
      #define struct union /* Reduce memory usage */
    4. Re:Nine women cannot have one baby in one month by NaDrew · · Score: 1

      (Incidentally, if anyone knows how to parallelize the construction of babies, would you care to share?)
      I believe it's known as the "gang bang".
      --
      Vista:XPSP2::ME:98SE
  7. It needs more professionalism by petes_PoV · · Score: 5, Insightful
    Mostly programmers are trained in the technical details of languages and the libraries/APIs associated with them. They don't gain skills in knowing what users really want and are hurried into producing barely-working stuff, fast.

    Whatever testing is done often only tests that the product produces the correct answers when feed the proper input - no account is taken for how the program reacts to incorrect or incomplete data.
    Changes are requested faster than they can be implemented and often are not communicated very well.

    In short there are systemic failures throughout the whole process, from inception through to delivery. There is no single answer to why software is hard and there won't be until the industry matures and people start to get thrown out of the business for acting unprofessionally

    --
    politicians are like babies' nappies: they should both be changed regularly and for the same reasons
    1. Re:It needs more professionalism by Anonymous Coward · · Score: 1, Insightful

      Mostly programmers are trained in the technical details of languages and the libraries/APIs associated with them. They don't gain skills in knowing what users really want and are hurried into producing barely-working stuff, fast. Well, are you implying that they train to be psychics or prognosticators? Because a lot of the time users don't know what they really want either, at least until well into the process.
    2. Re:It needs more professionalism by DarkOx · · Score: 5, Informative

      Yea, specifications *are* the biggest problem. Unless I happen to be the end user, rarely does the end user know what he wants me to build until I show him/her the first prototype. At that point they might start to clarify what they want, If I am lucky their ideas are heavily colored by what they saw in the prototype and we can go for there, if not its back to square one, and usually several more trips there after that.

      I get requests like we need a program that users can run from the web that shows them if batch scans are in balance. I am then left to resolve on my own things like:
      *What is a batch scan
      *Where can one find a batch scan
      *What does it mean for it to balance
      *Can the thing just print a big Y or N in size 48font on the screen or does it need to detail something
      --Then comes the anticipatory stuff
      *Is the user going to expect to be able to correct an in blance
      *Now that I understand what a batch scan is *maybe* I see all this other stuff should I also report on those things
      *etc .. etc

      People like to expect programming to go like engineering or architecture. Its not the coders don't want to apply discipline to their craft its that they can't. Nobody would dream of approaching an engineer or an architect without a pretty good idea of what they want to do. That is not to say the professional is not going to have to help them work out most of the details but the basics are going to be pretty clear. Imagine if I sent a request to an Architect asking for a "Structure that will be used by people." and gave no other information. I really doubt I would get a call back.

      You can argue the PAs are not as good as they should be about requirements gathering, but I think there could be much more professionalism on the part of requesters as well. Its a waste of my time and theirs when they engage me as a developer before they have put even the most basic thought into what it is that they want. Some of this stuff is really esoteric and I understand that I will have to help them figure out how to solve the problem. I do feel they should know what the problem is.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    3. Re:It needs more professionalism by arminw · · Score: 1, Interesting

      .....There is no single answer to why software is hard ......

      Maybe the biggest reason is that writing software is an art rather than a science, more akin to writing a symphony or poem. There are PRECISE mathematical formulas and design rules which an engineer of physical things, such as a bridge, for example, can apply. Software, being non-physical, is fundamentally different from any physical device or machine which can be 'engineered' by precise mathematical procedures. Perhaps the very term "software engineer" is a misnomer in the same way that applying the term "engineer" would be to a musician.

      The hardest sort of software to write is that which is intended to interoperate with people. Computers are precise, mathematical, deterministic machines, whereas people are not. No amount of "maturing" of the software industry will ever change the fact that writing most software is not and never will be an exact science. Folks here at /. shouldn't be too harsh on MS and their trials and tribulations with VISTA.

      --
      All theory is gray
    4. Re:It needs more professionalism by Anonymous+Brave+Guy · · Score: 2, Interesting

      Mostly programmers are trained in the technical details of languages and the libraries/APIs associated with them.

      Mostly, in my experience, programmers aren't trained much at all.

      There is an old saying: if you think education is expensive, try ignorance. Well, we have been, and early results are pretty much in line with predictions.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    5. Re:It needs more professionalism by CastrTroy · · Score: 1

      I bet that's what they thought when they built the first bridges thousands of years ago. Back then there was no mathematical formulas, or even consistent materials for building a bridge. Using a tree of one thickness didn't always mean that a tree of equal thickness would be as strong. Now that we use steel to build bridges, we can rely a lot more on the consistency of its strength. And we also have mathematical formulas to figure out how much steel we need. The problem with software is that we have gone from the stage of tipping a tree over to cross a river to the stage of building the Confederation Bridge, in less than 50 years. Bridge building has had lots of time to mature. Software is still an extremely new field. I'm not sure if things will get more reliable in my lifetime, but I'm sure that eventually we'll get stuff figured out, just like we have for bridges.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    6. Re:It needs more professionalism by CastrTroy · · Score: 3, Insightful

      I think this is one of the biggest problems with software today. Too many untrained/undertrained people working on too much software that they are not qualified to be working on. The only reason the term software engineering is a joke to most people is that most people who work on software do anything but engineering. It's not just me either. Everybody I talk to works with people who have no idea what they are doing, and should not be working in the software field. Granted, neither I nor any of my friends that work with these people are perfect, but some of the stories i've heard are almost unbelievable. I'm surprised software ends up working at all in most cases.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    7. Re:It needs more professionalism by arminw · · Score: 2, Insightful

      ..... Software is still an extremely new field. I'm not sure if things will get more reliable in my lifetime, but I'm sure that eventually we'll get stuff figured out, just like we have for bridges.......

      It is true that software and computers are relatively new compared to bridges. However, because software is immaterial, it is fundamentally different. There are NO fundamental immutable laws of physics that govern software production. Software is a pure product of mind only. That is the primary reason why software engineering isn't really engineering in bridge or machine building sense. Making good software, especially the kind that interacts with people is a art form rather than engineering a bridge.

      --
      All theory is gray
    8. Re:It needs more professionalism by Mongoose+Disciple · · Score: 1

      Well, are you implying that they train to be psychics or prognosticators? Because a lot of the time users don't know what they really want either, at least until well into the process.

      There will always be clients that can't be helped, but it's a hallmark of a great consultant (not as general of a term as could be accurate here -- I'd say programmer, but a lot of programmers don't have client/user/whatever-facing roles) to be able to, more often than not, give the client software that does what they really need, even when the client doesn't themselves know at the start what that is.

      There is some guesswork here, but in general it's not Psychic Friends Network style voodoo. A lot of it really is in how you approach the users, what questions you ask, and how you discover all the tricky little details they take for granted.

    9. Re:It needs more professionalism by ravenlock · · Score: 2, Interesting

      Couldn't agree more. And the reason is I know I'm one of those untrained people. I'm also probably the only one among my peers that thinks we have no business calling ourselves software engineers.

      Judging by a bunch of people I've met and worked with, schools fail to teach basic problem-solving skills, professionalism, or indeed, even the fundamental tools of software engineering. Instead they focus on teaching a specific language or tool, and the students never rise above that. Hence we get a lot of Blub programmers.

      For quite some time I've been thinking that we do stuff ass backwards: we go to school, take a stab at learning something useful and then go to work where very little of the teachings are applicable. I wonder how things would be if students first got to work in real-life conditions and then got to decide what their learning focus should be.

    10. Re:It needs more professionalism by Bazer · · Score: 1

      Whatever testing is done often only tests that the product produces the correct answers when feed the proper input - no account is taken for how the program reacts to incorrect or incomplete data.

      Im going to play the devil's advocate. Why should it be tested for incorrect data? Does a microwave check if you've put a poodle in it? Does a car prevent you from driving into a ditch?

      It's the old "12 inch spike instead of an airbag" argument.

    11. Re:It needs more professionalism by xero314 · · Score: 1

      There is no single answer to why software is hard and there won't be until the industry matures and people start to get thrown out of the business for acting unprofessionally
      You really your statement is fallacy. You state that "there is no single answer" but then answer you self by stating the problem is the fields immaturity. Personally I agree with you 100% that the problem with software is the industrial approach, or in reality the lack thereof. I have often stated that schools are training Engineers but companies expect magicians. If we built physical structures the way we build software we would be killing people every day, and the industry would fall apart do to lack of profitability and lack of physical resources to keep wasting. Software Engineering, if there is ever to be such a thing, needs to be treating like any other form of engineering. Prototyping is fine, but expecting to turn around and use the materials in your prototype as the basis for the final product is a disaster waiting to happen. Allowing your artists to drive the functionality is yet another place that needs to change if we wish to have good software. We need to treat software like any other structure and use sound engineering practices if we ever expect to improve.
    12. Re:It needs more professionalism by toddhisattva · · Score: 1

      Maybe the biggest reason is that writing software is an art rather than a science, more akin to writing a symphony or poem.
      Composers are "musician programmers." Symphony composers are symphony programmers. Radio station programmers are the butt of jokes^H^H^H program the order of the songs on a radio station. Computer programmers program the order of instructions for a computer.

      When listening to CSO, I think of the orchestra as a big computer, and consider the total brainpower available, how many man-centuries goes in to crafting each player's abilities, and wonder how it all happens. How do you herd cats, these individual ego(t)istic musicians, and get them to agree, "okay you stringy people play this phrase here, and you tuba folk play some other notes after that."

      It works surprisingly well in spite of some public disagreements,

      Solti to Bud: why don't you ever follow my tempo?
      Bud to Solti: why don't you ever follow my tempo?


      Think of Herseth as a great trumpet library that's hard to call ;-)

      There are PRECISE mathematical formulas and design rules which an engineer of physical things, such as a bridge, for example, can apply. Software, being non-physical, is fundamentally different from any physical device or machine which can be 'engineered' by precise mathematical procedures. Perhaps the very term "software engineer" is a misnomer in the same way that applying the term "engineer" would be to a musician.
      I've noticed that some of the best-sounding albums are those where one of the members is also a recording engineer, or a non-instrumentalist engineer is accorded as much esteem as a band member.

      I consider "software engineer" a misnomer for most of the same reasons you mention. I joke that since engineering is "the application of materials science," and since software is not made of material, there is no such thing as software engineering!

      But there is much from the engineering world that could improve software, so I tolerate the term when used to describe an engineering approach to software development.

      Various state licensing boards are working on PE certification for software engineers.
    13. Re:It needs more professionalism by Anonymous Coward · · Score: 0

      More like analysts. Not all your programmers need to learn it, but an important part of software engineering is getting the system specifications from the client, and a software team may have someone dedicated to this. They can interview end users, analyze the current workflow, collect use cases, etc. Or so we are taught at CompSci, anyway.

    14. Re:It needs more professionalism by Anonymous Coward · · Score: 0

      "give the client software that does what they really need, even when the client doesn't themselves know at the start what that is."

      Then there is the problem about the client that once shown what they really need, even when both you and him know that's true, will ask for anything else, again as esoteric as it was the first interview.

    15. Re:It needs more professionalism by phaggood · · Score: 1

      People like to expect programming to go like engineering or architecture. Imagine if I sent a request to an Architect asking for a "Structure that will be used by people." and gave no other information. I really doubt I would get a call back.

      Actually, I think it depends on the architect. If you happed to come an architect that has some vision that he's been wanting to try out, or has a deep source of inspiration from another design, you'll probably get a design that you would never have imagined, but you might actually like (and buy). W/ software, if you're dealing with someone who's only gone thru a C/S program studying compiler design and fifty ways to do recursion, there's no way he's going to come back with "a program that does payroll" by himself. Yet, a 10yr HR person who's seen how sucky the payroll programs are and then decides to study a few programming courses might actually, with the same instructions, return a darn good payroll app.

      Now, did I say "The world's greatest payroll app"? No, but with seasoned "pros" producing some pretty spectacular failures, I'm sure some users are ready to break out the bubbly when they get something back that "just works pretty good", at least for the short term.

    16. Re:It needs more professionalism by Eskarel · · Score: 1
      Yes, the seasoned HR professional might return damned good payroll apps. What they probably won't don't do is return well written, maintanable, supportable, payroll app. I work in healthcare, and the vast majority of our apps were written by pharmacists, or doctors, or nurses, etc. They work really well, they do exactly what the users want them to do, often in ways which are intuitive for the users to use.

      They also tend to be monolithic, buggy, unsupportable, and in many cases have either still not become true 32 bit windows applications or have just become so within the last 18 months. Keeping these applications running is a gigantic pain, updates come incredibly sparsely, and generally speaking deployment of them is a nightmare(not that many programmers actually consider deployment when they write corporate apps, but such is life).

      The ideal software team is someone who knows the business to explain exactly what is wanted and someone who knows software to design it properly. The problem is that most businesses don't want to provide resourcing for this sort of thing. You might get ex-nurses/pharmacists/accountants/etc working in an IT department, but you'll rarely see any of those people on loan to the department.

    17. Re:It needs more professionalism by danlash · · Score: 1

      I wrote about this subject recently as well. I agree that programming is hard, and programming for other people is even harder. I also agree that programming is _not_ an engineering field ... yet. As a professional programmer, I believe that we can and are advancing the state of the art in computer science, so that one day my electrical engineer buddy will be able to say "hey, that last application you wrote was a marvel of engineering." One day my friends ... one day.

      http://danlash.com/BlogPost.aspx?ID=016c9c0a-3963- 495e-bfc9-9feb86454834

      --
      Dan Lash
    18. Re:It needs more professionalism by chthon · · Score: 1

      The ideal software team is someone who knows the business to explain exactly what is wanted and someone who knows software to design it properly.

      They used to call them analysts and programmers.

    19. Re:It needs more professionalism by Anonymous Coward · · Score: 0

      The ideal software team is someone who knows the business to explain exactly what is wanted and someone who knows software to design it properly.

      They used to call them analysts and programmers.


      I disagree here. An analyst is someone whose job it is to figure out the business. He'll do that by asking someone who knows the business. That's just adding another layer of misunderstandings. The analyst will ask the business person what HE (the analyst) thinks the programmer needs to know, and then he will tell the programmer what HE (the analyst) thinks the business person wants. Those may overlap with the real needs, but they will never BE the real needs.

  8. Re:Ah! The great unknown... by canUbeleiveIT · · Score: 0, Funny

    I'm not sure I like the way this is going. Software is HARD. The jungle is VIRGIN. Uh-oh...

  9. Programming without cookies by Allicorn · · Score: 5, Interesting

    Programming websites that let you actually view a page without requiring a cookie is obviously hard for the folks at Salon.

    --
    OMG!!! Ponies!!!
    1. Re:Programming without cookies by Anonymous Coward · · Score: 0

      "Programming websites". LOL, you're funny. Do website creators really consider themselves programmers? Aaaaaaaaaaah-hahahahahahahaha!

    2. Re:Programming without cookies by tryfan · · Score: 1

      Well, since Salon is a subscription site (you have to pay or accept ads to read all of the content) it's not THAT strange that there is a cookie now and then...

    3. Re:Programming without cookies by Anonymous Coward · · Score: 0

      The original poster's point was that the page goes into an endless reload loop if you have cookies disabled in your browser. Try it out for yourself - a web page failing to load at all because cookies are disabled is bad practice in my opinion.

    4. Re:Programming without cookies by Nethead · · Score: 1

      It's actually handy if you are a subscriber. I would hate to have to enter my usr/passwd every Wednesday just to get my Keefer fix.

      --
      -- I have a private email server in my basement.
    5. Re:Programming without cookies by hauntingthunder · · Score: 1


      yes but if you use the shity session variables that make your sites look compleate crap and compleatly fucks the site over with searchengines.

      --
      You will never get to heaven with an Ak 47... But A Zu 30 is good for Low Flying Cherubim
  10. Heavy-handed management by Tontoman · · Score: 2, Interesting
    Software becomes hard when heavy-handed management decisions are made to give too much emphasis to a particular software tool or methodology.
    1. An expert programmer (working with human factors experts) can prototype the new system in a cross-platform scripting language (doesn't matter which one), then can identify the objects
    2. a software team can refactor the system once again in an object-oriented language (doesn't matter which one).
    3. Finally, a period of benchmarking can identify the bottlenecks which can be refactored one last time, plus the hardware and Operating System decisions can be made based on the available hardware at the end of the software development cycle.

    An approach like this would probably have been helpful in FBI's failed $100 million debacle the Virtual Case File system

    1. Re:Heavy-handed management by malraid · · Score: 2, Insightful

      This is also a problem with some programmers. Most geeks place more emphasis in the tools than on the objectives. Some don't even care about the objectives (basically the need of the users) and just want to use a shiny new tool. Or they want to do whatever task in the same tool no matter what (there is a saying that a determined Fortran programmer can write Fortran programs in any language).

      --
      please excuse my apathy
    2. Re:Heavy-handed management by flyingfsck · · Score: 1

      Yup, it doesn't matter what language I write in, it always ends up looking like C...

      --
      Excuse me, but please get off my Pennisetum Clandestinum, eh!
    3. Re:Heavy-handed management by Anonymous Coward · · Score: 1, Insightful

      Finally, a period of benchmarking can identify the bottlenecks which can be refactored one last time
      "one last time"? - I admire your optimism

    4. Re:Heavy-handed management by Lazerf4rt · · Score: 2, Insightful

      You are right on the money. Programmers tend to try put more priority on building re-useable components (tools, modules, etc.) than on actually building the damn product. I know I've been as guilty of that as anyone.

      We're all taught that re-useability, modularity and portability are great ideas. But if you look around at many software projects, these principles are often given top priority, and the cart goes squarely in front of the horse. Few people realize that early architecting can be as evil as early optimization.

      How often have you heard of a programmer building a widget system instead of building a widget? Creating a render library instead of creating graphics? Creating an engine instead of an application? Even OOP tells us that we must write a class before writing a function (sorry, method). Anyone remember coding in straight C? It worked. And if you wanted to re-use any of it, it wasn't impossible.

      You get the feeling that the quest for productivity becomes a drain on productivity, which, in turn, makes the quest for productivity even more attractive. Then we all wonder why writing software is so hard.

  11. Becuase People don't know what they want! by Herkum01 · · Score: 5, Funny

    I would say the reason a lot of projects, even small ones take so much time is that requirements cannot be defined.

    Compare building a house to software. Before you build a house

    1. Plans are drawn up
    2. A step-by-step schedule to created for the construction.
    3. Contractors are brought it to complete the work as needed

    Schedule times can slip but you still know where you are in terms of progression.

    If we built this house the way we do software development

    1. Hire all the construction workers
    2. Tell them to build something.
    3. At any point during construction tell them they are not doing it right.
    4. After missing all the deadlines (which were made up by wants/desires of the customer) hire more workers.
    5. Wonder why they cannot get the job done
    6. Cancel the project after everyone realizes they don't want it anymore.
    1. Re:Becuase People don't know what they want! by cowscows · · Score: 5, Interesting

      I design buildings for a living, and I've dabbled in programming, and I think architecture and software development have a whole lot in common.

      Your step one in "building a house" can go through all 6 of the steps that you have listed for software development. We get hired by clients, sometimes they have a good idea what they want, sometimes they don't. Sometimes what they want is feasible, sometimes it isn't. It's not unusual for even smaller projects to drag on for years, because the client keeps changing his/her mind. Many projects that cross our desks will never be built.

      Many projects are not the traditional design phase ->building phase. They often overlap, and it's pretty messy.

      I could go on for paragraphs with the similarities that I see between software design and architecture, but I'll save that for another post.

      --

      One time I threw a brick at a duck.

    2. Re:Becuase People don't know what they want! by Anonymous Coward · · Score: 0

      > If we built this house the way we do software development

      Reminds me of this

    3. Re:Becuase People don't know what they want! by Hoi+Polloi · · Score: 3, Insightful

      I think one thing they all have in common is that they are always custom jobs. It isn't like going to a car dealership and asking for model X in dark blue. Software is more like "I'd like a car with extra wheels on top in case it flips and purple stripes and only 1 door...". Standardization is very limited.

      --
      It is by the juice of the coffee bean that thoughts acquire speed, the teeth acquire stains. The stains become a warning
    4. Re:Becuase People don't know what they want! by chris_mahan · · Score: 1

      My sig is better than your sig :)

      --

      "Piter, too, is dead."

    5. Re:Becuase People don't know what they want! by kanweg · · Score: 1

      On the contrary. There is lots of standardisation. The programmer says "I've an API here, and I can give you as many doors as you want, in 10 minutes, but there is no API for the DeLorean door you request and it will take me 2-6 month to program it. Yes, I know Mr. User that you just want to drive your car, but I want you to give me the specs for every millimeter of that DeLorean door, or it won't get done". Then he starts complaining if the customer suggest a Ferrari door; that the customer changes his mind all the time.

      Bert

    6. Re:Becuase People don't know what they want! by M.+Baranczak · · Score: 1

      The clients who don't know what they want aren't so bad - most of them will accept whatever you give them. The real problem is with the ones who do know what they want, but can't describe it properly. Or the ones who want the impossible (but those are usually easy to spot early on).

    7. Re:Becuase People don't know what they want! by dreadclown · · Score: 1
      Let's follow the scenario a little further ...

      Mr. User then says you're just bullshitting him with this "API" crap and gets a 1 week quote from a cowboy team.

      At which point we have various branching decision paths, all of which result in misery for all concerned.

    8. Re:Becuase People don't know what they want! by Metasquares · · Score: 1

      Or the ones who say "hey, that gives me an idea... it'd be really neat if that could do X, too!" throughout the project. Feature creep is probably the single largest reason why programs don't meet deadlines.

    9. Re:Becuase People don't know what they want! by nomadic · · Score: 2, Funny

      Or the ones who want the impossible

      Perhaps you'll tell the Emperor yourself WHEN HE ARRIVES!

    10. Re:Becuase People don't know what they want! by Jerf · · Score: 1

      Actually, I say, if you want to see the silliness of the venerable Construction metaphor, show how we'd really build houses if we built houses the way we built software.

      First, building a house is a solved problem, so you'd never hire an architect or builders. You'd go down to Best Buy and buy Microsoft House for $89.95. Any reasonable requirement you can think of is covered by Microsoft House; you have to really try to throw it for a loop.

      Microsoft House is guaranteed to conform to all building codes in all jurisdictions in the United States and outlying territories.

      (You could also just download GnuHouse, which has some more geek-appealing features, but has less style, since nobody could afford to hire the best designers. Also, no warranty.)

      You wouldn't spend time building the house, either. You'd fire up the Wizard, which in a matter of minutes would build you a basic house. A real house, mind you, one that you can walk through, look at, get a sense of how it fits in with the land, that sort of thing. No simulations. Just like the default website setup for IIS, which may not be super spectacular awesome, but serves static pages just fine, you know? Working website, working house.

      You'd incrementally modify your house in real time, playing with the color schemes and features, adding in the furniture, saving your progress and returning to it later if you didn't like it, etc. All without committing to any resource expenditures until you decide what to "keep".

      Once you decide you're done, Microsoft House automatically imports all your old possessions and does some reasonable default thing with them.

      Now, you can make the easy +5 Funny jokes about Microsoft House, but for most people, most needs, most of the time, it would work and work fine. (Don't stretch the metaphor too far. After all, my entire point is this metaphor sucks. So, no need to sketch out house-based spyware.)

      So... does this look anything like a real construction project? Or, is software development so different from construction that we should just retire the metaphor?

    11. Re:Becuase People don't know what they want! by Jeff+DeMaagd · · Score: 1

      I think your post makes sense. I really wouldn't appreciate the scale of how hard civil engineering can be if it weren't for shows like Extreme Engineering on Discovery.

    12. Re:Becuase People don't know what they want! by thewils · · Score: 1

      I don't see why this is modded funny. I guess it's because you can't mod it "sad" which what it really is.

      Parent has hit the nail on the head because I run up against the situation all the time where people want me to build something, but they can't define what it is they want - the attitude is "go ahead and build something, and we'll tell you how it doesn't come up to our expectations of what we thought we were going to get".

      --
      Once I was a four stone apology. Now I am two separate gorillas.
    13. Re:Becuase People don't know what they want! by Citizen+of+Earth · · Score: 3, Funny

      "I'd like a car with extra wheels on top in case it flips and purple stripes and only 1 door...". Standardization is very limited.

      Now imagine if every single weld was a unique, custom job that had never been done before, and if any of them are imprefect, the car crashes.

    14. Re:Becuase People don't know what they want! by Coryoth · · Score: 2, Insightful

      Now imagine if every single weld was a unique, custom job that had never been done before, and if any of them are imprefect, the car crashes.
      Right, because there are absolutely no "standard recipes" in software. There just isn't anything you could describe as a "Cookbook" providing standard solutions to common problems that make up the basic nuts, bolts and welds of a lot of software.
    15. Re:Becuase People don't know what they want! by Anonymous Coward · · Score: 0

      That reminds me of an old joke.

    16. Re:Becuase People don't know what they want! by GileadGreene · · Score: 1

      Your step one in "building a house" can go through all 6 of the steps that you have listed for software development. We get hired by clients, sometimes they have a good idea what they want, sometimes they don't. Sometimes what they want is feasible, sometimes it isn't. It's not unusual for even smaller projects to drag on for years, because the client keeps changing his/her mind. Many projects that cross our desks will never be built.
      The same is true of engineering. I've worked in the space industry, both on projects that have never got beyond paper studies, and projects that have successfully landed on Mars. In every case, we went through "all 6 steps" long before we got to "bending metal" (for those projects that got that far). For some reason, some software people seem to have an oddly idealized conception of how design is carried out in other, non-software industries. We all have to deal with the same kind of problems - I'm now working as a software engineer, and my experiences with the design process there seem little different than what I saw when I was working as a spacecraft engineer.
    17. Re:Becuase People don't know what they want! by ralphdaugherty · · Score: 1

      Many projects are not the traditional design phase ->building phase. They often overlap, and it's pretty messy.

            First time I've seen that viewpoint, and that's probably because it came from the architecture side instead of someone just using architecture as an example of "cookie cutter" construction in comparison to developing software.

        rd

    18. Re:Becuase People don't know what they want! by mrbighead · · Score: 1

      Isn't that precisely why we have a discipline called software engineering? Prioritizing then freezing requirements isn't all that difficult.

    19. Re:Becuase People don't know what they want! by JAFSlashdotter · · Score: 3, Funny

      And then, just as you finish the car, with wheels on top, hybrid Ferrari/DeLorean door, as requested, the customer reveals that it must travel up a smooth vertical surface and carry 2000 people. Sorry, did you need to know that earlier? Oh, and it has to provide oxygen, heat and cooling. What do you mean that will cost more? Product launch is March 1 and we've already been advertising the new system and hired all the new drivers! This will cost us billions, you stupid developers this is all your fault!

      --
      We apologize for the preceding message. All those responsible have been sacked.
    20. Re:Becuase People don't know what they want! by dcam · · Score: 2, Informative

      I've worked with architects. One thing I think that is different about software is that you can change things once they are in place. That is it is possible to move the whole building 100m down the road. The very changability tempts people to change things, which causes problems.

      Secondly I think people know more what they want when it comes to buildings because the options are more restricted. In software there are no restrictions on what can be built (although you can run into performance restrictions).

      Thirdly you can see and touch a building.

      --
      meh
    21. Re:Becuase People don't know what they want! by cowscows · · Score: 1

      Probably because now-a-days, the buildings that people have the most exposure to are basically cookie-cutter type structures. Houses especially, many retail stores, etc. Most houses are built without an architect being involved. Even office buildings, which might greatly vary in appearance from the outside, once you're in the cubicle farm or whatever, it's generally all the same stuff. Sadly, economic concerns often preclude commercial interior design from becoming much more than picking carpet patterns.

      But when you're doing something a little different, something original, you very often end up having to change things while under construction. Either what you drew doesn't exactly work, or the contractor can't figure out how to build it, or maybe in the year since you designed it before building started, the price of copper has gone up 150% and now you can't afford it. It might just be that once you start putting the millwork in, the owner decides he likes it, and now he wants three times as many cabinets. The architectural design process is often very dynamic.

      --

      One time I threw a brick at a duck.

    22. Re:Becuase People don't know what they want! by PPH · · Score: 1
      Or its the wrong people writing the specs.


      I've been involved in $250 million dollar s/w project flops and then the $5 million dollar successful project to replace it. The primary difference is that the first instance was spec'd by people who didn't even understand the job needing to be done, much less the s/w technology being used. The second try was done by a group assigned the responsibility for fixing the first screw-up. The implementation was left up to us. If we decided to run around the shop floor with clip-boards (it is an engineering document configuration control system), that was fine with management. As long as the job got done. We figured out what needed to be done, what tools to use (either custom written or off the shelf) and what the system architecture should be.


      The primary difference between the two projects was management. The first one was an opportunity to have lots of meetings and push memos around all over the place. On the second project, we had authority from corporate to have any mid level managers fired who interfered with us.

      --
      Have gnu, will travel.
    23. Re:Becuase People don't know what they want! by phaggood · · Score: 1

      I've been involved in $250 million dollar s/w project flops and then the $5 million dollar successful project to replace it.....The second try was done by a group assigned the responsibility for fixing the first screw-up.

      So you're saying you were involved in one $255M project that produced a working product? You're the envy of the FBI.

    24. Re:Becuase People don't know what they want! by PPH · · Score: 1

      So you're saying you were involved in one $255M project that produced a working product? You're the envy of the FBI.


      That's an interesting way of looking at it. Its similar to a gov't contract in that $5 mil. actually went to producing a product whereas $250 mil. was wasted. Unlike a gov't contract, we didn't get the chance to waste it on golf trips/hookers/booze for administration staffers.


      The advantage of the latter sort of waste is at least you get a chance at sloppy seconds.

      --
      Have gnu, will travel.
  12. Software is hard AND there's lots of incompetence by mrjb · · Score: 5, Insightful

    Yes, writing software is hard, especially writing good software. The hardest part is to make things simple, even harder is to make things simple AND flexible. The need for a thorough analysis is greatly underappreciated.

    Incompetent developers tend to make things more complex than necessary. From that point on, under economic pressure, workarounds are needed to get things done. This in turn makes things even more complex than necessary. THAT is what makes writing software hard. The problem is, it is difficult to be aware of the skills that we lack. As such, a lot of programmers with a huge ego don't deserve one.

    I'm not into Extreme Programming per se, but I've noticed that if multiple people look at a piece of software, chances of problems going undetected get smaller and smaller. Yes, even if you, a master programmer, show your code to a rookie, the chance of bugs going undetected will reduce. In fact, it will inevitably result in more bugs being detected before rolling them out to customers.

    --
    Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book
  13. Re:Ah! The great unknown... by kfg · · Score: 0, Troll

    Treading new ground always requires greater effort. If I cut a my way through virgin jungle then those who follow have a path.

    The problem is even thinking in terms of "effort." Ideas are not the product of labor. Time with a chain saw is proportional to length of path cleared.

    Ideas may come in a flash, or evade forever.

    KFG

  14. Too well do I know by ZwJGR · · Score: 1

    Anybody who tries to program anything thorough, complex or unorthodox knows in great detail what Rosenborg means when he says, "software is hard", and that even trivially simple projects take eras to complete.
    You would be astonished, how many subtle bugs, memory leaks, logic errors, inconsistencies, typos, misinterpretations of specs, functionality, etc. can quietly mug your simple program. If you add multithreaded functionality as well, you introduce a whole new class of horrendous synchronisation, race-condition, resource starving, deadlock, memory corruption, instability, etc errors.
    Once you start with multiple files, header files, ridiculously complex make scripts (these are very popular) and odd dependencies on obscure libraries, you can while away many a dull evening having fun fixing things.
    If you have multiple programmers working on the same thing, then you tread on each others toes, can't understand what other people have written, somehow manage to subtley break someone else's code, can't agree on what to call object X, have to call a commitee meeting, time wasting...

    I've spent many days, trying to figure out why my train goes through the wrong signal, and after a week, discover that I've saved something in one register, then used it again to save something else two lines down, then pushed and poped it for no apparent reason.
    Then if you simultaneously click button X while holding key Y, memory in arbitrary position Z is modified and your program starts acting really weird and then crashes ten minutes later...
    Developing properly robust, indestructable code varies proportionally to an unfortunately high power of program complexity.
    I've spent many dull evenings trying

    --
    There is no psychiatrist in the world like a puppy licking your face - Ben Williams
    1. Re:Too well do I know by Anonymous Coward · · Score: 0

      Good post man; I am going to keep a copy of it to remind me that I am not a fucking idiot. I'd mod you up if I could.

  15. First Post! by Harmonious+Botch · · Score: 5, Funny

    Two of us typed this. We thought it might be faster.

    1. Re:First Post! by Anonymous Coward · · Score: 0

      LMAO ya that was funny :)

  16. Read a real book on software engineering by Anonymous Coward · · Score: 1, Interesting

    It should be pointed out that the author is not a software engineer and really does not know what he is talking about. Professional developers who want to understand what makes software development difficult should read some of the textbooks on software engineering that he quotes.

    1. Re:Read a real book on software engineering by planetfinder · · Score: 1

      I think that you are right on. Many of the reasons for software failure and failure of software product
      development projects are well understood and can be found in good textbooks.

      A day will come when software product manufacturers are held responsible
      and accountable for serious loss, injury or death caused by software failure.
      When that happens software engineering will become a respected discipline that encompasses
      programming rather than being subsumed by it.
      We'll also hear a lot less confused babble masquerading as insightful
      wisdom about software development.

      There are a growing number of medical and military software applications
      for which putting a disclaimer in a EULA doesn't cover it (Referring survivors
      to a EULA after a software failure let an ICBM through wouldn't be considered
      good humor).

    2. Re:Read a real book on software engineering by qzulla · · Score: 1

      Tracy Kidder was not an EE but his book The Soul of a New Machine is classic. Sometimes you need people who are not experts in the field to see what you don't.

      qz

  17. It's easy by superangrybrit · · Score: 0, Interesting

    Wrong tools: C and C++ language. Overcomplicated APIs: Win32, HTML, drivers, JAVA, etc... Lack of standards enforcement: HTML disaster. All this makes it easy to derail any project.

    1. Re:It's easy by TapeCutter · · Score: 1

      Wrong for who? They have provided myself and many others a very respectable living for decades. And surely you don't doubt the overall usefullness of their application to society over the same time period?

      Comprehensive requirements, good design, elegant code and adequate testing requires: experience, knowlage, patience, and bags of money. And that's just for version 1.0, wait until the users get hold of it and tell you what you "should" have done (often as a response to you pointing to the requirenents and basically saying "we warned you when you asked for it").

      Commercial programming is basically a small group of people proscribing a solution for a large group of people, thus the oft quoted 80/20 rule, you get what you pay for (if you are carefull). Time consuming yes, but there is nothing intrinsicly "hard" about programming, other than people.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    2. Re:It's easy by Anonymous Coward · · Score: 0

      I program in Ada. It took a lot of time to learn how to use it correctly, but now I won't go back to something like C or C++. I really don't understand why people still insist to use those languages.

    3. Re:It's easy by Anonymous Coward · · Score: 0

      Taking thirty to forty filthy cocks a day has provided many whores with a respectable living for decades. The money doesn't change the fact that they're dirty, skanky prostitutes.

      I've witnessed a number of J2EE development efforts, using a variety of the frameworks and class libraries that are available. One thing in common with all of them was that the developers fought with the tools they were using. With some of the web-oriented frameworks, the developers would spend days writing XML configuration files, only to find out that some change they had to make later would undo all that work. In short, using many of the well-hyped technologies is nothing but futile.

      Meanwhile, I've also seen a lot of enterprise development efforts that used Smalltalk. All but one was a massive success. The developers had the tools they needed to get the job done. The class libraries were simple and sensible, to the point that the complex tasks they were faced with were actually quite manageable. These developers didn't waste a lot of time writing XML configuration files. The frameworks didn't need such nonsense to work.

    4. Re:It's easy by UnknownSoldier · · Score: 1

      > Wrong tools: C and C++ language

      Let me know when we other languages then Assmebly, C / C++ on consoles (such as PS2 and PS3), that other don't impose a Run Time overhead.

      Languages are only a small minor part of the problem. You can write beautiful/elegant or trash code in any language. The bigger question is: How many side effects are there? How manageable is it? How long will it take to come up with a design that is both a) fast, and b) flexible.

    5. Re:It's easy by SmlFreshwaterBuffalo · · Score: 1

      Let me know when we other languages then Assmebly, C / C++ on consoles (such as PS2 and PS3), that other don't impose a Run Time overhead.

      Languages are only a small minor part of the problem. Clearly languages are a larger problem than you realize.
    6. Re:It's easy by TapeCutter · · Score: 1

      "I really don't understand why people still insist to use those languages."

      Hmmmm....could it have something to do with the fact that there are a gazillion LOCS already in production, or is it because your commercial experience is limited? Virtually the only people who use Ada do so for the military, I tried it in the early 90's, it "flows" in the same way anything else designed by commitee doesn't.

      Two AC's, recommending Ada and Smalltalk - stay in your basement fellas while those of us with jobs get on with it.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
  18. Software is Math by Valdrax · · Score: 1

    And as Mattel once pointed out, "Math is hard!"

    --
    If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
    1. Re:Software is Math by Lonath · · Score: 1

      Yup, it's math.

      The reason software is hard is because coming up with new math is hard.

      If you've seen the problem before, even in some other context, it's not too bad to apply it again to a new context. If you've never seen the problem before, it can be quite difficult. Ask yourself this:

      What's harder:

      1. Using the Pythagorean Thm once you've been taught it.

      2. Deriving it because you needed to use it in a real world problem, but without being given any hints about how to do it.

      That's why software is hard. Problem 1 is a joke compared to problem 2. Software will never be easy because it's math and coming up with new math is hard. Software engineering makes it so once problems are in category 1, they can be more easily solved again, but it won't help with problems in category 2.

  19. Product managers... by osolemirnix · · Score: 4, Informative

    I don't think I can fully agree. I think software development may be hard, but that's never the main reason projects fail. The main reason projects fail in my 10+ years experience is because of product managers, not coders.

    Product managers I have seen (and I have seen many) often don't know zilch about technology, but even worse they usually also don't know much about their market, target audience/users, User Interfaces, project management, etc.
    Consequently they simply don't know what they want and aren't able to explain it in one coherent paragraph of sentences. Once they would be able to explain it, the actual coding would be half as bad.

    So if this guy complains that their projects back in the days at salon went bad, I'm not suprised. He's not a coder after all, he was a typical clueless product manager - started out as a journalist and suddenly he was responsible for a type of product he knew nothing about: CMSs, in addition to having no other qualification in software development or a related area (UI design, project management).

    So am I surprised this project didn't succeed? LOL, of course not.

    You wouldn't let a journalist build a space shuttle or a car now would you? But software? Sure, software is easy, anyone can do it. In the end, it's probably not harder than building a car, but not easier either. it just takes proper skills for all roles in the team, is all.

    --

    Idempotent operation: Like MS software, wether you run it once or often, that doesn't make it any better.
    1. Re:Product managers... by edittard · · Score: 1, Insightful

      You wouldn't let a journalist build a space shuttle or a car now would you? But software? Sure, software is easy, anyone can do it.
      [PHB] Heck, what's the difference? Journalism, programming, they both look like a load of typing to me! [/PHB]
      --
      At the bottom of the /. main page it says 'Yesterday's News'. Well they got that right.
    2. Re:Product managers... by Anonymous Coward · · Score: 0
      Language Trolling:

      don't know zilch about technology
      Double negatives.
    3. Re:Product managers... by maxume · · Score: 1

      Building a car isn't that huge a deal:

      http://www.boydcoddington.com/store/HotrodShop/Def ault.aspx

      Most mechanics can do it; they might need a bit of reference material. Space shuttles are a different thing, but most countries can't manage to build them, so...

      Software is bad because crappy, cheap software that mostly works is apparently acceptable, especially compared to expensive software.

      --
      Nerd rage is the funniest rage.
    4. Re:Product managers... by C10H14N2 · · Score: 1

      "Sure, software is easy, anyone can do it." ..which is why we get the perennially insightful thread titles about "why software is hard" followed by a zillion-posts saying, essentially, "no shit." Really raises the question of if only one could get management lackeys to simply understand, "hey, software IS hard!" perhaps we could get on without having to perpetually explain why. I mean, you don't go to your surgeon and say "hey, Doc, why can't I just get a bunch of community college kids to swap this heart out--and do we really need all this support staff? I mean, you know what you're doing, right? EIGHT HOURS?! Christ, man, it's just ONE piece! I don't have all day. Follow-ups? What, you can't do it right the first time? You must be incompetent. Hand me that scalpel..."

    5. Re:Product managers... by jskiff · · Score: 1

      Product managers I have seen (and I have seen many) often don't know zilch about technology, but even worse they usually also don't know much about their market, target audience/users, User Interfaces, project management, etc.

      As a product manager, I think you're right to an extent. If a product manager doesn't know who the product is being built for and what that customer needs, then the product is doomed to fail. If they know those needs, but can't communicate them to their development team, then the product is again doomed to fail.

      I will argue, however, that it is not up to the product manager to know user interfaces. I can tell my team what the customer wants to do, and I can provide examples of how other applications have done it, but frankly it's not my job to do UI work. I have (talented) engineers whose job it is to design user interfaces. I'm going to trust that they know what they're doing, provided that I've communicated to them what the customer wants to do. If I was a UI engineer, I wouldn't want my PM telling me what to do, just like as a PM I wouldn't want one of my software developers telling me how to conduct a user survey or interview with the press.

      Regardless, there is no chance of success without communication. That goes from me to my engineers in communicating requirements up front (and not adding new requirements as the project goes on), and with them telling me what's feasible, what's not, and most importantly, when things change.

      --
      It's "no one," not "noone." Who the hell is noone anyway?
    6. Re:Product managers... by SQLGuru · · Score: 1

      The reason that physical implementations are "easy" is because it's pretty obvious when two parts will work together or whether they will need some sort of adapter:

      Oh, look, two holes that are an inch in diameter. One on part A and one on part B. If I want to attach them, I can use a screw that is one inch in diameter. Oh, and this washer that has a one inch in diameter hole will fit on that screw....same for the nut.

      In software, just because two pieces have an XML shaped "hole" doesn't mean that they are compatible.

      Layne

    7. Re:Product managers... by ralphdaugherty · · Score: 1

      So if this guy complains that their projects back in the days at salon went bad, I'm not suprised. He's not a coder after all, he was a typical clueless product manager...

            He sounded more like a client to me. It was the web content management developers who had the disaster. He just had to pay for it.

        rd

    8. Re:Product managers... by Anonymous Coward · · Score: 0

      You seem to believe that product managers manage products.
      No, a butterfly does not fly butter.

      Thomas

    9. Re:Product managers... by smallpaul · · Score: 1

      The CMS project failure was the start of the author's interest in the subject. He goes on to read Fred Brooks and watch the Chandler team. Fred Brooks describes problems primarily _in the development (not requirements) domain_. And Chandler certainly has problems in the requirements domain but we cannot blame that on a technology-ignorant product manager unless we define "technology-knowledgeable" to be an impossible standard. I'm not at all disputing that product managers kill many software projects with ignorance. But that isn't what this book is about. Even software with perfect requirements can be very difficult to right on time and on budget. And even very knowledgeable and experienced product managers can have trouble managing project scope.

    10. Re:Product managers... by mcvos · · Score: 1

      [PHB] Heck, what's the difference? Journalism, programming, they both look like a load of typing to me! [/PHB]

      "Just type faster" is what one of my bosses sometimes says.

      Or: "Can't you just copy that from another project? That one has [feature X] too!" Yes, that's what I'm doing, but the other project is built in a very different way, and it takes time and thought to put everything together in a way that it actually works.

  20. Too many ad-hoc hacks by Peaker · · Score: 4, Interesting
    The software world is in a very poor state indeed.

    I think that once someone improves the situation of software architecture and programming languages so that programmers don't have to mess with ad-hoc hacks but instead write the logic that they want to implement, then software will cease to suck.

    The main problem is Operating Systems architecture and Programming Languages.
    Due to lack of time, I will only list a few of the Operating Systems problems that weren't solved after more than 30 years of OS development:
    1. Don't allocate resources sanely. One program (even worse when it has many threads) that is wanting more memory and more CPU will get the entire User Interface to a halt, even though guaranteeing the required resources for a smooth UI is so cheap. (i.e: Instead of guaranteeing 0.5% of the memory/cpu to the UI so its always smooth, even this 0.5% goes as an extra 0.5% boost to the program that's already got 99.4%)
    2. Offer an unnecessarily(historically) complicated model to programs, where there are multiple spaces of memory (malloc'able/sbrk memory, and file system space), even though these memory types are actually interchangable and when you malloc, your RAM is moved to disk, and when you use a file, it often allocated RAM. Instead, operating systems should just expose one type of memory, that is always non-volatile and persistent, so that programs don't have to worry about converting/serializing back and forth between these memory types.
      This would also get rid of the unnecessary bootup/shutdown sequence all programs are currently dealing with.
    3. Does not offer a high-level world of network-transparent primitives, that allows all method calls to transparently run over a network. If this existed, we would not see the abomination that is web-forms+AJAX and the rest of this ultra-complicated world that still does not work nearly as well as local GUI's. Instead of extending the web to support GUI functionality (poorly), we should have seen GUI's be extended to transparently reach over the network. The X protocol is similar, but not good enough as it transmits too low-level primitives (pixel data and mouse movements) and is also an alternative and not a standard GUI API that the operating system offers.
    4. The security model, using users, groups and assigning those to objects is of very rough granulity, requires a system administrator to modify the model (users/groups) and does not allow fine-grained control over the access of entities (processes) to objects (i.e: As a non-administrator, I cannot prevent my mp3 player from accessing the network or deleting the files it can read).
      Instead, a capability-security model should be used (not POSIX capabilities, but EROS/KeyKos type ones), which is much simpler to use, verify and much more powerful and fine-grained. This would also facilitate secure movement of components between computers - which could be done automatically by the OS to improve performance. More on that on a later post.


    1. Re:Too many ad-hoc hacks by Eli+Gottlieb · · Score: 1

      # Don't allocate resources sanely. One program (even worse when it has many threads) that is wanting more memory and more CPU will get the entire User Interface to a halt, even though guaranteeing the required resources for a smooth UI is so cheap. (i.e: Instead of guaranteeing 0.5% of the memory/cpu to the UI so its always smooth, even this 0.5% goes as an extra 0.5% boost to the program that's already got 99.4%) Real-time scheduling. Lottery scheduling. Raising the priority of the UI process, even under a normal Priority Round Robin scheduler.

      Offer an unnecessarily(historically) complicated model to programs, where there are multiple spaces of memory (malloc'able/sbrk memory, and file system space), even though these memory types are actually interchangable and when you malloc, your RAM is moved to disk, and when you use a file, it often allocated RAM. Instead, operating systems should just expose one type of memory, that is always non-volatile and persistent, so that programs don't have to worry about converting/serializing back and forth between these memory types.
      This would also get rid of the unnecessary bootup/shutdown sequence all programs are currently dealing with. You're talking about "orthogonal persistence". EROS, KeyKOS and Unununium all pursue it.

      Does not offer a high-level world of network-transparent primitives, that allows all method calls to transparently run over a network. If this existed, we would not see the abomination that is web-forms+AJAX and the rest of this ultra-complicated world that still does not work nearly as well as local GUI's. Instead of extending the web to support GUI functionality (poorly), we should have seen GUI's be extended to transparently reach over the network. The X protocol is similar, but not good enough as it transmits too low-level primitives (pixel data and mouse movements) and is also an alternative and not a standard GUI API that the operating system offers. Sun's NeWS did a little better than X Windows. So did Amoeba (and every other distributed operating system).

      The security model, using users, groups and assigning those to objects is of very rough granulity, requires a system administrator to modify the model (users/groups) and does not allow fine-grained control over the access of entities (processes) to objects (i.e: As a non-administrator, I cannot prevent my mp3 player from accessing the network or deleting the files it can read).
      Instead, a capability-security model should be used (not POSIX capabilities, but EROS/KeyKos type ones), which is much simpler to use, verify and much more powerful and fine-grained. This would also facilitate secure movement of components between computers - which could be done automatically by the OS to improve performance. More on that on a later post. You said it yourself: Capability security systems. Real Access Control Lists would help, too.

      Most of the solutions in the operating system world are already there, but nobody uses them in commodity systems. Why? Backwards compatibility. I'm serious. Too many new operating systems aim for backwards compatibility with POSIX, Windows, Amiga, BeOS, RISC OS, the Lisp Machines, or some other old OS architecture. I'll give you a quote: "A new operating system project should address a real problem that is no currently being addressed; constructing yet another general-purpose POSIX- or Windows32-compliant system that runs standard applications is not a worthwhile goal in and of itself." That's from The Pebble Component-Based Operating System , written in 1999.

      And then, of course, we can go and search for "Systems Software Research is Irrelevant". Everyone in the commercial seems to ignore the great strides forward operating-system research has made.

      Yes, I am an operating-systems geek. How'd you know?
    2. Re:Too many ad-hoc hacks by Watson+Ladd · · Score: 1

      Number 2 really isn't desirable. The overhead would be quite painful for a lot of programs that need realtime performance. Also, clearing ram is desirable sometimes, such as when a program fails to maintain an invariant and then goes into an infinite loop. If the variable is persistant and nonvolitile, we have problems. Also, some data *shouldn't* be persistant, like passwords.

      --
      Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
    3. Re:Too many ad-hoc hacks by Oligonicella · · Score: 1

      Um, not everyone programs on and for a Windows machine in C.

    4. Re:Too many ad-hoc hacks by doktor-hladnjak · · Score: 1

      Sorry, but there's no silver bullet that's going to solve all our software development woes.

    5. Re:Too many ad-hoc hacks by mcrbids · · Score: 3, Interesting

      Addressing your points:

      1) How do you know a GUI application from a non-GUI one? What about programs that are run locally, but viewed remotely, and vice versa? What constitutes a "GUI" application?

      2) But you are allocating different types of "memory"! See Leaky Abstractions for more information on this. Your "everything is memory" model sounds nice, but lacks a few key components.... When I fclose() a file, I have a STRONG assurance that the file has been saved and wouldn't go away if the power failed. That's not the case in your "everything is memory" model...

      3) You are either talking about a security nightmare or pixie dust. How does computer B know that it's OK to run code from computer A? See other comments on #4

      4) Capability security requires somebody to set up all those !#@!@# permissions. POSIX, by contrast, is very simple and requires little effort to maintain. Is POSIX ideal in all situations? No. But it's adequate in most circumstances without a lot of effort, and it's usually better to have a "just barely suits" possibility with a decent default than a perfect possibility with a lousy default. Perhaps that explains why your touted EROS operating system died on the vine?

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    6. Re:Too many ad-hoc hacks by ralphdaugherty · · Score: 1

      One program (even worse when it has many threads) that is wanting more memory and more CPU will get the entire User Interface to a halt, even though guaranteeing the required resources for a smooth UI is so cheap.

              OS/400 (now i5/OS) handles hundreds of users and thousands of jobs simultaneously with smooth UI response.

      Instead, operating systems should just expose one type of memory.

                OS/400 has always done this. The entire memory and disk capacity is a single 64 bit address space addressable by RPG or C++ programs with pointers and pointer math.

      allows all method calls to transparently run over a network.

                OS/400 has XWindows which was cited by poster as too fine grained. Not sure what the answer is here.

      a capability-security model should be used..., which is much simpler to use, verify and much more powerful and fine-grained.

                OS/400 object based security is very fine grained, simple to administer, and would not make the break in artists of the world very happy were it to be widely used as it should be by those holding critical personal information, such as government agencies, health care companies, and everyone else spilling our personal information via common OS foils.

        rd

    7. Re:Too many ad-hoc hacks by Anonymous Coward · · Score: 0

      This is going to look like an ignorant question but: how much faster is RAM compared to Flash memory? If someone built a computer with Flash as the only type of memory (replacing RAM and the HD, assuming we solve the multiple writes limit issue with Flash), we'd indeed be getting rid of the boot sequence, swapping and other sorts of complexity. But what would be the performance cost?

      Please educate me, I'm honestly curious!

    8. Re:Too many ad-hoc hacks by Anonymous Coward · · Score: 0

      Appeals to Authority fail when your authority figure is a jackoff like Joel Sporksi. If you want advice on the best technique for sucking cock, or what kind of lube to use when having anonymous gay sex in a bathroom, Joel is relevant. As far as programming, he's a douchebag.

    9. Re:Too many ad-hoc hacks by Eivind+Eklund · · Score: 1
      I'll take your suggestions in order:

      1. I find this reasonable, even though it is fairly complex to implement. The problem is that there isn't one resource to schedule - there are a lot of different ones that interact. The primary problem, as I see it, is the I/O capacity isn't scheduled, while CPU is. Historically, CPU was the really scarce resource. These days, memory and IO capacity is what is scarce, while CPU is generally cheap. (There are also some problems related to X windows being an application and out of memory conditions, these can be dealt with through an application hierarchy.)
      2. There ARE multiple types of memory, and they behave differently. There is an 100,000 times difference in access speed between RAM and disk. For reasonable performance/stability, there is a need to distinguish these to a larger degree than is presently done. Some data structures need to be fast, some are fine with being swapped to disk, and quite a few are just cache and can be recomputed at will. It is fairly common to have caches that we are better off throwing out and recomputing when necessary than we are swapping them out and in again; this should be possible to specify. That's part one of my reason for disliking your idea. Part two is that you go for much higher state dependence, and much less testability than presently. Serializing and re-loading reset the state of programs; this means that corruption is short lived. Not doing this can easily lead to extremely complex bugs, and extremely complex working conditions.
      3. Network transparency: Computers fail as a unit. Networks fail partially. These make network transparency a fake dream: The network isn't transparent.
      4. Agree. Our security models suck.
      I find that our problems in computing are more in planning and programming languages than in operating systems, and that the OS problems are different than the ones you state (apart from the security model issue, which frustrates me too.)

      In terms of programming languages, I believe we need something where we can assert invariants over programs with fairly free run-time typing, where we can use those invariants (written as tests or invariants or something inbetween) to classify our dependencies, where we can use and contribute to standardized libaries while maintaining a stable system as the libraries evolve.

      I do not know any language/system that seems to be close to this yet. A team of us worked somewhat for getting parts of this to Ruby, but were pushed out politically (or, to put it another way, we didn't do the job to get enough people to understand what they would gain through working with us, and ended up with them going in incompatible directions to get a "good enough" solution.) However, if done right, I think this could significantly change the face of programming - through just plain good engineering of the library space.

      Eivind.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    10. Re:Too many ad-hoc hacks by Anonymous Coward · · Score: 0

      OS/400 has always done this. The entire memory and disk capacity is a single 64 bit address space addressable by RPG or C++ programs with pointers and pointer math.

      OS/400 does away with files, and instead gives each program a 64-bit address space that persists to disk automatically? Wow!

    11. Re:Too many ad-hoc hacks by CTachyon · · Score: 1

      Flash is in the ballpark of 1,000 times slower than RAM. Flash is measured in MB/s, while RAM is measured in GB/s. From what I've seen, Flash is actually a bit slower than a decent hard drive for sustained reads/writes. (Flash is far better at random reads/writes since it has no moving parts.) On the downside, Flash also wears out a bit each time you write to it (unlike RAM or hard drives).

      --
      Range Voting: preference intensity matters
    12. Re:Too many ad-hoc hacks by ralphdaugherty · · Score: 1

      OS/400 has always done this. The entire memory and disk capacity is a single 64 bit address space addressable by RPG or C++ programs with pointers and pointer math.

      OS/400 does away with files, and instead gives each program a 64-bit address space that persists to disk automatically? Wow!

            Not the does away with files part. OS/400 has:

        - DB2/400 built-in,

        - AIX as part of the address space which I understand could run MySQL and other open source databases along with DB2 if we wanted (Linux and/or AIX partitions also can run concurrently with OS/400 in different address spaces),

        - a native object based file system

        - a Unix style IFS file system

        - Apache / Tomcat

        - POSIX compliant

            but OS/400 was architectured as a flat 64 bit address space across all local storage that all users share, with all accesses to the entire space object based, strongly typed, and authority verified.

            Just as important, it does all this for hundreds to thousands of concurrent users with smooth UI response accessing terabytes of data. But it scales all the way down too. Entry level models are priced competitive with other enterprise equipped servers.

            As security problems worsen, government would be well served to secure their operations on OS/400, now upgraded as i5/OS on the IBM system i.

        rd

    13. Re:Too many ad-hoc hacks by Misagon · · Score: 1

      2. I'm, sorry but I don't think you have a point here. In Linux, you have to open() a file before you can mmap() it. Once you have a file descriptor, you can call fsync() on it any time you want to. I don't see why an OS with orthogonal persistence would have to be different.

      3. I think capabilities is the best tool to use to solve this problem, because it is fine-grained. See 4 below.

      4. I agree that it is harder to get a view of the access matrix with capabilities than with the POSIX model.
      I believe there are two primary reasons for this: first because people are afraid of capabilities simply because they are unfamiliar to them, second because it is not too common for capability systems to have a good way to revoke capabilities that no longer have to be alive, and this causes more uncertainty.
      However, I think mcrbids and Peaker are looking at capabilities the wrong way as a model, when they should look at capabilities as primitives with which to build security models. In fact, you could build the POSIX model using capabilities as building blocks. But you also get the choice to create other models.

      --
      "We mustn't be caught by surprise by our own advancing technology" -- Aldous Huxley
    14. Re:Too many ad-hoc hacks by Blakey+Rat · · Score: 1

      Oh yeah, next time I buy my grandma I'm going to tell her to use OS/400 on it. You make it sound as if OS/400 is the ideal situation in every circumstance. It's not. It's not even remotely close. Sorry.

      OS/400 may do all that handy stuff, but what good does "keep the UI responsive" do if the UI is a piece of crap? I've used IBM products, from AS/400 Client Access (the GUI tool to access all those perfect OS/400 apps) to Lotus Notes, and IBM can't write a decent UI if their life depended on it.

    15. Re:Too many ad-hoc hacks by LoztInSpace · · Score: 1

      When I fclose() a file, I have a STRONG assurance that the file has been saved and wouldn't go away if the power failed
      I'd like to see some kind of transactional model around this. I've always wanted to be able to (selectively) apply the ACID principal to objects/structures/whatever in memory so I can commit & rollback in-memory operations as well as or even combined with the database.
    16. Re:Too many ad-hoc hacks by bytesex · · Score: 1

      http://datadraw.sourceforge.net/

      Slow down cowboy ! Slashdot requires blah blah blah..

      The space below intentionally left blank.

      --
      Religion is what happens when nature strikes and groupthink goes wrong.
    17. Re:Too many ad-hoc hacks by Peaker · · Score: 1

      There is no serious overhead to persisting all memory.

      EROS proved this by benchmarking much higher performance than Linux and Windows w.r.t to all kinds of persistency.

      You say clearing RAM is desirable, when what you actually mean is that restarting a faulty program is desirable - That is possible without rebooting the entire machine, and has nothing to do with persistency.

      Your claim about passwords is simply wrong, because making everything persistent will not change what goes to disk (as passwords will already be swapped to disk and persist there), it will just mean that the swap area and file-space are not exposed as 2 differing interfaces to programs.

      If you want to avoid the password being written to disk, you can't actually do that in current OS's and you can add a feature to do that in either a persistent system and a current OS.

    18. Re:Too many ad-hoc hacks by Peaker · · Score: 1

      1) How do you know a GUI application from a non-GUI one? What about programs that are run locally, but viewed remotely, and vice versa? What constitutes a "GUI" application?

      I said User Interface, not a GUI.
      At first, I'd start by making the mouse, buttons, widgets, and definitely the or a task manager be completely responsive under any load conditions.

      Secondly, I would always prioritize low-demanding processes over high-demanding ones, so that if a process wants just 1% of the system's resources, it will get them even if another one is trying for 100%. This would make almost all processes (which really do well with just a few percentages of the resources) be responsive under all conditions.

      2) But you are allocating different types of "memory"! See Leaky Abstractions for more information on this. Your "everything is memory" model sounds nice, but lacks a few key components.... When I fclose() a file, I have a STRONG assurance that the file has been saved and wouldn't go away if the power failed. That's not the case in your "everything is memory" model...

      When you fclose() a file, your assurance that the file has been saved, is fake, because the disk controller does not even guarantee it will write the data when the OS sends it to it, and there are multiple caches on the way (except the OS one). In my "everything is memory" model, I can still ask the OS to "please get this data written to disk asap". In fact, when you work with files, you have no guarantee about the order of writes, and if a crash occurs, there is no chronological guarantee that the files aren't corrupt with regards to cross-references between the files. In a persistent model, I have a guarantee that after a crash, everything will at least be from the exact same chronological point and so cross references are not corrupt.

      3) You are either talking about a security nightmare or pixie dust. How does computer B know that it's OK to run code from computer A? See other comments on #4

      Running code, unlike what a lot of people think, is harmless (at least since the F00F bug was resolved) and there are no known CPU bugs that allow the mere running of code to be dangerous. What's dangerous is allowing the running code to ask a lot of requests from a lot of entities which may expose bugs in the many many handlers of these requests in the many entities, or in one of the many ACL lists maintained by the system. In a capability model, the code you are running has only one channel through which to ask requests, by activating a capability. If the code is given no capabilities, it is harmless. If it is given a capability to display in a window, it may only harm that window, and at worst it may take over the code that runs that window and access the few more capabilities it has (which would be access to the screen as a whole, and not much more than that).

      By the way, as part of the Programming Languages part, I believe that in the future, only safe languages should be used, so that we don't need CPU protection mechanisms and this would be a further guarantee that there's no problem running safe-language code from an untrusted entity.

      4) Capability security requires somebody to set up all those !#@!@# permissions. POSIX, by contrast, is very simple and requires little effort to maintain. Is POSIX ideal in all situations? No. But it's adequate in most circumstances without a lot of effort, and it's usually better to have a "just barely suits" possibility with a decent default than a perfect possibility with a lousy default. Perhaps that explains why your touted EROS operating system died on the vine?

      EROS didn't "die" because it never lived. It was a research project and ended as the research completed, to make way for a new research project by its project manager. It was never meant to become the next Linux or so, so its fate is not a good measure of how capabilities do.

      Your question of how to s

    19. Re:Too many ad-hoc hacks by Peaker · · Score: 1

      I didn't say it will solve all of our software woes, but it will solve most of them and software will cease to suck.

    20. Re:Too many ad-hoc hacks by Peaker · · Score: 1

      It does sound nice, I shall try OS/400 at one point if it becomes free software (if only for the persistent space).

      How does the OS/400 security model work? Is it ACL based? If so (it probably is, as that's the mainstream model) it means that the security failures I mentioned above still exist with it.

    21. Re:Too many ad-hoc hacks by Peaker · · Score: 1

      What you are saying is that my Slashdot post was not the first to expose these ideas.

      I know that :-)

      Orthogonal Persistency and Capability Systems should become the norm and mainstream, and that's basically what I'm saying (along with a few other things).

    22. Re:Too many ad-hoc hacks by Peaker · · Score: 1

      There is no need!

      You can create a fully persistent system using today's RAM and disk space, by using RAM as a cache to disk-space.

      You'll get the RAM performance like you do today (today RAM is caching file-space, and used for malloc/sbrk space - in a persistent system it will be used to access MRU disk pages).
      But: You'll get much better disk performance as data will be thrown to disk not in random file writes, but in periodic checkpoints - in which a gathering of minutes of writes is written all at once, utilizing the disk heads much more efficiently.

    23. Re:Too many ad-hoc hacks by Peaker · · Score: 1

      1. I find this reasonable, even though it is fairly complex to implement. The problem is that there isn't one resource to schedule - there are a lot of different ones that interact. The primary problem, as I see it, is the I/O capacity isn't scheduled, while CPU is. Historically, CPU was the really scarce resource. These days, memory and IO capacity is what is scarce, while CPU is generally cheap. (There are also some problems related to X windows being an application and out of memory conditions, these can be dealt with through an application hierarchy.)

      I agree it is hard. If it was easy it would probably have been done already by Linux and Windows. But I don't believe it is very hard - as allocating I/O and RAM resources in a prioritized way is not that difficult.

      2. There ARE multiple types of memory, and they behave differently. There is an 100,000 times difference in access speed between RAM and disk. For reasonable performance/stability, there is a need to distinguish these to a larger degree than is presently done. Some data structures need to be fast, some are fine with being swapped to disk, and quite a few are just cache and can be recomputed at will. It is fairly common to have caches that we are better off throwing out and recomputing when necessary than we are swapping them out and in again; this should be possible to specify. That's part one of my reason for disliking your idea.

      I think you have not understood the comparison I made to existing OS's. They already lie to you about the memory that they are allocating, and there is no way for you to actually allocate RAM or disk, as the OS will just change it at will. Since RAM and disk are already inter-changable from the app's point of view, it will be no degradation to simply expose only one memory allocation system. It is a mere simplification of today's model - not a real change of policy.
      As for not swapping in/out calculations - I agree and I thought it was my unique idea but I guess others have thought of it as well :-) Allowing for special re-calculate-able memory to be allocated (which is thrown away instead of thrown to disk) is a good idea, but does not contradict exposing a simple linear space to programs instead of both that and a file-space.

      Part two is that you go for much higher state dependence, and much less testability than presently. Serializing and re-loading reset the state of programs; this means that corruption is short lived. Not doing this can easily lead to extremely complex bugs, and extremely complex working conditions.

      If you consider that a considerable part of today's programs' complexity is in serializing/de-serializing their data, as well as a considerable amount of runtime in startup/shutdown, the question becomes whether having the serialized form of the data which might be more easily testable is worth it. If it is worth it, it can still be done in a more simple way in a persistent system - and can be done away with in many programs that don't face corruption problems. Also safe languages are slowly taking over the world, which makes the more difficult corruption types (pointer/memory management) go away, and thus make corruption easily tracable to a module.

      3. Network transparency: Computers fail as a unit. Networks fail partially. These make network transparency a fake dream: The network isn't transparent.

      I believe this to be a fallacy.
      The entities in the computing world are threads and processes, not computers. entities fail, not computers. There are various reasons that a thread or process you are talking to can fail, and all of these are encapsulated in possible failures of API's and such. Computers or links failing expose the exact same problem (from the API user's point of view) and should thus not be treated differently.
      The network is just as transparent as an in-computer link.

      I find that our problems in co

    24. Re:Too many ad-hoc hacks by ralphdaugherty · · Score: 1

      It does sound nice, I shall try OS/400 at one point if it becomes free software (if only for the persistent space).

            It would be nice, maybe some of the concepts will be tried in open software someday.

      How does the OS/400 security model work? Is it ACL based? If so (it probably is, as that's the mainstream model) it means that the security failures I mentioned above still exist with it.

            The fundamentals of user, group, and role ACL's are there in OS/400. But it does have a very impressive record as far as resisting attacks and viruses, partly due to obscurity, partly due to not having the well known Intel instruction set architecture foils to use (in fact, the hardware is abstracted from the OS by an interface layer), but certainly the object based OS architecture is the real impediment to crackers.

            Files, programs, and other mechanisms such as queues and such aren't just called objects, they are strongly typed objects rather than the universal files with different intended purposes found elsewhere. Access just isn't restricted by ACL, what you can do with access to an object is based on its type. One common example is a program isn't a file that can be modified as a file in a file system. And that applies to every object in OS/400, not just executables.

            Another big difference is what's called adopted authority. Users are only given authority to execute a high level object, such as certain menu options (a menu is an object in OS/400 like everything else) or startup programs. Then it is the programs that actually have the authority to change data, so a user doesn't have authority to access a program or file directly. Just because they can select a menu option that updates data doesn't mean they could change the data in the file if they could get to it.

            Of course root is the big bypass in all the OS'es. One thing OS/400 has is a high granularity of roles going toward root, called QSECOFR in OS/400. So there are Programmer and various Operator and Admin roles to be able to access objects across the board as needed for operations. The root QSECOFR is only used by a few people as needed to maintain the system and data.

            In general most any technique to break in to Windows and Unix/Linux doesn't work against OS/400. It would be onerous if the security were there but slowed the system to a crawl, but all this is done with a combination of ACL, typed objects, and adopted authority with fast response for thousands of concurrent users and jobs.

            So I don't think the security failures you are suggesting in mainstream ACL models are there in OS/400.

        rd

    25. Re:Too many ad-hoc hacks by Eivind+Eklund · · Score: 1

      I agree it is hard. If it was easy it would probably have been done already by Linux and Windows. But I don't believe it is very hard - as allocating I/O and RAM resources in a prioritized way is not that difficult.

      When I looked at doing this (which is almost a decade ago, so bear with me if some details of my memory fail me), I found it was very hard even to define I/O resources. The problem is that you have seeking, reading and writing, spanning several disks and several heads, and with little information being available to help you optimize, and a cache that can make it hard to measure (though I don't know of any filesystem that even try to measure.) Back in the late 70s and early 80s, it was much easier, and filesystems (e.g, UFS) were optimized to deal with the number of heads in use, and setting up cylinder groups that fit with this. These days, there are so many interactions that it seemed like any attempt to schedule would lose large amounts of I/O, as it would easily get in the way of sorting of requests in disk order.

      2. There ARE multiple types of memory, and they behave differently. There is an 100,000 times difference in access speed between RAM and disk. For reasonable performance/stability, there is a need to distinguish these to a larger degree than is presently done. Some data structures need to be fast, some are fine with being swapped to disk, and quite a few are just cache and can be recomputed at will. It is fairly common to have caches that we are better off throwing out and recomputing when necessary than we are swapping them out and in again; this should be possible to specify. That's part one of my reason for disliking your idea.

      I think you have not understood the comparison I made to existing OS's. They already lie to you about the memory that they are allocating, and there is no way for you to actually allocate RAM or disk, as the OS will just change it at will. Since RAM and disk are already inter-changable from the app's point of view, it will be no degradation to simply expose only one memory allocation system. It is a mere simplification of today's model - not a real change of policy. I think maybe you are missing some subtlety here? While the modern VM systems allocate backing store dynamically and use "everything" as cache for disk, the use of serialization lead to a very different access pattern for files and "memory". This is used for prefetching decisions (or at least it used to be used for prefetching decisions, and I assume that makes sense still), and I also seem to remember it being used for handling swap writes compared to file system writes (swap space writes could be done more or less as a Write-Anywhere, as it was losable on power failure, while FS requires more careful updates of metadata).

      And we already have the ability to work only with in-memory formats through the use of mmap() and /or coredumping+undump (undump is an utility to make a core dump executable) - it hasn't really taken off much, and I'll discuss why below.

      Part two is that you go for much higher state dependence, and much less testability than presently. Serializing and re-loading reset the state of programs; this means that corruption is short lived. Not doing this can easily lead to extremely complex bugs, and extremely complex working conditions.

      If you consider that a considerable part of today's programs' complexity is in serializing/de-serializing their data, I think maybe we should introduce a distinction here: The distinction between interfacing with different programs (including different versions of the same program) while maintaining data structure integrity, and serializing/de-serializing. Serializing and de-serializing is usually fairly trivial; it can be done in libraries, and without high amounts of checking it can be quite fast. Merging files and memory (to a larger degree than mmap() does) just force this interfacing to happen through eit

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    26. Re:Too many ad-hoc hacks by Peaker · · Score: 1

      When I looked at doing this (which is almost a decade ago, so bear with me if some details of my memory fail me), I found it was very hard even to define I/O resources. The problem is that you have seeking, reading and writing, spanning several disks and several heads, and with little information being available to help you optimize, and a cache that can make it hard to measure (though I don't know of any filesystem that even try to measure.) Back in the late 70s and early 80s, it was much easier, and filesystems (e.g, UFS) were optimized to deal with the number of heads in use, and setting up cylinder groups that fit with this. These days, there are so many interactions that it seemed like any attempt to schedule would lose large amounts of I/O, as it would easily get in the way of sorting of requests in disk order.

      Yes, it is indeed a problem with disk access. If you want to guarantee disk accessibility you have to give up some seeking efficiency. However, I believe that the low-requirement processes that are always starved by the high-requirements ones will only require a tiny bit of disk access, as they can mostly fit in RAM and do not usually span large amounts of memory.

      I think maybe you are missing some subtlety here? While the modern VM systems allocate backing store dynamically and use "everything" as cache for disk, the use of serialization lead to a very different access pattern for files and "memory". This is used for prefetching decisions (or at least it used to be used for prefetching decisions, and I assume that makes sense still), and I also seem to remember it being used for handling swap writes compared to file system writes (swap space writes could be done more or less as a Write-Anywhere, as it was losable on power failure, while FS requires more careful updates of metadata).

      The different access pattern of a typical program is for startup/shutdown (access to files) and normal operation (access to memory). This leads to the difference you talk about (careful updates of metadata). But if processes always used normal operation and only accessed memory, and a checkpointing system was careful to take snapshots frozen in time, then access to the serialized data (files) would be unnecessary. All of the serialization/de-serialization code could be discarded. Power failures would go back at most a few minutes of whole-computer time. Any process that requires a write-now can still request it from the OS. Typically that would be a database program, in which case a power failure may lead to some of its data being newer than other parts of its data, and it is its responsibility to deal with it. However, this only complicates database and few other programs as most programs don't care for or deal with guaranteeing data survival over computer crashes.
      Note that with a file system, a crash can already lead to inter-file references' corruption as you are not guaranteed the order of writes to the files, especially when multiple processes are involved.

      And we already have the ability to work only with in-memory formats through the use of mmap() and /or coredumping+undump (undump is an utility to make a core dump executable) - it hasn't really taken off much, and I'll discuss why below.

      mmap and undump are not equivalent, as they do not allow to work with persistent pointers (You cannot be guaranteed access to certain addresses when you remap the area), they still require handling file-space (opening the files and dealing with that) and in general do not simplify the interface to programs as much as a persistent linear space would.

      You didn't take the time to format the next section properly, but I think I managed to exract what you're trying to say.
      I don't think that:

      1. Managing the program's files (configuration files, as well as persistent data files)
      2. Messing around with various *nix differences in file access
      3. Choosing a proper file name
    27. Re:Too many ad-hoc hacks by doktor-hladnjak · · Score: 1
      You should really read the article I linked. From the intro,

      But, as we look to the horizon of a decade hence, we see no silver bullet. There is no single development, in either technology or in management technique, that by itself promises even one order-of-magnitude improvement in productivity, in reliability, in simplicity. In this article, I shall try to show why, by examining both the nature of the software problem and the properties of the bullets proposed.

      (my own emphasis added)

    28. Re:Too many ad-hoc hacks by Peaker · · Score: 1

      I have read it a while ago, and when I have more time I may read it again.

      Obviously the article writer is limited to the ideas and possibilities he has been exposed to or thought of, and not to those he haven't.
      Will write a more detailed response after rereading it thoroughly.

    29. Re:Too many ad-hoc hacks by Eivind+Eklund · · Score: 1
      I think maybe I have extracted a core part of our disagreement:

      The vast majority of programs really have nothing to gain by explicitly specifying the persistency of each part of their data, and even worse, accessing that data with differing primitives, constantly wasting run-time translating back and forth between representations. I tried to think of programs that do not benefit significantly from this, and failed. The problem is one of interoperability. Most programs I can think of need to interoperate with other programs, either other programs they are communicating with, or other versions of themselves, or other copies of themselves running on different computers.

      Other copies can be handled fairly generally. Other versions and other programs require some form of serialization or transformation. This require similar handling as writing file format does today.

      In the environments I work, persistency of object structures is trivially available. For a variety of reasons, primarily to do with transparency in debugging, this has turned out to be less than useful. Persisting just the stuff that's relevant to persist and reloading at restart (with a very simple mapping between the in-memory structure and storage structures) has been the best way forward.

      You think of the in/out and startup transformations as being for no gain. I think of them as being for the gain of separating different invokations of the program and the state and code of these different invokations, to minimize the world size in debugging and consistency in updating. I see this as a big, big gain for most cases.

      I'll be back with answers to larger parts, I just thought this deserved its own separate handling.

      Eivind.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
  21. Re:Ah! The great unknown... by alshithead · · Score: 5, Insightful

    "Ideas are not the product of labor."

    Respectfully, I have to disagree. Some of my best ideas have come from pondering over a problem. Pondering can be effort. It's not like daydreaming. To think about a problem and apply logic to try and come up with a resolution requires effort in many, if not most, cases.

    --
    I reserve the right to think for myself. Others' opinions are optional. Puppy on lap = typos...not illiteracy.
  22. Good programming is a boundaries problem by argoff · · Score: 4, Interesting

    One thing I've noticed about companies is that they try to treat programmers like factory workers. Expect each one to be interchangeable and jump in anywhere on the "assembly line" at any place at any time for any piece of code. However, programming takes understanding, and complex programming takes complex understanding. Even a good programmer fixing a bug may need to analyze surrounding code for several hours before changing a single line.
    Unlike most engineering projects that are completed and done, most programming is a living growing process that is constantly changed modified and improved.

    That implies that there is a need for specialisation and clear boundries, to assign "ownership" or "territory" over certain parts of code. A programmer who understands it and gets the last say on how it's changed and have clear non-arbitrary rules for changing that "territory". Like in open source projects. If you want a kernel fix, you submit it to the proper maintainers, or make your own fork, but no corporate bureaucrat comes along and micromanage how the code is merged and managed.

    1. Re:Good programming is a boundaries problem by zymurgy_cat · · Score: 2, Insightful

      Unlike most engineering projects that are completed and done, most programming is a living growing process that is constantly changed modified and improved.

      Most engineering projects (and software projects...hell, any project) are like children. They're never completed and done. Once you give birth to one, you're stuck with it for a long time....

      --
      -- Fugacity: Confusing chemists since 1908
    2. Re:Good programming is a boundaries problem by aXis100 · · Score: 1

      Unlike most engineering projects that are completed and done, most programming is a living growing process that is constantly changed modified and improved.

      I'd argue that "living" code is only because of the lack of discipline, design and QA in the first place. That's not an individual programmers fault - there are larger issues with the software community fostering the right attitudes for a quality outcome.

    3. Re:Good programming is a boundaries problem by laffer1 · · Score: 1

      Make your own fork? Trust me.. this is much harder than it sounds. Everyone just sees it as a waste of resources because we already have --insert your favorite os here--. I must say that I've found several posts quite interesting and they require more thought.

      Many free software proponents mention forks. GPL supporters often bring it up as "freedom" for the code. Well they don't want forks. Its just seen as less coders for one or two peoples ideals. Linus & co have made it very clear they don't want a forked linux kernel. GNU fans often make the BSD is dead/dying jokes in hopes people might believe them. Why have competition for linux or GNU Mach/Hurd? If you think that way, might as well use windows. If someone forks you, take it as a complement that they thought enough of your work to use it.

  23. My theory by The_Abortionist · · Score: 0, Insightful

    SO many points of failure.

    At the lowest level, there are bugs made by the programmer. There can be misunderstanding also, especially if there is cultural differences in the organisation.

    When multiple programmers are involved there are even more points of failure relating to the interface. Does the module behave as expected? Is the documentation accurate?

    At the highest level, is the design accurate enough? Do we even know exactly what we have to do? Do we have the resources or is there wishful thinking involved?

    And then, because it can take such a long time to write software, specs change during development. There is people turnover, changing customer need, chainge in direction, etc.

    The points of failure are incalculable. The thing to do is adhere to best practices and then take the estimated amount of time to develop and multiply by 2 (in some places, experience will show 3).

    And most importantly, don't lose any sleep because of this. Don't want to die at 60 of a hard attack because of software development.

    --
    Linux violates 235 Microsoft patents.
    1. Re:My theory by chawly · · Score: 0

      Don't want to die at 60 of a hard attack because of software development.

      Brilliant ! Still laughing ! You got that one right - I'm still here at 61, but care must be taken.

      --
      How many beans make five, anyhow ? ... Charles Walmsley
  24. Re:Ah! The great unknown... by kfg · · Score: 0, Troll

    Some of my best ideas have come from pondering over a problem.

    What I did not say is that thinking is easy.

    KFG

  25. Make it simple by Anonymous Coward · · Score: 0

    Surveys / SURVEY: INFORMATION TECHNOLOGY

    Make it simple
    Oct 28th 2004
    From The Economist print edition

    The next thing in technology, says Andreas Kluth, is not just big but truly huge: the conquest of complexity

    IMAGE

    “THE computer knows me as its enemy,” says John Maeda. “Everything I touch doesn’t work.” Take those “plug-and-play” devices, such as printers and digital cameras, that any personal computer (PC) allegedly recognises automatically as soon as they are plugged into an orifice called a USB port at the back of the PC. Whenever Mr Maeda plugs something in, he says, his PC sends a long and incomprehensible error message from Windows, Microsoft’s ubiquitous operating system. But he knows from bitter experience that the gist of it is no.

    At first glance, Mr Maeda’s troubles might not seem very noteworthy. Who has not watched Windows crash and reboot without provocation, downloaded endless anti-virus programs to reclaim a moribund hard disc, fiddled with cables and settings to hook up a printer, and sometimes simply given up? Yet Mr Maeda is not just any old technophobic user. He has a master’s degree in computer science and a PhD in interface design, and is currently a professor in computer design at the Massachusetts Institute of Technology (MIT). He is, in short, one of the world’s foremost computer geeks. Mr Maeda concluded that if he, of all people, cannot master the technology needed to use computers effectively, it is time to declare a crisis. So, earlier this year, he launched a new research initiative called “Simplicity” at the MIT Media Lab. Its mission is to look for ways out of today’s mess.

    Mr Maeda has plenty of sympathisers. “It is time for us to rise up with a profound demand,” declared the late Michael Dertouzos in his 2001 book, “The Unfinished Revolution”: “Make our computers simpler to use!” Donald Norman, a long-standing advocate of design simplicity, concurs. “Today’s technology is intrusive and overbearing. It leaves us with no moments of silence, with less time to ourselves, with a sense of diminished control over our lives,” he writes in his book, “The Invisible Computer”. “People are analogue, not digital; biological, not mechanical. It is time for human-centred technology, a humane technology.”

    The information-technology (IT) industry itself is long past denial. Greg Papadopoulos, chief technologist at Sun Microsystems, a maker of powerful corporate computers, says that IT today is “in a state that we should be ashamed of; it’s embarrassing.” Ray Lane, a venture capitalist at Kleiner Perkins Caufield & Byers, one of the most prominent technology financiers in Silicon Valley, explains: “Complexity is holding our industry back right now. A lot of what is bought and paid for doesn’t get implemented because of complexity. Maybe this is the industry’s biggest challenge.” Even Microsoft, which people like Mr Lane identify as a prime culprit, is apologetic. “So far, most people would say that technology has made life more complex,” concedes Chris Capossela, the boss of Microsoft’s desktop applications.

    The economic costs of IT complexity are hard to quantify but probably exorbitant. The Standish Group, a research outfit that tracks corporate IT purchases, has found that 66% of all IT projects either fail outright or take much longer to install than expected because of their complexity. Among very big IT projects—those costing over $10m apiece—98% fall short.

    Gartner, another research firm, uses other proxies for complexity. An average firm’s computer networks are down for an unplanned 175 hours a year, calcul

  26. Re:Ah! The great unknown... by SQLGuru · · Score: 4, Informative

    I take game programming classes. One of the instructors made some very good points related to innovation. His context was game wise, but since my background is business application programming, I can easily see how it applies here.

    When you innovate in a game, only make one....maybe two innovations. Otherwise, you skew so far away that you usually end up a complete failure. Applying it here: sure, keep things interesting by doing some piece new, but keep it manageable by keeping the rest of it "boring". You gain predictability while retaining "fun".

    Layne

  27. It's economics. by Anonymous Coward · · Score: 0

    The problem with software development does't involve professionalism. It involves economics. Put simply, it's a matter of companies and consumers continually expecting better results, but not always being willing to pay what it takes to get those results.

    So what we end up with are shorter deadlines than are sensible or possible to meet, all while trying to accomplish increasingly complex tasks. In order to ship a product, something will have to give. Often times this is only possible by reducing the time and effort spent on testing, or by otherwise reducing the quality and performance of the software that is being developed.

  28. Re:Ah! The great unknown... by alshithead · · Score: 2, Insightful

    "What I did not say is that thinking is easy."

    No you didn't. You said, "Ideas are not the product of labor."

    Definition of labor according to Merriam-Webster, just the first/primary definition:

    Main Entry: 1labor
    Pronunciation: 'lA-b&r
    Function: noun
    Etymology: Middle English, from Anglo-French labur, from Latin labor; perhaps akin to Latin labare to totter, labi to slip -- more at SLEEP
    1 a : expenditure of physical or mental effort especially when difficult or compulsory

    Please note: "physical or mental effort". I'm not trying to nitpick. Just disagreeing on our definition of the word "labor".

    --
    I reserve the right to think for myself. Others' opinions are optional. Puppy on lap = typos...not illiteracy.
  29. Re:Ah! The great unknown... by kfg · · Score: 0, Troll

    Just disagreeing on our definition of the word "labor".

    That's what I was doing; and within the context of a specific provided example.

    Think about it. It might take some effort.

    KFG

  30. Software is neither "hard" or "easy" by Bright+Apollo · · Score: 5, Insightful

    Implementing a good design is usually half the battle. Creating a good design is usually the other half, but in practice, a solid design is almost always the part that gets skipped. Let me bore you with a brief anecdote.

    I have a large, global project underway. User requirements are done and have been done, and we're turning those requirements into things we can code or deliver ("View a workorder", "Print asset detail", "Group revisions into single document"). Of that, we have 150 odd deliverable items, not to mention all the fit/ finish work we may have to do, and all of this barely touches on reports, security roles for users, etc.

    The reason we're going to make our date, despite the 1280 discrete requirements we need to test, is that we've taken the time to look at the requirements from a few different angles and come up with a solid design plan, before even thinking about implementation. Each piece will build on another, really hard parts are identified early, blockers and such are flagged ASAP. We know things will emerge that we didn't expect, but we've got the biggest chunks identified and working together on paper. We have the flows mapped out, exceptions and variations listed, and a user group that has to sign off on every iteration of the incremental build (we're spiraling out functions and features).

    The only thing "hard" about all of this is the incessant thinking about the details, and discipline required to focus on the un-fun part of software construction, i.e. the planning and design walkthroughs. The itch to code something already is growing, but delayed gratification means that when the time comes to actually write something, the design will almost certainly lead to a working, if not optimal, solution. We can refactor as we go, but it needs to work completely before it can work efficiently.

    I've been following Chandler off and on, somewhat through Spolsky's references to it and some stray links around the web, and sounds like design didn't go deep enough into what it'll really take to build some of the pieces.

    -BA

    1. Re:Software is neither "hard" or "easy" by Anonymous Coward · · Score: 0

      Why follow the Chandler project through some "stray links around the web" or through "Spolsky's references"? Pretty much everything OSAF does is including the design process is available for public consumption on their website (www.osafoundation.org)

    2. Re:Software is neither "hard" or "easy" by Anonymous+Brave+Guy · · Score: 1

      So basically what you're saying is, all these successful companies that use an interative approach to development have got the wrong idea, and we should all go back to the waterfall model?

      I'm not knocking the importance of maintaining a clean, flexible design. On the contrary, I agree wholeheartedly that this is something many projects fail to do and suffer for it. But you seem to be saying that it's better to work out essentially the whole design, before starting to code anything.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:Software is neither "hard" or "easy" by TrappedByMyself · · Score: 1

      The reason we're going to make our date

      So you're declaring success before writing a line of code, before building a prototype, before sitting new users in front of the screen to see if the thing is even usable?

      Good luck with that.

      --

      Help me take back Slashdot. When did 'News for Nerds' become 'FUD and Conspiracy Theories for Extremist Nutjobs'?
    4. Re:Software is neither "hard" or "easy" by Bright+Apollo · · Score: 1

      We're intending to spiral out, iterating through each module, so it isn't a waterfall. Or, maybe it's a whirlpool: as we prototype each module, we're coming in with a plan of attack on what our end results will be. We intend to -- and have already done this in some cases -- map out precisely what "magic" needs to happen. It might as basic as creating a copy of a record to show record differences to the user (approving changes by comparing before/ after versions), or stating that disparate elements can be grouped together for approval (which is a complex version of the previous requirement).

      All I'm saying is that it's not enough to say "the system must provide a means to allow a user to collate any revised objects into a group for approval". You have to go a little further and discuss or even solve how that can be done, if you're going to leverage the programmers on the project.

      -BA

    5. Re:Software is neither "hard" or "easy" by Bright+Apollo · · Score: 1

      I'm glad you picked up on that, perceptive. I put that out there to give myself the wholly-unneeded stress of hitting the date. But we *are* going to make that date.

      -BA

    6. Re:Software is neither "hard" or "easy" by tshak · · Score: 1

      No offense, but this doesn't sound like a success story in the making. First, you do not have all of the user requirements. That's the first failing assumption. You have what the user requirements look like before the users see the first release of your system. Those requirements will change. Second, you're designing a system without getting feedback from the system. Spending a short amount of time thinking about how a system should be designed is one thing. Coming up with a "solid design" up front is another. It's like trying to resolve a conflict with your wife, except that your wife is not allowed to talk. When you try to develop software on paper, you're not getting feedback from the system. The design may not make sense when you actually go to "implement" it. What we need to realize, as software developers, is that the act of writing code is an act of design in and of itself. The discipline that we lack is not that we won't sit around for months in front of white boards and try to predict the future. The discipline we lack is in writing good and well thought out designs *in code* where it really matters.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    7. Re:Software is neither "hard" or "easy" by hisstory+student · · Score: 1

      I think you make a good argument, however I think the percentages change as the project evolves. One can't point to the evolution of a successful software project and say, "It was half this and half that". I think what you're saying is that there is a process, and that process must successfully engage every level at it's optimal point in the flow. I suppose at the end of it all one could look back on the records and assign percentages. Even then there's bound to be disagreement.

      --
      Heard any good sigs lately?
    8. Re:Software is neither "hard" or "easy" by mach777 · · Score: 1

      But we *are* going to make that date.

      You don't know that. There is no way of knowing that. Use it as a mantra at project meetings sure, but realistically there is no way of knowing for sure.

      Admitting that one doesn't know about the future is pretty much all there is to it. If one can do it without loosing face, one might have enough experience to call himself a professional.

      A team can succeed by creating an environment that is prepared for change, on every level not only system design. This change always happens and it is exactly what separates the wheat from the chaff. Change and how well you can survive it is what makes or breaks deadlines.

      Having it "all figured out" is the claim of the rookie. Experienced programmers SAVE time by avoiding design that does not survive change, ie complexities. They know they will have to SPEND it later on redesign anyway. Rookies never save time for rewriting the whole thing. A rookie will never expect to since they already "got it all figured out".

    9. Re:Software is neither "hard" or "easy" by Bright+Apollo · · Score: 1

      Thanks for the reply. I think my twelve years of IT experience, and never having missed a date, elevates me past the rookie status, but I see it holds no water with you.

      -BA

    10. Re:Software is neither "hard" or "easy" by The_Wilschon · · Score: 1

      A good design is one which is general and flexible enough to easily accommodate a very large number of potential changes to the requirements. Sure, you might not be able to foresee all changes, but if you have any brains, you can usually foresee an awful lot. So, if you make a design which is general and abstract, and able to very easily be specialized to the particular requirements at hand, then you have something which is much more resilient than the "oh I'll just code something and see what happens cruft-filled junk" that I see so much of (in scientific programming), as well as something which is probably much more widely useful than what was originally envisioned.

      For instance: Suppose I am supposed to write a piece of software to test some (information) connections between hardware pieces. Well, I can start by writing code to send a particular data pattern down the wire and check to see if it is right at the other end. Then when the requirements do change, sure I haven't "wasted" any time thinking about design, and I can just do the same thing over again to write the new software to test some slightly different connection. OR, I can sit down and plan things out. This might result in writing a general connection-testing framework, and specific (and simple) modules which take care of the various pieces of actually doing the test. For instance, one module might generate the data pattern to use. Another might load that data pattern onto the sending piece of hardware. Another might read the pattern off the other end of the hardware. Another might translate the pattern that was sent into the language of the receiving hardware. Another might check the received pattern against the expected pattern. Another might take the results of such a comparison and prepare a nice little error-rate report.

      Now suppose I'm asked to send from a different piece of hardware. Instead of having a nasty monolithic design like I would produce by just going "ok, what is step 1? now what is step 2?", I've got something flexible, and all I have to do is write a new sending module and a new translating module. What I have to do is simple and clear.

      Takes a bit longer up front, but once you've got it, you've got it. And yes, this is a real-life example. I designed and coded this. At one point, my employer asked for some changes, and I came back 15 minutes later with them done. He said he expected them to take me about 3 days. And yes, he is an experienced coder himself. (he did a project just like this for the old version of this same hardware)

      So yes, a rigid, inflexible design is useless as soon as the requirements change. That means it is a poor design. But a good design is resilient and rarely actually needs to be changed unless the entire problem domain changes.

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
  31. Re:Ah! The great unknown... by Anonymous Coward · · Score: 0

    Some of my best ideas have been a product of the closest men get to feeling the pains of labor....."dropping a fat kid off at the pool" as it were.

  32. Many "software engineering" books are trash. by Anonymous Coward · · Score: 1, Insightful

    Many of the "software engineering" textbooks out there, even those written by "respected" authors, are complete trash.

    A large number of the modern books suggest UML as a solution. Anyone who has actually employed UML knows that it's virtually nothing but hype. Yes, a UML class diagram may be somewhat useful when demonstrating how existing code is structured, and a sequence diagram may prove helpful in showing the flow of messages between objects. But it's unsuitable when used for the design of a large-scale system. One you get beyond 10 or so classes, UML diagrams become too complex to work with, and are basically useless.

    The same goes for software patterns. Many do make sense on a small scale. But then the designers of systems try too hard to use patterns wherever possible, the application becomes unnecessarily complex, and failure is often the end result.

    Fred Brooks is one of the few authors who has made any real contribution. Of course, that's because he actually had years of experience working on some of the largest, most important and most widely used systems of his time. Even years after some of his writings were first published, they remain one of the most useful guides when it comes to software project management and development. So while some authors babble on about UML and patterns, we need to listen to what Brooks said. Mainly, we need to realize that the main factor is the people who are working on the software, more specifically their knowledge and experience. Solid developers will produce solid software.

    1. Re:Many "software engineering" books are trash. by Oligonicella · · Score: 2, Interesting

      Utter bullshit. I use UML for not only analysis, but design, programming and working on things in daily life. It's a matter of understanding the techniques. I've designed four cooperative wire transfer subsystems using it myself.

      "we need to listen to what Brooks said... more specifically their knowledge and experience."

      Basically what I said.

      "Solid developers will produce solid software."

      Ibid.

    2. Re:Many "software engineering" books are trash. by Anonymous Coward · · Score: 0

      I'd be interested in seeing the quality of the code you produce. Is any of your work open source?

      I don't hate UML like the other poster, but I'm not totally convinced that it's the way to go. Several of the developers where I work swear by it, and several others don't. Some projects have made use of UML at various stages of the development process, and other projects have no. From what I've seen, the developers who avoid UML tended to produce code that was simpler, and in many cases a whole lot clearer and with fewer bugs. The code from the developers who used UML seemed to be the opposite. Looking through the bug reports for our last project, which involved developers from both groups working on similar functionality, shows a lot more reports covering code written by the UML fellows.

      It's too difficult to base our analysis on such simple data. It may just be a matter of the UML guys being better at higher-level design, and poorer at coding. But then again, I see the non-UML guys putting out code that is well-architectured, as well, mainly because their implementation is often so straightforward. While the UML guys will try to work a lot of design patterns into their designs, the non-UML guys tend to use intuition.

      Unfortunately, I'm not in a position to show you any of this code so you can see for yourself what I mean.

    3. Re:Many "software engineering" books are trash. by jgrahn · · Score: 3, Interesting

      A large number of the modern books suggest UML as a solution. Anyone who has actually employed UML knows that it's virtually nothing but hype. Yes, a UML class diagram may be somewhat useful when demonstrating how existing code is structured, and a sequence diagram may prove helpful in showing the flow of messages between objects. But it's unsuitable when used for the design of a large-scale system. One you get beyond 10 or so classes, UML diagrams become too complex to work with, and are basically useless.

      Utter bullshit. I use UML for not only analysis, but design, programming and working on things in daily life. It's a matter of understanding the techniques. I've designed four cooperative wire transfer subsystems using it myself.

      I sometimes wonder if it's a questions of people who naturally see things as images, versus people who don't.

      Anyway, I'm with the grandparent. A small class or state diagram can be useful to me, but I get lost very quickly in a big or detailed one. And when I go into details, I soon find that what I want to say is easier to express in text, where I am not limited to the few languages permitted by the UML.

    4. Re:Many "software engineering" books are trash. by mrbighead · · Score: 1

      As long as there are boxes, lines and a legend that give me a good visual representation of a software systems's architecture, I'm happy. I'd rather be spending my time eating cheerios than learning about different shapes, arrows and little stick people. Alas, I find that I'm forced to learn it because our company loves complying with standards.

  33. Primary problem: programmers (this may mean you) by jvarszegi · · Score: 1

    The replies as to what the problem really is are all over the map. This shows the biggest problem facing software developers today: software developers. There's no standardization that's worth a damn in most shops or on most projects. In addition, there are many people writing code who shouldn't be-- survivors from the flush times, when plenty of secretaries and liberal arts majors made their way into the field for the easy money. Lots of these people stayed on, got undeserved respect from business people, and were viewed as experts while others lost their jobs. I think that big business thinks it's got a good chokehold on IT, finally, but they're wrong. Instead non-savvy managers have managed to promote people who are most like them. In addition, without any pressure to improve or conform to standards, most people who begin with rigorous training let themselves slide, through a lack of direction on sheer laziness. The one-programmer rule only seems to add value because the suckage of multiple lamebrains working on the same bug-riddled code, with different bad concepts, being pulled in multiple directions by cheeseheaded managers, increases exponentially.

  34. Once again... by etnu · · Score: 5, Insightful

    Why doesn't anyone complain about how hard brain surgery is? Why doesn't anyone complain about how hard building space exploration vehicles is? Why doesn't anyone complain about how hard creating a successful marketing campaign is? Software engineering is difficult because it's a complex subject that takes a combination of intelligent people and training to produce good results. Just because businesses are too stupid to realize this doesn't make the problem go away. You can't throw complex projects at untrained, stupid, incompetent people and expect them to produce quality software. You can't just invent some magic formula for software development that will work 100% of the time to maximize efficiency. Software engineering is NOT manufacturing. Accept it and move on for fuck's sake.

    1. Re:Once again... by Anonymous Coward · · Score: 0

      Why doesn't anyone complain about how hard brain surgery is?

      Interestingly, the "surgical team" was Fred Brooks' plan for how to deal with complexity.

      And no, it's a couple decades old and everybody agrees that Brooks was mostly right and his book is required reading everywhere, but I've never seen anybody use it for a commercial software project. Though I have seen several open-source projects which could be described that way -- BDFL = head surgeon, roughly.

      Maybe if we actually tried it, programming would be as successful as surgery. I sure wouldn't want to go into any surgery that had the same chance of success as the typical software project.

    2. Re:Once again... by aXis100 · · Score: 2, Interesting

      Software engineering is NOT manufacturing

      I'd argue that most software projects are far from "engineering".

      Here we are, using a construction kit (modern OO language) that is 100% predictable and designable, yet beta software and patch cycle after patch cycle are the norm. You couldn't do that when you build a sky scraper - they get it right the first time. It's the level of design, prototyping, QA and intrinsic belt-and-braces attention to detail that is missing in most software projects.

      That said, I don't think many software projects would be given enough money to achieve this anyway, because the consequences usually aren't important enough (no-one's life is on the line).

    3. Re:Once again... by toetagger1 · · Score: 1

      What you are saying fits for companies who's products are the software. However, a lot of companies out there employ a lot of programmers that develop customized applications for that business which are never meant to be sold. Often those include HR, Finance, Manufacturing, Supply Chain, or Commercial activities.

      When you run a business, you want to pursue your competitive advantage. That can be lower price, better technology, better service, or a few other areas. If you do that, you want to maximize your money on the areas that will help you in your area of advantage, and minimize it in the others. So if IT helps your companies competitive advantage, you should have a lot of funding for a lot of smart people. If it is not, you should find the cheapest way possible to do what's necessary.

      If you look at a company like Google/IBM/SAP/Oracle its obvious that their product requires smart IT people, and those companies should invest a lot in them. But the same applies for Toyota, because IT can simplify and LEAN processes that other professions can't.

      Compare that to a retail store, restaurant chain, or a cement plant. It's not that common to have IT play the critical X to help your company achieve that competitive advantage, and that's where you find all those managers that are looking for IT folks that are cheap and can get done what's necessary. As a result, you don't always see top of the line quality. I claim this is by choice, not by coincidence.

      --
      who | grep -i blond | date cd ~; unzip; touch; strip; finger; mount; gasp; yes; uptime; umount; sleep
    4. Re:Once again... by kestasjk · · Score: 3, Interesting
      The simple fact is there are no analogies for software development, software, or the software business.

      This thread is full of analogy after analogy.
      • Software dev isn't building dev; the building can't be used incomplete, the building won't have to be changed, the building doesn't have to inter-operate with and depend on other buildings.
      • Software dev isn't like engineering cars or spacecraft; there is no finished product in software, and again you can use software even when incomplete.
      • Selling software isn't like selling cars; cars can't be copied
      • Selling software isn't like selling music/books/any other IP; other forms of IP are usually only used once, software is the only usable system that is entirely IP.

      I think if you want to have a discussion amongst people who develop a software you have to ditch the analogies, because none apply. The reasons software development takes longer that you might think, or the reasons software is difficult to create, sometimes doesn't give the expected return, sometimes is buggy, etc, doesn't have anything to do with cars or buildings or spacecraft.
      --
      // MD_Update(&m,buf,j);
    5. Re:Once again... by etnu · · Score: 1

      Then those companies should ACCEPT that they're getting inferior results, and shut up about it. They don't complain that the timing belts only last 5 years, do they? Of course not. They know that they're only there to fulfill some basic function and are replaceable. ACCEPT the bugs, ACCEPT the errors, ACCEPT the low performance, or else pay the piper, hire better people, and shut up! You aren't going to get better results unless you hire better people, period. Any company that places price as the most important factor in an IT project is going to have a lower quality result than a company that places results as the number one priority. It is IMPOSSIBLE to get the best results without hiring the best people you can find. The better the people, the better the results. The real irony of the people who just want a "low cost" solution is that 9 times out of 10 they resort to hiring a consulting firm like IBM that charges them 10 times what it would have cost to do it in house, and with lower quality results.

    6. Re:Once again... by Iamthefallen · · Score: 1

      You couldn't do that when you build a sky scraper - they get it right the first time.

      I'm sure it took quite a few tries before a basic design pattern like the arched bridge or doorway was reliable.

      The difference is that construction has thousands of years of experience to draw from, we're working with less than 50. The long experience of the construction industry also allowed them to codify requirements to be applied to every single new construction.
      The various building codes are very large and complex, while we developers have something mentioned in passing in a meeting.

      --
      Wax-Museum Fire Results In Hundreds Of New Danny DeVito Statues
    7. Re:Once again... by aXis100 · · Score: 1

      I agree with everything you've said, but my point still stands. The hard thing about software is the mentality and discipline of the programmers/project teams, which other industries have been able to master.

    8. Re:Once again... by Anonymous Coward · · Score: 0

      Software dev isn't building dev; the building can't be used incomplete, the building won't have to be changed, the building doesn't have to inter-operate with and depend on other buildings.
      The DSL will be installed two weeks from now, you need to have wiring that works with the electricity network and you better hope that skyscraper next door isn't going to fall on your house.

      Software dev isn't like engineering cars or spacecraft; there is no finished product in software, and again you can use software even when incomplete.
      There are no finished cars either, just ones that get the job done. And you can use a car even when it doesn't have the backseat installed.

      Selling software isn't like selling cars; cars can't be copied
      Cars are copied in factories. That's what mass manufacturing is all about. Information is just a lot easier to mass manufacture (i.e. copy.)
    9. Re:Once again... by abb3w · · Score: 1

      Why doesn't anyone complain...

      Because there aren't a dozen tested, proven ways that can easily make things a lot better in those areas. Admittedly, using all dozen candidates in CS on one project would be a certain disaster; but using any one would yield a better product. Instead, few places use any of them.

      There may not be a best way, but there sure as hell are a lot of better ones.

      --
      //Information does not want to be free; it wants to breed.
    10. Re:Once again... by baffo · · Score: 1

      The building will have to be changed, rest assured, and this is why contemporary buildings are not done in solid granite, but rather distinguish between an untouchable structural framework, and a very flexible partition system (drywall, glass, metal) that can be moved around.

      The building of course has to interoperate with other buildings (the underground parking lot, the mall next door, the convenience store on the corner), and of course it also has to work in a complex network of streets, power lines, data connections, zoning laws etc. etc.

      Don't think that everything outside software is easy.

      --
      Estamos como estamos porquè somos como somos.
    11. Re:Once again... by Anonymous Coward · · Score: 0

      Actually, software is a lot like music. It can be copied, protected, or given away free of charge.

  35. Structure. by azav · · Score: 1

    Even dealing with a high level language like that in Adobe's Director, there are too many unknowns and edge cases and it is not painfully clear just how everything plugs together. Building a structure for doing all the tasks you need to accomplish is also paramount. As I said, "The structure allows you the luxiry to focus on the details". Build the structure.

    Cheers

    --
    - Zav - Imagine a Beowulf cluster of insensitive clods...
    1. Re:Structure. by Anonymous Coward · · Score: 0

      I don't know whether to mod you funny or retarded!

      Well I can't mod this topic anymore anyway so I don't have to choose.

  36. And unlike programmers, you're held accountable by Anonymous Coward · · Score: 0

    That's another reason.

    If an architect designs a building that falls down, he's done.

    But there's no accountability in writing software. It's going to be interesting watching what happens when accountability starts being applied to programmers. I can hear the whining already as the incompetents get forced into flipping burgers: "But I'm not incompetent, I just can't write code fast."

    1. Re:And unlike programmers, you're held accountable by MindStalker · · Score: 2, Interesting

      Well another problem is in building a house there is a definate line draw between architect and contractor/builder. You generally know whos fault it is when something goes wrong with a building. With software you often have part time contractors who think they are architects, and noone really knows better.

    2. Re:And unlike programmers, you're held accountable by MindStalker · · Score: 1

      Also the people buying the job don't know if they are buying a deck (something that can be done without an arhitect) Or a skyscraper.

    3. Re:And unlike programmers, you're held accountable by arevos · · Score: 1

      If an architect designs a building that falls down, he's done. But there's no accountability in writing software. It's going to be interesting watching what happens when accountability starts being applied to programmers. I can hear the whining already as the incompetents get forced into flipping burgers: "But I'm not incompetent, I just can't write code fast." I'm cuious how you would legally differentiate between code posted up on the web in the public domain, and a multi-million dollar bespoke software project.
    4. Re:And unlike programmers, you're held accountable by ralphdaugherty · · Score: 1

      I'm cuious how you would legally differentiate between code posted up on the web in the public domain, and a multi-million dollar bespoke software project.

            by not licensing "as is" and actually taking responsibility for the ensuing results. But I don't think I've ever seen it done.

        rd

  37. Primary problem: Playing by the rules. by Anonymous Coward · · Score: 1, Informative

    Here's a book I recommend anyone contemplating "why is software hard" should read.

  38. Software Engineering is such a young discipline by Anonymous Coward · · Score: 1, Interesting

    People love to ask why we can't build software like we build bridges. Well, we've been building bridges for what? Several thousand years now? I bet if we look back at the first 50 years of bridge building (which is about how long we've been building software, give or take) we'd see similar mistakes being made to how we are trying to build software. In a thousand years or so, I'm sure we'll have enough accumulated knowledge of how to build software that these silly questions of why we can't build software easily now will seem childish at best.

    1. Re:Software Engineering is such a young discipline by arminw · · Score: 1

      ....People love to ask why we can't build software like we build bridges....

      There are accurate, PREDICTIVE mathematical equations and methodologies for building bridges and other objects. These procedures are ultimately based on the laws of physics over which humans have no control. Software is an immaterial product of mind for which there are no precise formulas that can validate a give design code or procedure, especially if it is at all complicated. The only known way to validate software is educated trial and error called testing. Bridges are not built and then tested to see how heavy a load they can bear. The engineers have calculated that and other bridge characteristics ahead of time and KNOW for sure that their bridge will withstand a certain load. Sometimes of course they still make mistakes. Making good software is more of an art, like music or poetry, especially if the software must interact in any way with the minds and thinking of people. For example, unlike the weight bearing capability of a bridge or the stopping distance of a car, there is nothing intrinsically right or wrong in human interface design. There is no way to describe beauty and functionality of a program in objective mathematical terms. Software is classified as and protected as "Intellectual Property" and is fundamentally different than things made from matter. Software as such is not subject to the laws of physics. Unlike matter, it can be transmitted at the speed of light and copied multiple times. It stands to reason then that software cannot be and is not made by the same rules and processes as bridges and other engineered physical things. Making good software isn't necessarily "hard" but very much different from building bridges. It is hard in the same sense that writing a Beethoven symphony or painting a Mona Lisa is hard.

      --
      All theory is gray
    2. Re:Software Engineering is such a young discipline by Johann+Lau · · Score: 1

      Software is [..] fundamentally different than things made from matter.
      Software is made from matter/energy.. or do you think electrical currents are just ideas without any substance? How do you suppose that integrated circuits work? There is no fundamental difference between a light switch and even the most complex software. Maybe you're confusing software in theory with the actual software that is running on an actual processor.
    3. Re:Software Engineering is such a young discipline by Mikey1983 · · Score: 1

      I bet if we look back at the first 50 years of bridge building (which is about how long we've been building software, give or take) we'd see similar mistakes being made to how we are trying to build software.
      Absolutely, but not even that far back; only just over 50 years ago there was the Tacoma bridge disaster http://en.wikipedia.org/wiki/Tacoma_Narrows_Bridge

      I've given up trying to think of an anecdote comparing the Tacoma Narrows to a deployment environment. There has to be someone who can finish this post for me?

      Anecdote or not, other engineering disciplines still have teething problems centuries down the line. Of course, software engineering isn't helped by the fact that so many people masquerade as software 'engineers' when in fact they are completely unqualified and should be thought of as equivalent to the bridge builder's labourer. With the software engineer being the architect.
      --
      Mike
    4. Re:Software Engineering is such a young discipline by arminw · · Score: 1

      ...Maybe you're confusing software in theory with the actual software.....

      Software requires hardware, but specific software doesn't necessarily require specific hardware. Hardware itself can be simulated with software. My PPC Mac can run Windows and its apps, which is written for an entirely different kind of processor. There are a huge number of hardware devices that can store and transmit the identical software. Software, as such, has no mass, is invsisble and can travel at the speed of light. We try to make hardware as much the same as possible. Yet a standard HD we make can carry Windows, OSX, Linux and who knows what. One digital bit alone is indistinguishable from another. It is their arrangement into pattern that constitutes software or information. The letters of an alphabet carry information by their sequences.

      This holds true also in biological systems. All the atoms in your body are individually the same. The DNA molecules as such, of your DNA, are exactly the same as mine. It is the codes carried by their ARRANGEMENT that determines our physical construction. The thoughts, emotions in your brain are distinct from the brain itself. Mind and brain are distinct, but mind requires brain and the rest of your body-hardware to interact with the physical world.

      Very much in practice, software, information is non-physical although it has and requires physical expression. It is this non-physical nature of software and information which makes it necessary to use different design methodologies than for physical stuff. This is also why there is a different body of law dealing with INTELLECTUAL property, as distinct from physical. Nothing theoretical, but practical everyday life.

      --
      All theory is gray
  39. Re:Make it simply contradictory by Oligonicella · · Score: 1

    Let's see: the idea is that technology is hostile and hard for humans and the conclusion is that a decade from now everyone with either be digital natives who have no problems or digital immigrants who are learning. Kind'a contradictory.

  40. Programming != Software Engineering by Anonymous Coward · · Score: 0

    There is a reason why software takes so long to complete, and another why the 'state of the art' is so damn bad.

    Software is an art, but the development of Working software is not, it's an Engineering Science. Software that works, correctly is possible to build, if ones follows engineering principles. Analysis, careful design, and testing at every step in the process.

    Software in itself does not fail, it is the process behind the software that causes the software to fail. Poor testing, poor requirements == poor software. A weak link in any of these, and you have shit instead of software.

    There is a reason why software engineering (here in Canada) is being taught, it's to correct the weakest link in the chain, the developer. This is the main differnce between a simple programmer (code monkey) and a software engineer. If one applies the correct engineering principles to everything, the quality certainly improves. It took 50 years for engineering to become what it is today, and still structures fail. There is a difference however, in how these failures are treated, and what analysis is done before even the first concrete is poured.

    It might take another 50 years before the distinction between a simple programmer, and a software engineer is made, but progress marches on.

    1. Re:Programming != Software Engineering by onkelonkel · · Score: 2, Funny

      Hey wait. I'm a software Engineer too. It says so right here on my wall. M C S E! The "E" stands for Engineer. So there.

      /sarcasm

      --
      None of them can see the clouds; The polished wings don't care.
    2. Re:Programming != Software Engineering by Anonymous Coward · · Score: 0

      For the record MCSE has nothing to do with software. Yes the E does stand for engineer, but the S does not stand for software. The S stands Systems, and MCSE's are primarilly concerned with networking and hardware. So, not only are you not funny, you are just plain wrong.

  41. To engineer is human... by Anonymous Coward · · Score: 0

    "One thing I've noticed about companies is that they try to treat programmers like factory workers. "

    Software Factories

    1. Re:To engineer is human... by Anonymous Coward · · Score: 0

      Do you have an opinion on the book?

    2. Re:To engineer is human... by Anonymous Coward · · Score: 0

      An interesting book in a "make you think" sort of way. As a matter of practicality, it has some issues.

  42. Programming is easy by Anonymous Coward · · Score: 0

    But a single lazy or incompetent programmer can make the whole thing impossible.

    I'm working on a project now, there are 2 people in a team of 60 that have this problem, and as a result the whole project is designed around what they can't/won't do.

  43. Re:Ah! The great unknown... by alshithead · · Score: 3, Insightful

    "Just disagreeing on our definition of the word "labor".

    That's what I was doing; and within the context of a specific provided example.

    Think about it. It might take some effort."

    Okay troll, right. I've put some effort into it and I'm still clueless. Are you talking about "Ideas may come in a flash, or evade forever."? If so, I consider that a partial truism. Ideas also come about from a slow, plodding, methodical effort. Your generalization is half-assed. If you've got a point to make, please do so. You haven't stated how you disagree with my (and the general use) definition of "labor" and you certainly haven't clearly provided your interpretation of the context involved in the "specific provided example".

    --
    I reserve the right to think for myself. Others' opinions are optional. Puppy on lap = typos...not illiteracy.
  44. Re:Ah! The great unknown... by smaddox · · Score: 1

    So thats why all the games these days are just rehashes of old games with one or two new features.

  45. Why is software hard? by iminplaya · · Score: 1

    Licensing.

    EOF

    --
    What?
  46. Re:Ah! The great unknown... by kfg · · Score: 0, Troll

    Are you talking about "Ideas may come in a flash, or evade forever."?

    Which is the clue that I'm not talking about thinking.

    If you've got a point to make, please do so.

    Think.

    KFG

  47. Re:Ah! The great unknown... by iminplaya · · Score: 2, Insightful

    If I cut a my way through virgin jungle then those who follow have a path.

    And copyright puts in the toll booth.

    --
    What?
  48. Re:Ah! The great unknown... by ComputerSlicer23 · · Score: 4, Insightful

    I believe his point isn't that you're not doing work, but rather that scheduling pondering is impossible. Otherwise give me a fairly firm estimate of when you will either prove P = NP, or that you can prove that P < NP. Logical deduction isn't precisely the same as "resolving the unknown". One doesn't provide a time table for when the Twin Prime conjecture will be solved. I can apply logic deduction to lots of problems, but I can't necessarily provide a firm estimate of when I'll find the solution to a problem.

    Any time you provide an estimate of the time it will take to do anything in "problem solving", you are using statistical conjecture about how long you think it should taken given that you've solved other similar issues. How long will it take me to resolve a logic puzzle. How long will it take to construct a proof to show something? You think logically on those, but you don't provide a schedule. If you tell me, I'm going to give you 30 different distance, rate, time story problems that are geared for a high school freshmen, I can tell you that I'll be done in about an hour. If you tell me that you'd like me to prove Fermat's last theorem without using reference material. I know it's true, and I know that I can't provide a schedule for it. It's highly unlikely that if I took the rest of my life I couldn't do it. Both require deduction and logical thought. One is an entirely different scale then the other.

    When working in the unknown, you can't provide a schedule. Otherwise, you'd be working either in the known, or very close to the edge of known.

    Kirby
  49. Re:Ah! The great unknown... by DDLKermit007 · · Score: 1

    Hah, gaming programing classes. You won't find one person thats important in the industry that's taken those (grunt-work is ok for allot now I guess). As for your instructors words, that's the EA method right there. You want to be part of that? Games that fail, fail for a number of reasons that aren't because they did somethings that were innovative. Poor implementation yes, but thats not because they did too many new & interesting things. If you poorly implement an idea your going to fail (or at least have a VERY hard time) no matter what.

  50. Building with atoms... by Anonymous Coward · · Score: 0

    And we are building the house with molecules and atoms. Even with code libraries it isn't as if one can order a window in a standard size, an 8 foot 2 by 4, or pvc pipe.

    Programming is *currently* at a much lower level than construction. It is like saying: "Well, we need some pipe here, so lets find some polyvinyl chloride (or worse, how do we make polyvinal chloride, lets get a chem e and the chemicals and make it) and the tools needed to heat it and shape it into pipe. And we need some wood, so lets go grow a tree, cut it down and mill it." The tree and the polyvinyl chloride are about the best level of APIs, libraries etc. And the code between is at the atom/molecule level.

    And then there is the issue of the foundation of the "house" varying by the OS, compiler etc all in very slight ways.

    CS/Comp Engineering is making progress, but it is highly complex and as if we were creating the construction industry, but starting it from the basic building blocks of chemsitry and physics level.

    1. Re:Building with atoms... by MindStalker · · Score: 1

      Well, in Rome this is essentially what they did. They invented a high quality of concrete as well as other building technologies we take for granted today. Imagine the frustration of a builder in those days. Though I'm sure they were atleast appreciated..

    2. Re:Building with atoms... by dangitman · · Score: 2, Funny

      Even with code libraries it isn't as if one can order a window in a standard size, an 8 foot 2 by 4, or pvc pipe.

      That can't be true. How can there be an internet if you can't order more tubes?

      --
      ... and then they built the supercollider.
    3. Re:Building with atoms... by GileadGreene · · Score: 1

      Even with code libraries it isn't as if one can order a window in a standard size, an 8 foot 2 by 4, or pvc pipe.
      But I can order (just from the C standard library) a generic quicksort implementation, and IEEE floating-point math. Better than having to implement all that stuff from scratch every time. Not to mention the fact that the C language itself embodies prebuilt constructs like for- and while-loops, switch-case statements, and other "standard components" of structured programming. Or that you can readily buy or download C libraries to do all sorts of other useful tasks. The "standard library" for Java includes implementations of various classic dynamic data structures, implementations of fairly standard compression algorithms (zip), and a variety of other goodies.

      It is like saying: "Well, we need some pipe here, so lets find some polyvinyl chloride (or worse, how do we make polyvinal chloride, lets get a chem e and the chemicals and make it) and the tools needed to heat it and shape it into pipe. And we need some wood, so lets go grow a tree, cut it down and mill it." The tree and the polyvinyl chloride are about the best level of APIs, libraries etc. And the code between is at the atom/molecule level.
      Hardly. Few projects are built entirely from raw assembler (atoms and molecules) these days. Most leverage, at minimum, a high-level language of some description, and probably an associated standard library. The combination of which provides the equivalent of raw materials like beams and pipes. Depending on the frameworks, libraries, and applications you're building upon, modern application development can be more like assembling prefab walls and roofs than assembling molecules - building a webapp with Ruby on Rails leverages the Rails framework, Ruby itself, existing database software, and existing web server software. All highly complex "building materials" that provide huge amounts of functionality, none of which you have to build from scratch.

      And then there is the issue of the foundation of the "house" varying by the OS, compiler etc all in very slight ways.
      Right. Because every house is built on perfectly flat ground, with an identical mineral composition, water content, and climate to the location of every other house. No problems with changing environments there at all. If only the software industry had it that easy...

      CS/Comp Engineering is making progress, but it is highly complex and as if we were creating the construction industry, but starting it from the basic building blocks of chemsitry(sic) and physics level.
      Again, hardly. Software development is certainly less mature than the construction industry, but it's nowhere near as primitive as you are trying to make out. I think you are overstating the complexity of software development, and underestimating just how complex design tasks in other disciplines are (have you ever actually looked at how complex the design of, say, a modern aircraft actually is?).
  51. One reason by Bluesman · · Score: 1

    I think that possibly one reason that software isn't getting better is that hardware hasn't caught up to software in terms of abstraction.

    Why is there a hardware stack with special instructions for supporting pushing and popping data onto it? It's not absolutely necessary.

    Why are there certain data types like int, float, etc?

    Why is there hardware supported virtual memory? Didn't that start as software? Why didn't it stay that way?

    It's because these are extremely useful abstractions over bits. The hardware could just move bits around, but we have stacks and data types to support the fast execution of C-style programs and the UNIX process model.

    Herein lies the problem. Until hardware supports more abstractions than just C-style data types and functions, we'll always be coding to that level.

    Hardware has been getting faster and faster in terms of raw speed, but in terms of features, it's been stagnant for decades.

    How nice would it be to be to have hardware supported garbage collection? This would solve a huge number of problems in the software world.

    Sure, you can use high-level languages to get similar results, but there's no unifying architecture that lets them inter-operate easily.

    I think that things will get better once manufacturers start to look at other ways than raw speed to differentiate themselves.

    --
    If moderation could change anything, it would be illegal.
    1. Re:One reason by jvarszegi · · Score: 1

      Sorry, but I think your ideas are horribly misguided. Software isn't poorly programmed because hardware hasn't improved to the point where good hardware is supportable. In fact, I believe the processing power to be permanently solved, at least for business applications. Even most scientific programming can be parallelized and distributed. Meanwhile, the average user's home machine has enough programming power to support running just about any software they could possibly need. Here the hard-core gamers may disagree, but the fact is that most new laptops today have enough programming power to be useful for at least a decade. Word processing, programming, Internet use, media viewing, etc. etc. etc. just don't take that much power. This is a big problem facing both hardware and OS vendors today. You obviously haven't programmed in many languages if you think that the most they offer is C-style data types and functions. You claim that hardware-supported garbage collection would solve a "huge number" of programming problems, when all it would do is speed up one phase of the object life cycle. Users of correctly-programmed software would realize zero improvement in their experience from this, and neither would developers. Garbage collection is already transparent in modern OO languages.

    2. Re:One reason by Alioth · · Score: 1

      I don't think you really understand what the hardware does.

      The software is there to provide the abstractions (if you did it all in the hardware, you'd lose a tremendous amount of flexability to obtain the right tool for the right job). I don't know why you're complaining about hardware MMU - this is precisely the type of abstraction you then go on to say you want! (Compare the stability of a platform with a hardware MMU versus a software MMU - like a MC68000 based Mac with a VAXstation built in the same time period, and you'll see why the hardware MMU is a good thing).

      Types like ints, floats etc. are language features. You can quite happily design a language that doesn't bother with them (such as Perl) since you're using the language to provide the abstraction. It's only if you need to get close to the metal that you care, and when writing business apps, generally you'll want to avoid this. There is no reason to use a language which you have to decide between int/float if you don't want to.

    3. Re:One reason by rbarreira · · Score: 1

      Here the hard-core gamers may disagree, but the fact is that most new laptops today have enough programming power to be useful for at least a decade.
      I think that could be true, but won't because most new software doesn't use the hardware efficiently. If you give a lousy programmer a doubly faster CPU today, his next program will be twice as inefficient to compensate...
      --

      The AACS key is NOT 0xF606EEFD628B1CA427BEA93A9CA9773F
    4. Re:One reason by jvarszegi · · Score: 1

      Yes, so you agree with me. We should not advocate hardware efficiency to counteract poor programming.

    5. Re:One reason by Blakey+Rat · · Score: 1

      Why are there certain data types like int, float, etc?

      That's actually a language feature. Some languages, like ECMA-script/Javascript/ActionScript/whatever other names the same language goes by basically has no variable types. Or, more specifically, the variable type is the type of whatever the last thing you stuck into that variable is.

      JS variables are often defined as empty strings (var test = '') even if you know they're going to later contain Objects, or Floats, or whatever.

  52. No Silver Bullet by KillerCow · · Score: 4, Informative

    This question was asked and answered in 1986. Why is it on Slashdot as if it was a new idea every two months?

    No Silver Bullet: Essence and Accidents of Software Engineering

    1. Re:No Silver Bullet by Canthros · · Score: 1

      The Mythical Man Month is over thirty years old. There are still many, many people in the software biz that have never read it--or heard of it.

      --
      Canthros
    2. Re:No Silver Bullet by ravenlock · · Score: 1

      And the few of those that both have read it and have the authority to act on it fail to get the message.

  53. Too many sweet-nothings. by Anonymous Coward · · Score: 0

    "Yes, I am an operating-systems geek. How'd you know?"

    The sweet way you said everything.

  54. Because people forget experience by Beryllium+Sphere(tm) · · Score: 3, Informative

    Fred Brooks had much the same material in _The Mythical Man-Month_: communication overhead spirals out of control in large groups, project scope creeps out to infinity without a budget, overconfident people try to do too much and fail, it's impossible to know what the customer wants and (in a new area) even what works until you've built something and watched how it fails, only make change to known-good baselines, etc.

    This author had to discover Fred Brooks after he'd started a career of big projects. TMM should have been in his school curriculum.

  55. Re:Ah! The great unknown... by alshithead · · Score: 1

    Are you talking about "Ideas may come in a flash, or evade forever."?

    "Which is the clue that I'm not talking about thinking."

    If you've got a point to make, please do so.

    "Think."

    Yup, I'm still clueless. Are you talking about a "flash of inspiration"? If so, doesn't some prior thought have to have gone into the problem? No one has a flash of inspiration without having put the thought into identifying a problem or goal. If so, you still haven't stated how that is not labor. I've already put way too much LABOR into trying to decipher your ramblings. I'll reiterate, if you've got a point to make, do so...without obfuscation.

    --
    I reserve the right to think for myself. Others' opinions are optional. Puppy on lap = typos...not illiteracy.
  56. Re:Ah! The great unknown... by SQLGuru · · Score: 4, Interesting

    Actually, every instructor I've had works in the industry. Not *DID WORK*....but *WORKS*. Classes are at night. It's in Austin, so there are plenty of studios to pull from. I've had instructors that have worked on games from all eras and genres. Some of the companies that represents: Sony and SOE, Midway, NCSoft, and Microsoft. Plenty who have started their own studios after having worked at bigger ones, too.

    http://www.austincc.edu/techcert/Video_Games.html

    It's not a degree program (yet), but I'm not too worried about that since I already have a CS degree. For me, it's more about having fun, learning some new stuff, and making good contacts for when I'm ready to jump into the industry.

    Check out the list of names on the Advisory Board and the list of Instructors. There are some influential names on that list.

    Layne

  57. Re:Ah! The great unknown... by kfg · · Score: 0, Troll

    I'll reiterate, if you've got a point to make, do so...without obfuscation.

    No.

    KFG

  58. A Simple Test by Anonymous Coward · · Score: 0

    Before I listen to another word from someone who complains about what a mess computers are, I want to know: "Show me your desktop".

    Running Windows? There's your problem. NEXT!

  59. premier league by Anne+Thwacks · · Score: 1

    Everybody knows some footballers are worth a million dollars and others are not worth a fig, but somehow hardly anyone realises that some programmers are worth a million dollars but with some others it would be worth a million dollars to get shot them (see the daily wtf for details).

    --
    Sent from my ASR33 using ASCII
  60. Re:Make it simply contradictory by Anonymous Coward · · Score: 0

    No, dumbass. The idea is that within the next ten years, technology will become much more accessible and integrated into our lives, because companies are already beginning to realize there's a world beyond those of you autistic little shits who demand technology be obtuse and difficult to use.

  61. Wrong! by Monsieur_F · · Score: 1

    The title is nonsensical.

    Hardware is hard, but software is soft !

    --
    McCartney fans pay bus tickets. [...] Lennon fans too, with discretion.
    1. Re:Wrong! by iggymanz · · Score: 1

      on a woman's chest, firmware makes my soft wares hard

  62. Re:Ah! The great unknown... by Evil+Pete · · Score: 3, Insightful

    I read somewhere that in science fiction writing this is called "The Tooth Fairy Principle". Don't introduce more than one exotic technology or idea. I immediately realised that it applied even more strongly to software development. New areas represent areas of high risk, adding even a few to a project can change the risk from moderate to very high. I've participated in a few projects who broke this principle ... as usual commenting on the risk that this implied only made me sound like a Cassandra when eventually the prediction bore fruit.

    However, the major reasons I see for software projects becoming late are: clients repeatedly wanting to change design after the design phase (in one surreal case we had a client change a fundamental design issue 24 hours before going live!), poor resource allocation (a very large subject), management saying yes to unrealistic deadlines, bleeding edge technology (Tooth Fairy Principle - high buzzword compliance).

    --
    Bitter and proud of it.
  63. Re:Ah! The great unknown... by alshithead · · Score: 1

    I'll reiterate, if you've got a point to make, do so...without obfuscation.

    "No."

    Hmmm. I could take that several different ways. How about this, I'll take it in the least negative way possible and assume that you have as good or even better sense of humor than I do. That being said, let me know if you're ever in Charlotte NC and I'll buy you a beer.

    almann@caro(obfuscation)lina.rr.c(obfuscation)om

    --
    I reserve the right to think for myself. Others' opinions are optional. Puppy on lap = typos...not illiteracy.
  64. One reason-Tolkien Garbage Collection. by Anonymous Coward · · Score: 0

    "Why is there a hardware stack with special instructions for supporting pushing and popping data onto it? It's not absolutely necessary."

    Because the FIFO is a general purpose idea.

    "Why are there certain data types like int, float, etc?"

    Math is useful.

    "Why is there hardware supported virtual memory? Didn't that start as software? Why didn't it stay that way?"

    Speeding is nice.

    "Herein lies the problem. Until hardware supports more abstractions than just C-style data types and functions, we'll always be coding to that level."

    Which abstractions?

    "How nice would it be to be to have hardware supported garbage collection? This would solve a huge number of problems in the software world."

    Ta da!

    "Sure, you can use high-level languages to get similar results, but there's no unifying architecture that lets them inter-operate easily."

    AST

  65. No one else has done it before? by Aokubidaikon · · Score: 1

    But if software is at all interesting, it's because no one else has done it before.

    Sounds like one of my regular cooking sessions ;)

  66. Re:Ah! The great unknown... by Giometrix · · Score: 1

    Out of curiosity, how do you find the jump from business applications development to game programming (even if you're doing it just for fun).

    --
    Download free e-books, lectures, and tutorials at bookgoldmine.com
  67. Re:Ah! The great unknown... by kfg · · Score: 1

    . . .let me know if you're ever in Charlotte NC and I'll buy you a beer.

    Help! Help! He's trying to kill me off!

    KFG

  68. Not true. by jd · · Score: 1

    Software isn't hard, and neither are brains. They are both soft and squishy.

    --
    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)
  69. Response to point 2 by Nicolay77 · · Score: 1

    I like the general idea. In C you have the "static" keywork that makes a variable keep their values between calls of a function.
    I would not propose an "always persistent" memory, because too many calculations are temporary, but a "persistent" keyword in the most used programming language would be a very nice thing.
    However, there is the entire databases thing, they use another paradigm that should be taken into account.

    --
    We are Turing O-Machines. The Oracle is out there.
    1. Re:Response to point 2 by Peaker · · Score: 1

      I would not propose an "always persistent" memory, because too many calculations are temporary
      These temporary calculations are already persisted in many cases into the swap area. If they are overwritten in RAM before going to swap, they would be overwritten in RAM before being persisted by a checkpoint in an all-persistent system as well.

      Everything-is-persistent does not mean that every write to RAM is a write to disk, that is a naive outlook. It only means that:
      1. the model exposed to programs is simpler (64-bit or 128-bit memory space, rather than a 64-bit memory space + open/read/write file-space)
      2. after a crash you have a guarantee that all data comes from the same chronological point
      3. the disk can be utilized far better because data is written back to the disk in a sweep which utilizes the disk heads more efficiently
  70. My former boss had a comeback to that one by Anonymous Coward · · Score: 0

    Mod me down for this but this is a true story...

    After telling the project manager who was going to hire more programmers to speed thing up his response was:

    "well, we're going to try fucking her 9 times to speed things up"

    The moral of the story is that the project was 3 years late and i went to work for a competitor.

  71. Re:Software is hard AND there's lots of incompeten by dvNull · · Score: 1

    It is not just the developers actually. On quite a few occasions, I have witnessed project managers not doing their job properly and allowing feature creep at the 11th hour.

  72. Re:Ah! The great unknown... by alshithead · · Score: 1

    ". . .let me know if you're ever in Charlotte NC and I'll buy you a beer.

    Help! Help! He's trying to kill me off!" :) If I was trying to kill you off I would never have offered to buy you a beer! I'd have offered you a kool-aid...

    --
    I reserve the right to think for myself. Others' opinions are optional. Puppy on lap = typos...not illiteracy.
  73. Re:Ah! The great unknown... by SQLGuru · · Score: 4, Informative

    Daunting at first. But once you get some instruction, it is actually a whole lot easier than it seems. I've even learned to make 3D models. Another thing that once you find out how to do it right, it's really pretty easy.

    In fact, I think that some of my business experience helps me more than others in the program. I have a better feel for structure within a process than most of them. Scope / Requirements / Design / Code / Test translates into the game world as Pitch / Game Design / Technical Design / Code / Test (with Art being like having a Web Tech team that does the HTML and Styles for you).

    But if you ever did any old school Windows programming (where you had to actually hand roll your event loops), that's basically the core of game programming. Everything else is event handling (fire event, score event, death event, etc.) and calling libraries (graphics, sound, etc.). Granted, that's boiling it way down, but equating it that way should give you an idea of how easy it really is.

    Layne

  74. Re:Ah! The great unknown... by HomelessInLaJolla · · Score: 1

    That entire conversation reads so well. :-)

    --
    the NPG electrode was replaced with carbon blac
  75. Re:Ah! The great unknown... by kfg · · Score: 1

    If I was trying to kill you off I would never have offered to buy you a beer! I'd have offered you a kool-aid...

    Well that wouldn't work for shit. I don't have a kool-aid intolerance.

    KFG

  76. Re:Ah! The great unknown... by alshithead · · Score: 1

    "If I was trying to kill you off I would never have offered to buy you a beer! I'd have offered you a kool-aid...

    Well that wouldn't work for shit. I don't have a kool-aid intolerance."

    Jim Jones' cult members had a serious kool-aid intolerance. :(

    --
    I reserve the right to think for myself. Others' opinions are optional. Puppy on lap = typos...not illiteracy.
  77. Re:Ah! The great unknown... by kfg · · Score: 1

    Jim Jones' cult members had a serious kool-aid intolerance. :(

    Something I'll bear in mind if I ever become a religous nutter. Now if you'll excuse me I have to go pack or I'll miss my ride on the comet.

    KFG

  78. Not for everybody... by Nicolay77 · · Score: 1

    I have to add, that this "labor" doesn't apply to everybody.

    You have to be already smart and creative to begin with. More creative than smart, which is harder to find.

    --
    We are Turing O-Machines. The Oracle is out there.
    1. Re:Not for everybody... by kfg · · Score: 1

      . . .creative . . .

      He said the secret word. Give the man a prize.

      KFG

  79. Writing software is not hard. by symbolset · · Score: 1

    Choosing whether or not to go to the emergency room when you have no coverage is hard.

    Telling your kids they can't have stuff you can't afford on your waitress salary is hard.

    Standing on a crane hoisting icy branches off a powerline is hard.

    Choosing whether to take cover or provide cover under enemy fire is hard.

    Writing programs is a challenge of the sort not everyone is up to, but it is not hard.

    --
    Help stamp out iliturcy.
    1. Re:Writing software is not hard. by honkycat · · Score: 1

      Granite is hard.

      Marble is hard.

      Diamonds are hard.

      Therefore, writing programs is not hard?

      Hard has more than one meaning. Here, we mean intellectually difficult, not physically (or emotionally) exhausting or whatever you take it to mean in your examples.

    2. Re:Writing software is not hard. by planetfinder · · Score: 1

      I understand what you are saying, its a really good point.
      I'd never thought about it that way and I almost completely agree.

      But now consider an imaginary scenario and tell me if it sounds like its almost hard:
      The deadline is a week away, the software is still behaving badly, and you've found a bug in the development tools
      that makes it ten times harder to find some kinds of bugs in your application. Its too late to switch tools and you
      are having to take risks by choosing between different testing strategies that may or may not
      pan out in time. Your boss is breathing down your neck to know if execution speed is up when the moron
      should be worried about whether or not the code will execute correctly at all. He's promised the moon to the customer
      and refused to listen to you when you tried to explain that the required level of effort was way above
      what he originally committed to. You have been working unpaid hours evenings and weekends week after week
      to make up the difference between reality and his stupid original estimate so that you don't get fired or demoted.
      Your kids would ask you for some cool toys ( and you would tell them yes they could have them if you still had a job
      at the end of the week ) if they were ever awake when you got home and if they could recognize you with that
      vampire look acquired after not having seen the sun for months. D-day arrives and the code isn't ready.
      Your boss expresses his disappointment in you in front of your coworkers who are snickering.
      If you weren't too blasted out of your mind from shear exhaustion and fear of losing your job
      you would rip his limbs off and bludgeon your fellow employees into masses of red pulp.

      Of course I just described a completely imaginary situation.
      No real programmer deals with anything remotely like this kind of stress, at least not for more than a month or two
      preceding a myocardial infarction.
      Most programmers just code for fun and profit in a stress free environment.
      So I guess that you are right in the final analysis.

  80. It's Hard Because it's being done wrong. by 3seas · · Score: 2, Interesting

    Try doing advanced math using the roman numeral system (no translation).

    The analogy is that programming is today being approached in a manner that is far more limiting then it needs to be.

    There are those who claim programming is nothing more than mathmatical algorithims, but it is more as programmers create higher level abstractions to deal with lower level abstractions faster. Sure it can be all boiled down to mathmatical algorithims and even down to binary or machine language but it is the higher levle of abstraction where software is today created.

    The science of software has failed or been distracted from the genuine objective of identifying and defining abstraction physics. For it is Abstraction that is the essence of programming, and there most certainly is a physics that applies to our creation and use of abstractions.

    We create abstractions in order to simplify or automate complexity of lower level abstractions, down to binary.
    The failure is that of not recognizing what we all constantly do, what action constants we apply in our creation and use of abstractions.

    Its like doing chemistry before we came up with the understanding to create the table of elements. We didn't understand the underlying mechanics. But once we understood these underlying mechanics, we created chemical megaplants.

    Though we would not create software megaplants, in understanding abstraction physics, we would do what was accomplished with teh conversion of math from roman numerals to the hindu arbic decimal system. We'd make programming easy enough that the adverage user would do alot more for themselves, just as the general population was able to not only do math for themselves in teh conversion of symbols used (roman numerals to decial) but were able to do more advanced math then the roman numeral elite accountants were able to do.

    Of course the problem is in conversion, as it took 300 years for the conversion to happen. It took 350 years for Galelio to be exonerated....ask the catholic church why... and know why the industry of programming, and regardless of what side of the fence you are on (proprietary or open source), presents resistance to the needed change.

    Programming is hard, because the industry wants it to be. So to keep the elitism, social status and pay scale.

    Of course social demands weigh in on the change happening. As computers today could not have been created using the roman numeral system of math. It won't be hundreds of year for this change to happen, as we already can't keep up using the lessor/harder route.

    Abstraction Physics

    1. Re:It's Hard Because it's being done wrong. by stackdump · · Score: 1

      The science of software has failed or been distracted from the genuine objective of identifying and defining abstraction physics. For it is Abstraction that is the essence of programming, and there most certainly is a physics that applies to our creation and use of abstractions. I really don't understand your post, but this sounds alot like a description of the fake language used in Star Trek: LCARS.
      You also seem to be using the word abstraction way too much..
      ---I think you need to talk about abstracting abstractions more abstractly.
    2. Re:It's Hard Because it's being done wrong. by maxume · · Score: 1

      The whole 'we need better abstractions' thing comes up every time this topic comes up. I'm not sure it matters very much; if someone finds an abstraction that is clearly better, it will quickly be adopted. That better is probably measured with power and democracy, all the power in the world isn't very useful if no one else can understand it. I would point out that language(programming languages are largely highly formal versions of human languages) is already pretty abstract, and it has been evolving for thousands of years. I doubt that humans will abstract abstraction any time soon.

      An interesting discussion of it happening with nobody noticing:

      http://blog.plover.com/prog/design-patterns.html

      --
      Nerd rage is the funniest rage.
    3. Re:It's Hard Because it's being done wrong. by 3seas · · Score: 1

      "The whole 'we need better abstractions' thing comes up every time this topic comes up."

      Thats where abstraction physics comes in. Its not as much about better abstractions as it is having the ability to create them in the hands of the users.

      For an idea of what I mean do a google patent search on "virtual interaction configuration". Although the patent only references it under "other references" know what the patent is about.

    4. Re:It's Hard Because it's being done wrong. by maxume · · Score: 1

      There is nothing related to 'virtual interaction configuration' on the first page of patent search results. The stuff you linked to earlier is incoherent. If you can't explain it clearly in 100 words or less, it fails the 'useful for other people' test and probably isn't a good...abstraction.

      --
      Nerd rage is the funniest rage.
    5. Re:It's Hard Because it's being done wrong. by arevos · · Score: 1

      I'm not sure it matters very much; if someone finds an abstraction that is clearly better, it will quickly be adopted. I'm not quite sure what the OP was on about, as their post was rather hard to parse (too much abstraction?). However, just because an abstraction is useful, doesn't mean that it will be widely adopted. The majority of programmers tend to be rather conservative in their choice of programming language, possibly due to familiarity, or possibly due to the available libraries for it (as new programming languages tend to have sparse standard libraries). Because of this conservatism, mainstream programming languages tend to be very verbose, with little complex abstraction.

      However, whilst abstraction is certainly useful, I'm not sure it's necessarily easier, and that's where I disagree with the OP. For instance, if I were to write:

      def fib(n):
          seq = [1, 1]
          for i in range(2, n):
              seq.append(seq[i - 1] + seq[i - 2])
          return seq
      Then it would be pretty obvious what the fib function actually did. But if I were to write:

      fib n = take n f
              where f = 1 : 1 : zipWith (+) f (tail f)
      Then it would be, perhaps, less obvious, even if it is more concise and abstract. To my eyes, a programmer lacking in experience would find the former code easier to understand than the latter. So I think that programming languages, especially mainstream languages would benefit from greater abstraction. But I don't think this would necessarily make them easier.
    6. Re:It's Hard Because it's being done wrong. by 3seas · · Score: 1

      google>more>patents

      Its a google patent specific search engine

      put in quotes "virtual interaction configuration"

      or you can go to the USPTO and look up patent RE39,090

      I told you where the reference is in the patent.

      I suppose your failures follow in your inability to understand the obvious.

      Perhaps you can convince the patent office that the abstract text of a patent should be 100 words or less.
      Why not do the 10 words or less so you can then complain that it wasn't explained enough? ...shrug...

      Who needs artificial intelligence, we have enough artificial people running around pretending to be intelligent.
      If there were an award for just the opposite of the Turing, one for fooling a human into thinking they are communicating with a machine (when communicating with a human) the awards would have been won the moment the award task was announced.

    7. Re:It's Hard Because it's being done wrong. by maxume · · Score: 1

      "Clearly better" is terribly ambiguous; for me, 'hard to understand'(or even 'harder to understand') is a solid indication that it may not actually be better. It's basically splitting hairs at that point, but I agree that abstraction is not an end to itself, which brings me back to my personal definition of 'better', and good abstractions being adopted quickly.

      --
      Nerd rage is the funniest rage.
    8. Re:It's Hard Because it's being done wrong. by maxume · · Score: 1

      *shrug* My interest level was low, hence my follow through is low; your presentation of your idea was not such that it 'captured my imagination'. Sorry. I guess I'm dumb.

      You should at least be able to coherently sketch an outline of your idea in 100 words; I agree that 100 words is a little short to get into detail.

      --
      Nerd rage is the funniest rage.
    9. Re:It's Hard Because it's being done wrong. by arevos · · Score: 1

      "Clearly better" is terribly ambiguous; for me, 'hard to understand'(or even 'harder to understand') is a solid indication that it may not actually be better. I disagree somewhat. Just because a programming concept is hard to understand (such as self-referential lazy lists) doesn't imply it is not useful once it is understood. And if a programming abstraction is useful, however difficult it may be to initially understand, then it seems to me that it would be worth using. However, you're right that "Clearly better" is ambiguous, and it really rather depends on what goals you have for the language.
  81. Professional Estimators by Tablizer · · Score: 2, Insightful

    The housing and construction business has professional estimators. Perhaps the software biz needs the same thing. However, if one is not familiar with the domain (type of biz), then such can be difficult. Thus, the estimators may need to be industry-specific: fashion software, accounting software, medical software, etc.

    1. Re:Professional Estimators by mpe · · Score: 1

      The housing and construction business has professional estimators. Perhaps the software biz needs the same thing.

      Compared with constructing buildings software is in it's infancy.

  82. Re:Ah! The great unknown... by alshithead · · Score: 1

    Are you on the same comet with John Travolta and Tom Cruise? Oh shit, nevermind, I don't want to get sued into oblivion.

    Have a nice evening. :)

    --
    I reserve the right to think for myself. Others' opinions are optional. Puppy on lap = typos...not illiteracy.
  83. Mythical Man Month by tedgyz · · Score: 4, Insightful

    Read it. Know it.

    Why must we rehash this over and over again.

    If it were easy, then yes, we would have push-button frameworks that magically created programs. What bothers me more than the ignorance of the "no silver bullet" mindset, are the pushers of programming environments that supposedly will solve all our problems. Bullshit. Corba sucks. EJBs suck. All these things suck. Just write good software and stop looking for the golden chalice.

    --
    "No matter where you go, there you are." -- Buckaroo Banzai
    1. Re:Mythical Man Month by Anonymous Coward · · Score: 0

      We do have push button frameworks, just people now want software that would have taken the computing resources of the planet not so long ago.

  84. Re:Ah! The great unknown... by tedgyz · · Score: 1

    With respect to games, there has been too much focus on whiz-bang graphics, and not so much on fun. The funnest games I have played are not very whiz-bang. Darwinia. Lemmings.

    Don't get me wrong. Doom3 was great. Half-Life 2 was god-like. Painkiller was probably the most refreshing breath of fresh air in the high-quality graphics world.

    --
    "No matter where you go, there you are." -- Buckaroo Banzai
  85. Re:Ah! The great unknown... by Monsuco · · Score: 1

    Ideas may come in a flash, or evade forever.
    This is true, unless you have been drinking.
  86. A big waste of effort by Anonymous Coward · · Score: 0

    Software is "hard" because big, proprietary, monolithic applications are by nature full of hard-to-maintain code that ends up being lost to oblivion when the project is abandoned, or when the company goes under. In other words, it's a wasted effort, and every competitor needs to recreate it, and make the same mistakes.

    1. Re:A big waste of effort by dangitman · · Score: 1

      So, if it's all about proprietariness - then why is writing Open Source Software so difficult? And if you believe writing Open Source is easy - then why are there very few OSS applications that are anywhere near as good as the best proprietary applications?

      --
      ... and then they built the supercollider.
  87. Offshoring and Outsourcing Ain't Helping Any by Anonymous Coward · · Score: 0

    The trend of marginalizing programmers and subsequent movement to offshore and outsource has contributed much to making software harder. By locking programmers away in a monolithic "I.T." department, moving development management into separate floors or buildings from their clients, and the actual programmers thousands of miles away, most of the manpower is spent transmitting requirements though a long human chain in one direction and collecting and aggregating status in the opposite direction. A huge amount of software is not "enterprise-wide" and would be better off done by programmers working directly in and paid by the business.

  88. Re:Ah! The great unknown... by kfg · · Score: 1

    This is true, unless you have been drinking.

    So that's why he offered me a beer! But I fooled him, Grandma, I'm a cognac man.

    If you think you are loosing your rights, ask your self, has your life been altered since you lost them?

    No, because I have lost my right to alter it.

    KFG

  89. It's not economics at all by Anonymous+Brave+Guy · · Score: 1

    The problem with the AC parent's argument is that developing software well is actually more efficient (and therefore both faster and cheaper) than developing it using crap like deathmarches and heavyweight processes. Unfortunately, only a relatively small (but remarkably successful) proportion of managers appreciate this.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  90. Re:Ah! The great unknown... by riceboy50 · · Score: 1

    cut a[sic] my way through virgin jungle Who are you kidding? Nobody on /. is cutting their way through a vigin's jungle. Thanks, I'll be here all night. :P
    --
    ~ I am logged on, therefore I am.
  91. Hyperbole, hackneyed expressions by Anonymous Coward · · Score: 0

    That's the shittiest interview I've read in a really long time.

    Is "shittiest" the superlative of "shitty"?

    I'm glad the author disclosed a raft of biases that make him useless as an interviewer/reviewer for this particular person/topic. I read the disclaimer, then I read more.

    "programmers are programmers because they like to program.. and EVERY TIME they will write their own code from scratch rather than using someone else's?"

    This article (and book) are useful for exactly one thing:

    they confirm the long-understood principle that anyone who names a "law" after himself is a pom[pous, self-loving weenie of the highest order.

    Rosenberg's Law?

    I'm breaking' it right now, baby.

  92. Reusable components, et al. by Randseed · · Score: 1
    I'll prefix this by saying that I KNOW that it is not a new idea. Hell, C++, ObjC, and Java, among other OOP, were built on this idea. But it still has yet to be truly done.

    You make a widget. The widget has a defined interface (ala any OOP methodology). You have defaults, but you let the programmer override the widget's defaults if he wants. This, in turn, means that the programmer can do something like this (and I know I didn't do allocation here. I'm simplifying): [code] main() { int a,b,c; input_widget.load_definition(whatever); // Load a definition from some structure. input_widget.run(); // Let the user do whatever until he hits "OK" a = input_widget.get_a(); b = input_widget.get_b(); c = input_widget.get_c(); output_graph_widget.graph(a,b,c); // Or whatever format. } [/code] The end result is something that's simple to write, gives a standardized (relatively) UI, and is not particularly work intensive. C++, ObjectiveC, etc., have various ancillary widget sets that perform this functionality, but I haven't seen a decent widget set that will let me write quick and dirty applications that simply. Granted, I haven't looked in well over a year.

  93. The whole problem by goldcd · · Score: 1

    is the human brain is supremely capable at generalizing facts, whilst code isn't.
    Most specs are reasonably simple on the initial pitch, it's when questions are asked and development starts that the problems appear and the code grows tenfold in size.
    I keep on reading about new coding techniques to reduce deployment time - but the coding technique surely isn't the problem. The problem is that the wonderful brain in your head allows you to simplify stuff - a simplification you don't see until you have to implement it.
    Just to summarize, the problem isn't with coding, the problem is how our wonderful brains specify problems.

  94. Programming is really hard by Anonymous Coward · · Score: 0

    ...if you're stupid.

  95. Moo by Chacham · · Score: 1

    It's all because of poor design. Design should be 50%-70% of a project, with coding coming only at the very end, to implement well defined things.

  96. I must disagee with a couple details. by TwoBit · · Score: 1

    Rosenberg says:

            And programmers, as I quote Larry Constantine in my book,
            programmers are programmers because they like to code --
            given a choice between learning someone else's code and
            just sitting down and writing their own, they will always
            do the latter.

    I disagree. Only bad programmers do this. If you have programmers that do this they should be fired. We have in fact dumped a number of these people.

    Rosenberg then says:

            And the programmer who says, it will be faster for me
            to write it, rather than to learn it, is usually correct.

    Wrong. The programmer who says this is almost never correct. Rosenberg somewhat vaguely implies so in the following sentences but words it poorly.

    1. Re:I must disagee with a couple details. by ravenlock · · Score: 1

      How about this: there exists a class of programmers that will not -- for a second! -- stop to think that someone might already have solved in a reusable way the particular problem they are facing. In fact, I'd go as far as to say that the more extreme examples will not even check whether the standard libraries provide a solution.

  97. It's Hard Because it's rigid. by Anonymous Coward · · Score: 0

    The problem is that obscenely obtuse computers are trying to deal with a soft and fuzzy world.

  98. Programmers-Two prunes in a pod. by Anonymous Coward · · Score: 0

    Hooker and madam.

  99. New Software is R&D by plopez · · Score: 1

    It is *not* manufacturing. If something already has been done in software, buy it. Don't build it unless you have, and be prepared for it to be open ended and expensive. This is basically what part of the article states. Also, I've posted this idea a few times in the past trying to make this same point.

    New software is R&D which is why when MS decided to do rewrites in Vista, they were doomed to have schedule slips.

    New software is R&D, but managers insist on managing it as a manufacturing process. And so we should not be suprised when the schedule slips, the project fails or the software is crap.

    New software is R&D and therefore cannot be scheduled, predicted or budgeted.

    And so, I have to ask, a PIM? They are building a PIM? The PIM space is crowded and they are up against MS, Novell, IBM and a host of OSS projects in the PIM/collaboration space. They are going to spend a large amount of time reinventing the wheel and end up in a highly competitive market. I don't see them being able to recapitalize very rapidly, if at all. The R&D will kill them and they will always be at risk of MS giving away an app away for free, IMO.

    --
    putting the 'B' in LGBTQ+
  100. Software is hard because by Anonymous Coward · · Score: 2, Funny

    1. The pointy haired boss keeps buying silver bullets from vendors that take him on golfing excursions and forcing them down your throat.
    2. You cannot plot a gantt chart of something that has never been done
    before.
    3. The pointy haired boss buys too many tech magazines.
    4. The pointy haired boss buys into the whole development methodologies BS.
    5. Only 1 in 20 programmers around you even knows what a array is.
    6. The same pointy haired boss buys a bunch of expensive silver bullets from some vendors
    and has no choice but to implement it or his ass is grass.

    Software is hard because I cannot say any of the above without posting as a Anonymous Coward
    and still keep my crappy job.

    1. Re:Software is hard because by Anonymous Coward · · Score: 0

      1. The pointy haired boss keeps buying silver bullets from vendors that take him on golfing excursions and forcing them down your throat.

      Our company was actually written up in the Wall Street Journal years ago as an example of how to get an unsuitable s/w product shoved down our throat by savvy salespeople (theirs), idiot purchasing reps (ours) and upper management with an interest in which product was selected.

      The end result: Nothing happened. The moral of the story, "At , heads roll uphill."

    2. Re:Software is hard because by Blakey+Rat · · Score: 1

      So the theme you're getting at is, I think:

      It's all somebody else's fault!

      Not sure how helpful that is, but thanks for contributing.

  101. Re:Ah! The great unknown... by The_Wilschon · · Score: 1

    Actually, every instructor I've had works in the industry. Not *DID WORK*....but *WORKS*.

    It's not a degree program (yet)
    Sounds to me like it is almost exactly an apprenticeship. Which I think is a good thing, if that is what you are looking for. But an apprenticeship is not to be confused with a university degree (although the two often are confused). Not that one is superior to the other, just that they are different things. The world would be a more difficult place to live if we called both apples and oranges by the name apples.
    --
    SIGSEGV caught, terminating

    wait... not that kind of sig.
  102. patience by 955301 · · Score: 1


    Everything was hard before it was industrialized.

    --
    You are checking your backups, aren't you?
  103. Computer science != manufacturing by lpq · · Score: 1

    at as long as you're trying to do something that has already been done, then you have an adequate frame of reference to estimate how long it will take/cost.
    Corollary: if it has already been done then there is no reason to redo it.

    This is exactly why Computer Science is an experimental science and not an engineering discipline like building cars or bridges.

    Problem is, that most managers are under the illusion that writing software is as predictable as baking a cake and can be scheduled thusly. Programmers often buy into this and trap themselves into schedules that are completely unrealistic. Programmers who don't buy-in are labeled troublemakers. The result is programmers who over-promise and under-deliver -- thus the software of today.
  104. Re:Software is hard AND there's lots of incompeten by ralphdaugherty · · Score: 1

    Incompetent developers tend to make things more complex than necessary. From that point on, under economic pressure, workarounds are needed to get things done. This in turn makes things even more complex than necessary. THAT is what makes writing software hard.

          Well, guess what. Kapor and his team were very competent developers. There was no economic pressure. There were no "workarounds" to meet arbitrary deadlines. And they were trying to do innovative things, so "dumb users who don't know what they want" can't be blamed either.

          And still it is hard. None of the so called Insightful responses here so far have the slightest clue. They are typical responses as if no one has RTFA.

          Oh, wait...

      rd

  105. But where's... by blahplusplus · · Score: 1

    ... Why hardware is soft? :)

  106. That is why... by jd · · Score: 1
    ...the huge chunk of Software Engineering dedicated to "Requirements Analysis" has nothing to do with finding out what people want. People developing Expert Systems long ago figured out that what people thought they wanted and what they actually would fund useful/usable were utterly disconnected.

    To use the analogy of building a house, you know that you want a foundation. A solid foundation. A foundation that can take the strain of what you are likely to build on it. You do NOT ask prospective house-owners what colour it should be, what material it should be or what shape it should be. That is not their problem and should not be their problem. Those parameters may be influenced by what they want - if they want a ten-storey building, you probably want to think rather differently than if they want a single-wide mobile home - but that is the absolute limit that should be permitted in terms of external input.

    When you build a piece of software, 99% of what is written will be invisible to the user. Only the 1% that constitutes the user interface has any bearing on the user whatsoever. So long as the guts are capable of performing the necessary tasks, those guts are your foundation. They are nothing to do with the user and should not be based on the user's requirements.

    But they have to be based on requirements of some sort. So, what requirements are they based on? That one is so amazingly easy. You analyze not what the user wants, but what the user needs. These might be the same thing, but more than half the time they will be so astonishingly far off that you'd wonder if the requirements even relate to the same universe, never mind the same person. You then abstract those need requirements, formalize them in some way, reconcile any conflicts (which are almost always because the analysis was flawed) and then convert those requirements into a rigorous specification. No different from any other engineering discipline, except that other engineering disciplines don't have to work in quite the narrow range of tolerances as software engineers.

    Once you have a specification, you reify it. You turn it into software. Traditionally, this has been by stepwise refinement - slowly moving the specification from the formal to the implementable and finally to the implemented. Modern "extreme programming" methods work by converting the specification into a test harness (which is a relatively trivial step) and then writing the code until the test harness validates it.

    But none of this is new. It's long been said that if builders built buildings the way programmers wrote programs, the first woodpecker that came along would destroy civilization. It is precisely because other engineering disciplines have evolved from slap-dash methods to rigorous techniques over the past 10,000 years that software engineering has attempted to go directly to the inevitable end-result. Programmers should not have to wait until the year 32,000 before they can get a simple GUI to work - although some companies would seem to be heading in that direction. It is true that no major general-purpose software product has ever been "correctly" software engineered. This is not because the methods don't work, it's because companies would prefer to take your money now AND take your money later when the bug-fixed release comes out. Doing things right the first time is so unprofitable in today's world, so programmers don't bother.

    --
    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)
  107. Re:Ah! The great unknown... by Anonymous Coward · · Score: 0
    If I cut a my way through virgin jungle then those who follow have a path.


    Why does this comment make me think of pubic hair?

  108. Re:Ah! The great unknown... by larry+bagina · · Score: 1

    in other words, your ideas are shit?

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  109. Re:Ah! The great unknown... by Anonymous Coward · · Score: 0

    Just a side note---you are quite optimistic about Fermat's last theorem if you think you could do it in a lifetime. After all, it took a good number of brilliant mathematicians working over centuries to develop the concepts necessary for Wiles's proof.

  110. Why POOR coding is REWARDED!!!??? by mrnick · · Score: 2, Interesting

    Software development is hard because of a misconception that knowing how to program in a particular programing language makes someone a good developer. Just because someone can learn a foreign language (i.e. an American who's native language is English can learn to read and write in French) but it does not mean that person will be able to write a good novel in that language.

    I'm currently working towards my Masters in computer science and although I don't intend to ever work as a software developer programing concepts make up the majority of the curriculum. The majority of the graduate program, in computer science, is made up of international students (the university is in the US) of whom most hail from India. After working with these students for some time now I have learned that they obtained their undergraduate degrees from India where computer science is taught in theory. This means that they got their degree without ever touching a computer. Combine that with the fact that they have never owned a computer themselves makes me doubt the quality of their education. For those of you that know some C++ you will understand their level of knowledge when I say that they enter the program without understanding the concept of pointers (dynamically allocated memory instead of compile time arrays), structures, or object oriented programing concepts. Luckily many of these students do not make it past the remedial courses of the graduate program but most of them switch to the IT program under the business college of the university. Unfortunately I am sure many of these students go on to be programmers in their country where there is a big demand due to the trend to outsource coding projects to their country.

    I have spoken with other students in similar programs at different universities and this seems to be a widespread scenario. So with people that barely understand the language they are programing in are being asked to write programs for consumer use. It seems that very little time goes into educating students on how to program. Here I am using the word "program" to mean given a problem utilize one's analytical skills and artistic ability (yes programing takes artistic ability) to conceive a solution and write it in a programing language in such a way that the language compiler and linker produces an executable program. With this in mind you add the fact that virtually no effort goes into teaching people how to move beyond this basic level of understanding of specific programing languages to a point where any competent programmer would consider them to be fluent in the language they are developing in. Would anyone buy a book written by someone that is not fluent in the language that the book is written in? I think not.

    Beyond the fact that the majority of programs are being written by people who are not competent, by any standard, is the fact that programming is not just an application of knowledge of a specific language but an abstract concept that is created from the individuals understanding of the problem and their ability to conceive a solution entirely from within their own mind. This is where the artistic ability comes in. If you give 100 people a problem and ask for a solution in the form of a program you will get 100 different solutions. Out of those 100 people only a handful of the solutions will meet the standards of what could be considered efficient coding.

    Consider that the programmers that I am speaking of here are people that entered into a post graduate computer science program. These people do not make up the majority of programmers out there. What makes up the body of the worlds programmers are people that have not attempted to progress to this level. Most enter the workforce after receiving their undergraduate degree and many have not received any higher education at all. It is my belief that aside from what can be taught to an individual programming requires an inherit ability within that individual for them to be able to produce what I would call quality code.

    --

    Encryption: I may not agree with what you say, but I will defend your right to encrypt it...
    1. Re:Why POOR coding is REWARDED!!!??? by ralphdaugherty · · Score: 3, Insightful

      If some barrier would have kept CPU speeds below 100Mhz then I imagine that by now people would be developing very efficient code and that we would still have the same level of application performance that we enjoy today with our dual core 2Ghz processors.

            Sorry to break this to you, but apps today are not faster than the ones they replaced. We used to write more efficient code, and had more spartan interfaces, because we had to. But I don't think Microsoft Office today is noticably faster than the WordPerfect / Lotus 1-2-3 type apps we wrote in assembler under DOS. All that extra CPU power is more than eaten up by layer upon layer of slower and slower software.

            All this allegedly to make programmers more productive. I haven't seen that either.

        rd

    2. Re:Why POOR coding is REWARDED!!!??? by hisstory+student · · Score: 1

      Exactamundo.
      Yet, there are still places in the world that, regardless of memory availability and CPU speed, NEED good assembly language programmers that actually know what they're doing. It's just that the ratio of knowledgeable assembly language programmers to high level language programmers that don't have a clue, continues to get smaller and smaller as time marches on. It would be nice if there was a corresponding ratio in salaries.

      --
      Heard any good sigs lately?
    3. Re:Why POOR coding is REWARDED!!!??? by Blakey+Rat · · Score: 1

      You're forgetting the minor detail that your computer is also *doing* about 200 times more than it was when running Word Perfect 5. Ignoring all the background tasks that DOS didn't run, DOS-based software didn't do real-time spell-checking, it didn't do any sort of auto-formating or anything. It didn't support drag&drop text editing, or mail merging documents with a database or other data source or any of the thousands of other things that Word 2003 does that WordPerfect 5 doesn't. And of course it only had to update a max of 320x200 pixels each time something on the screen changed.

    4. Re:Why POOR coding is REWARDED!!!??? by tgv · · Score: 1

      You are not contradicting him: you are repeating his point...

      In this thread, someone wrote: "You're forgetting the minor detail that your computer is also *doing* about 200 times more than it was when running Word Perfect 5." That's not true. It's not doing 200 times as much. I had a Macintosh SE at 8 MHz running Word 5.1a and it had about the same functionality as Word now has. Auto-formatting and spell-checking do not take 2GHz (I've actually written part of a MS Word spell check plugin, I know what I'm talking about), and the other things are done off-line.

      I also have the feeling that programmers get away with badly written, top-heavy software because modern systems are so fast. A lot of the performance is wasted in abstraction layers that in the end offer no possibility for re-use nor improve reliability. If you've ever tried to interface from a CORBA/.NET/whatever-MS-calls-it DLL to some higher application that uses Visual Basic for an API, you understand me...

    5. Re:Why POOR coding is REWARDED!!!??? by ralphdaugherty · · Score: 1

      I also have the feeling that programmers get away with badly written, top-heavy software because modern systems are so fast. A lot of the performance is wasted in abstraction layers that in the end offer no possibility for re-use nor improve reliability.

            Absolutely, it would be different if there were magnitudes of improvement in software development but there isn't any at all. It seems to be getting worse.

        rd

    6. Re:Why POOR coding is REWARDED!!!??? by Anonymous Coward · · Score: 0

      I would make the comment that efficient code should not be confused with elegant code or even good code. Actually, efficient code can actually be the opposite of "GOOD" code because it makes the code so hard to maintain and understand by anyone but the person who wrote it. There is no single standard for what we would call a code master-piece. There are too many factors.

      efficiency vs clarity
      efficiency vs code size
      design time vs monetary rewards

      coding is an artistic skill and like all artistic skills we can make code that allows us to make a living or make code that satisfies the human soul and has more lasting value.

      The purpose of a coder should not be to be a street painter or a micheal-angelo, but to attempt to strike a balance between the two as best as he can.

    7. Re:Why POOR coding is REWARDED!!!??? by Kitallis · · Score: 1

      This is so true. I live in India and many of the kids(16-17 year olds) i know and seen here in my community are very much inept in computer basics and get their graduate degrees through just mugging out theories and programming concepts without really understanding them. I could go out and even shout out to the world that India is the worst country in developing GOOD Quality Programmers. These poor programmers don't really spread hindrance to the softwares that are being produced but they sure decrease the level of good programming and even decrease the opportunities to the better programmers. Many don't know how to use the MS word properly....and they go on taking up computer science as there graduate courses and move on learning Various Computer Languages. I would even touch upon the fact that learning many languages isn't the right idea which many "yet to be programmers" tend to do. A single programming (or maybe 2-3) language(s) should be mastered and improved upon. Software making will be no longer be considered HARD but rather challenging.



      An Ardent Programmer.

  111. "How Projects Really Work" by BruceCage · · Score: 1
    --
    Perfect is the enemy of done.
  112. Software engineering is still not taken seriously by El+Nigromante · · Score: 3, Interesting

    The article's title gives an indication of this (as some other comments have pointed out): it talks about "programming" but not "software engineering" as a whole.

    Still many companies hire people with not enough computer science knowledge, for performing software engineering tasks. You can do this, but the results cannot be good (at least in the long term).

    I think this is because software is usually successful, in the short term. It apparently solves the problem and the customer gets satisfied. Therefore, why "losing" time and money making documents (where experience gets archived) or performing a good design?

    If you create software, how often do you (your organization) apply these concepts?:

    - Life cycle of a project,
    - Gantt and Pert diagrams,
    - Risk management,
    - Ishikawa diagrams,
    - Code complexity,
    - Software quality assurance,
    - Coding style standards,
    - Documentation standards,
    - Software patterns...

    Have you ever wondered why Linux is still failing to widely conquer business marketplace?

    Satisfaction - both for companies and indivual programmers - should be switched from being creative to getting a good job done. We still have much to learn.

  113. Programing an Art by Stevecrox · · Score: 1

    The article link appears to be broken, I really don't get why people find managing software projects so difficult, Programming is much more an art than engineering.

    For example in electrical engineering, I've built a design board I knew what signals I wanted generated, what I wanted doing to them it was something easy to quantify, am I looking for a microcontroller or FPGA? Which is cheaper, which specs are capable of doing what I want. I have definitive specs (which rarely change) and lotsa fixed parts.

    Software Programing is filled is many intangable parts, many people find programing languages like C and Java wierd and very difficult. As a result me and a friend could finish working programs in class, go through a few class mates code, help them understand the difficult bits and get them to see where their going wrong before bunking off to play pool. I'm not a great programer by any means, so its easy to see that like artists, great artists can do fantastic stuff in seconds which a poor artist could never do. I've had to do this 'Software Project managing' module in university and so far every solution has been an attempt to bring engineering style of management over to whats really a artisic discipline. Why does no one want to run a software house like a fashion house, or a comic house? Yes engineering principles need to go into the design, but Electrical/Mechanical/Civil is mostly dealing with materials, Software is mostly dealing with people, like art.

    I'm not trying to devalue software engineering, its a field I'm very interested in but I'm amazed no ones realised that you can't manage the project like an engineering project, you can design it like an engineering project (and you should) but people are this annoying highly unpredicatble thing, often prone to moody tempers while they look down on others because they don't get how their disicpline is so important as they labour into the night talking about their genius, wait I am talking about artists here arent I?

  114. Complexity by 12357bd · · Score: 1

    Programming is one of the jobs where you are routinely facing the complexity barrier (the point where the number of factors to consider exceeds the human processing capabilities), that's why it's hard, it is and it will be.
    From Godel we know the limits of formal systems, the best reply to this limit was Turing answer (paraphrasing) 'Errors are the natural answer to determinism'.

    --
    What's in a sig?
  115. My opinion on that? by drolli · · Score: 2, Interesting

    1) Social-economic processes impose changing biases to the current paradigms of software development. This leads to a biggest reason of code not being reused and ever-changing development environments.

    2) As usual in the bussines world, the driving force is only the first derivative of the cost. Local minima can be quite stable. Morover the local minima are deterimed in a way wich seldom integrates over a long time (e.g. support).

    What i mean is: Todays product lifecycle is *assumed to be* shorter than ten years ago. Tell to somebody today that there will be a phase of a few months with no visible results in terms of the final product will yield a different response that ten years ago. Sadly this means that porting code (which, if you do it right, takes most of the times longer than developing "something" with a "state of the art" Development environment) to be usable on a new platform is underrated.

    However, old code very often has no semantical problems any more and all these "small bugs", like implementing a special semantic for a certain parameter value or realizing that a certain database lookup will fail under certain circumstances because of some kind strange constellation happening seldom but on a semantical level, are fixed.

  116. Not Funny - TRUE - I an NOT a Google SHILL !! by Anonymous Coward · · Score: 0

    Not Funny - TRUE - I an NOT a Google SHILL !!

  117. The real reason by nurb432 · · Score: 1

    Is "scope creep", caused mainly by incompetent project managers.

    --
    ---- Booth was a patriot ----
    1. Re:The real reason by freedom_india · · Score: 1

      As an architect i would say it is mostly due to faulty architecture or design or both.
      The PM has a responsibility only to deliver. The architect has the real responsibility for deciding what should be delivered.
      And if he can't gather and understand the future needs of a system and prepare for it, then he would design a crappy piece of software.

      Blaming Leaning Tower of Pisa on the construction workers is just plain bad. Blame it on the architect who designed it in that location.

      --
      "Doing what i can, with what i have." ~ Burt Gummer
  118. Re:Ah! The great unknown... by Bloke+down+the+pub · · Score: 1

    If you poorly implement an idea your going to fail (or at least have a VERY hard time) no matter what.
    It worked for Microsoft.
    --
    It's true I tell you, feller at work's next door neighbour read it in the paper.
  119. Because computer science is socially disruptive by Anonymous Coward · · Score: 1

    Much more than any other domains in the industry, even regarding arts, at least as much as drawing and writing, definitely more than music and even mathematics for more academic studies.
            The main consequence of this being that people good at computer science tend to stay at the lowest possible level of the decision chain of software building. That is why big, or more simply established, compagnies tends to produce the same software, again and again, or to stick with mediocrity.
            That is why startups are generally better are inovation and why the myth of the "little genius behind his keyboard" is so a die-hard legend: first because it is true, people without social or contractual constraints tend to produce better software,
    second because it serve managers: the more you are good at computer science, the closest you are to the next 16teen kid who
    television has talked about, so you cannot be considered seriously, can you? So you stay at your place and the manager, which comes from a "better" high school than you, as all the managers in the compagny, all appearing to come from the same school.
            It is not that software is hard by itself, it is like anything else: you have what it takes to be good at this, or you haven't, it the way industry tries to handle it which makes it appears so difficult.

  120. Re:Hah HAH by Anonymous Coward · · Score: 0

    Software isn't hard, my cock is hard, software is difficult! Yeah? And software also doesn't suck, your girl-friend does?
  121. Re:Ah! The great unknown... by Black.Shuck · · Score: 1

    Think.
    It's a trap!
  122. Many "software engineering" tools are trash. by Anonymous Coward · · Score: 0

    I use tools like this and this in order to to tease out the information needed. UML is much further down in the process.

  123. It's about people by roman_mir · · Score: 3, Informative

    Delivering Good Software is difficult because of the people involved.

    By the way, I read the article and this paragraph:

    Disclaimer: Scott Rosenberg was responsible for Salon's hiring me 10 years ago, was my editor and boss for many years, and is a close personal friend. My daughter baby-sat his twin sons as I "interviewed" him. So I'm utterly biased and completely partial. But "Dreaming in Code" is still a darn good book. - is one of the reasons why software sucks. I have seen too many cases of friends hiring friends not because the people being hired are the best that could be found (or that interviewed) for the job, but because they are friends of the friends. This touches on all avenues of life and business, the best people for the job are not hired, because friends of the friends are hired and those people more often than not are not going to do the job right.

    One should either recommend a person for a position or interview the person, but not both.

    1. Re:It's about people by Anonymous Coward · · Score: 0

      I have seen too many cases of friends hiring friends not because the people being hired are the best that could be found...

      I hate to break it to you, but this happens far more in management, marketing, and even law.*

      * Based purely on anecdotal evidence and theory. But I'd bet money on it.

    2. Re:It's about people by roman_mir · · Score: 2, Interesting

      Hate to break it to you, but you should learn to read the entire comment and not just the first sentence. Just in case it is too difficult for you to understand what is said here:

      This touches on all avenues of life and business, the best people for the job are not hired, because friends of the friends are hired and those people more often than not are not going to do the job right. - see? Had you read the rest of the comment your comment would have been totally unnecessary, and so would have been this explanation.

      Cheers

    3. Re:It's about people by hisstory+student · · Score: 1

      True, but how fortunate that in many cases the friend's friend was hired because it was known that he/she could do the job and therefore reduced the uncertainty of bringing somebody on board that only appeared on paper to be able to do the job.

      --
      Heard any good sigs lately?
    4. Re:It's about people by roman_mir · · Score: 1

      understand that what I am proposing is simple: people who are referring a person and interviewing this person should not be the same. Ideally the interviewers should not have any connections to the interviewee.

    5. Re:It's about people by Anonymous Coward · · Score: 0

      Read that again. Here's a timeline:

      10 years ago - Scott Rosenberg hires the author
      many years - was an editor, boss, and friend
      now - author interviewed him, during which Scott's twins were watched over by the author's daughter.

    6. Re:It's about people by roman_mir · · Score: 1

      read my comment again. I suggest that the iterview and the interviewee must have no connection, otherwise the interview will not be unbiased.

  124. darn customer wants and needs by mach777 · · Score: 5, Informative

    Let me tell you why it is hard.

    A person needs to cross a river, and so believes a bridge needs to be built.

    What he should be doing is ask: "I need to cross this river, can you help me?"

    Instead, he asks someone to build a bridge, a bridge of this and this dimension so his particular vehicle can pass, and a bridge with this and this feature because "it would be nice if..". He also wants a bridge that looks in this and that way, because since he is paying for the bridge he wants it to look the way he wants it to.

    First he was crossing a river, he is now building a bridge. Will the bridge help him cross the river? Who knows? Maybe a bridge like he imagines can't be built, or only be built poorly.

    Its the same thing with software. People want the strangest things. In fact, what they WANT is the only thing they know. They don't know what they NEED.

    So you get an organisation, a business, with an office that has a problem, any problem. The problem will ALWAYS occur because some OTHER process isn't working somewhere else in the organisation. You get bad data from here, and the clerk is expected to output good data out there. In the 50's I bet they wanted more filing capability or better typewriters to solve these problems, in this day and age they want IT. They want a system!

    So instead of using excel, notepad or even a piece of paper like any other sane human being would to keep track of the information, a yell echoes down the corridors: "We need software to support our business."

    So some programmers are hired. They get a description of the problem, which isn't logical in the first place, and they are expected to solve it. Their tool, software, is built using a logical language. It is used to describe the data, and solve the problem by adding a few flows for that data during certain conditions.

    So the programmer (or bridge builder) sits himself down. The first 10% of code/thought he outputs is usually all that should be done about the percieved problem. That is, a description of the Need.

    The next 90% of coding is about the programmer trying to coerce a logical language around non-logical flows and non-optimal solutions, hammering a square button into a round whole, with GUI's, buttons and special extra functions for special extra cases, and those extra wants on top that really describe other problems.

    So we will end up with a mishmash of buggy code that describes the wants of the customer. The Want to solve a problem that should have been solved with organizational changes, or changes in the work processes. But hey now everyone is happy again, software is supposed to be a bit buggy, the organisation is obviously still working non-optimally (software can't fix that), but at least the clerks now have webpages to input the bad data in as long as the servers are up.

    Optimally, the programmer (yes the programmer) should look at the problem, trace it down the whole organisation, yea trace the customer Want to the REAL problem and the REAL need, proceed to make the organizational changes and be done without an IT system at all.

    We all know that won't happen, but that is what should be done. Don't expect a logical function (software) that describes a non-optimal situation, to function in an optimal way.

    Software doesn't work that way, thats why its hard.

  125. Not quite true... by Anonymous Coward · · Score: 0

    That said, I don't think many software projects would be given enough money to achieve this anyway, because the consequences usually aren't important enough (no-one's life is on the line).

    I work for a commercial aerospace company, you insensitive clod!

  126. Page with article goes into infinite loop by Animats · · Score: 1

    The page with the article goes into an infinite reload loop if Salon's cookie is disabled, demonstrating that Salon can't write good software.

  127. Re:Ah! The great unknown... by Anonymous Coward · · Score: 0

    Thanks, I'll be here all night.
    Yes you will.
  128. Software is NOT hard by sgtrock · · Score: 0, Offtopic

    My response to this article on the third page of letters:

    Haven't ANY of you people heard of FLOSS?

    Software development is NOT hard. The closed source development model is. I refer you to a recent study on the economic impact of open source software that was recently published in the EU. The URL is:

    ec.europa.eu/enterprise/ict/policy/doc/2006-11-20- flossimpact.pdf

    While the entire 287 page report makes for fascinating reading, I'd like to direct your attention in particular to pages 48-53. Read that and tell me that software development is hard. Clearly, it's not when it's managed properly.

  129. Correction by ErGalvao · · Score: 1

    The right link for the article is http://www.salon.com/books/int/2007/02/03/leonard/ . The other one leaved me in a "click-here" kind of redirect page.

    --
    Er Galvão Abbott - IT Consultant and Developer
  130. Re:Ah! The great unknown... by syousef · · Score: 1

    Actually, every instructor I've had works in the industry. Not *DID WORK*....but *WORKS*. Classes are at night.

    Ahhh getting use to being burnt out and not having any kind of social or family life to speak of early on are you? Should prepare you well for that industry. Good little code Monkey.

    This is NOT something to be proud of. It is NOT a good thing. It will not leave you happy and satisfied. If you _HAVE_ to work long hours or study till the early hours of the morning for a short period of time, that's usually doable without too many adverse effects. Try it for too long and trust me from someone who worked and commuted for 12 hours or more a day and then went back home to work on a Masters, it'll leave you isolated and/or with health problems.

    I've always found it amazing that certain jobs required working ridiculous hours when you can't be at all efficient and it plays havoc with the rest of your life. I guess I don't mind as much that game developers choose to put up with this, but doctors work equally stupid hours. I'd rather have some code messed up than have my life messed up by a doctor who made a bad diagnosis.

    --
    These posts express my own personal views, not those of my employer
  131. Programming as an engineering discipline by danlash · · Score: 0, Redundant

    I wrote about this subject recently as well. I agree that programming is hard, and programming for other people is even harder. I also agree that programming is _not_ an engineering field ... yet. As a professional programmer, I believe that we can and are advancing the state of the art in computer science, so that one day my electrical engineer buddy will be able to say "hey, that last application you wrote was a marvel of engineering." One day my friends ... one day.

    My article explains it a little better.

    "Engineering is the application of math and science to create something of value from our natural resources." quote from

    --
    Dan Lash
  132. Re:Hah HAH by Anonymous Coward · · Score: 0

    He is a troll... That stands to reason that:

    1. If he had one (remember /. rules), his "girl-friend" is also a troll.
    2. Trolls eat flesh. He has to regrow it every time she does.
    3. Ouch! (Not profit!)

  133. Re:Ah! The great unknown... by Anonymous Coward · · Score: 0

    ****
    clients repeatedly wanting to change design after the design phase (in one surreal case we had a client change a fundamental design issue 24 hours before going live!)
    ****

    This has nothing to do with the design or creation of software. It is poor contract management, and poor Systems Engineering. Did your project have a requirements manager? Did they write a Concept of Operations document, followed by a set of Use Cases? Did they agree these with the customer in writing? No.. and you're blaming this on "software being hard"?

    Half the problem is that "Computer Science" graduates are not taught to design anything like an Engineer. They can write code, and indeed this is what they are most inclined to do. The day after the customer requests a project they are in there writing code already, and this is a terrible way to start a project.

    NASA tried this approach in the 60s and 70s as the started doing larger and larger projects, and found that a little bit ($100k) of Systems Engineering up front can save them a lot towards the end of the project ($100M).

    The answer is that writing software isn't hard. No you aren't "breaking new ground" by adding a feature that noone else has, because someone else has already written something very similar in another application. At least, you aren't breaking new ground in terms of software. Just because you didn't bother to read a book on algorithms, doesn't mean your depth-first-search is original.

    Computer Science Degree - 3 years (in Australia), and about 20 contact hours per week.
    Electrical Engineering Degree - 4 years, and about 30 contact hours a week.

  134. Re: SF and amounts of new ideas by TaoPhoenix · · Score: 1

    Limiting the scope of the new idea works in short stories, whose length signals a tight focus. In novels, the available room is there on purpose to explore the connected suite of ideas that result from the *setting*.

    Although this next remark is a business comment, I think it holds true for programming. I work hard in my company to reduce the "cheap glory" factor of people understating the time involved. This happens for all kinds of psychological reasons. "It's very simple, and I want it done now!" causes real expectation problems.

    --
    My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
  135. Re:Ah! The great unknown... by Anonymous Coward · · Score: 0

    If you tell me that you'd like me to prove Fermat's last theorem without using reference material. I know it's true, and I know that I can't provide a schedule for it. It's highly unlikely that if I took the rest of my life I couldn't do it.

    HAHAHAHAHAHAHAHAHAHHAHAHA

    Sorry, but do you have any idea how dumb that made you sound? Anyone who says something like that and isn't a world class expert in modular forms has a) absolutely no idea of what "proving Fermat's last theorem without using reference material" would actually mean in terms of effort and talent required, and/or b) delusions of grandeur of a magnitude baffling even to Slashdotters.

    Most likely, there was never an individual in the history of the world would could have done what you claim to be "highly likely" to do, unless he already had an immense knowledge of the fields that he would otherwise would have to refer (which is why I made the possible exception of the world class expert). Wiles himself couldn't even have done it hadn't he been an expert in elliptical functions. Basically, what you claim to be able to do with very high probability is to, within the rest of your life reproduce some of the best work of Hilbert, Noether, Galois, Shimura, Abel, Frey and Wiles. That alone would make you one of the greatest mathematicians in history.

    If you had said that you might be able to understand Wiles' theorem if you spent your whole life studying it, I might have agreed with you. Might.

  136. Re:Ah! The great unknown... by ComputerSlicer23 · · Score: 1

    You're correct, that is a misstatement on my part, I meant that it was highly unlikely, not a double negative that I did write.

    Oddly enough, lots of people are unhappy with Wiles's method. I believe a number of people are attempting to prove it using a purely number theory approach. What Wiles ended up proving was a vastly stronger statement, the result for Fermat's was a corollary (I also think that Wiles became an expert in Elliptical functions specifically to make this proof, he started in a different area according to what I'd been told). I wouldn't be shocked if several more simple and straight forward proofs come out in my lifetime. For a long time the proof for the fundamental law of arithmetic stood unproven. Now it's a standard proof in every number theory book. As I recall, I had to do it for a test.

    Kirby

  137. Re:Ah! The great unknown... by The+One+and+Only · · Score: 1

    Okay troll, right. I've put some effort into it and I'm still clueless.

    That's a joke, son. Maybe if you expended some mental labor you'd have an idea what he was talking about.

    --
    In Repressive Burma, it's not just your connection that dies. slashdot.org/comments.pl?sid=314547&cid=20819199
  138. Software Development WAS Hard by steveoc · · Score: 2

    .. until the release of Vista that is.

    Now, its so easy to get on the internet, do your hotmails and digital photos, and connect with others in new and unexpected ways.

    Its all about the WOW, and thankfully everything is now so much easier - including software development programming.

    And its the existence of people that swallow this sort of shit that contributes to making software hard. These sorts of people, when they involve themselves at whatever unwanted level in the process of developing software, turn out making the whole game look so much more difficult than it really is.

    And then one fateful day when the mangled bastard children of their best creative efforts needs to be interfaced with - then yes, at that point in time, software development truly is a difficult thing.

  139. Software is still too close to the metal... by PetoskeyGuy · · Score: 1

    One thing I've noticed about companies is that they try to treat programmers like factory workers. Expect each one to be interchangeable and jump in anywhere on the "assembly line" at any place at any time for any piece of code. However, programming takes understanding, and complex programming takes complex understanding. Even a good programmer fixing a bug may need to analyze surrounding code for several hours before changing a single line.
    I always get comments one my projects at first when I start coding about a week after other people. Give it two more weeks though and they all start coming to me because I'm the only one who seems to have learned how all the pieces fit together instead of just sticking to My Piece Of Code.

    The factory ideal is what people want, but programming is happening closer to the nano scale. It's only in the past decade that people have started building things using something approximating molecule-at-a-time instead of a atom-at-a-time level tools. Our debuggers can show us the bits moving around, but trying to debug a crash on something like Vista involves tracing through something like a car wreck happening in real time with a microscope and finding out a certain pin sheared off because it was put in wrong. We work at such a low level that it's hard to see the big picture and realize the design has square wheels and will never roll no matter how much we polish them.

  140. Re:Ah! The great unknown... by Anonymous Coward · · Score: 0

    You're correct, that is a misstatement on my part, I meant that it was highly unlikely, not a double negative that I did write.

    In that case I apologize for the snarky tone.

    Oddly enough, lots of people are unhappy with Wiles's method. I believe a number of people are attempting to prove it using a purely number theory approach.

    I think most of those are best referred to as "cranks." To the best of my understanding the consensus in the field is that no other kind of proof seems even remotely possible at the moment. Of course nobody could say with certainty that such a proof is impossible, or that it couldn't be produced at some point in the future. But I don't think there's any more reason to expect a vastly simpler proof of this particular theorem than of any other.

    I also wonder what you mean by "purely number theory approach". Elliptic curves, galois theory etc are very much parts of the standard number theory toolset these days. If you mean something like "theoretically within the reach of Fermat" I think you will be hard pressed to find even one number theorist who agrees with you. There is a simple proof which almost works, but not quite. It seems likely that this is what Fermat had discovered, and that he simply didn't spot the mistake.

    What Wiles ended up proving was a vastly stronger statement, the result for Fermat's was a corollary

    True, but irrelevant. Math is full of particular cases which seem to have no simpler proof than that of the general one.

    I also think that Wiles became an expert in Elliptical functions specifically to make this proof, he started in a different area according to what I'd been told

    That's incorrect. Wiles wanted to make it his thesis topic when entering grad school, but his advisor talked him out of it, by convincing him that it would ruin his career the same way it had ruined countless others. So he chose elliptic curves instead. It was really pure luck that he chose that topic -- it was only about a decade later that Ribet demonstrated a link between FLT and the Shimura-Taniyama conjecture.

    I wouldn't be shocked if several more simple and straight forward proofs come out in my lifetime.

    As I said, it's certainly possible. I wouldn't be shocked either, but I would be pleasantly surprised.

    For a long time the proof for the fundamental law of arithmetic stood unproven. Now it's a standard proof in every number theory book. As I recall, I had to do it for a test.

    I assume you mean theorem, not law. However, I'm not sure that with "a long time" you mean "until the first real mathematician in history tried to prove it", but that's about as long as it lasted. The first known proof is due to Euclid, more than two millennia ago. But now I'm being snarky again -- I understand what you mean, and I agree with the sentiment. I did it on my abstract algebra exam too, and I'm certainly no Euclid.

  141. Re:Ah! The great unknown... by misleb · · Score: 1

    So thats why all the games these days are just rehashes of old games with one or two new features.
    What do you mean "these days." Was there a time when every game was truely original? How many side scrollers did you play on your old NES? Was space invaders really a huge leap from Pong? Almost everything works incrementally.. building on the past. Culture, film, music, games, etc. Sure, you get revolutions now and then, but for the majority of stuff is just incremental... evolutionary. But is it really that bad though? I mean, just because a game is a rehash of an older game with new features, doesn't mean that new game can't be much better. Those new features can make all the difference. Especially if you never played the older versions. Of course it isn't guaranteed that it will be better, but it can be.

    When you look at the past it is going to seem like there was more originality innovation because you're just seeing the highlights. Nobody remembers all the crap between the interestign stuff so it just SEEMS like the past was better. Also keep in mind that you were younger then and to you the whole idea of video games was probably pretty new so even the evolutionary changes kept you entertained. Personally, I can barely play video games anymore. Not because I dont' want to. And not because I don't have time, but just because the novelty has worn off. As a kid I could play the same damn game (with a new title) over and over again and stay interested. But now it just bores me.

    -matthew
    --
    "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
  142. Writing software is hard for 2 reasons by master_p · · Score: 1

    The 1st reason is that the domain of problems is infinite. In all the other engineering fields, like house/car/bridges/whatever construction, the domain is finite. Software is like building a house with the capability of using all its facilities in all possible combinations and with open slots for room expansion.

    The 2nd reason is that mainstream programming languages are bad. They are too verbose, they do not allow for expressing the problem at hand concisely, they do not catch most common logical errors, they don't allow WYSIWYG interactive incremental development.

  143. Re:Ah! The great unknown... by ComputerSlicer23 · · Score: 1

    Hmmm, I'll have to talk with my number theory professor for the details. He's the one who told me that Wiles attacked the problem for a long, long time and at some point gave up his original approach because he realized that for precisely the reason that his original approach couldn't solve it was precisely the reason the new one could. Maybe he didn't switch at as basic a level as I thought.

    Hmmm, I'd always been told that Gauss was the first to prove the fundamental theorem of arithmetic. Ah, Wikipedia says that the first full and correct proof was by Gauss, while Euclid had "essentially" proved it.

    Kirby

  144. Assembowhat? by sycodon · · Score: 1

    Assemba?...assemboo?...Asssememblee?....ok, what are you talking about?

    --
    When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
  145. Teach Yourself Programming in Ten Years by not_hylas(+) · · Score: 1
    --
    ~hylas
  146. Re:Ah! The great unknown... by Anonymous Coward · · Score: 0

    Yes, I agree, its so unfair that people who are willing to sacrifice and work hard make out better than those who want to be lazy.

    It never ceases to amaze me that liberals berate those who work hard and succeed.

    Truth is, its none of your damn business whether or not this guy has a social life. If he wants to spend his time learning how to write games and then work in an industry that demands hard work and dedication, its no skin off your back.

  147. Re:Ah! The great unknown... by Evil+Pete · · Score: 1

    Don't know why I even bother to reply to an AC, there's a reason they're normally below my threshold.

    Firstly, I didn't say it was hard. I was describing my reasons that I find from experience in the industry as a whole that software is often LATE. Learn to read.

    You must have gone to some two bit Uni then to get your CS degree. Because even when I got my degree software engineering was treated very seriously, and those were the days when it was just getting off the ground. These days most of the developers I know can rightly be called Software Engineers.

    You don't seem to have much experience with the way most software is written these days. Possibly because you have only been in the industry for a short time (3 years CS == a novice). Take a read of "Death March" by Yourdon and see what he has to say of bleeding edge technology.

    In 20 years of software development I have worked for companies that had good management and others that have bad. The issue I mentioned about the 24 hour design change ... when a client asks something and the general manager tells you to do it or find another job then the requirements etc don't matter. Too many companies function that way. And in fact, while I am on a roll, almost all of them were engineering firms. Engineers, generally, make the worst software developers, picking up code written by engineers, many of whom I regarded as extremely smart, is painful. Bad design, bad coding, poor documentation, unnecessarily complex. Though the documentation problem is universal.

    --
    Bitter and proud of it.
  148. Re:Ah! The great unknown... by fusion9290991 · · Score: 1

    Personally I think that as long as I have never done it before, it's interesting. It's how I learn.

    --
    remember to loot and pillage before you burn!