Slashdot Mirror


Has Software Development Improved?

earnest_deyoung asks: "Twenty-five years ago Frederick Brooks laid out a vision of the future of software engineering in "No Silver Bullet." At the time he thought improvements in the process of software creation were most likely to come from object-oriented programming, of-the-shelf components, rapid prototyping, and cultivation of truly great designers. I've found postings on /. where people tout all sorts of design tools, from languages like Java, Perl, Python, Ruby, and Smalltalk to design aids and processes like UML and eXtreme Programming. I'm in a Computer Science degree program, and I keep wondering what "improvements" over the last quarter century have actually brought progress to the key issue: more quickly and more inexpensively developing software that's more reliable?"

759 comments

  1. lots of love here by Anonymous Coward · · Score: 0

    http://cs.ua.edu/407/disc5_frm.htm

  2. Cheap, Good, Fast - Pick 2 by SpaceLifeForm · · Score: 3, Insightful

    There is no silver bullet, never will be.
    Logic requires careful thought, and careful thought requires time.

    --
    You are being MICROattacked, from various angles, in a SOFT manner.
    1. Re:Cheap, Good, Fast - Pick 2 by TeknoDragon · · Score: 5, Insightful

      According to Brooks Good and Fast never happen together. If you think they can be accomplished at the expense of cost (by perhaps adding more programmers), then you haven't read "The Mythical Man Month" (the book which spawned the TINSB chapter). On the other hand it may be possible to find or train programmers good enough to accomplish "good" and hopefully "fast".

      The answer is finish that degree and hope your institution teaches you enough about these principles: effective design, KISS, machine states, and proper error handling.

      After a few years in the field I've found that these, paired with knowledge of a language and it's libraries is as close as you are going to get (although I'm still working on perfecting the second one)

    2. Re:Cheap, Good, Fast - Pick 2 by Anonymous Coward · · Score: 0

      > According to Brooks Good and Fast never happen together.

      Actually, that's not strickly correct. He said that you can't throw people at a problem late in the game because it will cause more problems (mostly due to communication) than it's worth. You *can* throw people at a problem and expect results. If it weren't the case, Linux, OS/2, VMS, Solaris, and Windows would never happen. They're far too big for a handful of programmers. The trick is to modularize as much as possible so that different teams can work independently, as if they were working on their own projects. With good modularization (hard to achieve for some features) the communication problems described by Brooks becomes mute.

      He also stated that the fasted way to write code is not to write it at all. If you want to write a wiki, or a weblog, or a storefront, then either buy the source code for one or go over to sourceforge and pull out any of the dozen or so mature applications or frameworks out there. Sure you may have to customize them, but it's easier to add and debug your small customizations compared to creating and debugging a huge application or framework.

    3. Re:Cheap, Good, Fast - Pick 2 by msheppard · · Score: 2

      "Not Cheap" does not imply more programmers. You could by a very expensive off the shelf product and customize it. You could pay a firm a TON of money to develop it for you. You could hire the expert in the field, the #1 developer of this type of software, at $500/hr to do it for you. There are many expensive solutions that are not "hire more programmers."

      M@

      --
      Krispy Cream is people
    4. Re:Cheap, Good, Fast - Pick 2 by JaredOfEuropa · · Score: 3, Informative

      Good and Fast certainly can happen together. I have seen it. The trick is not more programmers but better ones. That's right: instead of hiring drongo's with an MCSD, carefully pick the best in the field.

      How often have you seen job ads or RfR's stating "C++ programmers, 3 years experience"? It's bollocks. Any C++ programmer, no matter how bad he is at his job, will one day be a "C++ programmer with 3 years of experience". Yet, companies, project managers and HR people often fail to discriminate between the good and the bad programmers.... while there is no other field of endeavour where the difference in productivity between good and bad workers is greater. Metrics suggest a factor 10 to 100. Incidently: this is bad news for the good programmers amongst us. If no one discriminates between the good and the bad, you'll get the same pay as your lesser brethren.

      Finding good programmers instead of hiring more to do a rush job, is the way to go, since the one programmer will not have the communication overhead that the "equivalent" team of ten average programmers has. We have done this a few times and found that Good and Fast go together well.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    5. Re:Cheap, Good, Fast - Pick 2 by default+luser · · Score: 1

      Unfortunately, this is a pipe dream.

      A Catch-22, if you will.

      So long as programming REQUIRES GREAT SKILL, it will take many hours and many inefficient projectes to train programmers properly. No matter how many books you've read, no matter how many pet projects you have on the side, it's rare to get any REAL programming experience until you're in the trenches, fighting requirements and deadlines.

      Nobody seems to get upset that it takes you a year to walk, and another year to get good at it. Unril programming is as natural and predictable as a heartbeat, it will still suffer from the human failing.

      That said, how long until machines program themselves?

      --

      Man is the animal that laughs.
      And occasionally whores for Karma.

    6. Re:Cheap, Good, Fast - Pick 2 by JaredOfEuropa · · Score: 2

      "So long as programming REQUIRES GREAT SKILL, it will take many hours and many inefficient projectes to train programmers properly. No matter how many books you've read, no matter how many pet projects you have on the side, it's rare to get any REAL programming experience until you're in the trenches, fighting requirements and deadlines."

      Oh I agree. In software development, there seem s to be no fast track career path. However my point was that of those who have been in the trenches, rarely a distinction is made between the ones who come out of it as the best, and those who come out of it as mediocre workers. Quality of people is often measured solely in years of experience. This is a required element but it hardly tells the complete tale.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    7. Re:Cheap, Good, Fast - Pick 2 by DaveAtFraud · · Score: 2

      Good and fast do not happen together for a very simple reason: development of a software solution to a problem generally just changes the nature of the problem. A good solution requires evolving the solution as an understanding of the "real problem" is gained. This takes time and generally also results in the bane of the developer's existence: changing requirements. So as the project progresses, the development team AND THE CUSTOMER gain a better understanding of the problem which results in a stretched out schedule (there goes fast) and which generally drives up cost (there goes cheap).

      A development project can achieve good and cheap by simply starving the project for resources as the requirements evolve. It just takes longer. Likewise, a development team can achieve fast and cheap by simply ignoring any disturbances and kicking out a product that doesn't really solve the problem. Fast and good don't happen.

      This analysis is based on 22.5 years of working in software development in several different companies and always seeing the same result. I don't consider this discouraging since my view of the problem is based on the reality of the first paragraph.in my analysis. It also means that there is little or no danger that someone will develop a "silver bullet" that will magically make the problem go away.

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
    8. Re:Cheap, Good, Fast - Pick 2 by Anonymous Coward · · Score: 0

      Wouldn't time count as being part of cheapness?
      Doesn't fast mean speed of execution and such?

      Writing a program that is good in assembly would (hopefully) be fast, but it would not be cheap.
      Writing the same program that is good in Haskell would be (hopefully) cheap, but it would not be fast (at least not as fast as the one in assembly).

    9. Re:Cheap, Good, Fast - Pick 2 by Woodrose · · Score: 0
      Brooks is definitely required reading. Hard knocks plus common sense from the days of punch cards.

      My vote goes for standards -- getting people to agree on /anything/ is what pushes the revolution forward. This pre-dates W3C, OASIS etc. I'm talking about innovations such as ASCII. Before that was codified, you couldn't get an ICL machine to talk to a Univac, or a Burroughs, or CDC, or IBM (who's mainframes are still holdouts with EBCDIC).

      When corporations are big enough that they have their own internal weather, standards are the only thing that hold them together. Where would we be without SMTP or HTML? It's not the fab technology, it's the fact that everybody knows them and accepts them that make the difference.

      --

      Thou hast damnable iteration, and art indeed able to corrupt a saint - Henry IV, Act I scene II

    10. Re:Cheap, Good, Fast - Pick 2 by arb · · Score: 2

      So long as programming REQUIRES GREAT SKILL, it will take many hours and many inefficient projectes to train programmers properly. No matter how many books you've read, no matter how many pet projects you have on the side, it's rare to get any REAL programming experience until you're in the trenches, fighting requirements and deadlines.

      However, merely having been "in the trenches" does not make a person a good quality developer. I have worked with (and unfortunately hired) some developers who have very long, impressive resumes, but couldn't write code to save their lives. Some of these guys have been simply attrocious and haven't even understood simple data structures or basic algorithms. OTOH I have worked with some guys who have only had 6 months "experience" who have been absolute geniuses and are able to solve the most intricate problems with clean, well thought out code in a relatively short period of time.

      One developer who had 3+ years of "experience" got promoted to team lead and proceeded to screw up a $750K project followed by a $3M+ project (and lost the company at least two multi-million dollar per year clients in the process).

      Some guys seem to have a natural ability, some guys work hard to develop their abilities and some just have no hope. I've worked with all three categories and unfortunately the naturals are few and far between, and the rest are split evenly between the other two camps.

    11. Re:Cheap, Good, Fast - Pick 2 by Anonymous Coward · · Score: 0

      The Mythical Man Month was a good read and at the time was written it represented the experiences of many major software projects. However the industry has somewhat matured since then. While it is true that adding more people alone to a project wont increase the speed it has been shown that it is possible to add more people to a project and have a resulting increase in speed (with a decrease in efficiency), if you strictly delineate the boundaries. i.e. object-oriented paradigm. If I write a program in Java at least 70% will be Standard Classes. I have not written/Tested them but my project will contain them. These are the efforts of other programmers effectively in my project. If I develop components then these may be used as the basis of other projects. The developers of which will be using me as part of there team. If we develop each layer concurrently it will take more man hours then linearly but there will not be the escalation of communication required in the Mythical Man Month because the low levels will mostly not have any association with the upper levels. There will be times when low level issues will come into play i.e. cross cutting concerns or Aspects, but they are by far the exception not the rule. Layering is not something new, It has been the basis for the manufacturing of computers since the beginning.

    12. Re:Cheap, Good, Fast - Pick 2 by Anonymous Coward · · Score: 0

      You can't hire the best programmers. You might get lucky and get one or two good ones. If you want good programmers you have to train them to become good. And there's the real problem, though few ever get far enough to come to the realization: how to you motivate the good programmers to train others?

    13. Re:Cheap, Good, Fast - Pick 2 by clone304 · · Score: 1


      You might want to remove that extraneous space from your sig. It kind of kills the mood.

    14. Re:Cheap, Good, Fast - Pick 2 by Anonymous Coward · · Score: 0

      you fail, read the damned book or you sound like a moron or a smartass

  3. Functional languages by nick255 · · Score: 5, Interesting

    Not too sure if it an improvement, but I know some people use languages in which programs can be proven to work like ML. Of course if you actually want to write a program which *does* something it is probably not for you.

    1. Re:Functional languages by gnalre · · Score: 2, Informative

      I always found erlang(www.erlang.org) a pretty productive language and practical too.

      But the learning curve for most people seems too much. OO on the other hand looks similar to more common programming paradigms. Unfortunately I have always found it does not scale well.

      --
      Choose your allies carefully, it is highly unlikely you will be held accountable for the actions of your enemies
    2. Re:Functional languages by Ace+Rimmer · · Score: 1

      It looks like LISP or haskel. What is the point?
      I don't see much improvement from C for example.
      Is it _much_ easier to prove correctness for ML?
      I'm not talking about "101" function (shiny example for Hoare's logic).

      The problem is that most programs are just too complex - it takes years to develop them, years (if ever) to document them and would take tens of years to prove at least the substantial parts for correctness.

      Look at OpenOffice.org - the sources are so huge that you won't even read them in a year!

      --

      :wq

    3. Re:Functional languages by gr84b8 · · Score: 1, Insightful

      Erlang does have some great applications - but I don't think one can say OOP doesn't scale well(forgive me if I am misreading your post). For example, C++ has been proven to be extremely scalable. Not only can it be scalable performance wise (read speed and size), but it has proven to be scalable project wise (read large collaborative project).

    4. Re:Functional languages by claude_juan · · Score: 1

      the arguement for functional languages is that programs written with them are faster to develop and maintain as that is an inherant part of the language. the problem is, for programs that become abnormally large (like openoffice) they often become unmanagable.

      now i have heard nothing that actually dictates why this is, but i venture to say that this problem could be aided by development environments. i dont see how the development of huge amounts of c code is any different than huge amounts of lisp code other than the fact that lisp (and other functional languages) don't seem to have the same support in terms of a good dev. enviro.

      course i think the whole world should be using lisp, that way i'd have some good tools to use with it once!

    5. Re:Functional languages by gnalre · · Score: 2, Insightful

      You are probably right, I am sure there are a large number of successful C+ projects. On the other hand there are probably a number of successful large VB/C/Perl projects out there, which probably indicates the language is not the overiding factor on development.

      The main problem I see with OO systems is that they have been put forward as a panacea to all software woes, when in fact they also bring some of there own problems to the party(see MFC for details). The OO paradigm has been oversold over the years in the detriment of other ways of working

      --
      Choose your allies carefully, it is highly unlikely you will be held accountable for the actions of your enemies
    6. Re:Functional languages by Anonymous Coward · · Score: 0

      Hi Claude,

      It's cool if you like Lisp. You know, there *is* some very good development environments for Common Lisp. Have a look at franz.com. You might be really surprised to realize how functional and mature their product is.

    7. Re:Functional languages by PissingInTheWind · · Score: 5, Informative

      Hi Ace,

      ML is a functionnal, statically typed language. Lisp is dynamically typed, which means type is attached to values instead of to variables. The improvments in both cases over C might be that the language offer more support to the programmer. Of course it always depends on the task at hand: you would not program an OS in Lisp or ML, but a lot of other interesting things could reasonably be done in Lisp.

      Take for example Web applications: with more powerful languages that allows you to manipulate continuations you can do really impressive stuff. Sometimes I'm laughing when I see how the 'industry' falls behind in term of cutting-edge technology. I know that what I use will be discovered in a few years (probably under some other name), and becomes the Big Thing.

      What is sad in computer science is that every now and then something old reappears and is considered the new Big Thing: think Java (which is a dumb OO language), or think XML (which is just a painful syntax for S-expr).

      Also, forget about proving correctness for practical software programs. They will always get too big to allow you to prove correctness. But if you really want to be able to prove 'partial' correctness, then yes: Functional Languages will be a *much* better choice than C, since you can abstract state from your tests. But the thing is that sometimes it is very convenient to use side effects, for such mundane tasks as outputing text for example ;-)

      Purely functional languages might be scorned by some as toys, but they have their use in research. Hybrid languages like Common Lisp are somewhat more practical.

      As for hugeness of source code, I see 2 reasons Lisp would help overcome the problem. First, you can write less code that do more (reducing the source volume). Secondly, Lisp allows for interactive development. You don't have to recompile anything if you change your application. Just reload the function you just changed, and there: everything is in place. Some bug? Correct it, resume execution. Want to try something? Try it, look at how your app is responding. The ability to change a program while it is running is really empowering for the programmer.

      But anyway, I'm not saying anything new in here, it's just that people wont get it, or that they'll forget. But hey, should I care if my competitors still use half-assed languages and keep hiring 'Java-style' programmers?

      --

      A message from the system administrator: 'I've upped my priority. Now up yours.'
    8. Re:Functional languages by Iconoplast · · Score: 2, Informative
      No improvement over C? You must be joking. ML offers me so many things that programming in C just isn't fun anymore.
      • Garbage collection - ML is fully garbaged collected. This means you don't need to worry about making and then freeing your own memory. Right away, an entire class of potential bugs is done away with. Since you don't need to manage and debug memory problems, you get more done faster. Your code is cleaner because there's not all that memory error checking.
      • Module system - SML includes a very nice type system which promotes creating good interfaces, hiding the internal representations of data structures, and several of the other merits of OOP-style design.
      • Functional - Coding focuses mainly on writing lots of small functions which do one little thing, then combining up the results of those functions to get lots done. List operations are very common and easy (if you're familiar with Perl, things like map, grep, and so forth are used all over the place)
      • Strongly typed - ML is very strongly typed, and yet this doesn't get in the way at all. The ML compiler's type checker uses something called type inference. You don't need to decorate your program all over the place with types, because the compiler actually proves the types of everything based on how they're used. Because it is so strictly typed, the type checker will catch most of your bugs for you.
      • Polymorphic types - You can write a function that operates on a data structure, no matter what type of data is stored within the list. As long as all the types match each other, ML doesn't care what those types are.
      • Exceptions - SML includes an exception mechanism which makes it easy to catch error conditions and handle them appropriately.
      • Pattern matching - Data types can be very complex, including several different subtypes within one type. For instance, a tree type could contain several different types of data at the nodes. To reconcile this with the strong typing, there's something called pattern matching. Basically, you can write several versions of the same function which operate on the same basic type but each branch only gets called if the subtypes meet a certain pattern. This one's a bit hard to explain. You have to see it in action.

      In my (limited) experience with ML, it makes it very easy to code. The code is dense, but readable. A small number of lines can get a lot of work done. And what's better - you'll never get a segmentation fault unlike C. If you can get your program past the type checker, then it's pretty much going to run. And if you've handled all your exceptions and made sure that there's no unmatched patterns, your program will basically always run. It's really a pleasure to code in - far more so than I've experienced with C.
    9. Re:Functional languages by iabervon · · Score: 2

      I think that the best use of languages like ML isn't for whole applications, but rather as a scripting language for an application. With a scripting language, you don't really want to write a program which does much, and you'd really like to have the application able to check that your script works right. In fact, I think there's been substantial progress in not needing to write a new application (or even a new version) to get the behaviour a user wants; the user can put together a bunch of recipes to make a configuration script that makes the program work the way they want.

    10. Re:Functional languages by Anonymous Coward · · Score: 0

      > Of course if you actually want to write a
      > program which *does* something it is probably
      > not for you.

      Take a look at mldonkey, a free edonkey2k client written in objective CAML.

    11. Re:Functional languages by holstein · · Score: 1

      I don't know ML, but as RMS as said here, you should not consider a "scripting language for an application" as a mere toy. Because if it is, it won't be use (or useful)...

    12. Re:Functional languages by Nyarly · · Score: 1

      That's not exactly fair. MFC may be a cluttered mess of a class library, but it's not nearly typical. Granted, I don't any class library I'm entirely satisfied with, but MFC is a pure mess. If it weren't the VC++ way to interact with Windows, I sincerely doubt it would have much acceptance. My biggest gripe is that their collection objects blow goats; you can't iterate them in a for loop! I mean, c'mon.

      --
      IP is just rude.
      Is there any torture so subl
    13. Re:Functional languages by Ayende+Rahien · · Score: 2

      Just to note, I agree that stopping the application in mid-run, changing it, and continue running is impressive.
      But MS (the only one I know of, at least) has achived it quite a long time ago for C/C++ (much more impressive, I think you'll agree) and for .NET

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    14. Re:Functional languages by __past__ · · Score: 3, Insightful
      you would not program an OS in Lisp
      Um, it's perfectly OK to write an OS in Lisp. Remember Genera, or the other LispM OSes?

      Those operating systems were written in Lisp to about the same extent that, for example, Linux is written in C, that is, about everything except some assembler parts was Lisp. And it all was at the control of the user, at runtime. You could debug and browse the OS sources, modify them on the fly (no rebooting just because you changed something about the filesystem implementation or other trivialities), etc. Pretty impressive environments, even from todays point of view.

      You can even still buy Genera for Alphas, but it's not exactly cheap, and finding a Symbolics representative may prove harder than someone selling WinXP copies...

      But anyway, I'm not saying anything new in here, it's just that people wont get it, or that they'll forget.
      Sad, but true... It is really amazing to see what Lisp or Smalltalk users had years ago, and how only parts of this show up in recent "innovative" languages and tools. Sometimes I think that the history of computing should be made an obligatory part of CS education.

      But hey, should I care if my competitors still use half-assed languages and keep hiring 'Java-style' programmers?
      Quote Richard Gabriel, "our competitors will be spending all their time trying to figure out that it's really possible we're doing what we're doing, because they will be thinking in terms of customization at compile time or link time, not at runtime." (Although I don't agree with every aspect of his rant.)
    15. Re:Functional languages by Courageous · · Score: 2

      While I agree with your assessment that XML is really just a bad s-expression, xml does offer one thing that sexp doesn't: forced agreement between the begin and end tags. Of course this can be implemented in sexp, too (tag value value tag). The benefits are the same either way: the parser can recover from malformed pairs much more sensibly than it can from unbalanced parens.

      C//

    16. Re:Functional languages by leshert · · Score: 2
      My biggest gripe is that their collection objects blow goats; you can't iterate them in a for loop!

      Huh?
      CArray<int, int> foo;
      for (int i=0; i<foo.GetSize(); ++i)
      {
      cout << foo[i] << endl;
      }

      CList<int, int> foo;
      for (POSITION pos = foo.GetHeadPosition(); NULL != pos; foo.GetNext(pos)) {
      int i = foo.GetAt(pos);
      }
      I agree that MFC collections are weird: the CClass<VAL, ARGVAL> syntax is horrid, and POSITIONs aren't nearly as elegant as STL iterators, but your assertion is incorrect...
    17. Re:Functional languages by Anonymous Coward · · Score: 0

      The IDEs for Lisp that existed 15 years ago far surpass the IDEs for any other language even today. Similarly for Smalltalk. The sad thing is that the IDEs for Lisp today aren't quite as good as those ;-) That is probably because those IDEs were on the Lisp Machines, where everything was incredibly flexible (and graphical too, in case you were wondering). Still, as someone else pointed out, Franz offers an excellent product, as does Digitool and Xanalys.

      And current Emacs is half-way decent, compared to Zmacs or Zwei on the LispMs.

      As for abnormally large programs, I would argue that a functional language such as ML, or a high-level language such as Common Lisp would be a better choice than C. C gives you shit for module system. OCaML and SML both have excellent module systems. Common Lisp has a package system (which solves a slightly different problem) and lets you do all sorts of funky abstractions which you can't even dream of doing in any other language (quite nearly).

      The amount of code duplication in C, C++, and Java projects is sickening. That is NOT proper code development. But there is nothing that they can do about it because the languages are too limited to offer proper abstractions! You wouldn't believe how far Lisp macros can go. And that's only one of the abstraction mechanisms offered.

      Being able to create abstractions is what managing a large project is all about, and Lisp is probably the best language at that sort of thing (which is why it has persisted for 50 years and will continue to after Java is not even remembered).

      At least until something better comes along...

    18. Re:Functional languages by Anonymous Coward · · Score: 0

      Exactly, most of these academic languages are great for writing code that can be mathematically proven to do fuck all...

    19. Re:Functional languages by SurfsUp · · Score: 2

      Just to note, I agree that stopping the application in mid-run, changing it, and continue running is impressive.
      But MS (the only one I know of, at least) has achived it quite a long time ago for C/C++ (much more impressive, I think you'll agree) and for .NET


      IBM does that in VAJ - Visual Age Java - along with a lot of other nice thinks, such as automatically compiling code every time you change the source (yes this works out fine) and the really smooth handling of error conditions. They also had a built-in revision control system, which I never got around to trying. By the way, VAJ is written in Smalltalk, or it was at the time I last used it.

      Recommended.

      --
      Life's a bitch but somebody's gotta do it.
    20. Re:Functional languages by Minna+Kirai · · Score: 2

      the parser can recover from malformed pairs

      You mean die from malformed pairs, right? XML disallows any sort of "recovery". Parsers must abort on any kind of mistake like that.

      The "benefit"- that error detection is easier- is a tiny one, and far outweighed by the greater difficulty in modifying XML in a traditional text editor. (Sure, an XML-aware editor could update the closing tag for you, but a smart editor would do its own checking anyway).

      Another drawback is that XML parsers are more complex and slower than similar Lisp parsers. Of course the performance difference is tiny, but since people want to use XML with big databases and small devices, it still matters.

    21. Re:Functional languages by starling · · Score: 1

      ROFL. Oh, for some mod points.

    22. Re:Functional languages by sailesh · · Score: 1

      In my (limited) experience with ML, it makes it very easy to code. The code is dense, but readable. A small number of lines can get a lot of work done.
      A friend of mine describes ML programming as:

      1. Write your program
      2. Try to compile it
      3. If there are no errors go to 5.
      4. Fix your errors and go to 2.
      5. Congratulations, you are done - no need to test it.

      It's a really fun language to program in, but I think I'd rather use C for the kind of code I do (mostly gross systems stuff).

    23. Re:Functional languages by dubl-u · · Score: 2

      The main problem I see with OO systems is that they have been put forward as a panacea to all software woes, when in fact they also bring some of there own problems to the party(see MFC for details). The OO paradigm has been oversold over the years in the detriment of other ways of working

      Last time I used MS stuff (which was admittedly a few years back) I concluded they wouldn't know an object if it bit them on the ass. I hear the C# stuff is better, though. The Java people have also improved; their early APIs weren't very object oriented, but they're getting better.

      Unfortunately, generations of programmers (and worse, managers) have been mislead into thinking that using an OO language means you're doing OO. The magic of OO is mainly in the analysis and design. Done right, the productivity gains are stunning.

    24. Re:Functional languages by Sri+Lumpa · · Score: 1

      "you would not program an OS in Lisp or ML"

      Oh yeah? What about Emacs?

      More seriously there is the symbolics machines but another post above is very informative about them, go read it.

      --
      "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
    25. Re:Functional languages by PissingInTheWind · · Score: 2

      Remember Genera, or the other LispM OSes?

      D'oh! I don't. Well, I've heard of it but never came close to it. I think I'm too young ;-)

      But thanks for your reply. I think RPG makes pretty good rants. Even if you can't always agree with him, he always say things that makes you think: a cool recent quote of him that I like is "Strong typing is for weak mind". :-)

      --

      A message from the system administrator: 'I've upped my priority. Now up yours.'
    26. Re:Functional languages by voodoo1man · · Score: 1
      Ehh, comparing the Lisp break-loop to Visual C++'s incremental-illusion tricks is not a good idea.

      In Lisp, you not only modify the system dynamically, you fix the bugs dynamically. Whenever an unhandled exception pops up, by default the stack isn't unwound (this is the big thing about Lisp exceptions. There is also a flag to make the exception unwind the stack, if you need it). Lisp interrupts execution and puts you into the break loop - right in the middle of where the error occured. You can see and change what is currently on the stack, what values of local variables are, etc. When you are done, you can just tell Lisp to continue, and execution resumes with whatever modifications you made to it.

      This isn't just a neat trick - this is the way to do debugging.

      You can put Lisp into a break loop manually, interrupting the current processes, and save a memory image. When you load that image, the computation will resume right where you left off.

      And this isn't something new or amazing - "quite a long time ago" (what, 5 years?) is not a lot compared to the 20-30 years (about as early as system memory considerations made these things possible) that Smalltalk and Lisp systems have had these features.

      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

  4. I haven't programmed much lately... by vasqzr · · Score: 2, Interesting



    I can say I honestly don't like Java.

    Nowadays we've got great tools like Flash, scripting languages like VB Script, and markup languages like HTML.

    Not every programmer these days is a old COBOL nerd, ASM coder, or C junkie.

    I yearn for the days when Borland was great. The Turbo C++ and Turbo Pascal products probably got half of the programmers in the 80's, late 90's started.

    1. Re:I haven't programmed much lately... by Anonymous Coward · · Score: 0

      I yearn for the days that one could go to a software store, plunk down a few hundred bucks, and walk out with a suitcase full of compilers.

      Ahhh, Borland C I hardly knew ye...

    2. Re:I haven't programmed much lately... by theforest · · Score: 1


      "Nowadays we've got great tools like Flash, scripting languages like VB Script, and markup languages like HTML. "

      Thats all client side, and Flash shouldnt even be included in a discussion of programming. You would have an awful shallow application without any server side processing behind it. Making use of HTML, JavaScript, and server side Java; the bounds are limitless on what can be developed.

    3. Re:I haven't programmed much lately... by Anonymous Coward · · Score: 1, Informative

      I can say I honestly don't like Java

      Well, nobody's perfect :)

      Nowadays we've got great tools like Flash, scripting languages like VB Script, and markup languages like HTML.

      Not sure what that has to do with your first statement about java, unless you're just spouting random thoughts. Or perhaps you still think java is for making silly applets for web pages. How 1997 of you.

      Not every programmer these days is a old COBOL nerd, ASM coder, or C junkie.

      Right, some people see are slightly smarter in that they just use the right tool for the job and feed their families.

      I yearn for the days when Borland was great. The Turbo C++ and Turbo Pascal products probably got half of the programmers in the 80's, late 90's started.

      Got to agree with you here. Borland's old products were great back then. I still use their c++ source code color scheme in the preferences of most IDEs I use. Gotta love dark blue background with the yellow and white text.
      Nowadays I tend to like things like RAD tools and code-completion.

    4. Re:I haven't programmed much lately... by Anonymous Coward · · Score: 0

      It's obvious you haven't programmed much...(at all)

    5. Re:I haven't programmed much lately... by mcguirez · · Score: 1

      > Nowadays I tend to like things like RAD tools and code-completion.

      Well then take a look at Delphi - it's object oriented (mostly - still no class fields) stable and is (mostly) source compatible with Kylix. There's a prominent open source communiuty too:

      http://delphi-jedi.org/

      The problem: price. Borland used to have a non-commercial Delphi available for free but with the latest version it appears to be MIA. Oh well, older versions are still being bundled with magazines - if you can find them!

      * and code completion too!

      --
      When you hear hoofbeats, think horses, not zebras
    6. Re:I haven't programmed much lately... by Anonymous Coward · · Score: 0

      That's a completely uneducated comment, Flash can open sockets to arbitrary > 1024 ports and speak any protocol that's \0 delimited (but only XML easily). It lets you do the kind of near-real-time that you just don't have in HTML/JS. Granted, it requires server-side programming, but what doesn't?

      It can also do it over HTTP (either XML based or URL-encoded variables). You can implement SOAP or XML-RPC in Flash. The only thing you really miss from JS is eval (As of Flash 5, the syntax is the same.. Flash MX has a much more complete syntax), so it's rather difficult [but possible] to get the server to send arbitrary code for the client to execute.

    7. Re:I haven't programmed much lately... by Anonymous Coward · · Score: 0

      Actually my current company has a couple of delphi 3 and 4 legacy apps.
      They're being replaced with java oracle forms and jsps.

      I'd like the delphi environment much more if didn't use object pascal.
      Not that there's anything wrong with pascal, I'm just much more used to the c/c++/java syntax.

      I've been thinking about giving c++ kylix a spin.

    8. Re:I haven't programmed much lately... by jweatherley · · Score: 2

      Whereas these days you can go to a website plonk down $0 and walk out with a suitcase full of compilers.

      --

      --
      Reverse outsourcing: it's the future
    9. Re:I haven't programmed much lately... by fille · · Score: 1

      Borland still makes great products. Try Delphi and you'll see what I mean. It has everything Visual Studio has (code completion, etc) and it creates really fast executables. And I especially like the XML-database components.. Pity a lot of people only consider microsoft solutions.. :-(

    10. Re:I haven't programmed much lately... by Anonymous Coward · · Score: 0

      you're obviously not in a position to tell anyone what is or is not programming. Of course Flash adapts server side processes , Flash SWF's can themselves be generated by SS processes. You can even run Flash ActionScript within server pages to implement remoting and web services.

      Do a bit of homework before you decide to disparage an entire category of developers

    11. Re:I haven't programmed much lately... by jaseuk · · Score: 1

      Personal Editions are still available. You just need to download the trial version and then get yourself a personal key to unlock it. (Delphi, JBuilder, CBuilder), Theres also the Open Edition of Kylix.

      You can emulate class fields by sticking Vars in the implementation section of the unit that contains your class. While not perfect it is a perfectly ok work around.

      Jason

  5. eXtreme programming.... by Anonymous Coward · · Score: 0

    ... has been way more trouble than its worth.

  6. Thinking about thinking.. by kslater · · Score: 5, Informative

    I don't think there are any magic bullets. Software development (unlike most other engineering disciplines) is a build-it-yourself from the ground up everytime experience. Go read http://www.reciprocality.org/Reciprocality/r0/ (mentioned in the past on /.) to see a different view on what makes some folks way more productive than others.

    1. Re:Thinking about thinking.. by PissingInTheWind · · Score: 2

      I don't think there are any magic bullets.

      Exactly! As there is no magic bullets in painting art, there is no silver bullets in software development.

      Have a look at Donald Knuth's speach when he received his turing award. He talk about how programming is more art than science.

      With their 'software engineering', all people are trying to do is push programming from Art to Science.

      --

      A message from the system administrator: 'I've upped my priority. Now up yours.'
    2. Re:Thinking about thinking.. by Ed+Avis · · Score: 1

      Do you have a link to Prof. Knuth's acceptance speech?

      --
      -- Ed Avis ed@membled.com
    3. Re:Thinking about thinking.. by Locutus · · Score: 2

      and that couldn't be said about circuit design?

      In software we keep inventing the wheel over and over again. IMHO, it only serves one company that this keep going this way and that's Microsoft. And who sells the most development kits? Don't they also sell the most operating systems AND applications for THAT operating system?

      Yea, software is magic, that's a good one. Go back and find every place in the last 15 years where there was a move to abstraction in software and you'll find Microsofts PR costs grew to meet the challenge. C++ frameworks, CORBA, OpenDOC, JAVA, etc

      Software isn't magic but Microsoft is a great illusionist. IMHO.

      LoB

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
  7. Programming 25 years ago... by vasqzr · · Score: 2, Funny



    Computers don't boot into a ROM BASIC anymore.

    1. Re:Programming 25 years ago... by e8johan · · Score: 2

      Now the boot into Windows instead... (shiver)

      With VBScript one can still do 10 print "test": goto 10... :-)

    2. Re:Programming 25 years ago... by DaveAtFraud · · Score: 2

      Every once in a while you still run into some "true blue" BIOS that give the error message "No ROM Basic" when they can't find a valid boot device. I really feel old when I'm the only one in the office who understands what the message means and why it showed up.

      I've got a "real" (not a clone) IBM PC-AT down in the basement that will boot to ROM basic. 30MB full height hard disk and 1 MB of RAM. What a screamer. The lights dim when the hard drive spins up and it makes more noise than my washing machine.

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
  8. WELCOME! by Anonymous Coward · · Score: 2, Funny

    Welcome to termpapers.slashdot.org!

    1. Re:WELCOME! by Anonymous Coward · · Score: 0

      yeah yeah yeah, now shut up and get back to writing my paper, dammit.

  9. CVS / RCS by voudras · · Score: 5, Insightful

    Programs that assist programmers in the development process by handling who changes what when, etc - are - IMHO - a huge improvement.

    I seriously doubt that a program like Linux could flourish without programs like CVS.

    furthermore - many of the programs that do this sort of thing can be used for any programming language... you could even use it for simple documents.

    1. Re:CVS / RCS by Anonymous Coward · · Score: 0

      nitpick: linux doesn't use CVS, it uses bitkeeper. I know where you're coming from though. I think CVS is the best thing since sliced bread

    2. Re:CVS / RCS by voudras · · Score: 1

      it uses bitkeeper now - but afaik, it used CVS up until ~2001.

      I could be wrong - im excepting corrections =)

      But even if it did use bitkeeper the whole time - the functionality behind bitkeeper is essentialy the same as CVS - it maintains and assists in the process, allowing hundreds, if not thousands, of developers to work on one project while all staying on the same page.

      This was my point - that version control programs is the "improvement" that earnest_deyoung asked about.

    3. Re:CVS / RCS by Anonymous Coward · · Score: 0
      im excepting corrections

      Here's two: "I'm" "accepting" corrections.

    4. Re:CVS / RCS by jdh28 · · Score: 2

      Linus has never used any source control, just patch and diff, up until BK.

      Many of the subsystems, e.g. mtd, have however.

      john

    5. Re:CVS / RCS by Agthorr · · Score: 1
      You do not that Linux doesn't *use* CVS, right?

      (and, for that matter, only recently stored using any kind of version control software whatsoever)

      -- Agthorr
      (amused)

    6. Re:CVS / RCS by Anonymous Coward · · Score: 0
      You do not that Linux doesn't *use* CVS, right?


      um, I guess so. What was the question?

  10. Progress Balanced By More Demands on Developers by John_Booty · · Score: 5, Interesting

    While I'm only in my mid 20's and I'm no veteran by any stretch, it seems like there have been huge leaps in programmer productivity made possible by things like OOP and off-the-shelf components.

    However, I think they're equally balanced out by huger demands on programmers. Once it's realized that a programmer can do 2, 3, or 10 times as much work by using more efficient methods management is quick to pile on 2, 3, or 10 times as much work!

    This isn't really unique to programming either. I think it's universally applicable to any area where technology permits greater productivity.

    For example, look at all those ads from the 50's. Things like the microwave, the vaccuum, and the dishwasher were supposed to usher in a new era of leisure. Do we have more leisure? No, we have less, as those luxuries become necessities and we cram in more activities in out new-found time in order to stay competitive.

    --

    OtakuBooty.com: Smart, funny, sexy nerds.
    1. Re:Progress Balanced By More Demands on Developers by sphealey · · Score: 5, Interesting
      While I'm only in my mid 20's and I'm no veteran by any stretch, it seems like there have been huge leaps in programmer productivity made possible by things like OOP and off-the-shelf components.
      Hmmm. In 1980 we had ASK ManMan. Written in COBOL and FORTRAN. A full distribution (IIRC) was around 5 megabytes, which really put a strain on available storage. The function of ManMan was to provide accounting and manufacturing management support for manufacturing companies. It performed this function very well, and some orgs out there are still using the 1980s versions.

      Today we have JDEdwards OneWorld. Written in C++ and other state-of-the-art tools. The distribution runs about 10 GB, with a working set for development purposes of 1.5 GB. Its function? To provide accounting and manufacturing management support for manufacturing companies. How well does it do? Is it any better than ManMan? I will leave that for you to decide. But hey - you can cut-and-paste directly from OneWorld to Excel. That's a gain I guess.

      sPh

    2. Re:Progress Balanced By More Demands on Developers by Anonymous Coward · · Score: 0

      "While I'm only in my mid 20's and I'm no veteran by any stretch, it seems like there have been huge leaps in programmer productivity made possible by things like OOP and off-the-shelf components."

      That is, in the last five years, or are you guessing about how things were before you were in the business?

    3. Re:Progress Balanced By More Demands on Developers by jimmyCarter · · Score: 3, Insightful

      I can easitly see your point, but at the same time, without knowing much about OneWorld, I have to wonder if it doesn't do a little bit more than you're giving it credit for.

      While I no doubt respect ManMan (especially with a kick-ass moniker like that), I could easily see ManMan looking on enviously at OneWorld's application and system interop features. Try RPC on ManMan..

      --

      -- jimmycarter
    4. Re:Progress Balanced By More Demands on Developers by sqlgeek · · Score: 1

      "huger," didn't you mean to say "enormouser" or perhaps "giganticer"? :)

      scott

    5. Re:Progress Balanced By More Demands on Developers by Zathrus · · Score: 3, Insightful

      Not knowing the industry or the apps, I'll just resort to ad hoc speculation. But, hey, this is /. afterall :)

      What are the training costs for the two? Is OneWorld significantly easier to learn and use? Does it interoperate with more 3rd party programs? Is it more friendly with respect to data input and output?

      Odds are good that ManMan is actually more efficient for a trained operator - but the cost of getting that trained operator is relatively high. On the other hand, you can plop down half a dozen monkeys in front of OneWorld and get results.

      True or not? If not, then I definitely have to wonder what advantages OneWorld actually presents over ManMan, other than support and maintainability (which, without a doubt, are huge requirements in the business world).

    6. Re:Progress Balanced By More Demands on Developers by John_Booty · · Score: 2

      That is, in the last five years, or are you guessing about how things were before you were in the business?

      I'm just guessing. That's why I put that "mid-20's" disclaimer in there, not trying to mis-represent.

      But right now I'm working on what's basically a video e-mail system. I (a skilled but by no means expert programmer) can accomplish this in a few weeks of work, because the existng components are all there. No need to re-invent the wheel, I mostly need to write the "glue".

      Now, think about the work it would have taken to accomplish this, say, ten years ago. It could have been done, but it would have had to have been done from scratch. It would have taken months and months of work by a whole team.

      That's what I'm talking about.

      --

      OtakuBooty.com: Smart, funny, sexy nerds.
    7. Re:Progress Balanced By More Demands on Developers by jholder · · Score: 1

      ...and in 1980, a 5MB disk was how many thousands of dollars? ...And now 100GB of disk is 10 to 20 times cheaper than that? Not to mention interoperability, standards-based operation, a a lot of other stuff that an ERP system provides that ManMan couldn't. Did ManMan do demand forecasting? Did ManMan manage your supply chain? Oh, wait, business CHANGED! You can figure out more with the additional capabilities available to you now that, if used properly, should save a company a bundle in reduced warehousing and distribution... and so on...

      Or, you can go back to the bad old days. With features usually come some complexity, whether this is code size, database size, and/or complexity.

      --
      -- John
    8. Re:Progress Balanced By More Demands on Developers by elefantstn · · Score: 2
      Do we have more leisure? No, we have less


      That is a demonstrably false statement.
      --
      If it ain't broke, you need more software.
    9. Re:Progress Balanced By More Demands on Developers by blazin · · Score: 2

      First of all, the majority of OneWorld is written in C. C++ and java are used in the newest "parts" but the core is C. Not really a big deal, but still....

      Secondly, I guarantee OneWorld does more than ManMan. Off the same codebase, we can build server-side software for WinNT, Win2000, RS6000, HP9000, Solaris, and AS/400 as well as the Windows client. It's able to run with whatever combination of servers for running applications, database, whatever.

      All the applications (1000s) are completely customizable by the customer and the code for these is provided. 10GB may seem like a lot, and it may be, but keep in mind this is Enterprise software. It's not something you'd buy to keep track of your checkbook at home. To say all OneWorld does is to "provide accounting and manufacturing support for manufacturing companies" is to really sell it short. That's just two of the many different capabilities it has.

  11. The Software Process by vikstar · · Score: 2, Interesting

    Probably the biggest improvement is due to the creation of software processes, whether it is the legacy waterfall or the latest XP.

    --
    The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.
    1. Re:The Software Process by richieb · · Score: 2
      Probably the biggest improvement is due to the creation of software processes, whether it is the legacy waterfall or the latest XP

      I disagree. "Sotware process" is nothing without a bunch of smart developers. I think the idea of "Software Process" has been more harmful that useful - as people who do not understand what software creation is all about, blindly apply process to a random collections of "resources" and expect good results.

      There were some studies done on which teams are most productive (see "Peopleware" or "Software Creativity") and the teams with loose process and no schedules were the ones that did best.

      --
      ...richie - It is a good day to code.
    2. Re:The Software Process by Anonymous Coward · · Score: 0

      If the process is flawed then no tool or technology is going to fit it. This is the number one issue managers miss. Technology can not always solve your problem

  12. a few thoughts.... by Yoda2 · · Score: 3, Insightful
    .NET, what else is there? (just kidding)

    But seriously, a lot of people develop beneath the "enterprise level" and some of the buzzword concepts just don't scale that well for smaller project.

    In my opinion, the two things that have really made a difference are databases (as opposed to manually creating file formats) and the object-oriented paradigm.

    My best advice is to use everything with a grain of salt because there is always something "better" on the horizon.

    1. Re:a few thoughts.... by Anonymous Coward · · Score: 0

      Hihi. Probably one of the biggest changes is that messing with web page formatting in html is called programming now too...

    2. Re:a few thoughts.... by Pendant · · Score: 1

      My best advice is to use everything with a grain of salt because there is always something "better" on the horizon.

      Seems to me that this is the biggest part of the problem. Over the last 15 years I haven't done a great deal of programming, but whenever I have, I've had to spend far too much time revisiting basic concepts all over again - even the simplest of things such as control constructs seem to shift and change over time.

      I find it ironic that at a time when the number of natural human languages is decreasingly rapidly the number of computer languages just seems to go on proliferating. Why do we continually reinvent how to write a "hello world" program?

    3. Re:a few thoughts.... by johnnyb · · Score: 2

      I like object-oriented programming, but I think that the underlying technology of OOP should be considered at least as important if not more so - lexical closures. What drives me nuts are those OO languages without them.

      Object-Oriented programming is really just a spin-off of functional programming, with some features removed and syntactic sugar for the common cases.

  13. "I'm in a Computer Science degree program"??????? by exhilaration · · Score: 2, Interesting

    I'm in a Computer Science degree program

    If you're in the U.S., GET OUT WHILE YOU STILL CAN - the tech job market (and the economy in general) are in horrible shape. My friends are coming out of college with CS/IS/MIS degrees and finding NOTHING!

    And if you stay in CS, may God have mercy on your soul.

  14. Look at the 90's... by Havoc'ing · · Score: 2, Insightful

    If I had a dime for every system I've seen where there was no planning, no logic, just brute force coding I'd be richer than those in the .com era. This bring me back to the last slash dot post a few weeks ago of the 80 hour a week SW engineer. True SW architects are hard to find and so is thier logic. A managment that understands the expense and time involved are even rarer entities. Hardware Architecture keeps building on similar themes, no real inovation going on (I use that term loosely). SW requires a human factor.

    1. Re:Look at the 90's... by Anonymous Coward · · Score: 0
      If I had a dime for every system I've seen where there was no planning, no logic, just brute force coding I'd be richer than those in the .com era.


      So how come you weren't a consultant charging a 10 cent fee?
  15. more quickly and more inexpensively? by ColdBoot · · Score: 5, Insightful

    more quickly and more inexpensively developing software that's more reliable

    Based on the last 20 years either working in or supporting government efforts, I'd say yes. However (there is always a however), it depends on the sophistication of the developing organization. The cowboy shops still suck. Those who have embraced more formal processes have become more reliable. It is a 2-way street though and requires the customer to be more sophisticated as well. It doesn't do a damn thing to have a development shop at CMM-5 if the client doesn't understand the need for process and doesn't understand the software development challenges.

    1. Re:more quickly and more inexpensively? by Anonymous Coward · · Score: 0

      Too bad there are so many of those silly customers who just want their software to work.

    2. Re:more quickly and more inexpensively? by EnderWiggnz · · Score: 1

      there are very, very, very few CMM-5 shops...

      and unless you are developing truly "mission critical" applications - as in - people will die if your shit dont work, CMM-5 is a bit of overkill...

      --
      ... hi bingo ...
    3. Re:more quickly and more inexpensively? by MadAhab · · Score: 5, Insightful
      Blah, blah blah. Thanks for wasting my time with a buzzword that applies to almost no one. I took a look at what that "CMM-5" is about, and it simply describes the processes by which you improve your software development in obscenely general terms. BFD, most people who've done any sort of software development and have a modicum of social skills and maturity arrive at the same processes intuitively.

      You want to know what we've really discovered about software development in 25 years? The same thing we know about booze and marijuana: spend your money on high quality, b/c the increase in quality outpaces the increase in expense.

      CMM-5 and crap like that are amusing diversions for middle management types, but keep in mind that middle management is the art of creating an organizational structure that is more important than the people who populate it. It is a recipe for reliable mediocrity, like bread from a factory.

      Eventually, it will be realized that top technical personnel are like good lawyers (and not a thing like wonderbread): essential to an organization over a certain size, not readily "manageable" in the sense that the typical weasel would like, and not readily identifiable on the basis of objective criteria.

      Or just keep hoping for a magic bullet that will allow a caveman to captain a starship, your choice.

      --
      Expanding a vast wasteland since 1996.
    4. Re:more quickly and more inexpensively? by clarkc3 · · Score: 1
      It doesn't do a damn thing to have a development shop at CMM-5 if the client doesn't understand the need for process and doesn't understand the software development challenges

      I don't think any company could reach level 5 without having that understanding. Thats why there are so few CMM-5 sites, probably less than .0001% of all development shops have it. I know that around March 2001 there was only a total of just eight CMM-5 sites in the entire world (random fact: 4 of those sites at that time who had it were Lockheed Martin sites)

      Some info for those not familiar with the CMM

    5. Re:more quickly and more inexpensively? by clarkc3 · · Score: 1

      hmm, ok, i just looked up the current number of cmm-5 shops and its closer to 90 sites currently (in defense of my 1st figure - most were achieved in mid 2001 and after), guess a lot of them must've had a big push to try and get it. still is a very small percentage of the total software development shops in the world :)

    6. Re:more quickly and more inexpensively? by Anonymous Coward · · Score: 1, Insightful

      As a Lockheed Martin employee, I can assure you that the high number of CMM-5 sites tells you nothing positive about our code.

      All it means is that some VP got hot for SEI-CMM and had 20 middle managers fill in paperwork for 2 years until the certification was approved. Our programming practices were poor before, and they've remained poor. (Several of our projects have formed the basis for Dilbert strips)

  16. Best programming tools ever... by vikstar · · Score: 5, Insightful

    The invention of pencil and paper.

    --
    The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.
    1. Re:Best programming tools ever... by vasqzr · · Score: 1

      I was writing on my arm with a pointy stick long before they invented paper. Paper is overated.

      On a more serious note, 'digital' ink, at least in any form I've used, doesn't compare to paper and pen 1 bit.

    2. Re:Best programming tools ever... by Devios · · Score: 1

      One might think so... The ability to record data in a tangible fashion such that it may be shared by others in the exact same format has blurred the distinction between knowledge and intelligence, specifically as they pertain to logic and problem-solving.

      The question has changed from "Is there a (new) best way to do this?" to "What is the best (existing) way to do this?"

      Intelligence is now percieved as your ability to retain, filter, and regurgitate information instead of your logic and problem-solving abilities.

      Don't get me wrong, to a man with a hammer, everything looks like a nail. You will be better prepared to solve a given problem by researching similar problems and their associated solutions, but if person a and person b do the same research, and person a is truly more intelligent than person b, person a will come up with a better solution.

    3. Re:Best programming tools ever... by Anonymous+Brave+Guy · · Score: 2

      I'll see your pencil and paper, and raise you a whiteboard, a marker pen and free soft drinks.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    4. Re:Best programming tools ever... by vikstar · · Score: 1

      Ah, and don't forget the twinkies :)
      Once I was involved in a team project where a printable whiteboard did wonders.

      --
      The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.
    5. Re:Best programming tools ever... by Anonymous Coward · · Score: 0

      Actually, if anyone ever noticed, nobody complains that reading and writing has got harder and harder. Programming computers should be a basic skill, just like reading and writing, or learning a second language. No, we are not talking about learning OOP etc, just simple scripting.

      Yes, simple scripting. Being able to do simple scripting plus learning a few library calls to extract data and put data back, means that IT systems will be back in the control of domain experts (ie. people who do the job) while IT specialists provide the framework for everyone to work on.

      If you look at the profileration of tiny databases throughout a company, you can appreciate that these basic skills already exist in many workers. It is just that they are not sanctioned by the IT department, usually because of technical snobbery more than anything else. One organisation I know spent over $2m grouping all these little db's back into one large db and it just didn't operate as well as it did, because the business has lost agility, since people can't get in and add more columns or tables that may be relevant to their work.

      Most jobs already require people know how to
      operate spreadsheets, word processors. Being able
      to tell a computer how to do a few simple things
      should not be such a hard thing to do.

      Gathering requirements will then be not such a PITA. Project failures due to the program not satisfying the requirements will be minimized.

  17. speedy programming by Anonymous Coward · · Score: 0

    Of everything that has happened in the last 25 years, I'd say that development of higher level languages have helped the most. Back in 1977 (25 years ago) the best you had was Assembly. Of course, you didn't have anything close to what we now call a PC. In the last decade, I would say that Visual Basic and Python have helped the most. It has allowed programmers to spend less time writing code, by mainly skipping the compile step.

  18. None really.... by inepom01 · · Score: 2, Insightful

    If you look at how programming languages and sofrware evolve, the errors just get higher level. For example, Java keeps you from having memory leaks and buffer overflows. But a bad coder is a bad coder and will write buggy software where the problems are on a different layer. They will just arrange your off-the-shelf components incorrectly. With wherever there is still really low level C/assembly programming stuff going on, off the shelf just really isn't applicable so you still have the really low level pointer arithmetic problems. As time goes on nothing really changes... it just evolves. So our bugs are just evolving.

  19. Don't know about improvements.... by platos_beard · · Score: 5, Funny

    but HTML and Perl have probably set us back 15-20 years.

    --
    What's a sig?
    1. Re:Don't know about improvements.... by Anonymous Coward · · Score: 0

      I can't speak for Perl, but its not HTML that set us back but all the crappy proprietary "enhancements" to it from Netscape and MS.

      There's nothing wrong with valid HTML.

    2. Re:Don't know about improvements.... by PissingInTheWind · · Score: 2

      Oh my god, what a fuckin twart he is. Using Windows-style backslashes in an URL in a message talking about ``crappy proprietary "enhancements"''.

      People like you make our life miserable.

      --

      A message from the system administrator: 'I've upped my priority. Now up yours.'
    3. Re:Don't know about improvements.... by PissingInTheWind · · Score: 3, Insightful

      Score 4: funny?

      I'd say: Score 5: tragic.

      But damn I agree. Perl zealot needs not apply: I've been there, I learned, I understood, I realized nothing good is coming from there.

      CGI.pm --> the way to generate HTML documents? wtf, the function names are even more verbose than typing in tags directly. That's why people will always embed html in print statements in Perl. My eyes still hurts just remembering how f***ing painful Perl is sometimes.

      --

      A message from the system administrator: 'I've upped my priority. Now up yours.'
    4. Re:Don't know about improvements.... by Luyseyal · · Score: 2

      How long ago were you there? Just curious.

      I enjoy Apache/mod_perl/HTML::Mason development... I don't know any Perl people who use CGI.pm for anything serious except maybe the param() convenience function.

      Not a zealot.
      -l

      --
      Help cure AIDS, cancer, and more. Donate your unused computer time to worldcommunitygrid.org. Join Team Slashdot!
    5. Re:Don't know about improvements.... by BigJimSlade · · Score: 2

      HTML and Perl have probably set us back 15-20 years.

      The deadly combination of these elements into something known as Slashdot... that's the real set back.

    6. Re:Don't know about improvements.... by Anonymous Coward · · Score: 0

      Amen Brother. Perl is painful to watch, read and keep a loose hold of.

    7. Re:Don't know about improvements.... by dodobh · · Score: 2

      perl -MCPAN -e 'install HTML::Template'
      perl -MCPAN -s 'install Text::Template'

      Works well for me.
      And don't embed HTML in print statements.
      HEREDOC (if templates don't work for you)

      --
      I can throw myself at the ground, and miss.
    8. Re:Don't know about improvements.... by johnnyb · · Score: 3, Insightful

      Perl and Python are my two favorite languages. Them are fightin words....

      Perl is amazing, because you can get so much done in so little time. People say it's hard to read, but it really only takes one or two readings of the camel book to be able to understand all but the toughest perl.

      It has support for all stages of development, and is really useful as your project grows from procedural, to object-oriented, and even if it needs some functional aspects. A scripting language as easy-to-use as perl with lexical closures is simply amazing to build with.

      In addition, it has it's own documentation system that goes beyond what Javadoc does, and allows you to really document the what's and why's of your interfaces.

    9. Re:Don't know about improvements.... by johnnyb · · Score: 2

      Actually CGI.pm is excellent to prevent Cross-site scripting. There's some functions that are obviously not very useful, but to be able to pass arbitrary parameters into select boxes, input fields, text, and whatever else is very, very nice.

    10. Re:Don't know about improvements.... by ajs · · Score: 2

      I'm not interested in a language war, but your take on what CGI.pm is for is a little off. If you want to "talk CGI" (which is a very simple protocol for communicating with the Web server and ultimately with a client), you use CGI.pm to do so.

      If you want to dynamically generate content for the Web, you use Bricolage, Slash or any of the other fine packages out there. Bricolage is especially nice, as it is based on HTML::Mason, a very nice templating system for HTML. Slash, you may know from some of the sites that were built with it....

      You can find a nice bit of discussion on the topic, here.

      Of course, if you just want to give up on Perl because you ran across CGI.pm and thought it was ugly, that's fine too.

    11. Re:Don't know about improvements.... by Pinball+Wizard · · Score: 2
      Furthermore, if you can't read perl, its probably because you can't read regular expressions, and if you don't know regexes, your programming knowledge is incomplete.

      Funny, its these same people that claim the market for programmers is so bad.

      --

      No, Thursday's out. How about never - is never good for you?

    12. Re:Don't know about improvements.... by BalkanBoy · · Score: 1

      This should be modded up as insightful/interesting rather than funny. IMHO...

      --
      'A lie if repeated often enough, becomes the truth.' - Goebbels
    13. Re:Don't know about improvements.... by wayland · · Score: 1

      That's why we have HTML::Mason.

      I agree with the person who said that the PC and the Internet have done the most. To me, the next biggest change was changing from something like C to something like Perl (where most of the work is done for you). The next big change will be .NET or Parrot; something which allows people to use code from other languages with minimal fuss. I've often wanted a Perl/Spreadsheet combo, and I may get it before I die :).

      Also, just as a side note, I was reading a book by Raphael Finkel on Advanced Programming Language Design. He listed a number of criteria by which languages could be assesed as to the quality of the programming language. I noticed at the time that Perl had made the Expressiveness criterion more important than all the others, hence its lack of academic elegance, speed, and other criteria. :)

    14. Re:Don't know about improvements.... by Anonymous Coward · · Score: 0

      Do you enjoy wild mushroom photography [ajs.com]fuck no, keep yourself away from my asshole you pervert

    15. Re:Don't know about improvements.... by rweir · · Score: 2

      No one bulding anything seriously in Perl uses embedded print statements to generate the HTML. Use things like TemplateToolkit and CGI::Application or even AxKit if you're feeling xmly.

      People code crap in every language, Perl included.

  20. Components and Containers by jstell · · Score: 3, Insightful

    The ability to create decoupled software components , combine them into a coherent, functional application, and deploy them into a standards-based container (i.e., an "application server") is a HUGE step in programmer productivity.

    1. Re:Components and Containers by czth · · Score: 1
      You mean like "separate compilation" or "shared libraries"? That's pretty old.

      "There is no new thing new under the sun" (Ecclesiastes).

      czth

  21. still no silver bullets by jilles · · Score: 5, Insightful

    Silver bullets still do not exist. New technologies and methodologies are often hyped as such and naturally fail to live up to the hype. However, that does not mean they are useless.

    These technologies and methodologies have allowed us to keep pace with Moore's law. The amount of software we develop today would simply be impossible using the state of the art in 1970. We routinely poor out millions of lines of code in mammoth projects that take sever hundreds or thousands of man-years to complete. The only reason we are able to do so is because of improvements in development methodologies and technology.

    The (huge) research field that studies these technologies and approaches is called software engineering.

    --

    Jilles
    1. Re:still no silver bullets by jelle · · Score: 2

      "millions of lines of code"

      Quantity... But is the quality still there? On the first iteration, millions of lines of code means hundreds of thousand bugs. Does it have any useful features that the one hundred thousand lines of code version of the software didn't have, or does it just have a new nice spash screen and more bugs?

      Is it actual new code, or mainly just reused and repackaged code?

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    2. Re:still no silver bullets by rovingeyes · · Score: 4, Informative
      We routinely poor out millions of lines of code in mammoth projects that take sever hundreds or thousands of man-years to complete.

      It is not so much as pouring out millions of lines of code, but how useful those millions of lines of code are. Best example is the Air Traffic Control system which took lot of time and money. But then again wasit useful? The methodologies goal is not the amount of code written but the quality of software produced. But even though organizations (claim to) follow those methodologies strictly, in 99% of cases they have not.

      But then one might think, so if we follow as preached do we get "finished" product? That is where the concept of "No Silver Bullet" comes in. In my research I have found that people are so much consumed in methodologies and their hype, they forget something important - "Common sense" . There are tons of examples of actual projects where developers opted to follow what is preached over their better judgement. Why? One simple reason you do not have to answer to anybody if you follow those "Best Practices". Hey after all that practice was best.

      Then what is the reason that they fail time and again. When I spoke to a few colleagues about this, they immediately say "Hey those guys were incompetent". Maybe but not all. The problem is with the terminology itself. Consider the term "Best Practice". The biggest flaw with this term is that we forget that it worked in a certain situation with totally different requirements. It might work the next time in a similar situation but it is not guaranteed, because the situation is different, the environment is different and requirements are different. We should understand that the term 'best practices', does not represent the only 'right way'. They should not be blindly followed, instead adapted to each situation. If we rephrase the term as "Best practices for me, your mileage may vary" we can see them in a whole different light.

      As far as I think, doesn't matter if you are CMM level 5 certified. If you lack common sense, you can never produce good software.

    3. Re:still no silver bullets by tangi · · Score: 2, Insightful
      I may know of a silver bullet.

      Nothing new under the sun, I'm unlikely to be the first one to face any problem. Among those who already faced it, some managed to solve it. Many generous solvers live on the internet, share their production and I can usually find it in no time using Google. Isn't the systematic plundering of others' solution to the issue I'm facing the biggest improvement of the last quarter century? I definitely think so.

      Logic requires careful thought, and careful thought requires time.

      ... But others may already have thought carefully.

    4. Re:still no silver bullets by Dann25 · · Score: 1

      But if you are CMM level 5 certified, you will have at least fully documented your lack of common sense

    5. Re:still no silver bullets by rovingeyes · · Score: 2
      But if you are CMM level 5 certified, you will have at least fully documented your lack of common sense

      That is a very big misconception that people carry around. I don't think CMM states gives a guidelines to document "common sense". Well obvously you document all your successes and failures and you are expected to analyze those and have your common sense prevail. But more often than not no body takes that daunting task. And moreover it is the SPEG which analyzes these documents and it is their job to educate their developers. But somewhere down the communication ladder everything is lost or misinterpretted.

      I heard that CMMi solves some of these problems but I have not looked in to it yet.

    6. Re:still no silver bullets by Dann25 · · Score: 1

      I was really just trying to get a cheap shot in on CMM. The perception I have is CMM, in its most commonly used form, is documentation for documentation sake. This always reminds me of a Chirs Farley movie and a line about putting a gaurentee on a dump in a box..........

    7. Re:still no silver bullets by stephandahl · · Score: 1
      The purpose of CMM (or any other formal certification, for that matter) is not so much to ensure that the organization produces good software, but rather that it produces software consistently.


      The latter is often far more desirable from a project management perspective. As a metaphor, consider traveling - many people eat at McDonalds rather than whatever the local cuisine has to offer, simply because there is little risk of surprises - good or bad.

      --
      What is the difference between a real song and a simulated song?
    8. Re:still no silver bullets by bushido · · Score: 1
      I'm with Fred Brooks on this one:
      I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared with the conceptual errors in most systems.

      Functional languages and other tools might help at the margin, but they don't change the inherently hard problem of specifying and designing high quality software quickly. Focusing on the tools can be mistaking speed for actually getting where you are going!

  22. Best improvements by Anonymous Coward · · Score: 5, Insightful

    High quality, reliable C and C++ compilers have emerged as defacto standards on major platforms.

    Now you wouldn't think of developing on UNIX with anything but GCC and the associated build tools.

    In 1990 you were stuck with whatever C compiler your vendor shipped, and there were more than a few dodgy compilers out there. Modern compilers with useful error messages have done more than anything else to make debugging and development faster and easier for me.

    1. Re:Best improvements by Anonymous Coward · · Score: 0
      Now you wouldn't think of developing on UNIX with anything but GCC and the associated build tools.

      Unless, of course, you require top numerical performance from your CPU.

      Compile software like an open source ab initio package, CAMPOS, with GCC and you get decent run-time performance. Compile it on P4 with Intel's compiler and math libraries and you get 2 - 2.5 times better performance.

    2. Re:Best improvements by sql*kitten · · Score: 4, Interesting

      Now you wouldn't think of developing on UNIX with anything but GCC and the associated build tools.

      Actually a lot of people would. The quality of code generated by the SUNpro and MIPSpro compilers on SPARC and MIPS processors respectively leaves GCC in the dust. GCC really only comes into its own on x86, because Linux (or *BSD) on x86 is the platform that it gets used most on. GCC is portable, yes, but it isn't built for compiling high-performance code. So you need to ask yourself whether getting binaries that execute 2x as fast is worth using a slightly less well known compiler for.

    3. Re:Best improvements by Anonymous Coward · · Score: 1, Informative

      Your URL links to Microsoft's website. Sad.

      I'm unconvinced of your arguments on codegen. The really sad reality is that with gcc-3.2.1, gcc has parity with most expensive, proprietary, we-know-this-architecture-best-becasuse-we-made-it -and -don't-care-about-anything-else compilers.

      Icc 6.0? MSVC++? It amazes me that they can't pull anything better out of the bag. Yo, gcc is FREE. These jokers should be able to pull 50% improvements out of codegen, yet the most I've seen is about 5-10% on benchmark codes. I've yet to see codegen differences in "Real World Code."

      Sparc tools? Hello, are you for real? Spend a grand a seat for an ancient C++ compiler, a more ancient C++ runtime, and bullshit support? I don't think so. I've not seen codegen improvements over 10% on sparc and sparc64 for C/C++. Put up or shut up: what are you measuring (fortran)?

      Have you ever tried to use MSVC++ embedded tools?
      HP tools (aCC), IBM tools (xlC), etc? ICK!!!!

      If you had, you'd realize why people use gcc, even when they get a slight performance hit. The larger codebase makes the compiler way, way more solid.

      To tell you the truth, the user community for gcc is pretty amazing, and far more helpful that I've seen from compiler vendors who are not free-software based.

    4. Re:Best improvements by Isle · · Score: 1

      2x sounds a bit on the low side. The famous DEC cxx compiler for alphas outspeeded gcc by 5-10 times on mostily fp-programers and 2-5 times on mostly integer. Now those where the days. (I've always wondered what just how much the alphas would have sucked without cxx)

    5. Re:Best improvements by Anonymous Coward · · Score: 0

      Isn't it interesting that the computers that were not supported by GCC just aren't produced anymore. I'm still using the same development enviroment I used 10 years ago - Emacs and GCC on Sparcs.

    6. Re:Best improvements by __past__ · · Score: 2
      High quality, reliable C and C++ compilers have emerged as defacto standards on major platforms.
      And the improvements are...?
    7. Re:Best improvements by Anonymous Coward · · Score: 0

      High quality, reliable C and C++ compilers have emerged as defacto standards on major platforms.

      and fast processors to go with them. It's actually practical to compile a large program to find syntax errors.

    8. Re:Best improvements by Anonymous Coward · · Score: 0

      GCC is cool if your binary target is a PC or workstation, but it has no support for the hundreds of embedded systems instruction sets -- I wish it did, since the compilers we use for our embedded work suck.

      ARM support in GCC please!

    9. Re:Best improvements by HuguesT · · Score: 1

      This is utterly false. The best I've seen (and I've been programming on Alphas since 1994) is in the order of 50% faster. That was way back when gcc didn't have the support it got when Linux was ported to Alpha.

      So now the situation is almost exactly the opposite. Since gcc has had access to the _very_ nice libm from DEC/Compaq, the library that implement all the math functions, gcc is faster and more ISO compliant than cxx.

      What you describe is however true for FORTRAN. The DEC Fortran compiler does produce very very fast code, and g77 is appallingly slow, even today.

  23. I can say this.... by Asprin · · Score: 5, Insightful


    The focus has definitely shifted away from algorithms and toward abstraction. This was supposed to make things easier, by letting the software do what it does best and keep track of bookkeeping, while we concentrate on building models and governing interations between them.

    Some of it actually makes sense - the object oriented paridigm, component models, virtual machines. (VM's, by the way, go back at least 20 years in the literature -- I studied them in college in the late 80's. However, like Pascal, they were originally considered as an instructional tool, and nobody at the time thought that anyone would be damn fool enough to actually try and *implement* such a thing!)

    But just like letting grade-school students use calculators for their arithmetic, I'm not certain these things are best for students. Sure, you get usable code out quickly, but without an understanding of the underlying algorithms and logic. I doubt many modern 'c0derz' could properly knock out a simple quick-sort, let alone a fully ACID SQL DBMS.

    --
    "Lawyers are for sucks."
    - Doug McKenzie
    1. Re:I can say this.... by binaryDigit · · Score: 3

      the object oriented paridigm, component models, virtual machines. (VM's, by the way, go back at least 20 years in the literature

      Pretty much every programming concept/innovation today has roots that go back. OO is at least 20yo. VM were implemented, it was just that mainframes were the only things beefy enough to implement them effectively, not that they were overtly complex. The Java vm is not too technically different that the old pcode interpreters, again, nothing new here.

      I doubt many modern 'c0derz' could properly knock out a simple quick-sort, let alone a fully ACID SQL DBMS.

      Right but the problem is that for some strange reason, 20 years later, a coder still does have to know how to knock out a quick sort (or some such). We won't see true progress until we get to the point where your "average" coder absolutely will never need to know this, unlike the hodgepodge of high level/low level stuff we have now.

    2. Re:I can say this.... by Carl+Drougge · · Score: 1
      VM's, by the way, go back at least 20 years in the literature -- I studied them in college in the late 80's. However, like Pascal, they were originally considered as an instructional tool, and nobody at the time thought that anyone would be damn fool enough to actually try and *implement* such a thing!

      IBM AS/400 runs all userspace apps in a VM. I'm not sure how long they go back, but close to 20 years at least.

      I wouldn't be surpriced if all big IBM machines run everything in a VM, but I don't know.

      I doubt many modern 'c0derz' could properly knock out a simple quick-sort, let alone a fully ACID SQL DBMS.

      I'll agree about the DBMS. Esp. "knock out", since that implies fast, and I don't think *anyone* can write a fully ACID SQL DBMS quickly.

      But quicksort? I'll admit a lot of modern programmers probably don't know what algorithm quicksort is, but if you explain the basic principle I don't think anyone would have a problem. (Unless you have efficiency-requirements.)

    3. Re:I can say this.... by Devios · · Score: 2, Insightful

      CS programs will best prepare you for today's (US) job market by teaching abstract systems design, business processes, algoritm (and process) optimization and analysis, applications of probability and statistics, math, and how to manage your overseas code-shop... For the record, I am a CIS student and we still have to learn QuickSort, MergeSort, Bucket, Heap, etc., Dynamic Programming, Binary Trees, ... and do all of those fun things like place bounds on running time, etc. Having looked all over the web for notes from similar classes, I'd say that most CIS programs still cover this stuff. In the same way I look for notes, many students, however, are looking for solutions and, as you suggested, could not implement the code off of the tops of their heads. Why should they? I think that it is more important that students know WHY to choose a particular algorithm (speed, correctness, memmory usage, input predictability, etc. Only a true moron will not be able to find someone else's publicly available code one they've chosen the proper algoritm. Leave coming up with new, mostly useless, algoritms to professors and hobbyists. Students should learn concepts in school instead of learning syntax. A former CS student should be able to apply those concepts to teach himself or herself the syntax of a given language in a few months.

    4. Re:I can say this.... by Anonymous Coward · · Score: 2, Insightful
      Right but the problem is that for some strange reason, 20 years later, a coder still does have to know how to knock out a quick sort (or some such). We won't see true progress until we get to the point where your "average" coder absolutely will never need to know this, unlike the hodgepodge of high level/low level stuff we have now.
      I'd have to disagree. I think that basic algorithms as quicksort and mergesort are essential in the training of any decent programmer. They are high in the list of examples that you use to discuss the efficiency of algorithms. The assumption here is that one ``needs'' to write quicksort, for example. I haven't written a quicksort in the last 8 or so years, except as an example to myself of how to write a quicksort in a new programming language. It is an instructive example of a not quite trivial program to write to see how the language deals with sorting lists. I think that every language that I use (including C, which is generally the lowest level that I use regularly) has basic sorting in the standard libraries. So, the ``avergage'' programmer does not have to write a quicksort. But, again, I would be very uncomfortable hiring someone who couldn't.

      Of course, the last time that I was interviewing I asked what I felt was a rather basic question, something along the lines of ``Could you describe a insertion sort and a quicksort, compare and contrast the two, and describe under what conditions you might use either?'' Simple question, I was expecting answers along the lines of ``Well, an insertion sort in O(n^2) and a quick sort is O(n log n)''. I was hoping to have some candidates point out that an insertion sort was linear on data that was already sorted and that quicksort has rare pathological cases where it can perform in O(n^2) time. I was really hoping that at least one candidate would tell me that most quicksort implementations use an insertion sort as the last step when the list is almost sorted, because it is faster to do so.

      What I got was from the best candidate ``Um, a quick sort is faster?'' Which was probably an unfortunate consequence of its name. I should've picked merge sort or heap sort...

    5. Re:I can say this.... by Abcd1234 · · Score: 2

      "IBM AS/400 runs all userspace apps in a VM. I'm not sure how long they go back, but close to 20 years at least."

      Umm, VM, in the Java sense, and a virtualization environment, as found in the AS/400 are two entirely different things. As I understand it, the AS/400 provides an environment for virtualizing the hardware. This is more akin to what VMware does. They basically use various tricks to allow an application to execute as if it were the only software running on the CPU. Of course, VMware's job is a lot harder because the x86 makes it very difficult to virtualize the CPU (due to various operations which can't easily be trapped and virtualized by a software monitor... at least, IIRC :). I would guess that the CPU in the AS/400 is much better designed, and hence easier to virtualize (of course, even the ol' 68k was easier to virtualize than the x86).

      This is in constrast o the JVM, which is a purely virtual stack-based CPU (albeit, a very specialized one), which is then emulated.

    6. Re:I can say this.... by binaryDigit · · Score: 2

      I agree with you, but I think you misunderstand the point of my post. I was saying to "truely" get programming to reach another level, we have to get beyond the point of having to know such information for the general programmer. I use my cordless drill around the house for a good many things, but yet it matters not a single iota to me exactly how the thing works. Plop a fresh battery in, but the correct bit in and start building/destroying. The amount of information that I require to use the tool is minimal, it just works. Now as I get more advanced in my tool usage, I can start to get to know the tools better, but there is still a huge layer of abstraction available that allows me to focus on drilling a hole, not tinkering with a machine.

      This is pie in the sky stuff, the simple fact is that programmers don't have those nice abstractions available and they do need to have a much better understanding of what's "really" going on. But, as a goal, this is where we need to be, though I don't know from a practical standpoint if we'll ever get there.

    7. Re:I can say this.... by Anonymous Coward · · Score: 0
      Hmmm, okay maybe. But quicksort is a bad example because it is in pretty much every library that I've ever used and hence no one has to rewrite it.

      But the avergage programmer that I've met or interviewed lacks the knowledge, to continue the analogy of the power drill, doesn't know that the powerdrill will torque.

    8. Re:I can say this.... by wik · · Score: 2

      Serious VMs go back a bit further than that. Burroughs (now Unisys) built a line of machines in the 70's that could emulate any machine of the day up to the native machine width with the right microcode. The machines were actually quite fast for the time (they only sold crippled versions of the machine, since it could nip at the heels of the native large-scale systems).

      If you're interested, search for the Burroughs B1700 and B1800 on google. There's also a little orange book by Organick that describes how the hardware, host, and guest code worked together to do things like emulate the IBM 360.

      --
      / \
      \ / ASCII ribbon campaign for peace
      x
      / \
    9. Re:I can say this.... by tigersha · · Score: 1

      Good example with the Powerdrill.

      One other problem in SE is that there is a deep problem with the idea that "easy to do steps" are just as easy if you do one of them, and if you do a million of them. An example. It is trivial to put one brick on top of each other with some cement and build a wall. It is much more difficult to build a house and extremely difficult to build a skyscraper. I have built a small wall. I would NEVER live in a house that I built though, not unless some pro looked at it. In software it seems that people are not like this.

      In software, there is (with programmers as well as managers) the impression that, since the small things look simple designing a large system is too.

      In programming, the simple building blocks are things such as while loops and if statements and so on.
      I can understand a if statement and a while statement and I could probably get my mom to understand it (mind you, she gets scared sh1less when the cellphone rings, because she does not know which button to press...). And these things are pretty trivial. However, there is motherless difference between parking a bunch of loops and simple statements together and building Oracle or the Linux kernel. But in the end, the large program is simply a conglomerate of the simple building blocks. You see this stupid idea in the press too with "Teach yourself Whatever in 21 days".

      This whole problem, however, makes it difficult for me see how a professional software engineering accreditation is ever going to be successful. Where do you draw the line? Suppose it becomes law that only software engineers may make programs. Is writing an Excel spreadsheet programming? Is desigining a quick CGI script to let your mom upload a large file because her EMail program sucks programming? It certainly look like it from where I am. With accreditation this would be illegal, just as it is technically illegal for you to fix electrical things in your house (it should be done by a qualified electrician).

      To get back to the example of the screwdriver and high abstractions, the guy who does the spreadsheet can sort his sheet, but does not have to know how a sorting algo works. But in desigining a spreadsheet he is in effect writing a declarative program. There is not much of a semantic jump between a complicated Excel sheet and a Haskell or LISP program. (Imperative programs are another matter, though).

      Anyways, enough rambling. Its a bit off topic but the drill reminded me of the house example...

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    10. Re:I can say this.... by IamTheRealMike · · Score: 2
      But just like letting grade-school students use calculators for their arithmetic, I'm not certain these things are best for students. Sure, you get usable code out quickly, but without an understanding of the underlying algorithms and logic. I doubt many modern 'c0derz' could properly knock out a simple quick-sort, let alone a fully ACID SQL DBMS.

      An interesting point, but I don't quite agree with the analogy.

      The reason an overreliance on calculators is seen as bad is because often in the real world there is a need to do fast mental arithmetic when you don't have or want to use a calculator, so people who depend on them too much are disadvantaged later on in life quite severely.

      On the other hand, this doesn't apply to computing abstractions. I've been programming for many years in many different types of apps, and I've never needed to write a quicksort routine. Why? Because when I needed one there was always a preprovided abstraction I could use that meant I didn't have to concentrate on the details, I could just use it. Ditto for low level coding - I used to be able to directly program sound cards in the days of DOS. Could I now? No, I haven't needed to do that for years, the OS means I don't have to. I can concentrate on telling the computer what to do, rather than how to do it for the most part, which is imho good.

      I guess that makes me one of the c0derz

    11. Re:I can say this.... by rob_from_ca · · Score: 2

      I doubt many modern 'c0derz' could properly knock out a simple quick-sort, let alone a fully ACID SQL DBMS.

      Nor should they have to, unless they are a building a library or working for a database company. A fully ACID SQL DBMS that works in the real world would put years and years to put together. Quicksort is notoriously difficult to implement, and even if you have a firm understanding of the principles, getting the partitioning right (and not just working correctly, but working as efficiently as it should) can take a lot of testing and debugging. There is very little reason why any programmer, working on a typical system that would need to use either of these things should have to know exactly how to implement one.

      That's not saying that a programmer shouldn't have a good understanding of them and a healthly curiosity for how things are working under the hood. Without understanding a bit of RDBMS implementation, it's touch to understand transactional models and the issues involved. Without having a basic idea of how quicksort works, you'll never know when to pick it or debug performance problems with it. Certainly, more understanding is almost always better, but taking the time to be able to recreate existing implementations is far beyond the time budget of most programmers. Too much time spent learning implementation details of something like a RDBMS means less time for actually solving your problem. It would take years to gain enough knowledge to write a decent one, in which time your original problem still isn't solved, and the state of the art in databases is now that much further along.

      In short, teach a few implementation issues, but concentrate on where those implementation choices affect how the system is used and interacts with other systems. That's an appropriate level of knowledge for most projects.

    12. Re:I can say this.... by tshak · · Score: 2

      Unfortunately I don't believe that you appreciate the seperation of programming and computer science. Allthough computer science involves programming, computer science also involves math, engineering, software design, etc. Programming is a skill, not a science. A programmer who does not know how to write an ACID SQL RDBMS (like those on the MySql team... sorry, I couldn't resist!) can write a business app using J2EE just as well as a programmer who did her CS thesis paper on data structures and complex sorting algorithms.

      If software is to truely evolve, we must absolutely extract the necessity for low level understanding. True, if you want to design AI, 3D engines, or RDBMS's, you will need certain disciplines that you mentioned. There will always be applications in which you must work closer to the hardware, and which abstraction would not yield a benefit.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    13. Re:I can say this.... by Anonymous Coward · · Score: 0
      Some of it actually makes sense - the object oriented paridigm, component models, virtual machines. (VM's, by the way, go back at least 20 years in the literature -- I studied them in college in the late 80's. However, like Pascal, they were originally considered as an instructional tool, and nobody at the time thought that anyone would be damn fool enough to actually try and *implement* such a thing!)

      Huh, no. Smalltalk 80 was implemented on a VM (probably still is. The bytecode is documented in a book about Smalltalk 80, but keep in mind Smalltalk started in 1972 - and one of its author said it got the Object idea from a engineer long ago, who wanted to download the code at the same time as the data for planes. Sounds like VM and applets. Nowadays, try Squeak.

    14. Re:I can say this.... by fferreres · · Score: 2

      The skycrapper is harder because it's taller and because of gravity, not because it's basically harder. A "horizontal" skycrappers is very easy to do. Of course, you need to have a good plan to be able to use resources effectively (certain tasks require that another task be finished before it can be done, and it's better to have that task done in a row wherever it is needed and for the entire building (if speed is important). If you have little resources, you are better finishing of part by part (say room by room).

      I think it's somewhat different that CS. Yes, you need to know the field, but they are very different beasts. Even the "screw it easly" has very different costs. When building a skycrapper, if you screw early (structure wise) you are dead (you lost most of the money lets say). If CS, you need to restart and lost a little time and resources (linear cost). But in CS, if you didn't screw much early you may reach the destination (in the skycrapper analogy that would be all that's required), and then, when you need to make a modification you'll learn that it's really difficult because you didn't abstract hard enough, or your abstractions where not the needed ones.

      --
      unfinished: (adj.)
    15. Re:I can say this.... by Fulcrum+of+Evil · · Score: 2

      I use my cordless drill around the house for a good many things, but yet it matters not a single iota to me exactly how the thing works.

      To extend your analogy, what happens when you try to drill a hole in 4 inch concrete using your regular metal bits? If you don't know how the thing works and why, you burn a few bits and a few drills, while making little progress. If you do know the how and why, you get a large hammer drill and go through on the first try. You will always need to know why your tools work the way they do.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    16. Re:I can say this.... by Anonymous Coward · · Score: 0

      What? Are you kidding me? Quick-sort is trivial to implement in any decent language. You should be able to knock off the functional version in a few minutes; the in-place one will take longer, but that's okay since the functional one is easier to understand algorithmically (and that's all you need to know, right? =). Obviously this isn't the most efficient way to do it, but it should be easily understandable:

      ;; Common Lisp
      (defun quick-sort (list &optional (comparator #'<))
      (if (null list)
      nil
      (flet ((f (x) (funcall comparator x (first list))))
      (append (quick-sort (remove-if-not #'f (rest list)) comparator)
      (list (first list))
      (quick-sort (remove-if #'f (rest list)) comparator)))))

      (* SML *)
      fun quick_sort [] _ = []
      | quick_sort (x::xs) f =
      let val (l, u) = List.partition (fn y => f (y, x)) xs in
      (quick_sort l f) @ [x] @ (quick_sort u f)
      end

    17. Re:I can say this.... by binaryDigit · · Score: 2

      But you still don't need to know in what way a metal bit differs from a wood or masonry bit. You just need to know that there are different bits for different jobs. Just like knowing that a hammer drill is needed to do concrete/brick. I'm not saying that you can be a total ignoramous, you still have to have an idea of what you're trying to achieve and the tools ability to meet that need. However, you don't need to know the goings on of the tool, just the parameters involved.

    18. Re:I can say this.... by rob_from_ca · · Score: 1

      Most people aren't using Lisp or a similiarly powerful language, so I'd say for most programmers neither of those are trivial to understand. :-)

      Besides, that's the quicksort example; where is your full-blown ACID RDBMS example? :-)

    19. Re:I can say this.... by SurfsUp · · Score: 2

      VM's, by the way, go back at least 20 years in the literature -- I studied them in college in the late 80's

      More like 60 years, oh my. Ever heard of a turing machine?

      --
      Life's a bitch but somebody's gotta do it.
    20. Re:I can say this.... by code_martial · · Score: 1

      VM's, by the way, go back at least 20 years in the literature

      More like 60 years, oh my. Ever heard of a turing machine?


      Turing Machines are a mathematical model. VMs are implementations of a less general and less powerful type. BTW, no computer so far has been able to match the capability of a TM.

    21. Re:I can say this.... by SurfsUp · · Score: 2

      > > > VM's, by the way, go back at least 20 years in the literature
      > >
      > > More like 60 years, oh my. Ever heard of a turing machine?
      >
      > Turing Machines are a mathematical model. VMs are implementations of a less general and less
      > powerful type. BTW, no computer so far has been able to match the capability of a TM.

      What kind of drugs are you smoking, can I have some? Turing defined the "turing machine" as a simple machine suitable for proving theorums about. However, this does not mean that turing machines could not or have not been built (they have). Turing used the turing machine model to show that any so-called turing-complete machine could emulate any other. The machine being emulated is usually called the "virtual" machine, and the machine doing the emulating is the "real" or physical machine. Except for the small detail of not having infinite memory, every modern computer is equivalent to a turing machine in power, i.e., can both emulate a turing machine or be emulated by one. Turing machines are often built or emulated for sport.

      The bottom line is, if you want to call a turing machine a mathematical model, you'd better call your PC a mathematical model as well, because the two are provably equivalent.

      --
      Life's a bitch but somebody's gotta do it.
    22. Re:I can say this.... by Anonymous Coward · · Score: 0

      See http://www.cardinal.co.uk/iseries/arch/2.htm

    23. Re:I can say this.... by code_martial · · Score: 1

      I never said that Turing Machines couldn't have been built. All the existing computers are approximations of TM's and will remain so since infinte memory can't ever be provided for. Yes, the approximations will get closer and closer to the real thing.

      Please don't feel offended(?) by the "Mathematical Model" bit. It's not that mathematical models can't be implemented physically.

  24. Microsoft? by skirch · · Score: 1
    This isn't meant to be a flame or a troll, but...could Microsoft be partially to blame? It seems to me, based on my experience, that software development favors a Microsoft paradigm versus say a Unix paradigm. i.e. reinvent the wheel and make money by being proprietary vs. make lots of little pieces that work independently or can be stacked together.

    Not universal, but seems to be pretty prevalent.

    1. Re:Microsoft? by Anonymous Coward · · Score: 0

      > proprietary vs. make lots of little pieces that work independently or can be stacked together.

      What do you think Component Object Model (COM) was all about?

      If that's not lots of little pieces that work independently or can be stacked together then what is?

    2. Re:Microsoft? by skirch · · Score: 1

      COM is a good idea. It has a few disadvantages, but you make a good point. The problem is that COM fits really nicely into the Microsoft way of breaking the work that has been done to force users into upgrading. Keep the COM objects, but change their interfaces, only support new objects, etc. Some Microsoft innovations are good. Some Microsoft products are good. But for developers, their pattern of breaking the old and selling the new is bad.

    3. Re:Microsoft? by Randolpho · · Score: 1

      That's odd. I thought Microsoft's problem was it's insistence on making legacy code continue to work on new platforms. Aren't the two contradictory?

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    4. Re:Microsoft? by skirch · · Score: 1
      Then you've never done any development work for a Microsoft Office product. There are so many nuts and bolts differences between releases that it's nearly always impossible to upgrade without breaking legacy code.

      From a non-developer standpoint, why should I ever expect my old stuff to be incompatible with an upgraded version of my platform? If it breaks everything, then as far as I can tell it's not much of an upgrade.

    5. Re:Microsoft? by Randolpho · · Score: 1

      You're right, I can honestly say I've never developed an Office macro or similar program.

      I just sorta assumed you meant the OS that everybody hates here. :)

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    6. Re:Microsoft? by Anonymous Coward · · Score: 0
      The simultaneous
      • introduction of the .NET framework by Microsoft and
      • the collapsing U.S. economy

      is an unfortunate coincidence. The injection of uncertainty concerning the future of all software development by Microsoft, in the form of Web Services and totally new development and operations platforms for all Microsoft products initially paralyzed corporate IT management.

      Luckily other vendors, especially IBM and Oracle, have not been so "revolutionary" in their views and are marketing more conservative solutions that IT managers know will work. Oracle's "do-it-all" Application Server approach, which centralizes all IT operations is a simple model that works. IBM has always been able to do the same thing (even better than Oracle).

      Larger IT shops will migrate to IBM, Oracle and their solutions on servers. Microsoft will retain the desktop, although upgrades will slow severely. Smaller IT shops will tend to open source (and benefit from IBM's initiatives in that direction).

      Microsoft's moves inadvertently contributed to the length of this economic slowdown and can best be characterized as extremely bad timing for both the economy and for Microsoft.

    7. Re:Microsoft? by johnnyb · · Score: 2

      COM is excellent. However, the glue framework (i.e. - the OS) completely sucks. Try printing from a service sometime, and see how dependent Windows is on having a logged-in user.

      However, COM is not as good as actually having the data in a text-readable format. With COM, you can do everything the application can. With open data formats, you can do more.

  25. It depends on what you think is an improvement by BillLeeLee · · Score: 1

    If you think about it, in the past 25 years or so, software development has become increasingly more complex. Even though there are many more programming and scripting languages available today, more efficient than the likes of QBasic, regular C, Fortran, Cobol, etc., it really seems like software development tends further away from improvement and more towards diffculty.

    Sure, one of the better innovations was the introduction of objects, but rather than drastically improving programming, it seems like it's more useful creating worthless shovelware, as people just repeatedly use objects coded by someone else, maybe add their own source code, and turn out some "software" that is barely usuable.

    --
    www.google.com
    1. Re:It depends on what you think is an improvement by Anonymous Coward · · Score: 0

      "more efficient than ... C"

      There is little that is more efficient in C if you know how to code.

    2. Re:It depends on what you think is an improvement by Anonymous Coward · · Score: 0

      "as people just repeatedly use objects coded by someone else,"

      they don't use objects coded by someone else, they use classes created by someone else.

      "maybe add their own source code, and turn out some "software" that is barely usuable..."

      please define "barely usuable". if a program doesn't do what the user wants it to do, then that is barely usuable. that has nothing to do with object oriented programming, however. i can think of PLENTY of programs written in anything BUT an object oriented programming language, that don't do "anything usuable" :)

  26. eXtreme Programming == NO by MosesJones · · Score: 4, Interesting

    Now I'm sure that some people out there will rave about how great XP is, but reading the Mythical Man Month and working on any large, or even medium scale project with a long term life-span will tell you that while some elements of XP are good, these are the ones that existed before.

    1) Write your test cases up front... this is ages old. XP isn't as rigourous as others who say "and make sure other people write them".

    2) Pair Programming, works for two people of equal ability. The two headed surgical team from the Mythical man month is a much more effective way of using two heads.

    Basically things like XP sum up how long computing has to go to become an engineering discipline. In every other engineering subject there are critical elements:

    Requirements
    Design
    Testing and approval of design
    implementation
    testing of implementation (throughout implementation)
    Delivery.
    Maintainance

    For a construction project all of these elements are mapped out well in advance, which is why the construction industry can work on lower margins.

    To become better requires not a "Silver Bullet" as Brookes says, the technology won't make the improvement. Its actually about people applying the rules _rather_ than looking for the Silver Bullet. Some projects succeed, others fail, there are reasons for the failures and the successes. But rarely do we learn from either.

    XP is the embodyment of the non-engineering approach to computing that pervades this marketplace. The idea that you can build it wrong and change, don't design "code and check", have a unit test written by a bad coder to check his own bad code.

    Brookes is right. At the end of the day computing success is down to a realisation of the soft-skills allied to technical talent.

    If you have 10 brilliant people leading 100 average people... fire the 100 and support the 10 to do the delivery effectively. Make sure they follow a process, and make sure that the requirements are defined and change as little as possible. Make sure designs are verified, make sure code is reviewed.

    Sure its less exciting that "just coding" but in the end it takes less time, costs less to maintain and delivers what the customer wants.

    Engineering is a discipline, XP is just glorified hacking, only by becomming disciplined will software improve.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
    1. Re:eXtreme Programming == NO by richieb · · Score: 4, Insightful
      For a construction project all of these elements are mapped out well in advance, which is why the construction industry can work on lower margins.

      Just to nitpick on this particular myth. In construction there is the idea of "fast-path" construction, where building starts before the design is done.

      The idea that all requirements and design are done before construction starts is a myth.

      People hack buildings too. There were some famous cases of building "bugs" (eg. CityCorp skyscrapper wasn't stiff enough) or famous failures where design or implementation errors caused a building collapse.

      Read "To Engineer is Human" and "Design Paradigms" by Henry Petroski for a start.

      --
      ...richie - It is a good day to code.
    2. Re:eXtreme Programming == NO by js995 · · Score: 1
      In the projects I have attempted during the course of my education (UK) it has been required to produce full documentation of the solution, including all the processes along the way, with similar steps to those you describe.
      • Identifying the problem
      • Analysing how it can be solved
      • Designing the solution
      • Implementing the solution (including related documentation)
      • Evaluation of the solution

      This is considered normal throughout computing at this (post-16) level, so maybe these traits will start emerging in future projects. Computing seems to be much better understood now as a discipline than in previous times, and I know I find it much easier to do things when following these rough steps on a project, instead of jumping straight into code.
    3. Re:eXtreme Programming == NO by Anonymous Coward · · Score: 0

      This is called "cutting a corner" in normal life. In the IT-world it's "bussiness as usual, let's screw some more money out of our customers".

    4. Re:eXtreme Programming == NO by sqlgeek · · Score: 1

      i have to disagree with you on the paired programming front. you say that it only works with programmers of equal ability, however in my experience it's a phenomenal way to get a junior programmer a better perspective on how a more senior developer works. now mind you i'd never advocate doing this 40 hours/week, though in all honesty that's primarily for my own selfish sake. i simply don't want to work with a junior programmer 40 hours/week.

      so a nice balance that i've found is to sit down with junior folk for 1/2 days of work at a time, something like once every week or two. this seems like a nice balance for me, particularly given the number of junior programmers in our shop.

      cheers,
      scott

    5. Re:eXtreme Programming == NO by ericnewton · · Score: 2

      How does one test a design without some implementation?

      Don't other engineering disciplines build stuff... simulations, models, road-worthy concept cars just to see if the design is workable? Isn't there feedback between these implementation steps and the design used in final production?

      Aren't new car models and new bridges substantially similar to the previous implementation?

    6. Re:eXtreme Programming == NO by pmorrison · · Score: 1

      I forget who said it, but I think it's true: "If buildings were built like computer programs, the first woodpecker who came along would bring down civilization." At least XP is designed to get people to talk to each other, a step forward fro some organizations I've been in.

    7. Re:eXtreme Programming == NO by Anonymous Coward · · Score: 0
      Basically things like XP sum up how long computing has to go to become an engineering discipline.
      Well, first I do not see exactly how you can make this statement. What I mean is, there is a book which some people like which advocates a method that not all that many people actually use. So what? I could find a bad EE book too, if I put my mind to it.

      Second, I am not an engineer. I do not want to be an engineer, and I will never be an engineer. What I do with computers is not analogous to engineering in any way, and I'd prefer that it stay that way. In fact, that is why I studied Computer Science and not ``Software Engineering''.

      I'd rather that my job isn't turned into the ditch-digging that every software manager wishes it would become.

    8. Re:eXtreme Programming == NO by Anonymous Coward · · Score: 0

      make sure that the requirements are defined and change as little as possible.

      Aha ha ha ha ha ha ha ha ha ha ha ha ha ....

      Excuse me...

      Ah ha ha ha ha ha ha ha ha ha ha ha

      You haven't spent much time in a real world software house, have you?

    9. Re:eXtreme Programming == NO by silas_moeckel · · Score: 1

      I'll second that one people think contruction is all layed out by the archs and engineers it is and it isn't. On the low end normal houses etc change orders are constant most people cant decide what they want or change there mind in the building process. It's very similar to the moving design goals of most programming jobs every few days somebody throws a new requirement down and you sometimes need to go back and change all sorts of "finished" code to accomodate it.

      Now lets also look at the changes that have happened over the last 20 years. I can write fast good fairly well documented code that batch processes things in some very complex ways. We have mostly shot ourselves in the foot with GUI front ends, XML, RPC, SOAP and the other extranious buzzwords that everybody needs to have in the applications. Now granted this is from somebody who stoped writing much origional code and just beats the snot out of others and fixes it at this point. The reality is most of the bugs that end up being found in full applications are related to the UI, everybody gets the logic and the math right, not allways the best way but generaly functional.

      --
      No sir I dont like it.
    10. Re:eXtreme Programming == NO by Lumpish+Scholar · · Score: 2
      ... some elements of XP are good, these are the ones that existed before
      All the Extreme Programming practices are ones that existed before; and that's good! XP isn't a bunch of new ideas; it's a new combination of tried-and-true things that have worked. The practices that were picked (and not), and the extent to which that combination is followed, is what makes XP "extreme."
      --
      Stupid job ads, weird spam, occasional insight at
    11. Re:eXtreme Programming == NO by Furry+Ice · · Score: 1
      Do you really think you're the first person to come up with the idea that everything in software engineering would work if it just copied practices from other engineering disciplines? It's been tried. People have been trying to make it work since the beginning.

      Well, it seems that you haven't been following the results, so I'll fill you in:

      Traditional engineering practices fail miserably when applied to software engineering.

      Everyone would like to understand why, and through this understanding, develop new practices which prove successful in the software arena.

      XP isn't necessarily the solution, but at least it's honest. XP admits that it is "glorified hacking" (not directly). But it also asserts that glorified hacking is a better solution to the software problem than traditional engineering practices.

    12. Re:eXtreme Programming == NO by scrytch · · Score: 2

      If you have 10 brilliant people leading 100 average people... fire the 100 and support the 10 to do the delivery effectively

      The first thing each of them will say is "I had a team of ten people supporting my project, then the bastards cut the budget and now all I do is put out fires."

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    13. Re:eXtreme Programming == NO by fferreres · · Score: 2

      "... which is why the construction industry can work on lower margins."

      What are the requirements? A limited list of facilities, style considereations, cost. It's very listable, you can do a mockup very easily. It's very static.

      On the other hand, computing would be the same if you where required to do something like a specific algorithm.

      Lasting software is as generic as you can think. The most generic. It's dynamic, you need to be able to reuse, expand, maintain (very different meaning than in the construction industry), reshare and many other things. It's yes, engineering, but in a very different way that the average engineer of any other field.

      I know this myself beause I worked with very smart industrial engineers and they don't abstract as much as they have to. They go for a an simple analisis of what is required now and don't have a very long term goal when they start coding. It took me exponetial time to try and maintain industrial engineers code. They are used to and are very good at building things or things that build things, NOT systems.

      That's my private experience. And it's very common for consulting firms to hire engineers, because they like their problem solving attitude and delivery ratio. It has a cost though, for the solution will usually not be very flexible. But the nor the consultant nor the company realize this.

      --
      unfinished: (adj.)
    14. Re:eXtreme Programming == NO by Locutus · · Score: 2

      There is extreme opposition to following enginering practices in software from management. That has to change... Here's a little story:

      I worked on a smaller project with only 3 people involved for a low level subsystem for the applications people to build on. There was one analyst, the project lead/coder and myself/coder. Estimated as a 3 month project we spent 2 months on requirements and design but our department head was going nuts because we hadn't started coding 1.5 months into the project. By the end of month 2 he was going balistic. It took us 3 weeks to code to the design. Since our design spec'ed out the api fully we were even able to hand off a couple of sections to 2 different developers who had a free day do to a meeting delay. Those coders didn't do any unit testing but still it only took 1 week for integration testing and release. The applications people were given the api's after month 2 but did nothing with it until we released the code at the end of month 3. You see, they "knew" that the api would change so they waited. A couple of weeks later I asked the project lead how the applications people where doing and what was going on since I'd not heard from them and she said they had 2 bugs which she fixed in a about an hour.

      It was a fantastic little project and only worked because all 3 of us were willing to oppose managements insistance on us getting started on coding before the design was done. Larger projects would require coding and protottypes before a full design is complete but even then, most likely management will insist getting LOCs is more important than design documents. If management comes from the hardware side, he/she might agree more on the importance of requirements and design but from my experience, because he/she can't really physically see software, they have a difficult time scheduling it.

      This is my limited experience working for companies with pure software solutions and companies working on in-house hardware/software solutions. Software can be engineered but too many consider it FM and to some extent, developers like this.

      I do think that an industry standard component architecture would do tons to take the magic out of FM, it's not going to happen while Microsoft dominates the client.

      LoB

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
    15. Re:eXtreme Programming == NO by Anonymous Coward · · Score: 0
      Weinberg's Second Law

      Now if I only knew who Weinberg was...

    16. Re:eXtreme Programming == NO by Kintanon · · Score: 2

      There was (might still be) a building where the type of glass they used was fit for skyscrapers, so when the building swayed sometimes the windows would pop out and fall 15 or 20 stories to shatter on the sidewalk. Great stuff that...>:)
      Also, my dad was construction foreman on a school down here and he came in one morning after the masons had been in over the weekend and found out that there was a 1 inch gap between the two halves of his building. And the entire foundation and a bunch of the bricks had already been laid. You could SEE THROUGH the building! >:) His bosses told him to have the masons fill the gaps in somehow... hehehe.

      Kintanon

      --
      Check out JoshJitsu.info for Brazilian Ji
    17. Re:eXtreme Programming == NO by jlowery · · Score: 1

      Moe says:
      "If you have 10 brilliant people leading 100 average people... fire the 100 and support the 10 to do the delivery effectively. Make sure they follow a process, and make sure that the requirements are defined and change as little as possible. Make sure designs are verified, make sure code is reviewed."

      From my memory, Brooks says poo-poo to this mode of thinking. The fact is that there are NOT enough brilliant people available in market to make this work for everybody.

      And from my experience, you're going to have a shot at success with a mix of good/mediocre people who can communicate and function as a team, rather than with a few brilliant prima donna's who can't stand to talk to each other.

      --
      If you post it, they will read.
  27. faster and less reliable... by Quazion · · Score: 3, Insightful

    else how would commercial software company's make money ? They need to sell updates and support.

    They code crap. My personal experience with not to big software company's is they like to sell crap if they can and most of the time the other company also sells crap and after wards you dont even own the software you buy. Software bussness sucks atm.

    Until the world wakes up and start demanding that software needs to work just like material stuff or else they wont buy it. It wont get better in the near future aslong we except crap from even big company's like Microsoft, which is becoming more reliable and stable but still sells a awful design if you ask me. oke maybe start a flame here but most software is like throw a way dishes instead of a rolce roys. And i think company's like microsoft showed the smaller software houses that its oke to sell crap as long it sells and it bugs me cause software has a bad name, but i know good software exists, bla bla bla, you got me pissed again slashdot....i hate humans ;-)

    Quazion.

    1. Re:faster and less reliable... by dubstop · · Score: 1

      they like to sell crap if they can

      I disagree. As a software engineer, I've never worked for, or had personal experience of, a company that had a policy of producing crap. That's not to say that I haven't seen crap being pushed out the door, but it always seemed to be failure of design, rather than by design.

      There's lots of reasons why software development often results in failure, but I personally wouldn't be prepared to work for a company where failure was policy.

      This isn't to say that some companies don't benefit enormously from billing their customers for providing endless upgrades and bugfixes, but it seems to me to be a dodgy business model to bet a company on.

    2. Re:faster and less reliable... by Anonymous Coward · · Score: 0

      Incredibly true. I worked for a small company
      where the tech. director viewed an "acceptable" level of bugs in the product as an asset on the balance sheet: Deferred maintenance!

    3. Re:faster and less reliable... by Quazion · · Score: 1

      Its not that its a real policy, the software developers dont want to create crap, but management doesnt care really and they only see dollar bills.

  28. lowered expectations is the key to success by Smallpond · · Score: 1


    I think the quality of code has always been poor, but it seems
    as though most products now ship with bad code and expect the user to
    have to download the "latest" version (ie code that actually makes the
    product do what you paid for).

    In comparison, people yelled and screamed when it was revealed that
    certain obscure floating point instructions on the Pentium chip were
    off a few decimal places. The worst it did was cause some of those
    clipping errors in Quake.

  29. Software improvement in the last 25 years? by fungus · · Score: 4, Interesting

    You must be kidding.

    Of course it is now easier to create software than before.

    First of all, source management software wasnt available 25 years ago. Try creating a huge piece of software without any way to rollback changes, share the same source tree with other developpers, etc... (cvs/sourcesafe/starteam/etc)

    Second, profiling tools. Hey, you want to know where that memory leak is? Where that CPU bottleneck is? Pretty hard to do when you were coding in cobol many years ago... Doing the same is way easier now with OptimizeIt and stuff like that.

    I could go on and on but I must leave for work =)

    1. Re:Software improvement in the last 25 years? by Anonymous Coward · · Score: 0

      Second, profiling tools. Hey, you want to know where that memory leak is?

      Solution: Don't use C/C++ and pointer shit

    2. Re:Software improvement in the last 25 years? by Tablizer · · Score: 1


      IMO, better UI's (GUI's) and the rise of relational databases are the biggest improvements over the last 20 or years. (I was just starting programming in school about 20 years ago, but I often used 10-year-old technology for the next 10 years after that.)

      Beyond that, things are not really that different. Libraries? I used FORTRAN math and graphics libraries that were mostly created more than 20 years ago when I first started earning money for programming. Most of them were relatively easy to use. True, with OSS libraries are now easier/cheaper to get, but the concept of big libraries itself is not new.

      (I will be good here and not rant about OOP again.)

    3. Re:Software improvement in the last 25 years? by Anonymous Coward · · Score: 0

      I use printf() and bungessfuck(), a personal invention of mine that looks for mispelellininggs in my code and then lets me know about them so i can fix my fuctions.
      It's grate.

  30. Re:"I'm in a Computer Science degree program"????? by EnderWiggnz · · Score: 1

    IT/APp programming sucks...

    but us system engineers are doing ok, thanks :-)

    --
    ... hi bingo ...
  31. One day... by pubjames · · Score: 5, Interesting


    I've always believed that one day some bright college kid is going to come up with a completely different style of computer language and interface, and when that happens we will all slap our heads and go "D'oh! So that's how we should be doing it! Obvious!"

    Like the web and P2P, the most influential ideas are often quite simple, and "obvious".

    1. Re:One day... by ka9dgx · · Score: 2
      As long as everyone uses text files as a source to a compiler, things will only get incrementally better. You loose too many things when you allow the compiler to throw away all context in the process of giving you an executable.

      I'm not a bright college kid, just a guy who looks at the big picture. When you get a system that supports annotation, and lets you consider the object code and symbol tables as part of a dynamic system linked with the source code, then you'll really get to play.

      Until then, you'll be mired in C/C++/Perl

      --Mike--

    2. Re:One day... by lobsterGun · · Score: 2, Funny

      Then he's going to patent the process and we're all going to say, "You can't patent that! It's too obvious."

    3. Re:One day... by Ari+Rahikkala · · Score: 1
      Actually it will be more like this: One day a bright college kid is going to come up with a completely different style of computer language and interface and push that idea for 20 years, slowly getting people on his side and fighting against a huge amount of resistance. His idea will be called "only a fad" by most everyone (except, of course, if he's an open-sourcer, in which case he will be loved at Slashdot), but eventually it will be taken up by everyone - although at that part it will be a given to everyone anyway. Then, 50 years later, the young of the future will collectively laugh at us for not figuring out that idea right at the beginning.

      Well, that, or it will be like what you described. Both ways are known to have been walked in history.

    4. Re:One day... by BitwizeGHC · · Score: 1

      When you get a system that supports annotation, and lets you consider the object code and symbol tables as part of a dynamic system linked with the source code, then you'll really get to play.
      ... you mean, kinda like this?
      --
      N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
    5. Re:One day... by tigersha · · Score: 1

      Sigh.

      Been there, done that.

      LISP Machines. SMalltalk. See any programs written those? Look at IBM Visual Age. THe most commonmoan (especially here on /.) is that the program is stuffed into a binary database and you cannot get to it with . Favourite tool is usually vi or emacs.

      I agree with you. Fully. And I would like to add the idea of some kind of semi-automatic optimization systems (deforestation in functional langauges for instance, or perhaps some kind of genetic optimizer) to REALLY get you cooking.

      However, there are some reasons why this is simply not flying. I think there must be some barrier here which we should try to overcome, but I do not know what. Here are some problems:

      a) People get attached to tools. vi and emacs being classic examples. I myself use joe a lot. Why? Because the keystrokes are the same a Turbo Pascla, which, again, are the same as Wordstar. I learned this back in '82, and it got stuck into my little brain. Few of these fancy source systems let me use MY keystrokes.

      b) If your components are all dumped individually into the filesystem you can bring the power of millions of man-hours and LOC's invested in pre-existing tools to bear on them. Think grep, CVS, make, M4, cut, tail, awk, sed, and god know what else. ALL these tools work on the simple paradigm of files in the filesystem. Dumping them into some database makes them invisible. And all of these tools are useful when constructing a large program, at times. Even newer things such as XSL transforming engines and such are useful here.

      For instance, I wrote a program the other day that used a XSLT stylesheet to write some code. It was a simple sweet job and it worked. Try THAT in a fancy IDE, it would be difficult. IT worked because the XSLT output is the same standard thing: and ASCII (OK, Unicode) file.

      The point is, the lingua franca for computers is ASCII files. Zillions of tools use and understand that.

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    6. Re:One day... by Anonymous Coward · · Score: 0

      Been there. Smalltalk.

      Ruined by bad marketing and the unwillingness of management to be dependant on two or three wizards. Management wants to be in control but wizards don't need management beyond a set of specs what the application should do.

      Smalltalk is the closest thing to a silver bullet that I know of.

  32. Very few improvement, and it just gets harder... by Anonymous Coward · · Score: 0



    Software, the hardware upon which it must run, and the applications which are in demand won't hold still long enough for us to turn software development into an art (or science). As long as we are permitted, even required, to hammer out code as fast as we can, there will be no art and little science in software development. The volumes of info a programmer must master or at least become familiar with continues to increase, exacerbating the problem.

  33. Absolutely! by Gary+Franczyk · · Score: 4, Informative

    Have you used the Microsoft Visual Studio? It makes your life amazingly easy by finishing your words for you, making it easy to find functions, it gives you hints about what the arguments to each function are. It is all around a great piece of work.

    If Perl had an IDE that was as easy to use it would dominate the world. (more than it already does)

    1. Re:Absolutely! by Anonymous Coward · · Score: 0

      Microsoft invented code-completion?
      That's news to me.

    2. Re:Absolutely! by EReidJ · · Score: 2
      I have to put in a good word for what I consider the best IDE for Java out there: IDEA by IntelliJ. They just released version 3.0, it's fast, lightweight (compared to the other bloated IDE's) and beats the pants off any other IDE when it comes to refactoring (the most important part of good coding, IMHO). My productivity has just about tripled since I started using this IDE. Check it out.

      And no, I'm just a fan, I'm not associated with the company.

    3. Re:Absolutely! by Anonymous Coward · · Score: 0


      Perl? IDE?

      HELLO

    4. Re:Absolutely! by bpfinn · · Score: 1

      If Perl had an IDE that was as easy to use it would dominate the world. (more than it already does)

      How about Visual Perl from ActiveState?

    5. Re:Absolutely! by thedigitalbean · · Score: 1

      Actually I believe ActiveState makes a compiler plugin for Visual Studio .NET that allows you to use VS .NET as an IDE for Perl and Python.

      It really is quite slick and works well.

      http://www.activestate.com/Products/Visual_Perl/?_ x=1

      and

      http://www.activestate.com/Products/Visual_Python/ ?_x=1

    6. Re:Absolutely! by Black+Perl · · Score: 3, Interesting

      If Perl had an IDE that was as easy to use it would dominate the world. (more than it already does).

      There are many. Others have mentioned Komodo and the Visual Perl plugin for Visual Studio.NET.

      There's also Perl Builder, which people rave about but I have not tried. They claim to be the most popular Perl IDE.

      I would also like to add that an Open Source one, Open Perl IDE is decent. I use it at home.

      I use Komodo at work (because it can act as an IDE for other languages like XSLT) and really like the Perl and Regular Expression debuggers.

      -bp

      --
      bp
    7. Re:Absolutely! by lineymo · · Score: 2, Informative

      Someone mentioned IntelliJ for a Java IDE. I haven't used that tool, but I have used eclipse 2.0.1 from eclipse.org

      It does all that plus a bag of chips!

      Seriously, it works well for an IDE. Give it a look. The only thing I don't like is the GTK version doesn't include printing.

    8. Re:Absolutely! by RogerWilco · · Score: 2, Insightful

      Uhm, like Borland Delphi /
      C++ Builder / Kylix / JBuilder have been doing for the past 6-7 years ??
      I have both used VS 6.0 and the new VS.Net, and I just find it very familiar to what Borland has been doing for a long time.
      If our client's don't force us to do a project in VS (some do, because "it's corporate policy"), we use Borland,mostly C++, but the JBuilder for cross-platform. Now that Kylix supports C++, I think we are going to use that for Win32/Linux apps.

      Adriaan.

      --
      RogerWilco the Adventurous Janitor
    9. Re:Absolutely! by Anonymous Coward · · Score: 0

      Visual Studio does have a number of convenient features, especially the ability to let even the dumbest programmer build an application. VS embodies what I term drag-and-drop programming. It may sound like a win-win situation, but the truth is, when coding becomes as simple as clicking the functions you want your program to have, the developers get dumber and dumber. When it finanly comes time to implement something VS doesn't do for you, a typical VS developer will copy and paste code until they get something that sorta works at best.

      It may not be fastest to write code from scratch, but it is certainly more educational. It breeds developers who are capable of solving problems for themselves instead of hoping VS will provide a solution for them.

      Don't get me wrong, I love auto completion. I use it in VIM all the time :)

    10. Re:Absolutely! by BigJimSlade · · Score: 2

      If Perl had an IDE that was as easy to use it would dominate the world. (more than it already does)

      ActiveState sells a plugin for Visual Studio .NET called Visual Perl that gives you all the functionality of the VS.NET environment with the language you love. (Don't worry, Python lovers... ActiveState makes Visual Python as well)

      I don't work for ActiveState, but I do love a lot of the features in Visual Studio .NET, so I thought it was note-worthy. I guess the integrated development environment is an advance?

    11. Re:Absolutely! by tshak · · Score: 2

      This is my one problem with VS.NET. It doesn't have any refactoring tools (at least in Pro - maybe it's in "Enterprise" or "Enterprise Architect"). Although I disagree that refactoring is the most important part of an IDE (although I generally work on codebases of less then 100,000 lines).

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    12. Re:Absolutely! by Anonymous Coward · · Score: 0

      Actually emacs does word completion.
      I just got :

      (global-set-key [s-tab] 'dabbrev-expand)

      in my .emacs. For sure can you cook up modes which give hints about functions (built-ins or functions defined in other buffers).
      This is also true fo vi.

    13. Re:Absolutely! by Anonymous Coward · · Score: 0

      I must disagree about MSVS: it is very nice for VERY small projects. When you start having lots of sources and header that MSVS has to parse, the autocomplete feature (?) starts to get too slugish: you have to wait a couple of seconds after typing a dot or the -> operator.
      I now use gvim for windows. Much better but very hard to get used to, at least for someone with a windows background like me.

    14. Re:Absolutely! by Randolpho · · Score: 1

      Hmm... nice little program. I've been using Eclipse (Eclipse.org) for a while, and am quite happy with it. IDEA has a few nice features that Eclipse doesn't have (or that I haven't found in Eclipse yet ;)), such as code collapsing and Live Templates. But Eclipse *is* fast, easy to use, easier on the eyes than most Swing aps, and priced exactly right (i.e. free).

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    15. Re:Absolutely! by Tablizer · · Score: 1

      Microsoft invented code-completion? That's news to me.

      Yip. Automated the creation of bugs. That's what I call "productivity" :-)

      "When I was a young wipper-snapper, we had to code all our bugs by hand."

    16. Re:Absolutely! by Anonymous Coward · · Score: 0

      This is also true fo vi.


      Sorry, you don't get away that easy.

      The vi implementation is inferior.
    17. Re:Absolutely! by johnnyb · · Score: 2

      I hate VS. It seems to go against all that is good in programming - i.e. - the ability to just crank out code.

      Even when programming win32-only, I like just just stick with Python and wxWindows. It is so much easy just to be able to type and double-click, and not having to mess with launching bloated applications that try to do things for me, even when I want them done differently.

  34. Has Software Developement REALLY improved? by idontgno · · Score: 5, Insightful
    Twenty years as a software practitioner tells me that the answer, in a word, is:

    NO.

    The project management keeps moving the target. The customer still says "I don't know what I really want, but keep coding and I'll let you know when you get it." Analysts can't analyze, designers can't design, coders can't code, testers don't test (enough), ad nauseam.

    Methodologies and philosophies of software development can only make up for so much. Sometimes, they are counterproductive. They "lower the bar", leading management to believe that the methodology can fill in for cheaping-out on hiring good developers. But we /.ers know the truth, don't we: Quality software comes only from quality developers--people, not methods or schools of thought or books by really smart people. Since quality developers are rare (like Leonardo DaVinci rare), quality software is correspondingly rare.

    --
    Welcome to the Panopticon. Used to be a prison, now it's your home.
    1. Re:Has Software Developement REALLY improved? by glider524 · · Score: 1

      Amen, brother.

    2. Re:Has Software Developement REALLY improved? by Anonymous Coward · · Score: 0

      The customer still says "I don't know what I really want, but keep coding and I'll let you know when you get it."

      So what customers do know what they want? Or perhaps it's a case of listening to the customer.

      coders can't code

      The problem is even the good coders can't code. How often is the most cutting edge tech used to solve simple problems?

      testers don't test (enough)

      In my experience, testers test as much as they are allowed. How often is the development late in delivering software to QA, but the release from QA is not allowed to slip. Developers may moan about the time they have for coding, but at project planning stage, testing times are normaly slashed by orders of magnitude greater than development times.

      Of course, if coders were any good, it wouldn't need so much testing.

    3. Re:Has Software Developement REALLY improved? by Anonymous Coward · · Score: 0

      Consider also this: We spend 8 hours a day coding on something that is not really important to US. How well you code can also depend how interested you are in making it work.

      If you're just working to get some money, sure it's going to affect the quality of your work. I'd say most people would be better off doing something else with their lives, if they had the guts to & could afford it.

      If you're REALLY interested, you'll spend 50/50 between coding and documentation ;^>

    4. Re:Has Software Developement REALLY improved? by Ripplet · · Score: 1

      But who wants quality software? Sure as an engineer I don't want to produce crap, but when did you get the time to do top quality stuff?

      The saying goes: "good, cheap, fast, pick any two." Well by the time you've put the question to marketing "good" is already out the window! They want it now, and as long as it works most of the time, that's fine. They don't give a toss what the code looks like, as long as it has more features than the competitors' products, and we can get it on the market quicker. Virtually every place I've ever worked, as soon as deadlines get tight (which they always do) any process you had gets ditched and it's hack hack hack.
      And the thing is, this has become acceptable to users. We're used to having the damn thing crash every now and then, or do weird things once in a while, but as long as its not too often we don't mind, that's just the way it is with software right?

      So you're dead right, all of this has not changed one bit in the last 20 years. And it won't, why should it? There's no motivation for the management to let you as a developer produce higher quality stuff, because it costs more time and more money, and doesn't bring enough quantifiable benefits.

      --

      Skiing? Check out The Independant Skiers Portal

    5. Re:Has Software Developement REALLY improved? by TeeWee · · Score: 1

      Sure software development has improved. People have been trying different things in the past two decade-and-a-half.

      Things like RAD has helped a lot of customers in formulating their needs. This is another step into the realisation that users are not really aware of what they want. Keep in mind that in most industries, it's not really the end-users who need to formulate what the requirements are, but are perfectly capable of deciding whether what is being offered is good (relative to what they already have).

      Awareness of the limitations of the developers is growing and developers themselves are growing out of their endless optimism. Yes, developers do have their share of blame on the poor perception on software development.

      There is progress. That progress is mostly in the way of growing awareness of the reality of the environment in which software is being built.

    6. Re:Has Software Developement REALLY improved? by Tobold · · Score: 1

      Really really insightful. I agree wholehartedly :)

    7. Re:Has Software Developement REALLY improved? by Anonymous Coward · · Score: 1, Insightful
      testers don't test (enough)

      As has been said, testers test as much as they're allowed to. Typically there's a product manager saying something like "I know we promised you six weeks, but there's been eight weeks of slippage in development, so we actually launched the product last month and all our directors swore blind to our investors then that it worked. You going to tell them it doesn't?"

      So the tester reports a bug. Next thing they know, the product manager is breathing down their neck: "Dammit, the investors think the thing's finished! You can't tell people about these bugs now! Give your reports to me privately and ferpityssake, come up with some tests it'll pass."

      Eventually the tester produces a report saying "It's buggier than a compost heap, it's a miracle it hasn't taken anyone's arm off yet". The product manager turns this into a set of RFEs for release 1.1, the developers take one look and say "We can fix maybe a third of those in reasonable time, but the rest might as well wait for the next product" - and the company steadfastly pretends that there was nothing wrong with the original release.

      And thus another promising technology bites the dust.
    8. Re:Has Software Developement REALLY improved? by tshak · · Score: 2

      This post is hogwash, and only got it's moderation because of how LOUD it was (a common problem on /.).

      Read the more balanced posts in the parent thread to see why software development has improved.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    9. Re:Has Software Developement REALLY improved? by Tablizer · · Score: 1

      Since quality developers are rare (like Leonardo DaVinci rare), quality software is correspondingly rare.

      DaVinci had a bad habit of starting something, but never finishing. No wonder quality software is rare.

    10. Re:Has Software Developement REALLY improved? by Anonymous Coward · · Score: 0

      Of course software development has improved. Processing power and memory have increased exponentially since the 70s. Would we be able to harnass all that power without huge improvements in development tools and methodologies?

      Your cynical attitude betrays an assumption that somehow the world would be perfect if everyone was as brilliant as you.

    11. Re:Has Software Developement REALLY improved? by Alex+Belits · · Score: 2

      Things like RAD has helped a lot of customers in formulating their needs. This is another step into the realisation that users are not really aware of what they want.

      This is what RAD was intended for. Unfortunately it was only used to produce final product of substandard quality, not for prototype. The moral of the story is: make crap, and more crap will follow, so better just don't make it at all.

      --
      Contrary to the popular belief, there indeed is no God.
    12. Re:Has Software Developement REALLY improved? by AnotherBlackHat · · Score: 2

      This post is hogwash, and only got it's moderation because of how LOUD it was (a common problem on /.).


      Any interesting point of view, but one which I notice you failed to substantiate.

      While I think the original post does look at only a subset of the entire development issue, the things it does mention are dead on.

      More importantly, the subset of things which it does talk about are of major importance.

      Having a clearly stated goal that everyone on the team understands is far more important than which programming language you are writing in, or what tools you are using.
      As the original post said, there seems to have been no improvement in communicating goals effectively, nor in most of the important areas of software development.

      For example, most people agree that well commented code is very important.
      When's the last time you heard of a seminar on writing effective comments?
      Or a programming language which added extra ways to do commenting?
      (As of Perl 5.6, the language that brought you the phrase TIMTOWTDI there still isn't a block comment.)

      Yes, there have been some improvements, but we haven't seen any major ones.
      I'm sorry, but OOPS isn't significantly better than assembly, CVS isn't significantly better than keeping backups, text editors haven't become significantly better than VI.

      -- this is not a .sig
    13. Re:Has Software Developement REALLY improved? by Stu+Charlton · · Score: 2

      All it takes is 1 software lead with the balls to say "no, we're not going to hack". You can create great software on time, and under budget, there are many techniques for doing so and a selection of developers that know how.

      In a sense, you're right, things haven't changed in 20 years. In another sense, you're wrong -- things have changed, but many people haven't noticed.

      --
      -Stu
    14. Re:Has Software Developement REALLY improved? by tshak · · Score: 2

      I didn't have to waste my time substantiating it because, as I mentioned, the well reasoned posts in the thread did the talking for me. I was just protesting the rediculous moderation - not because I disagree with the post, but because it is clear that the post was moderated for loud nonsense, not because of insightfulness.

      Also, most everything that you mention that hasn't improved much on I could not only disagree with, but you also limit the scope to open source software which makes me wonder if you have ever used an enterprise version and change control system before (for example).

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
  35. Refactoring by Anonymous Coward · · Score: 0

    Refactoring tools are great. Makes for more clarity in code -> more understanding -> less errors. To bad not to many people know about it where I am.

  36. Here's a thought... by fireboy1919 · · Score: 3, Interesting

    Off the shelf components have helped a LOT.

    perl is ugly to code in, and perl OOP is obviously a hack. I had a graphics/OOP professor who said, "nobody likes to program in perl, but it gets the job done." Obviously he lives in the land of language theory, where perl doesn't, but it gets the idea across...

    perl gets the job done because of its massive collection of components.

    I think I'd go further to say that the big improvement there is in repositories where you can get massive collections of components, as there have been languages like perl (in terms of having lots of stuff - PL/1 comes to mind) in the past.

    Places like CPAN, Sourceforge and Freshmeat really make the difference. So ultimately, the internet is the means through which software development has sped up (at least when you're not talking about RAD-GUI development, which is another thing entirely).

    --
    Mod me down and I will become more powerful than you can possibly imagine!
    1. Re:Here's a thought... by pb · · Score: 3, Informative

      Even though perl can *look* quite ugly, it's actually a very powerful and fully-featured language, with all (most?) of the features of the classic functional languages, except that they're optional. Anyone who objects to perl based on the syntax alone is just being shallow, and should probably spend some time writing a pre-processor for perl in perl so they can make it look "pretty" (whatever they think is pretty, that is--I think Java is pretty ugly).

      I've been spending a lot of time programming in PHP lately, and although my code might be more readable, (especially to someone with just a C programming background) I spend a lot more time working around quirks in PHP (either version issues, library functions, or design flaws... sometimes all three!) than I ever would in Perl.

      However, the repositories do make all the difference. Although there isn't quite as much out there for PHP as there is for Perl, there's still a substantial amount, and that helps make it all bearable.

      --
      pb Reply or e-mail; don't vaguely moderate.
    2. Re:Here's a thought... by janolder · · Score: 2, Informative
      Perl is ugly to code in, and Perl OOP is obviously a hack.

      Take a look at Python. It is as powerful as Perl, if not more so, and excels where Perl is lacking: syntactical clarity. I often wish C++ was as clear as Python.

      Recently I was faced with a little programming job: Recursively parse a directory tree, examine all the files in said tree and do a complex search and replace operation that required some smarts that couldn't be implemented easily with regular expressions. I dreaded to hack that up in C. Even though I had programmed some perl a while back, the syntax was so convoluted that I couldn't remember any of it. Fortunately, I had recently bought a couple books on Python (but hadn't looked at them yet). After one hour of reading and coding, I was done with the little project! Granted, the code did not utilize a lot of powerful features, but it worked like a charm and got the job done. Since then, I've been using Python with ever increasing pleasure.

      The only issue with Python is the "grouping of statements by indentation" which may take you about 10 minutes to get used to unless you hate it so much that you can't get over it. But before you condemm it, read Guido van Rossum's comments on the matter.

      An interesting comparison of the major scripting languages with C++ and Java can be found here.

      IMHO, one of the major factors of increased programming productivity is the spreading use of powerful, interpreted languages like perl, python and Ruby.

    3. Re:Here's a thought... by Anonymous Coward · · Score: 0

      The sad thing is, this applies to many other languages. Try this:

      Even though Common Lisp can *look* quite ugly, it's actually a very powerful and fully-featured language, with all (most?) of the features of the classic functional languages, except that they're optional. Anyone who objects to Common Lisp based on the syntax alone is just being shallow, and should probably spend some time writing a pre-processor for Common Lisp in Lisp so they can make it look "pretty" (whatever they think is pretty, that is--I think Perl is pretty ugly).

    4. Re:Here's a thought... by Rik+van+Riel · · Score: 2
      perl is ugly to code in


      While it is true that Perl makes it easy to write horribly ugly code that mysteriously works, it is also possible to write nicely readable code in Perl.

      Like with all languages, it's a question of discipline by the programmer. The fact that Perl is more forgiving with undisciplined programmers shouldn't be held against the language itself.

    5. Re:Here's a thought... by fireboy1919 · · Score: 2

      Yeah...the "bless" operator is just beautiful, as is the non-orthogonal nature of the the language.

      Its ugly because of the language; programmers can make it UGLIER.

      Just live with it. Ugly isn't necessarily incredibly bad.

      --
      Mod me down and I will become more powerful than you can possibly imagine!
  37. The little things. by ksyrium · · Score: 1

    Jolt cola. Anything from the caffeine section at thinkGeek. Humpback notation.

  38. Engineers! by snatchitup · · Score: 2

    We've impoved the software industry.

    As Engineers, we didn't sit around all day debating on whether or not we should got o base-3 computing instead of base-2.

    We spent our days solving problems. Also, we learned how to do this in a timely fashion. Get it right the first time, or fail the test because you run out of time.

    Engineering discipline.

  39. Re:CVS / RCS - the next step? by voudras · · Score: 2, Interesting

    I've been using CVS for some time now - even bought a _great_book_ to assist me in understanding it better.

    I was recently discussing this sort of thing with some friends and got into what I would love to start as a project - something to the effect of "fvs" or function versioning system - which would allow me to keep tabs on "just-a-box" functions which i use throughout my programs.

    I think any programmer who sees the benifts of CVS would understand where im going with this concept. We all have functions we use again and again - and realizing that there is a potential flaw in a given function at one point is always followed by exasperation because one realizes that the function needs to be changes in X number of programs.

  40. the proof is in the pudding by tps12 · · Score: 4, Insightful

    No need to haul out references to books or count buzzwords...just look at the software world and the question answers itself.

    Since the early days of computing in the late 70's, we've seen systems grow more larger and more complex. Whereas entire OSes used to be written by a single person (granted, a gifted person like the Woz or Bill Gates), these days we have companies like Sun and Microsoft with literally hundreds of developers and testers for a word processor, let alone the thousands of folks around the world who contribute to Linux, Apache, or KDE.

    Given this incredible change in how software is developed, we'd expect to see systems collapse into instability and mayhem, but save for a few exceptions (Windows 9x, anyone?) this has largely not been the case. Windows XP, Mac OS X, and Linux 8.0 have proven, if anything, more stable and reliable than their predecessors. For an even more dramatic example, look at NASA's software or popular video games. It's clear that not only has software development expanded in scope exponentially, but it has become objectively better in the process. Development has never been better, and I see no reason why this trend shouldn't continue.

    --

    Karma: Good (despite my invention of the Karma: sig)
    1. Re:the proof is in the pudding by Anonymous Coward · · Score: 0

      Whereas entire OSes used to be written by a single person (granted, a gifted person like the Woz or Bill Gates)

      What OS did Billy Bob Gates write? He just bought Dos and paid others to do the next versions and also to do Windows.

    2. Re:the proof is in the pudding by killmenow · · Score: 1
      Windows XP, Mac OS X, and Linux 8.0
      Linux 8.0?! Damn...where've I been?! I thought 2.6 wasn't even out yet!
    3. Re:the proof is in the pudding by kin_korn_karn · · Score: 2

      Bill Gates didn't write DOS, a guy named Tim Patterson did. Bill basically did
      sed s/QDOS/MS-DOS on command.com for DOS 1.0

    4. Re:the proof is in the pudding by TheAncientHacker · · Score: 2

      But BillG did write the OS for the Tandy 100 and the mini OS that was part of Disk Basic for the 8080. (That was the origin of the FAT file system)

    5. Re:the proof is in the pudding by code_martial · · Score: 1

      Linux 8.0 isn't out yet. Heck, even Linux 3.0 is yet to go into feature-freeze! The latest stable version of Linux is 2.5.19.

    6. Re:the proof is in the pudding by code_martial · · Score: 1

      oopsy, hate it when errors sneak past the preview. the latest stable version of Linux is 2.4.19.

  41. Do you like putting lipstick on a hippo? by nicodaemos · · Score: 5, Insightful

    Let's say you're trying to improve the work of a painter. Give him a better brush, his strokes look nicer. Give him better paint, his colors look brighter. Give him a CAD system with a robotic painting arm, his paintings look crisper. However, nothing you've done can change the fact that he's still doing velvet Elvis's. Not that there is anything wrong with that, but he isn't churning out a Mona Lisa anytime soon, or ever. You haven't been able to affect the input to the process - his brain. You know the adage, garbage in, garbage out. Well that is the fundamental rule in software.

    The big improvement in software productivity will come when we are able to successfully clone human beings. Corporations will create a stable of uber-programmers who they will then clone to be able to mass produce software. In the future, the open source war will be about peoples' genes, the software will be just a downstream product.

    1. Re:Do you like putting lipstick on a hippo? by drooling-dog · · Score: 1

      Ahhhh... Coding ability is purely genetic! All those years of schooling, a total waste...

    2. Re:Do you like putting lipstick on a hippo? by nicodaemos · · Score: 2

      Well not exactly, I mean the clones would need to grow up on a strict diet of /. -- but that was so obvious I didn't feel it needed to be mentioned.

      On the serious side, did Einstein learn his greatness from school?

      How about John Carmack? After all, he just implemented everything he learned about bsp's and fps's from his college classes. Oh wait he couldn't have because he dropped out of college. I guess all his peers who stayed in college must have made much bigger contributions to the software gaming industry since they kept learning in school.

      How about Srinivas Ramanujan? Self taught and dirt poor, he made substantial mathematical contributions.

      All of these guys transcended their environments to achieve greatness even before the advent of /. Just think what the clones will achieve!

  42. Plenty of Improvements - In a sea of dreck by Badgerman · · Score: 5, Insightful
    I say this based on seven years as an IT professional and twenty years as a computer enthusiast.

    There are definite improvements to programming. Tools, concepts, etc. have evolved. There are no true silver bullets, but we've got a good selection of choices out there.

    The problem, however, is threefold:
    1. First, the right tool (be it a language, software, or concept) for the right job. There are many "silver bullets" out there, but you have to find the right one for the job you're doing.
    2. We're stuck in a sea of IT dreck that's concealing actual good ideas. New products, endless upgrades, marketing schemes, propaganda, FUD, evangelism, poor releases, confusing releases, and much more. What good tools and improvements in programming are out there, I feel, are concealed by the less-than good and utterly terrible tools, concepts, and techniques that exist.
    3. Even if you have the right tool, you may be in a situation where you can't use it due to company standards, biases by others on your team, etc.


    One of the real challenges for IT professionals today is to find the good tools and ideas out there, the ones that really have improved programming, and then actually get them into use. A good IT person is a good researcher and good at justifying their ideas to people.

    --
    "The Sage treasures Unity and measures all things by it" - Lao Tzu
  43. No progress .... by binaryDigit · · Score: 3, Insightful

    what "improvements" over the last quarter century have actually brought progress to the key issue: more quickly and more inexpensively developing software that's more reliable?"

    I've only been programming for 19 years (not 25) but I can say that I've seen absolutely no progress in software development givin your contraints of defining "progress" as being able to achieve the three goals (speed, cost, robustness). HOWEVER, I don't really blame the tools, rather the nature of the end result. The software we have to write has become significantly more complex, and at a rate that has surpassed our abilities to effectively create tools to deal with their complexity. "Back in the day" when a "good" business level word processor was 100KLines of code and written by a small group of dedicated and bright people, you could get very good results. Now, something like Word is significantly larger than 1MLines of code being worked on by programmers with 15+ years of experience to those who just got out of school to those who you wouldn't trust to add up your grocery bill let alone write a line of code.

    It's like we still have hammers and nails, but the "market" wants us to build steel skyscrappers. So we come up with even better hammers and whiz bang processes to "better" utilize those hammers and nail together steel girders, but the fact is that those tools are woefully inadequate to truely make a dent in improving that which we build.

    1. Re:No progress .... by hax4bux · · Score: 2, Insightful

      I don't agree. Tools today are much better and cheaper. 20 some odd years ago, I was writing ALGOL on a Burroughs box. It was an awful way to earn a living.

      The editor would take too long to explain and probably send me back to therapy. But each page of source code was sent to tape, the tape would advance and then you could get the next page. You could not go backwards so you had to plan your editing session by marking up a listing and then going by page number.

      The compiler was full of holes. For example, "if (a+5 == 7)" did not evaluate the same as if "(7 == a+5)" (I dunno if that is the correct syntax, but my point is that constants on either side of a compare were not treated the same). This forced us to review the generated code (manually) to ensure the compiler was behaving properly. This was before optimizing compilers and with practice it wasn't too hard to follow the binary.

      In this type of environment, you had to be "dedicated" but any little thing was such a huge struggle. We wasted a lot of time because you
      could not trust *anything*. Not the compiler, not the libraries (such as they were), not the hardware.

      I think software development is much easier and predictable today. Well, it's much harder to blame the tools anyway.

  44. Good & bad by maiden_taiwan · · Score: 2

    Languages are definitely better. But there are also a greater number of software engineers, many of them mediocre. So overall I wouldn't say quality is better.

  45. Net Access. by slycer9 · · Score: 5, Insightful

    Think about it. 25 years ago, it was extremely limited. How many people did you know, in 1977 with a net account? I remember coding on a C64 in my cousin's basement for days on end just because we had scrounged enough money to get into town and buy some new books/magazines that helped us overcome some bug. Now, if you're being bitten by the same bug, whaddya do? Hit the net! Some of the responses above, like the sharing of source through GPL wouldn't be as viable an option without the access we have today. The biggest aid to programmers today. Net Access.

    --
    Don't park drunk, accidents cause people.
    1. Re:Net Access. by Anonymous Coward · · Score: 0

      and you caught a fish THIS (hands start out 2 inches and end 14 inches apart) big!!! i laugh my ass off at c0dErz who say stupid things like "coding for days on end" :)

    2. Re:Net Access. by medscaper · · Score: 1
      Here, here! I'm a QA developer in a new MFC/COM programming role, and Google has become my best friend.

      Were it not for that, I would spend endless hours drudging through embarrasingly useless MS help files and hundreds of pounds worth of books looking for some of this obscure stuff I need to interface with...I wouldn't get work done without it.

      --
      Any sufficiently well-organized Government is indistinguishable from bullshit.
    3. Re:Net Access. by Ari+Rahikkala · · Score: 1

      Yeah, the biggest aid to programmers today... ... Especially if they want to watch pr0n or read /. when they should be coding :).

    4. Re:Net Access. by Drakonian · · Score: 1

      Agreed! I don't think I could do 1/4 of the job I can do today if it wasn't for Google Groups. People think I know a lot, when in reality, I know how (and when) to use a search engine to find people who have already experienced the same problem as me.

      --
      Random is the New Order.
    5. Re:Net Access. by Anonymous Coward · · Score: 0

      Right on. Well put.

    6. Re:Net Access. by Jedikahuna · · Score: 1

      I teach tech support for 2 of the top computer manufactures and I know for fact that because of the net I cut what could be a 2 month class into 3 weeks

      --
      Peace, Love, And Oreo cookies
    7. Re:Net Access. by stanmann · · Score: 1
      and you caught a fish THIS (hands start out 2 inches and end 14 inches apart) big!!! i laugh my ass off at c0dErz who say stupid things like "coding for days on end" :)
      YOu have my deepest pity if you have never had the pleasure of working on a project that occupied more than 36 hours straight of coding time.
      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
  46. Re:"I'm in a Computer Science degree program"????? by Anitra · · Score: 1

    Bah. It's enjoyable - and college is all about getting a well-rounded education, right? So a CS degree doesn't mean you can't get a job - with any kind of degree, you've certainly got a larger selection of jobs you can get. Just don't plan on getting a job that has anything to do with computers. ;)

    --

    Have you read the Moderation Guidelines Addendum?
  47. Interesting article posted by Joel about this... by Anonymous Coward · · Score: 1, Informative

    The law of leaky abstractions (Joel on Software) seems to address at least one aspect of why this software nirvana has not been achieved.

    --Shashank

  48. The Silver Bullet that kills... by Cap'n+Canuck · · Score: 1

    Software that impacts the way we live will never be written using eXtreme Programming.

    EXtreme Programming will only work effectively on development teams of less than twenty or a dozen, whereas most large software apps require hundreds of man-years. To work effectively, these projects are (unfortunately) using Rational's suite of tools and approach to software design.

    Pity.

    1. Re:The Silver Bullet that kills... by Anonymous Coward · · Score: 0

      "EXtreme Programming will only work effectively on development teams of less than twenty or a dozen"

      You can divide the teams into subteams, making members of the subteams customers for the other teams. This will allow your teams to be larger.

    2. Re:The Silver Bullet that kills... by Anonymous Coward · · Score: 0

      I believe that most of the fancy tools and methodologies are designed to both raise the quality of work of the median software engineer, and to produce less variation in quality across all software engineers (better overall quality, and a repeatable process). That's great if you want to hire and/or work with median software engineers. For me, I'd rather work with the upper 5-10%, not the bottom 50%.

      XP will never be accepted for safety critical apps, and OOP doesn't do much good in the $0.50/each MCU market. There comes a point when the only way to get the job done right is to find the talented, experienced professionals.

      Pity that modern (mis)management encourages the talented and experienced to find new careers.

  49. Object Technology.. by eastshores · · Score: 3, Interesting

    In my opinion, object technology has done more to allow developers to re-use effort than any other paradigm in development. That isn't to say that the potential of OOP has even been approached. It is rare to find large development shops that have a consistent base of knowledgable OOP developers, and it isn't always necassary; it is very important to have OOP concepts influence the architecture of any system that maintains re-use as a design objective.

    Design patterns also play an important role in allowing for a given design to be re-used, consumed, whatever the case may be. OOP related technologies such as UML, Corba, and now many XML based solutions are beginning to mature the field.

    I am not as experienced as I would like to be with OOP, but I can say that I have been in the procedural world long enough to realize that there seems to be a divine power in OOP. It makes you *think* entirely different about problems, and by breaking a very large, very complex problem into approachable components. Allowing not only a single developer to build more complex systems, but systems that are well suited for re-use in future or existing systems.

    1. Re:Object Technology.. by solo_seven · · Score: 1

      There have been some additional advances lately into a new paradigm of programming to help influence code reuse. It is Aspect-Oriented (http://aosd.net) programming which allows the definition of aspects of a program so that you don't have to rewrite the validation of a string everytime you pass it to a method, or to print the name of the function you are in. This takes out a lot of repetitive code, and allow you to reuse aspect definitions. This is really a step towards the next generation, just like OO was a step forward from procedural programming.

    2. Re:Object Technology.. by binaryDigit · · Score: 2

      but I can say that I have been in the procedural world long enough to realize that there seems to be a divine power in OOP. It makes you *think* entirely different about problems, and by breaking a very large, very complex problem into approachable components. Allowing not only a single developer to build more complex systems, but systems that are well suited for re-use in future or existing systems.

      I'm sorry, but I must completely disagree with your comment. When "structured" languages like C and PASCAL "burst" onto the scene back in the early 80's, they touted the EXACT same benefits that OOP is touting today, more modular code, code reuse, breaking problems down into simpler components, etc, etc, etc. Fact is that the tools keep changing but the tool users don't, thereby negating many of the benefits of having "better" tools. Crappy code is crappy code regardless of the methodology behind it, the fact that is crappy in an object oriented way doesn't make it better than crappy structured code or even crappy spaghetti code for that matter.

      I can see how people would think like this though. Many (most?) were not even around when the transition from languages like COBOL/Fortran/BASIC/Assembler to C/PASCAL occured to see how history is simply repeating itself (as it always seems to in this industry).

    3. Re:Object Technology.. by Anne+Thwacks · · Score: 3, Insightful
      I disagree entirely about "object technology". I agree that "object oriented programming" as a concept can be helpful, but all the evidence is that huge projects that produce efficient, reliable, code use C, and NOT C++. For example FreeBSD.

      I have over 30 years experience of embedded systems, and I would say that without exception the C ones were leaner, meaner and fitter than the C++ ones.

      As for reusability, documentation is the key to reusability. It is conceivable that the syntax of some languages may help with this, but it seems there is more benefit in theory than in practice. All of us use the C standard library all the time (ie anyone using a browser is executing it) - now THAT is reusable. The Fortran library is widely reused, and no one ever accused Fortran of being object oriented. (I have heard Fortran users called "disoriented" :-)

      --
      Sent from my ASR33 using ASCII
    4. Re:Object Technology.. by eastshores · · Score: 1

      I was not around, but I do agree that implementation of the technology has everything to do with it's effectiveness. It is entirely possible to write applications in a procedural manner with any object oriented language. And it is easy to write systems that can't see the forest for the trees in ANY language, no matter what paradigm is used. That is to say that programming, as a discipline involves more than writing code, which I believe is another topic altogether.

    5. Re:Object Technology.. by theBitBucket · · Score: 1

      eastshores, you seem to have a clue.

      In point of fact, I was around for the "transistion". You'll find it interesting to note that OO languages and concepts actually pre-date structured development methodologies. I attribute the current and continuing high rate of project failure to:
      1). Arrogance on the part of developers / designers / architect, etc. So many people truly believe that their first idea is the only possible solution.
      2). Inexperience (for which I have a great deal of patience). It takes time to learn to code well, and time to apply those lessons to the process of building strong, re-usable designs. The transistion from developer to design to architect takes years. All to often communications will break down between architects and developers over ego problems. Soft skills are as important to an architect as are design skills.
      3). "The same old thing". For years my customers have recreated each other's projects, and each other's mistakes. But open communications between corporations just doesn't happen. Too many competing interests. But hey, it puts food on my table, and the smart ones hire me to train the architects, project managers, designers, coders, testers...you name, I've prob'ly trained it.

      My recommendation to you (or to anyone seriously interested in learning to code well):
      - seek out new paradigms. An architect must borrow from many disciplines to craft an effective solution to the problem domain. You should be able to switch effectively between coding styles (and thinking styles) such as scripting (yes..monolithic, top down, fall through code), structured, OOAD, declarative (think--Prolog), and agent oriented development.
      - always remember that someone else, somewhere else, has probably already experienced your bright and shiny new idea. Look for those people, and understand their experience BEFORE you bring your idea to the table.
      -the best way to measure experience is to simply ask someone to "name the 3 things that you like least about using .... "

      Best regards!

    6. Re:Object Technology.. by dodobh · · Score: 2

      Hmmm, becuase OOP essentially is a way of working to a standard API. Just under a different name.
      OO is a *design* methodology, not a coding one.

      OO is essentially designing an API.

      You can do OO work in C as well as spaghetti code in C. Its pretty easy, provided you spend enough time on doing the basic design correctly and never forgetting the original requirements.

      --
      I can throw myself at the ground, and miss.
    7. Re:Object Technology.. by HeyLaughingBoy · · Score: 1
      down into simpler components, etc, etc, etc. Fact is that the tools keep changing but the tool users don't, thereby negating many of the benefits of having "better" tools. Crappy code is crappy code regardless of the methodology behind it, the fact that is crappy in an object

      I wholeheartedly agree, but that's not the point. An expert craftsman will produce good work whether he has good tools or not; but the reason craftspeople invest in good tools is that it makes their work easier and faster.
      A large part of the problem is people keep expecting that tools will make mediocre developers into expert ones; they won't, but they will make the expert developers immensely more productive. And that's what really matter.
    8. Re:Object Technology.. by Tablizer · · Score: 2

      It is no secret that I don't think much of OOP. However, one of the most frustrating things about "battling" OOP claims is figuring out exactly what it is that OO allegedly makes better. Why do I get very different answers from different OO fans?

      Most claims about OO's alleged improvements fall into one of these categories:

      1. Code Reuse

      2. Helps one mentally "grok" complex systems

      3. Reduces the quantity of code that has to be changed for new requirements.

      #1 seems to be falling out of style. Fewer and fewer "high-end" OO gurus talk about reuse.

      #3 has not panned out in sample code comparisons. OO fans seem to make faulty assumptions about real-world change patterns, at least how I observe the world and its changes. Perhaps OO fans view the world differently than me. It just does not change the way they gear their code for in my experience. You can maybe change the way I view programming and code, but not the world.

      #2 is just too subjective. The best organization techniques for one brain may not be the best for another. I would have to see some more concrete metrics to even try to evaluate that one.

      If you are a heavy OO fan and have some solid, observable answers, please chime in. Until then, the mystery continues.....

    9. Re:Object Technology.. by wayland · · Score: 1

      Object-oriented is good, but it's really modularity we're trying to achieve here. If the problem space is object-oriented, that's a good solution. But sometimes the problem space is something else.

      Personally, I'd like to see more Table-Oriented Programming implemented in new programming languages (preferably with a useful GUI).

      TOP (Table Oriented Programming)? See below...

      http://www.geocities.com/SiliconValley/Lab/6888/ to p.htm

    10. Re:Object Technology.. by binaryDigit · · Score: 2

      An expert craftsman will produce good work whether he has good tools or not; but the reason craftspeople invest in good tools is that it makes their work easier and faster.

      I agree with you as well. My point was that OO as a design methodology, and OOP tools aren't necessarily "better tools". After all, as experienced developers, what do we want. We want tools that do what WE want. We want existing bodies of code (whether they are libraries, STL macros, OO objects, whatever) that help us focus on solving the problem, not reinventing infrastructure.

  50. The Silver Bullet by mr_gerbik · · Score: 3, Funny

    Coors Light. Its done wonders for my hacking skills. No wonder its called the Silver Bullet.

    1. Re:The Silver Bullet by Stormie · · Score: 2

      I thought a silver bullet was Sambucca and Stolichnaya? Get a couple of those into you and your code will be pure genius. You'll think it is, anyway.

  51. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 3, Insightful
    Why not go for a PhD and wait for better times in the safe, nurturing academic environment?

    Yeah, as a PhD student you get paid practically nothing (at least when compared to corporations), you have to work silly hours and possibly teach as well.

    Yet, if you pick your topic carefully, you'll be working those hours on interesting and intellectually challenging bleeding edge stuff and not on some YAMC (yet another moron client) project that was handed over to you. In a nice group you can also choose whether you want to come in to work early in the morning or at around lunch time. Furthermore, teaching experience can never hurt a nerd. I used to hate teaching and I still don't like it. However, positive teaching experiences and the very act of confronting a group of smart, young people for four years improved my self-confidence, presentation and public speaking skills tremendously.

  52. I dunno what world YOU'RE living in by CrudPuppy · · Score: 4, Insightful

    but in my world, Java is the single largest memory hog and memory-leaking piece of crap I have ever seen.

    you're kidding yourself if you think Java keeps you from having memory leaks, and I have enterprise code to prove it

    --
    A year spent in artificial intelligence is enough to make one believe in God.
    1. Re:I dunno what world YOU'RE living in by smagoun · · Score: 4, Insightful
      you're kidding yourself if you think Java keeps you from having memory leaks, and I have enterprise code to prove it

      Um. That was his whole point - bad engineers will always be bad engineers, no matter what the language. Java prevents an entire class of memory leaks by garbage-collecting unreferenced objects, but there's nothing in the language that stops you from doing something stupid like writing an unbounded cache.

    2. Re:I dunno what world YOU'RE living in by LordNightwalker · · Score: 1

      but in my world, Java is the single largest memory hog and memory-leaking piece of crap I have ever seen.

      I once had to write a small app for CG class in Java. OK, so I'm not good at Java (I manage to get around and get my shit working, but I never cared about getting intimate with the inner workings of the beast or stuff like that), but still... If a app you can code together in a couple of days starts eating up around 874 MB of RAM after running for a weekend while I was away, something must be wrong...

      Oh yeah, screenshot (sorry, lost the code): here

      Anyway, since I'm not that intimate with Javas inner workings, this might be due to some fuckup on my behalf, but I thought the garbage collector was there to regularly free up memory used by objects to which there was no reference in the system anymore. And I'm damn sure I recycled my objects from the previous frame to the next...

      --
      Install windows on my workstation? You crazy? Got any idea how much I paid for the damn thing?
    3. Re:I dunno what world YOU'RE living in by Anonymous Coward · · Score: 0

      Been using circular references, have you? Did you set variable = null; after use to give a hint to the GC? Etc, etc. It's almost always a necessity to get to grips with the internals of _any_ system.

  53. Available Tools and Libraries are a Lifesaver by unfortunateson · · Score: 5, Insightful

    I can't say that Java is a significant programming advantage over C -- it's the Java libraries that beat the snot out of calling the raw Windows/Mac/X APIs.

    That's not the only one: The depth of CPAN, the Python library, even MFC/ATL are worlds ahead of hand-coding the guts of an app.

    When I started programming, the Mac SDK had to be handled raw, and GDI was brand spankin' new. APIs such as DEC's FMS were considered heaven-sent(talk about dead ends!). Shortly after, class libraries were available, but expensive for an amateur. With Java and Perl, it's part of the (free) package.

    I'm sure there's garbage code in those libraries -- there's always going to be bugs. But they're going to be relatively smooth to use, and they're already written, letting me focus on the business logic, instead of the presentation.

    --
    Design for Use, not Construction!
    1. Re:Available Tools and Libraries are a Lifesaver by drooling-dog · · Score: 1

      Yeah, it's gotten so that the real challenge isn't so much in finding the tools that will do the job, but rather in choosing between the many that are available...

  54. Metamodel creation and code generation by crovira · · Score: 3, Insightful

    If you're coding an app and you are spending time on the GUI you are just creating a maintenance headache for maintenance programmers later on.

    Most documentation is horrid if it even exists (learn a human language first and use it to actually write meaningful comments, specifications, test scripts, internal and user documentation.)

    Most of this industry doesn't know dick about SLAs or optimization for time (first) or space (last.)

    Most of this industry doesn't know dick about configuration management, capacity planning or correctness.

    The difference between duffers (most of this industry,) and the pros is that the pros don't "paint little master-pieces" in a a guild-like cottage industry. They generate "art by the yard" in industrial settings for mass dispersal, distribution and "invisible" use.

    Good luck and remember, computing is nothing but a problem in N-Dimensional topology. If anybody tell you different, they are part of the problem, not part of the solution.

    ALL objects have states and state transitions, code for that first and the rest will follow. Start from a thorough, correct and complete meta-model and you won't get into trouble later.

    As for languages, CASE tools, GUIs, IDEs and the rest. Learn to do it the long and hard way first so you'll:
    a) know what's being optimized and abstracted out,
    b) appreciate it,
    c) know what happens when it fails.

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
    1. Re:Metamodel creation and code generation by guybarr · · Score: 3, Insightful


      remember, computing is nothing but a problem in N-Dimensional topology. If anybody tell you different, they are part of the problem, not part of the solution

      No. That's the problem solving part. The more important (and hard) part is defining the problem.

      --
      Working for necessity's mother.
    2. Re:Metamodel creation and code generation by Anonymous Coward · · Score: 0

      you're an idiot. someone had to tell you.

  55. Re:CVS / RCS - the next step? by Anonymous Coward · · Score: 0

    Many people resolve this issue with shared libraries.

  56. Observations by GeckoFood · · Score: 4, Interesting

    What I have observed in the course of software development, in various companies, is that the management dictates that "thou shalt follow said process" and there will be the obligatory design reviews, spiffy diagrams, an all the huffing and puffing. But when the smoke clears, it still comes down to 9 months of work compressed into 3 months of actual work time, and everyone shifts into a hack 'n slash mode. The processes in place fail because of a lack or adequate time and inflexibility of deadlines.

    --
    Be excellent to each other. And... PARTY ON, DUDES!
  57. Important Stuff: by Anonymous Coward · · Score: 0

    * Please try to keep posts on topic.
    * Try to reply to other people's comments instead of starting new threads.
    * Read other people's messages before posting your own to avoid simply duplicating what has already been said.
    * Use a clear subject that describes what your message is about.
    * Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page)
    * If you want replies to your comments sent to you consider loging in or creating an account.

  58. nope by Anonymous Coward · · Score: 2, Informative

    Having been at the software development game for about 20 years, I've been through the structured programming/data flow design/yourdon/OMT/UML methodologies at various levels of expertise, tools from vi/cc, borland turbo pascal/C on 8086, dec 10 and vax/vms fortran, visual C++, Jbuilder, etc. I haven't seen it all by any stretch, but I've seen enough to know that it hasn't all changed that much. In my time, we've just moved from designing libraries to looking for patterns, which has the side effect of resulting in somewhat useful code. Bottom line is the stupid little detail that was forgotten, or a missing key piece of info from the spec or customer causes endless havoc. If anything, the situation is worse because what we do has gotten more complex and the tools that we work with are essentially leaky abstractions (see Joel on Software) and if you didn't work at the low levels when your latest whizzy development environment doesn't produce code that works, you'll have a pretty difficult time figuring out the problem. Its still a black art, experience counts, and don't believe everything (anything?) the buzzword compliant managers or sales rep say.

  59. Re:Very few improvement, and it just gets harder.. by Anonymous Coward · · Score: 0

    The irony is that it may require technological stagnation (ie, no improvements in hardware, etc) before programming can become an art or a true engineering/science discipline.

  60. outsourcing by yo_yo_mr_roboto · · Score: 1
    what "improvements" over the last quarter century have actually brought progress to the key issue: more quickly and more inexpensively developing software that's more reliable
    Ship it to India, you'll get it built for 1/4 the cost. Reliability is the same risk you have with it being built domestically.
    1. Re:outsourcing by Anonymous Coward · · Score: 0

      Yeah reet.

      If you want to add the complexities of time and distance, language and cultural misunderstanding then do that.

      I prefer to have someone who asks questions instead of just saying "Yes I understand" when he doesn't.

  61. Is it engineering, or not? by gosand · · Score: 5, Insightful
    I have a degree in Computer Science, but most places I work give me the title of Software Engineer. I took some of the same classes that my friends took (mechanical, electrical). But something I mull around every so often is - does software really require engineering? It is a little more wooly than something like building a bridge, or a roadway, or electrical circuitry. With the advent of a new language, or method of developing, the whole ballgame can change.

    Now I am not saying that you still don't need to have a good understanding of the language, or use good design, implementation, testing, etc. But I have worked at SEI CMM level 3, level 2, and am currently going through the process of evaluation where I work now, for level 2. But being at that level doesn't guarantee that your software will be good. It seems almost like we are attempting to fit the creation of software into the old engineering mold, because it kind of fits.

    So to answer the question - I don't think that there have been any great improvements to obtain the goals you stated. Software relys on hardware, which seems to contstantly be changing. A bridge is a bridge, but the very idea of what software can do has been changing constantly over the last 25 years.

    If you want reliability, look at what NASA has produced. Those are some engineers. Ahh, but you said 'quickly', didn't you? :-) If you want something rock solid, you can't have it tomorrow, if you want it to do anything remotely complex. I think one of the big things we as an industry has to realize is that our product (software) can be simple and fast to market, or more complex and take more time. And all of the variations in between. I haven't been convinced that what we do is engineering, but I haven't been convinced that it isn't. After all, it is a pretty young profession, compared to others. Imagine trying to explain to someone from 100 years ago what a software engineer does.

    All that being said, I think that the obvious Slashdot answer is that the GPL and free software have been a huge force, but only in recent years. I think the two biggest forces in software development were the PC and the internet.

    --

    My beliefs do not require that you agree with them.

    1. Re:Is it engineering, or not? by smagoun · · Score: 5, Informative
      If you want reliability, look at what NASA has produced. Those are some engineers. Ahh, but you said 'quickly', didn't you? :-) If you want something rock solid, you can't have it tomorrow, if you want it to do anything remotely complex.

      I disagree. That might be true in many cases, but some of the truly great engineering feats were produced quickly by a small team of very, very good people. A classic example is the Lockheed Skunk Works under Kelly Johnson. The SR-71 was conceived in the late 1950s, yet has performance numbers that are unequalled even today. Even more amazing, it was designed and built by just a handful of people. Compare that with the thousands of people it takes to build a new military aircraft these days. Other examples of the Skunk Works' prowess include the P-80 (USA's first operational jet fighter), the U-2 (high-altitude spy plane), F-104 (first mach 2+ jet fighter), etc.

      The moral of the story is you can perform very high quality engineering in a very short time (the P-80 took something like 140 days to design and prototype!!) if you have an incredible team with no red tape in the way. Unfortunately, this is rare.

    2. Re:Is it engineering, or not? by Anonymous Coward · · Score: 0

      In reference to the Title, is Software engineering or not, I would say it is, and that's not just because I have a B. Eng in Software Engineering.

      Picture Electrical Engineering when it first started. There was the same resistance to making it and Engineering field as there is today for software. People adlibbed their designs, and sometimes they worked and sometimes they didn't.

      I suppose a similar approach still happens today even in Electrical Engineering, as we've seen redesign after redesign of previously released hardware, Intel, Asus, etc. to name a couple. It's the way the world is working these days.

      While competition is encouraged, competition requires quick development to beat the competition to the punch line. Not as much testing and review occurs, and we end up finding problems. I'm not saying that Monopolies are immune to this process, but in the Electrical world, a well-establish Monopoly tends to produce slower, cost more, be less innovative, BUT, their products tend to be more reliable.

      This same problem occurs in software, but it's not necessarily due to competition, people just don't see it as an Engineering field, even though the title of Software Engineer is being bestowed upon them.

      The biggest problem with software design is that the design still doesn't occur until after the software is written. Could you imagine a processor being developed the way software is? Granted, it's a little more difficult to do that these days simply due to the tiny size of the transistors, but picture someone just shoving transistors on a bread board, and producing a processor. Would you expect it to work properly?

      When people finally settle into the routine of developing software through a design process, requirements, module guides, module interface specifications, etc., it will be a completely different world.

      I'm not sure if I entirely agree on the GPL as being a strong force for well written software. As much as I hate to admit it, it's much more difficult comparing free software to software produced by say, Microsoft. Somewhere over 90% of computers run Microsoft products, statistically it's easier to find holes in their products than in any other product just due to the shear number of systems available. I'm not trying to defend Microsoft in any case, but the GPL does not enforce ANY software design principles, it simply requires others whom make changes to software to release it again, under the GPL with as little documentation as before.

      Maybe a new license requiring documentation to be provided, in the form as stated before, should replace the GPL, or complement it anyway. But if this did occur, would it flourish as the GPL, or die a horrible death?

    3. Re:Is it engineering, or not? by eweu · · Score: 2, Interesting

      does software really require engineering?

      Yes. Good software does. In my opinion, this is the most significant problem with software today. There are too many "software engineers" that don't follow any sort of engineering principles at all. Quality and documentation are afterthoughts. Design consists of a conversation or two before implementation (coding).

      If this sounds like you, please leave the industry now. We've suffered enough.

    4. Re:Is it engineering, or not? by Atom+Tan · · Score: 1

      I have an undergrad in Aerospace Engineering, and a Master's in Computer Science, and have worked for both an airplane manufacturer and a software company, so I like to think I know a little about both engineering and software. There are a million definitions of engineering out there. One of my favorites is this one (not sure if it's attributed correctly; it exists in many forms):

      "An engineer is someone who can build for a dollar what a fool can build for twenty" - Robert A. Hienlein

      I think that's a great results-oriented definition of an engineer, but doesn't say much about the practice itself. My own take is that engineers perform practical application of mathematic and scientific principles to produce artifacts that are useful in the real world. The analogies to bridge building always fall down at some point, but in many ways it holds: a structural engineer specifies a steel beam of a certain size and shape because of the loads it will bear. Many times, the parts choses are "don't care" or "cheapest available" because their function is not critical. Software engineering is a lot like that. As a software engineer, you choose a hashtable when fast, random lookup is important. Otherwise, you choose a list or array to iterate through. Software construction is thousands of decisions like that, both big and small. In the end, a good software engineer understands the fundamental principals (logic, math, algorithms, architecture) and how they relate to the building blocks of programming (loops, functions, sorts, searches, hashes), and so can produce programs that meet requirements with minimal cost along one or more axes (price, time to market, efficiency, etc.)

    5. Re:Is it engineering, or not? by Anonymous Coward · · Score: 0

      Yes, good software development is engineering, and requires good engineering principals. The problem is, we're still developing the prinicipals of software engineering on the run.

    6. Re:Is it engineering, or not? by HeyLaughingBoy · · Score: 1
      I have a degree in Computer Science, but most places I work give me the title of Software Engineer. I took some of the same classes that my friends took (mechanical, electrical). But something I mull around every so often is - does software really require engineering? It is a little more wooly than something like building a bridge, or a roadway, or electrical circuitry. With the advent of a new language, or method of developing, the whole ballgame can change

      Well, I have a degree in Electrical Engineering and (almost :) one in Software Engineering. Some (but not all) software does require engineering, in much the same way that some, but not all electronic products require engineering. If I'm building a blinky-lights toy for my kid, I'm probably not even going to draw a schematic of the circuit; just do it all in my head. If I'm designing an aircraft fuel pump controller, you bet your ass I will follow rigorous engineering methods. You fit the development model to the thing being developed.

      The ballgame does not change just because of language or method changes, it should just adapt. The entire reason for engineering in any product is predictability. Be it predictable cost, predictable quality, or predictable delivery. Now, before you explode in laughter, let me clarify that it doesn't guarantee that the predictions will be perfect, or even good. But they're a whole lot better than just the off-the-cuff guesses that passes for most SW development these days. The creation of software fits perfectly into engineering molds: we do it at work every day, and not all of us have engineering backgrounds. A large part of the problem is that it is apparently easy to change software, so it's easy to not take it too seriously and not follow any particular process. But look at even the garage down the street: mechanics will follow a process (even if it's a simple one) when quoting a price then repairing your car. Mistakes there are harder to fix than just an edit and recompile, so people are more careful about what they do. In software, only personal discipline makes us follow a process, and too many developers have none.
    7. Re:Is it engineering, or not? by Anonymous Coward · · Score: 0

      Software requires good design and testing just like real engineering. Just because it is a mess right now doesn't mean less formal design & testing is required. Software people do not have the same altitude of doing things right the first time. The idea of good abstraction is to hide the hardware layers that changes. You have completely missed the point. We have to design with obsolete components at work because the software slacky did not do that correctly.

      I had the choice of doing my Master degree in Electrical Engineering or Computer Science. I picked EE and have not regard it since.

    8. Re:Is it engineering, or not? by alannon · · Score: 2

      Keep in mind that Skunk Works was populated by the best of the best of the best in their respective fields. Since the very best in the world in a particular field basically have the pick of whatever job they want, they're going to gravitate towards projects that are:
      1) Important
      2) Challenging.

      Unless you're the government, you're unlikely to be able to provide interesting challenges to the top people in the field, regardless of how much you pay them.

    9. Re:Is it engineering, or not? by fferreres · · Score: 2

      Computer science teaches you to think about systems and how to describe them. It could be ANY system, related to any field in science. So you are basically not a "generic scientist". You have to fill the gap with working on some field. If you don't, you could be called Computer Scientist, for lack of a better word. But of source, to do anything usefull at all you need to know about other fields, be it music / sound, physics, pictures, biology. If they hire you in the biology industry, you will need to learn something about biology because then _and only then_ you'll be able to add more than "machine translating" the way a biologist thinks about systems.

      What I am trying to say is that C.S. is very abstract and it is completely different from any other science. Has nothing to do with engineering unless you think of engineering as "guys that know a lot of math and physics, and, oh go, they study difficult stuff, no way i am doing that".

      --
      unfinished: (adj.)
    10. Re:Is it engineering, or not? by Locutus · · Score: 2

      I think it all boils down to an industry standard component model. Not a desktop one by a company which is hell bent on protecting it's monopoly and not one by a company that is hell bent on eliminating that monopoly. One that works across systems.

      IMO, the reason Linux and UNIX work so well is because they are built from smaller elements which can be used or removed depending on capabilities or bugs. For the software industry to grow that has to happen there. It was thought that "C" could do that and to some extent it has. C++ was another "enabler" and it got close til MS killed all the framework vendors with below cost MS-Windows-only tools and by faking out the UNIX people into porting to Win32 and then killing the Win32 on UNIX ports. CORBA and JAVA have done better but JAVA got thrashed on the desktop. Today there's still JAVA but Micrososft is pushing it's RPC over HTTP (Web Services) but it's not a distributed object model and like everything before, Microsoft will Windows-ize the tools or specs one way or another.

      IMO, OpenDoc was the revolution waiting to happen and JAVA might have been able to replace it. That is until Microsoft pulled all stops to kill it on the desktop.

      LoB

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
    11. Re:Is it engineering, or not? by jafac · · Score: 2

      The SR-71 is a perfect example of where you can simply throw enough money at a problem and solve it.

      Mach 3 comes at a tremendous cost - per flight is on the order of millions of dollars. Which is why the SR-71 was retired.

      I have no doubt in my mind that TODAY, we could build a plane that would totally blow the SR-71 out of the water - but nobody wants to spend that kind of money operating it.

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  62. Re:(Worst) programming tools ever?... by vikstar · · Score: 1

    The human and the computer.

    --
    The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.
  63. Away from algorithms? by wiredog · · Score: 3, Interesting

    What sort of programming do you do? I've done machine tools programs and xml to Oracle data converters and I spend more time developing algorithms and data structures than I do wtriting code.

    1. Re:Away from algorithms? by Minna+Kirai · · Score: 4, Interesting

      This could be a sign that today's programmers use "objects" or some other abstraction instead of "algorithm" as their conceptual building-block of software development. That scary, Arabic word is unpopular with guys who just want to "call methods on object classes" or whatever the new jargon is.

      From one point of view, only a tiny minority of today's programmers ever need to create "new algorithms"- so much documented study has gone on in that area, you'd only be reinventing the same wheels.

      That can be a sign of maturity, that the field has evolved to the point where specialists can go their thing, and not force everyone else to understand the trickier aspects.

      Looking at your examples- data converters particualrly- I don't see much room for new algorithms. From a restrictive, Computer Science standpoint, nearly everything you do will be isomorphic with a known existing algorithm (modulo "trivial", "cosmetic" variations, of course)

      Naturally, people who don't understand algorithms will have difficulty selecting the ones they should re-use, and are at risk of using them wrongly. But that's a consequence of newer, user-friendly development tools- with a lower barrier to entry, less competent persons can enter the profession, and still muddle by.

  64. Java and GPL - slower software, less incentives... by oldwarrior · · Score: 1, Insightful

    As a professional developer, I've seen complexity for even simple solutions skyrocket with a concomittant loss of performance with the current obsession on over-inheritence and Java-style interpreted/P-code software overall. Add to this GPL/OS that slashes meaningful business value from well engineered software components and I think we have retrograded from the vanilla unix with tough, straightforward C coding.

    --
    If it were done when 'tis done, then t'were well it were done quickly... MacBeth
  65. Only for yesterday's problems by zanerock · · Score: 2

    There have certainly been improvements in software development, but they generally only address yesterday's problems. That is, as one improves the process, instead of making life easier, the complexity of the project simply increases.

    My personal theory is that the complexit/hardness of software development is more or less constant. Putting together that "monsterous" 1000 line COBOL program yesterday was probably just about as hard as today's 100,000 line Java program.

    After the 1000 line COBOL program, you have to do better, add more features and use a richer model. This entails increased complexity. While you may have gained valuable knowledge, skills, and new techniques in making your 1000 line COBOL program, now it's time to move on to the next level. The new stuff you developed helps you get to that next level, but you end up working just as hard, and the problem is just as difficult.

  66. Evolution by voudras · · Score: 1

    The next big step you can watch for is true AI, and as Jaron Lanier points out in his article ONE HALF OF A MANIFESTO, we're a long way from it.

    New programming languages can be clever and sophisiticated - but the next step - regardless of the language, is programs that can write programs.

    (mind you im quite sure these programs will use CVS!)

  67. Standard libraries by smagoun · · Score: 5, Insightful
    I'd say one of the biggest advances of the past decade or two has been the proliferation of standard libraries, like the STL or Java's immense class library.

    IMHO, one of the keys to writing good software is to not write very much software. Class libraries like the one in Java are almost invariably more feature-complete, more reliable, and better tested than roll-your-own libraries. Using existing libraries means you don't have to worry about off-by-one errors in your linked list implementation, or figuring out a good hash key for your string. While I think that all coders should know how to solve these problems, they shouldn't have to as part of their daily life. It's busywork, and giant class libraries do a wonderful job of making life easier. They let you concentrate on the important stuff - the algorithms, and marketing's feature of the week.

    Yes, libraries have been around for more than a decade. The STL and Java both showed up in the mid 90's, though, and I'd argue they've made a huge difference since then. Yes, they have bugs. Yes, there have been other advances. Yes, there are special cases where standard libraries aren't appropriate. There's no silver bullet, but standard libraries are a huge advance.

    1. Re:Standard libraries by Bob9113 · · Score: 2

      Mod parent up (well, it's already at 5).

      I'm a huge fan of Agile Programming (the superset which includes XP), refactoring, unit testing, object orientation, high level languages, and UML. I genuinely believe that all of these things can, if used properly, result in more efficient software development. I also believe that none of these things has nearly as much impact as java.io or Swing (and because of the backward compatibility these are saddled with, they aren't even considered best-of-breed), or Log4J.

      I cannot even guess how much longer it would have taken me to write any of my thick client apps if I'd had to write my own platform native layer to connect to the windowing system - let alone writing one for every target platform. The quantity and quality of low-level, Free and Open Source libraries from organizations like Apache, Sun, and IBM, and on sites like SourceForge have had more impact on my productivity as a programmer than any other single factor.

    2. Re:Standard libraries by Anonymous+Brave+Guy · · Score: 2

      I agree that good libraries can be a big help. I think the key thing is that it takes only a small number of very good people to produce a very good library, while many competent-but-nothing-special people will benefit from that work. Java is surely the prime example, where many not particularly skilled Java programmers do little other than stringing together standard library calls, yet they still manage to produce decent work that gets the job done. It'll probably never be as good a job as a more skilled developer could have done, but it'll be a much better job than that particular guy would have done if he'd written it from scratch instead of using a library. We can't all be the best programmer in the world, so that's a very valuable thing.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  68. Re:CVS / RCS - the next step? by feronti · · Score: 2, Insightful

    That's what code libraries are for just rewrite the function in the library, recompile the library, and relink the other programs... or even better, put it in a dynamic library and just recompile the library...

  69. The problem is... by FJ · · Score: 2

    software has gotten more complex and user expectations have grown at a rate equal or greater than software development tools.

  70. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0

    Oh, Boo F'in Hoo for you and your friends.

    I graduated back in the early 90's crunch and faced the same sort of job market. Good tech skills but no experience landed me a lot of (literal) envelope-stuffing jobs with which I barely paid rent and bought food for many, many moons.

    Things changed. Diligent searching and studies found me an employer and then the late 90's boom happened.

    Sure, there were a few lean years in the beginning but starting my career in a recession pounded one very strong lesson into my head right off the mark: The business cycle is real and Winter is _always_ going to return.

    A few years from now, when the economy's going strong again and your salary is in the stratosphere, remember what it was like to scrounge change for a cup of coffee. Keep your skills current, keep yourself solvent and, for God's sake, don't get cocky!

    There is always a demand for smart people who can get things done.

  71. Re:"I'm in a Computer Science degree program"????? by UberChuckie · · Score: 0

    It's not that bad. Just stay in school (for your Masters or even PhD) until things are better.

  72. don't do it by DuctTape · · Score: 2, Insightful
    Get out. Programming sucks. You'll work your tail off for nothing. As soon as the schedule gets a little tight, disciplined software development goes out the window and its CODE, CODE, CODE! You'll do months of overtime and weekends, and they'll change the requirements on you and then you'll have to work harder, oh yeah and smarter, to make up for the time you spent coding to bad or outdated requirements.

    Find some other career. Like be a male stripper or something else that has regular hours.

    --
    Is this thing on? Hello?
    1. Re:don't do it by Ari+Rahikkala · · Score: 1

      The idea of someone who's been doing programming as his main job for a few years suddenly going for a male stripper's job is rather... disturbing. But I guess there are some very weird fetishists in this world... ;)

  73. Faster hardware leads sloppier programming by DrRobert · · Score: 1

    It definitely seems that programmer rely on the faster hardware to have the same performance with less efficient code.

  74. Not Engineers, it's management by Vaulter · · Score: 5, Insightful

    All the problems with software today aren't a result of poor engineering, but rather of poor software development management.

    I can't count the number of times last minute feature requests are required to be in a build. As software developers, we just deal with it. But quality suffers because of it. And the engineers get the bad wrap.

    Do you think Intel management requires last minute features to the Pentium core, and tries to push them out the door with no testing? Do you think people building cars for Toyota decide to swap engines at the last minute, becuase GM just put a turbo charger on it's standard Prizm?

    It's ludicrous the stuff that gets requested of software engineers.

    My brother is an contract electrical engineer. He was complaining one time of a 'last minute feature request'. His project still had a year of development time left! I laughed so hard I almost puked.

    Granted, given all that, the current model for software works. When software is required to be bug-free, it can be. Lots of software is bug free. You just don't hear about it, because it works. Look at NASA, the AIN telephone network, or Windows. ;) But most business orientated software is bug-ridden, and that's just fine. It's the accepted risk for getting the software out the door as cheaply and quickly as possible.

    --
    I don't have a sig...Do you??
    1. Re:Not Engineers, it's management by TeeWee · · Score: 1

      I can't count the number of times last minute feature requests are required to be in a build. As software developers, we just deal with it. But quality suffers because of it. And the engineers get the bad wrap.

      Perhaps the next stage in the advance of software development will be when the engineers say, "No, that's not realistic. I will not build this under these constraints."

      I know, there's fear of being fired, yadda yadda yadda. But it's part of the coming-of-age of the software developer. The point is, many developers just do what they're told or give unrealistic estimates. This gives managers little trust in what actually is possible and lead to stupid promises to customers.

      The professional attitude should be: let managers shield me from stuff I don't want to know about, and I'll tell the manager what he needs to know (not: what he wants to hear) to do his job properly.

    2. Re:Not Engineers, it's management by mgkimsal2 · · Score: 2

      The point is, many developers just do what they're told or give unrealistic estimates. This gives managers little trust in what actually is possible and lead to stupid promises to customers.

      No, the stupid promises always come first. :)

    3. Re:Not Engineers, it's management by Misao · · Score: 1

      > Do you think people building cars for Toyota
      > decide to swap engines at the last minute,
      > becuase GM just put a turbo charger on it's
      > standard Prizm?

      Sure, why not? The Prizm is just a rebranded Corolla, after all.....

      -misao

    4. Re:Not Engineers, it's management by Darth_Burrito · · Score: 2

      I don't think you can toss all the blame on management. At my last 4 jobs, (1 IT, 2 Maintenance Programming, 1 Software Development), I have seen all sorts of horrible things done by the staff.

      Uncontrolled use of randomly name globals in huge projects.

      Massive VB and Perl Applications without option explicit or use strict.

      3000+ line functions with the same code pasted over and over again.

      Developers starting off with the intention of not documenting anything, deliberately not writing any comments while generating obscure code.

      IT guys using ftp/telnet to log in as root accross multiple very important data centres when ssh was available. (for that matter why the hell did we even have telnet/ftp)

      In most cases, the problems I see are because people either don't know any better or they just don't care. Sometimes you can argue that a developer was rushed or pushed into a less than elegant solution, but when someone starts off not using strict/option explicit.... On the other side of things, I've had to deal with some pretty attrocious managerial decisions as well.

  75. You're not going to like this by kin_korn_karn · · Score: 1, Flamebait

    from what I can tell programmers (or if you are self-important, Software Engineers) haven't improved at all, but management has. Languages like Java and stuff like UML and pure OO development aren't really aids to programming, they're aids to communicating your design to management. Management is thus more clueful and will allow the good shit to go and the slop to go back to the drawing board.

    1. Re:You're not going to like this by Anonymous Coward · · Score: 0

      Management is the problem with software. Often they try to force a schedule on you when it is not possible for it to be done. Other Engineering Disiciplines day we can do it this fast. We are forced by management to do it faster and thus quality declines.

    2. Re:You're not going to like this by kin_korn_karn · · Score: 3, Insightful

      I maintaint that there is nothing in software that can be called an Engineering Discipline. It's just not that important. People die if a bridge isn't designed right. People have to do things by hand if the software doesn't work. Which of these is more real?

      Coding is not an engineering discipline. Coding is typing. Coding can be done from a Rose .mdl that you ftp to some cut-rate sweat shop in Bangalore.

      I'm going to get flamebait for this but I don't care. I'm a programmer and I know my line of work is a crock of shit, but I'll take all the money my employer will give me.

    3. Re:You're not going to like this by TheAncientHacker · · Score: 3, Insightful

      People die if a bridge isn't designed right. People have to do things by hand if the software doesn't work. Which of these is more real?


      On the other hand, if a sidwalk curb isn't designed right, it wastes some concrete. People die if the software in their pacemaker doesn't work.

      It's the project, not the discipline.

    4. Re:You're not going to like this by spanky555 · · Score: 1

      Coding is not an engineering discipline. Coding is typing.

      This gets "informative"???!!!

      Funny, I've never seen a certain amount of WPM asked for in a programming job description. Well, with that kind of attitude, I'm sure you'll be in management in no time...I wonder what you think a doctor or a lawyer does, then, with that kind of reductionist view: "doctoring is just cutting people open", or "law is just a lot of talk".

      I'm sorry, but with your view of coding, you don't have any business doing it. People very well can (and have) died from bugs.

    5. Re:You're not going to like this by kin_korn_karn · · Score: 1

      I don't worship my job. I don't think I'm some kind of great human being because I can write a program. I think I'm a good person when I do good things for the people I care about, and when I create things others can appreciate. It's called having a little perspective. You'll understand when you get older.

  76. Why software takes so long by Pedrito · · Score: 2

    Software is like any sort of engineering, really. If you spend the time designing properly, prototyping what you don't know, and document everything carefully, you'll get the same result as people who do the same building a bridge or a tank.

    This assumes however, that requirements don't change. The sad fact is, in software, requirements change a lot. Unless that changes, software will always take longer than people want/expect.

    To give an equivalent engineering task, look at the Bradley Fighting Vehicle that the U.S. Army "designed" and built. Watch "The Pentagon Wars" with Kelsey Grammer. Great movie, BTW. The requirements for the Bradley were changed over and over again through its many, many, many, years of development. It's an armored car for God's sake. At least that's what it was supposed to be.

    It took them something like 15 or 20 years to get to production to build what amounts to a tank that's as fragile as a Pinto. Fortunately it's been improved since then.

    Anyway, if your requirements remain static, then doing software "quickly" using any of the many modern tools and processes available today is quite acheivable. Quickly being a relative term and all, but compared to the old days.

  77. Cause? Greedy users and idiotic managers by cuteface · · Score: 1

    Do you see users who exercise self discipline and request for less features? No. Users always ask for more features than they remembered exist.

    How many managers really tried hard to dissuade adding that nonsensical feature? Why should they? In the first place it would jeopardise their promotion and there'll be less chances to score points.

    There are so many times in my job as a system analyst, i question the need for additional features or new applications. But it seems hardly anyone sit down nowadays to do a proper cost/benefit analysis. They just want to push more applications/features out faster and cheaper.

    There in, i believe, lies the problem. With any technology, people eventually becomes greedy and tries to push it to the limit to satisfy every possible fancies that they have while ignoring its costs. As long as we keep misusing and abusing any technology, sooner or later, the law of diminishing return will set in. IT has its limits too.

    --
    Reality is what we taste, smell, see, hear and touch yet we cannot comprehend it...only approximate it.
  78. Judging From the Posts here, I say it has by Qzukk · · Score: 3, Insightful

    While people seem to be saying there haven't been any advances, and won't be any advances, and such, they're forgetting that the first key step in solving any problem is identifying the problem.

    People are complaining about how using stronger employees to lead less-skilled employees doesn't work. People are complaining that the person testing the "bad coder's" code is usually the "bad coder" itself. These complaints begin to define the actual problem of "Why software development isn't improving." Each of these complaints, taken together and addressed, is the first step towards improving software design methodologies.

    --
    If I have been able to see further than others, it is because I bought a pair of binoculars.
  79. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0

    Whoa! Talk about arrogant and complacent!

    Systems engineers from India (etc.) are becoming just as good, and much cheaper.

    Your turn will come.

  80. Best tools, present and past by MarkWatson · · Score: 5, Informative
    I think that the quality of software development tools has increased, although I still miss the Xerox hardware Lisp Machine that I used in the early and mid 1980s.

    Here is my take on the best environments available today (in order of best first) - I only include stuff that I use:

    • Cincom VisualWorks Smalltalk - a really fast coding environment with support for SOAP/WSDL/UDDI/all possible database connectivity, built in web development tools, huge class library so often new applications are very little new code
    • Microsoft VisualStudio.Net - I almost hate to include this one, but I am trying to be honest here :-). Last year when I was writing a J2EE (Java Enterprise) book, I took a good look at the competition and liked C# and .Net.
    • Java with light weight web services - I am a HUGE fan of Java on the server side, done light. By light I mean that I like to just use servlets and JSPs, etc. and only use heavy weight J2EE stuff when I really need transaction support, etc. that EJBs provide
    • Common Lisp - lots of great commercial tools from Xanalys and Franz, and lots of great free tools like CLisp, CMULisp, OpenMCL, etc.
    • Python - Love it for small projects, munging text, etc.
    • C++ - only use it when I must - great runtime perfromance, but a pain to code in
    It seems like so much work today requires deploying web services so I appreciate tools that make it easy to develop basic application logic separately from any user interface, get it working, then write web and/or standalone GUI interfaces.

    -Mark

    Warnng: I am blogging now: http://radio.weblogs.com/0115954/

  81. Re:1975 to 2002 is not 25, it's 27 by Glonoinha · · Score: 0, Offtopic

    I think the English word you are abusing is 'your'. You're is a contraction of 'you are', which doesn't jive with the context you used it in.

    Good rant though.

    --
    Glonoinha the MebiByte Slayer
  82. Abstraction Levels by brw215 · · Score: 2, Insightful

    I think the varying degree of control over the physical machine a developer can now choose when writing a program is the single most important factor in increased productivity. In assembler the programmer must worry about everything. C was the first truly abstract programming language where the programmer could call a routine like printf and not need to worry about the details of printing a string to the screen. Because the language was more abstract, the programmer could do far more complicated things (have you every tried to write a red/black tree in assembler)?

    Over the last several years languages have gotten more and more abstract, languages like Java isolated the developer from pretty much everything except the logic they are trying to capture. Developers can now choose the level of abstraction they wish to work with based on the problem domain. (low level library vs. script for renaming files) Higher level (more abstract) programs are usually much easier to write but it is worth noting that there is a price to pay for, generally these programs are not as powerful as their low level cousins. Some languages like VB still try to abstract development out even more, so that it is accessible to everyone. Abstraction has brought the ability to program to a much wider audience and has greatly reduced the time it takes to write basic applications and for that it is the most important change in programming.

  83. Speed of change prevents some progress by herrlich_98 · · Score: 1

    One large thing that prevents improvement is confusion between what's changing and what's not.

    Each year we have large increases in hardware performance and new types of hardware. We also are also playing around with the best way to "talk" to computers with new computer languages and such.

    On the other hand, there are things that are basically the same year after year. How to do quality assurance. How to gather requirements from customers (users). Some of these things are basically no different than things delt with during the industrial revolution...

    I'm very wary of assesing the value of some "new" paradim until it has been around for 10-20 years. Every 5-10 years we have something new fad that is "going to change software engineering". We need to concentrate on the things that *are* changing and the things that are staying the same. Just because my CPU speed is going to double in 18 months isn't going to fix the fact that I'm not properly testing my software properly. Or that it doesn't do what my customers want.

  84. yes - and no. by sifi · · Score: 1

    I believe that, in general, code is now better than ever before (through a variety of software tools and development processes). The problem is that the number of lines of code in a typical application has now also increased so that there about as many bugs per application as there were before.

    --
    Sig (appended to the end of comments you post, 120 chars)
  85. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0

    And live on what? Air?

  86. Re:CVS / RCS - the next step? by voudras · · Score: 1

    This would be overkill in the situations im talking about. I believe a simpler example would better illistrate what i meant.

    I have a perl routine which i use in many many scripts i've written, its called file_to_array, and im fairly certain you can ascertain its function.

    I'm not going to be using libs for something like this. This is just one *example* of where i could see the usefulness of a program like fvs - for those small programs which use specific user defined functions.

    overall the benifit of something like 'fvc' would be truly harnessed by programmers that find them selves always writing little programs and scripts for which they tend to resuse stuff they've already written.

    Being that CVS is OSS, perhaps someday i'll get the time to use it to write such a program.

  87. A firm NO! by Lysol · · Score: 2

    Development methologies may have improved, and frankly, i believe that. however, most software is not just developed with the latest and best practices alone.

    What really drives development, from my experience, is that grit that resides between the client (or target) and the developers: the management. And my experience more than not is that they:

    1. don't care about best practices and just want it done
    2. Care, but don't have budget or schedule - or so they say.

    Bottom line is that everyone (or at least all managers) want it on time and under budget. But rarely can you get the two. This translates into cutting corners which produces shotty products which, in turn, makes the developers the scapegoat.

    I was thinking the other day "what if more software was developed more the open source way - things usually don't get released until they're ready and where code is more peer-reviewed?" How would this affect the software industry? What would the upgrade cycle look like? What would the security landscape look like? Would there be a software industry today as we know it? Who knows?

    You can release good products on time. But there has to be a orchestrated effort between management and development on what can and cannot be released in a reasonable schedule. Unfortunately, most of the shops I've worked with tend to ignore that and thusly, it doesn't matter what process or tools you're using since the integrity of the product is damaged from the onset in such a severe way that what ends up happening through the rest of the product lifetime is a catchup and patchup feedback loop.

  88. Low Tech by Anonymous Coward · · Score: 0

    This will sound "stone age", but:

    - The web browser as an easy and widely available client interface.
    - Basic HTML and CSS created by CGI Perl
    - The universe of Perl modules

    You can build lots of fast, interesting stuff with that toolkit. Plus it is fairly easy to use (fast "make a change, refresh, make a change, refresh" cycle).

    And when you want something graphical, add an applet to the mix.

  89. Additive improvements, not multiplicative... by dpbsmith · · Score: 2

    There's a big piece of self-deception that's been with us in various forms for, um, five decades.

    An early phrasing of this deceptive might be: "Every FORTRAN statement generates ten machine instructions, so you will be ten times as productive writing in FORTRAN than writing in assembly language."

    The problem is that when you're doing it right, programming progress is exponential, not linear. Every time you do something as simple as calling a subroutine, you're writing one line of code that is the equivalent of ten (a hundred, whatever). If you're doing it right, you write subroutines, then subroutines that call subroutines, always leveraging what you've done before.

    So something that seemingly gives you a multiplier (in terms of instructions executed at run time per unit of programmer work time) is really only additive (in terms of project progress).

    For example, what's the effect on productivity of being able to call strcat? Let's suppose the implementation of strncat is twenty lines of code. Every time you use it, strncat does NOT give you a twenty-fold multiplier. All it does is save you the time it would have taken to write strncat ONCE yourself. (And test it, and document it--but still, only ONCE).

    Most "advances"--a good subroutine library, a good language, object-oriented programming, rapid application development tools (yes, Visual Basic--go ahead, flame me)--have the same effect, when they work. What they do is to start you further along in the development process.

    But it's just a head start, it's not an increase in development speed.

    And, of course, all of this is counterbalanced by the time it takes to learn the tools. (Is strncpy guaranteed to give you a terminating zero byte? How about strncat? How sure are you?)

  90. Re:CVS / RCS - the next step? by sql*kitten · · Score: 5, Insightful

    I think any programmer who sees the benifts of CVS would understand where im going with this concept. We all have functions we use again and again - and realizing that there is a potential flaw in a given function at one point is always followed by exasperation because one realizes that the function needs to be changes in X number of programs.

    You don't need a new version control tool, you need a refactoring tool.

  91. A lot of promises... by bheilig · · Score: 1

    ...but little progress. I'd say that the one area programming has made leaps of progress is in functionality. But if reusability is the measure of progress, and it is a requisite, then little progress has been made since McIlroy formally introduced the world to highly reusable software components.

    If I may actually provide an opinion rather than just rant (I know, it's dangerous here at rant.slashdot.org)...

    Design By Contract is an excellent step towards highly reusable components. In order for a component (in its loosest definition) to be reusable it must also be correct. But correct is relative. The requirements, or the contract, must be apparent to the user (client). The run-time should check the requirements for you, and this run-time checking should have the ability to be turned off. Furthermore, in the object-oriented case, the contract should be inherited providing a framework for more specified descendants. DbC is a good tool for providing these.

    This is a .sig

  92. Re:eXtreme Programming == GOOD by Anonymous Coward · · Score: 0

    Sounds like you had some problems getting out of bed. Extreme Programming is good in the right environment and remember the best rule of XP, "They are only rules." You need to take the best out of what you find and make it fit to your situation.

  93. Standing Ovation by CrayzyJ · · Score: 1

    And me without Mod points. Well stated.

    --
    Holy s-, it's Jesus!
  94. Communications have been the real revolution by ites · · Score: 3, Insightful

    Small-scale development has always been efficient. The challenge facing the industry has been to find ways of doing large-scale development (the type Fred Brooks was talking about) cheaply and effectively.
    And in this domain, there has been a revolution, namely the Internet, and the arrival of cheap connectivity between developers anywhere in the world.
    Prior to this, the only way for developers to collaborate was to be hired by the same company, work on the same network. Inefficient as hell.
    Today any group anywhere in the world can create a project and work on this as efficiently as a small group in the past.
    The irony is that the revolution does not care a shit about the technology used, and works as well for COBOL programmers as for companies cracking the human genome. It's about solving a purely human problem: communications.

    --
    Sig for sale or rent. One previous user. Inquire within.
    1. Re:Communications have been the real revolution by printdevil · · Score: 1

      I disagree with your assessment of the impact of the internet on collaboration. Although it's very trendy to say that "cheap connectivity" makes things easier, nothing compares to face-to-face communication. In particular, look at Herbsleb, et. al.'s work in ICSE 2001, where they report that software development done at a distance takes nearly twice as long as co-located work. Cheap connectivity only makes distance collaboration possible -- it's still a long way from making it efficient.

    2. Re:Communications have been the real revolution by ites · · Score: 2

      You are correct about the need for face-to-face communications, but my opinions on "cheap connectivity" come from experience, not trend hopping.
      My best collaborations are with people I've worked with closely, but the Internet makes it possible to sustain these collaborations when they would otherwise die.
      This effect takes time but allows the existence of technical networks that would otherwise be impossible.
      If you look at most of the really interesting work coming from academic and independent research, you'll find that such networks are really vital.
      All technology is about communicating abstracted knowledge, and programming is the most abstract of them all, so the value of the Internet in improving programming should be seen as obvious.

      --
      Sig for sale or rent. One previous user. Inquire within.
  95. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0

    >There is always a demand for smart people who can get things done.

    True. But more and more of these smart people are in places like India and former Eastern-bloc countries where as well as being smart, they are very cheap!

    I predict that very few people in the US and Europe will be employed to develop software in 5-10 years time.

  96. It's about people and what they think they want by sagman · · Score: 1

    Unfortunately, the tools for helping us to specify what we want/need are woefully inadequate. Hence, software development is both art and science. If I see any clear trend over the last fifteen years, it's that we're getting worse at *thinking* about what we want and "better" at creating vast amounts of code. Oh we're better at diagramming, syntax-error catching, etc., but the ideas are what's important, and there are no tools that can help us think through what we need. There is no substitute for intelligence.

  97. 2nd Edition of "The Mythical Man Month" by psychofox · · Score: 2, Informative

    In the 2nd Edition of "The Mythical Man Month",
    Frederick Brooks lays out a summay of various rebuttals to "No Silver Bullet" (there have been, 'a couple' of papers on the subject)...

    Its worth a read.

  98. ah... Smalltalk by Anonymous Coward · · Score: 0

    No, there haven't been any improvements in the last 25 years. Only "added features".

    I still work using IBM Smalltalk. I had a good laugh when I read the linked Smalltalk thread and some of the comments. "Smalltalk is too slow" followed by an example from "Squeak" complaining about how some noob's Postscript implementation kept copying huge object trees thereby eating up all the machine's memory therefore damning the whole language as "ineffecient" (compared to your-favourite-language). Many of the features in Squeak are HORRIBLY IMPLEMENTED! It has lots of features but there is no consistency in the code. Please don't use some lame Postscript goody as a basis for language performance.

    Anyway, this is a perfect example of why there are no "silver bullets". People write crap code. It's not the tools, it's the people.

  99. MS Visual Studio Sucks by Anonymous Coward · · Score: 0

    Yeah I have. It is impossible to use and difficult to find any documentation on. It is a joke of a development suite.

  100. From a heretic by Anonymous Coward · · Score: 0

    Anything that is an abstraction (which is what all of these tools and methods rely on) leaves something to be desired. In fact these tools/methods usually make something impossible, or totally arcane (read unmaintainable), to implement.

    So as many have said: you have to pick and choose.

    However: learn C (or C++ without too much reliance on the OO parts of it) and use it in a major project.

    Why? Because everything else is just window dressing piled on top of it. If you truly want ot be a CS (and not just a company development slave) then you have to learn as "close-to-the-bone" as possible in order to later learn what all of the other stuff is really doing, and not doing, for you.

    Only once we get into "programming" for quantum computing is there really going to be CS-level progress. All this other stuff was originally just ways to get commercial support for CS departments and projects. Commercialization of CS theories are a big business in which new initiatives echo around for many years until they die out.

    An example: "Fourth Generation Languages".

    The only survivor in the big scheme is SQL.

    That is a "big" survivor but all of the other variants have faded or have been hidden within some of the newer next-best-things.

    Yes there are incremental improvements but logic is logic and storage is storage. Everything else just allows us to not think about trivial things when we are sure they are trivial. However, since when is any detail, especially an omission or unconcious commission, truely trivial?

  101. It is all about passion.... by Annoyed+Coward · · Score: 2, Interesting
    I would be very cautious with the word improved.

    Software (design and) development is all about passion. Only mechanisms to express the road to success have changed (and improved). Experts look for species like good software developers, analyse them and define a new process. And most of them are not wrong.

    There are hardcore believers of waterfall model. And so goes with extreme programming. Configuration management is luxary (and waste of time, sometimes) for somebody, and may not be same for others. The best part is, we have methods suitable for individual's nature.

    --
    Hmmm... Ok.. Chivas on the rocks.
  102. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0
    As a PhD student you get paid by the University.

    And believe me, as small as the pay is in comparison with the corporate wage, it sure as hell beats the pay you get flipping burgers, stuffing envelopes or living on welfare. You also get to choose the time you want to come to work and plenty of free bandwidth.

  103. The Web and Free Software by Atom+Tan · · Score: 2, Insightful

    First of all, glad to see a lot of positive posts on this topic...I frequently see on this very same site laments about the dismal state of software. I am in agreement with the viewpoint that software developers continue to be more and more productive (through frameworks, code reuse, improved languages and tools, etc.), however the productivity hasn't resulted in improved software quality because we are simply being asked to do more complex tasks with the same schedule and resources.

    One thing that has drastically improved my productivity is the Web itself (time on Slashdot notwithstanding), as a way to locate resources for programming. Almost any algorithm, component, or subsystem that is not specific to the problem domain can probably be found on the web, whether as a library, a set of source code, or simply a precise definition of an algorithm. I agree with one post that a lot of young developers would have difficulty writing a correct bubble sort, but anyone that attempts to design and implement a bubble sort on the job is wasting resources, since there is an implementation somewhere on the Web in any language you would want. In addition to software projects, informative articles and API documentation, newsgroup discussions are invaluable as well for pinpointing problems. So the Web is really my most important programming tool.

    In conjunction with the Web, the vast supply of open source and free software out there that has drastically improved my productivity. The Apache Jakarta project and CPAN are my favorites, but there are many interesting projects on SourceForge and FreshMeat as well. Often, even if you are determined (or required by corporate standards) to roll your own, free software can give you a good idea about how others have approached the problem and the abstractions and metaphors they've used. In my experience, design reuse is often far more helpful and practical than actual reuse of code.

    1. Re:The Web and Free Software by jrosshiii · · Score: 1

      In my experience, design reuse is often far more helpful and practical than actual reuse of code.

      I definately agree. "Reuse Hysteria" should shift focus from code to design. Reusing human intelligence is more abstract, can be applied to nearly any development enviornment and deals with the problems that are usually much more difficult and costly than implementation. Broken pieces can always be fixed, broken designs are far more costly problems to deal with.

      I am only saying the emphasis is in the wrong place because code reuse can definately help, I've used CPAN too many times to try an shortchange the benefits of code reuse. If only there was something as well put together and concise as CPAN for design reuse.

      Unfortunately in CS programs "Design Reuse" is often seen as cheating, and any design reuse should come from personal experience.

      Fortunately, open source software creates an excellent enviornment for promoting design reuse.

  104. Software development has *changed* by Junks+Jerzey · · Score: 3, Insightful

    Software development, at least many types of software development, has changed, in that programmers are much more dependent on large APIs and libraries than they used to be. In theory this is good, because it saves work. In reality, it has turned many types of programming into scavenger hunts for information. Now you have to hang huge posters on your wall showing object heirarchies (you didn't remember that a Button is a subclass of BaseButton which is a sublcass of ButtonControl which is a subclass of WindowControl?). Now you need online forums so you can get a consensus about how a certain API call is supposed to behave in certain circumstances. Quite often I feel I could write a new function faster than locating information about how an existing function is supposed to work.

  105. visual basic by b17bmbr · · Score: 1

    it made me good coder. i drop text box and button on form. i double click button. i get code window. text1.text="hello world!". make good money too. friends think i'm 37337.

    --
    My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
    1. Re:visual basic by redragon · · Score: 1

      Unfortunately there are so many out there that are really like this, unlike this poor soul who must surely just deal with them. :)

      --
      - Sighuh?
  106. Progress in software engineering by bfwebster · · Score: 5, Interesting
    Sad to say, there has been little such progress in the last 30 years. One of the things I do for a living is act as an expert witness in litigation over failed IT projects. In my research, I reviewed 120 such lawsuits that took place over a 25-year period and found (a) that they all fall into one (or two or three) of half a dozen fact patterns, and (b) the root causes are all the same. (I wrote a white paper summarizing my findings). The simple fact: we make the same mistakes over and over again, and these are mistakes that have been well-known and well-documented for 30 years.

    Brooks, in the "No Silver Bullet" essay referenced above, stated that there is both essential and accidential complexity in software development, and because of that there never would be a "silver bullet" to slay the software "monster". However, there are fundamental practices that increase the likelihood of success and fundamental pitfalls that every project faces. And, in the end, the root causes of most failed IT projects are human factors; in fact, you could just cite the "seven deadly sins"--pride, envy, gluttony, lust, anger, greed, sloth--and probably hit the nail on the head.

    In conjuction with that, far, far too many practitioners in the IT field lack one or more of the following:

    • Talent
    • Sufficient (or any) education in software engineering (or even computer science)
    • Any familiarity with the literature from the past 30+ years. I'm not talking about IEEE/ACM Transactions, I'm talking about standard classic works such as _The Mythical Man-Month_ (Fred Brooks), _The Psychology of Computer Programming_ (and everything else by Gerry Weinberg), _Principles of Software Engineering Management_ (Tom Gilb), _Peopleware_ (and everything else by Timothy Lister and/or Tom DeMarco), _Assessment and Control of Software Risks (and anything else by Capers Jones), _Death March_ (and anything else by Ed Yourdon), _Journey of the Software Professional_ (Luke Hohmann), and any of the 100 or so texts on software engineering on the bookshelf behind me.

    To quote George Santayana (who is often misquoted):

    Progress, far from consisting of change, depends upon retentiveness...Those who cannot remember the past are condemned to fulfil it.

    Software engineering is hard enough--with all the human issues--without further handicapping ourselves with ignorance of all that has been already discovered and documented. Yet that is exactly what most IT workers do. Until we find a way to solve _that_ problem, the failure rate for IT projects will remain high indeed. ..bruce..

    --
    Bruce F. Webster (brucefwebster.com)
    1. Re:Progress in software engineering by JaredOfEuropa · · Score: 2

      The real problem is that those three points software engineers lack are not even recognised. To elaborate:

      Talent: It is increasingly hard to find talent. In this lousy market our company is laying off project managers, administrative staff and even technical staff, yet there is a widely recognised lack of top-notch software engineers. So why are we not finding them? One cause stands out: rarely is outstanding talent rewarded accordingly. Our best software engineers are payed more or less the same as the average ones. Hell, often we do not even know who our best people are: productivity and success rates are not measured, and the quality of software engineers and associated pay rates are set mostly by their seniority. The excellent software engineer who consistantly produces top quality work is rewarded in the end not by a wage increase, but by a promotion to management or consultant, effectively ending his career as software developer.

      Education and familiarity with literature: I'm lazy today so I'll address these together. Those few software engineers that have been formally trained in the profession, as opposed to having drifted into the field of IT due to the high demand in jobs, I have found to be well-trained on the whole. Your point on not knowing any of these books is a very good one, and the point of your article seems to be we are not learning from our past mistakes. Very true. But who is there to teach those new to the job? What I notice in the places I work is a distinct lack of learning-on-the-job, and senior-junior pairing. The job that I have learned most on (and the most enjoyable ones as well) were working in a small team under a senior software engineer. However in most software development teams I notice that the junior members are being managed, but are not being educated. The lack of talent might be part of the cause of this problem, since many of the senior team members are often much too busy to sit down and spend some time with the inexperienced ones. On-the-job training (I prefer the term on-the-job education myself) is the way to improve the quality of your staff.

      I truly hope that managers of companies such as the ones I work for will come to understand the way software development and developers work; rather than just trying to (blindy) manage them.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    2. Re:Progress in software engineering by BalkanBoy · · Score: 1
      To quote George Santayana (who is often misquoted):

      Progress, far from consisting of change, depends upon retentiveness...Those who cannot remember the past are condemned to fulfil it.

      Bruce, you could say the same of UNIX - those who do not understand it, are forced to reinvent it :).

      --
      'A lie if repeated often enough, becomes the truth.' - Goebbels
  107. Opinion: Yes. by 4of12 · · Score: 3, Interesting

    I think the ingredients you mention have made production of software a better process over the past 25 years. Software applications can do more and can be built more quickly as result of those improved tools available to developers.

    However, you still see a great deal of unreliability, bloated, and inefficient code because developers are trying to do much more than they did 25 years ago.

    If all we needed to do was re-create the applications of 25 years ago, then the benefits of new techniques would be more evident. But people demand more and programmers want to create works up to their full personal potential and exceed what is currently possible.

    Ragged-edge software is manifest evidence that we still are constantly crossing the barrier of human potential, that place where what is barely possible becomes what doesn't work. It's a good sign of innovation. And, it provides added impetus to keep trying to find more ways of improving the software development process.

    --
    "Provided by the management for your protection."
  108. 80 / 20 Rule by hrieke · · Score: 2

    Scary how this rule keeps coming back time and time again.
    No problem is ever going to be like any other problem, expect in the abstract. 80% of what you will need to do for any family of problems can be turned into a module / code base, but beyond that you will have to start customizing your code to the partitulars(sp?) of the problem.
    And let's face it, 80% of your time on the project will be working on the 20% customization.

    --
    III.IIVIVIXIIVIVIIIVVIIIIXVIIIXIIIIIIIIVIIIIVVIIIV IIVIIIIIIVIII...
  109. Software has always been there by kbewley · · Score: 1

    As any follower of the Tao knows. The software has always been there - the coder simply allows the Code to BECOME the software. Only new coders try to create the Code - followers of the Tao let the Code shape itself.

    This is the way it has always been - and will be forever. ;-)

    --
    -- These views are my own and do not represent those of my employer in any way.
  110. It is obvious who the leader is by mao+che+minh · · Score: 4, Funny

    It is obvious that Microsoft has been the fantastic driving force behind software innovation over the past two decades. Their uncanny ability to feel out new markets and met the needs of their customers with cost effective, friendly licensed, quality software has forced all other developers to increase the quality of their products.

  111. Programmers *are* the problem by Anonymous Coward · · Score: 1, Insightful

    Software development will never be made reliable and inexpensive until we get rid of the programmers.

    Software development is a cottage industry and "art" where artisans produce one of a kind products. No two programmers will produce a program in exactly the same way.

    What we need is an easy way to translate analysis directly into code in a reliable way without human intervention.

    This will give us the consistency and repeatability that translates into reliability and lower cost.

    1. Re:Programmers *are* the problem by Randolpho · · Score: 3, Interesting

      Once you boil down analysis and modeling into the steps necessary to do the job, you've essentially written your program. What you're suggesting is a universal programming language that doesn't look like code and instead looks like some modeling or analysis diagrams.

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    2. Re:Programmers *are* the problem by chez69 · · Score: 0

      then you have the problem of the translator producing crappy slow code. then you need programmers to optimize the code. you also have the problem of inputting the analysis. If your analysis is wrong, you still have to fix it.

      --
      PHP is the solution of choice for relaying mysql errors to web users.
    3. Re:Programmers *are* the problem by Anonymous Coward · · Score: 0
      Such languages already exist.

      The problem is that when using
      them, managers do not believe
      that they are getting value for
      their money: They generally like
      to see some blood, sweat, tears
      and reams and reams of code (that
      they could never in a million
      years understand) for their buck. ... Perhaps if we emphasised that
      they
      • do
      get some pretty
      diagrams they might change their
      mind. ...

      Yup, its a Dilbert world out there.
    4. Re:Programmers *are* the problem by phlamingo · · Score: 1
      >> Software development will never be made reliable and inexpensive until we get rid of the programmers.

      This is the same as saying "Law will never be fair and inexpensive until we get rid of the lawyers."

      Or "Medicine will never be painless and inexpensive until we get rid of the doctors."

      I'm not comparing software development with medicine or law (that's a different discussion), but I believe that software development is a FUNDAMENTALLY HARD PROBLEM. That is, it cannot be completely automated. It requires analysis, problem-solving, creative, mathematical, language-parsing, language-producing, context-matching, common sense, and a raft of other skills.

      >>No two programmers will produce a program in exactly the same way.

      That's bad if you have four "artisans" crafting fundamentally different wheels for each corner of a car. Is it, however, a bad thing in software development? If you use a linked list and I use an array, which of us has done it wrong?

      >>What we need is an easy way to translate analysis directly into code in a reliable way without human intervention.

      And who does the analysis? It's those stinking humans again. They do things that no other tool can do, but they don't do anything perfectly.

      >>This will give us the consistency and repeatability that translates into reliability and lower cost.

      Repeatability is good for making many copies of physical parts. Once you have made one wheel, you still have to make 399,999 more to run a 100,000 cars.

      Repeatability in software development? If it's the same problem, you use the same "wheel" 100,000 times.

      If it's a different problem, it needs a gear, or an axle, or a submersible pump, and a wheel just won't do.

      --
      I had forgotten how much cooler teenagers look when they are smoking. Oh, wait ...
    5. Re:Programmers *are* the problem by General+Cluster · · Score: 1

      I am confident that there will always be programmers.

      However we are clearly moving in the direction of high-level and low-level programmers. That is to say there are low-level programmers that create the objects and high-level programmers that manipulate those objects to perform the needed functions. This sort of split is what allows languages like VB to be so useful.

      What you are describing is a situation where the high-level programming is so simple that non-programmers can set it up. We are moving there, but someone will always be needed to provide the constructs that enable that abstraction.

      We are also near the beginning of the long process of codifying best practices to handle the problems that we face. I think slowly a sort of orthodoxy will emerge that will allow more consistent quality of design. The fact that source code is proprietary slows this process down considerably. Most of us spend our professional lives reinventing work that others have done.

    6. Re:Programmers *are* the problem by StillNeedMoreCoffee · · Score: 1

      My shoe size is 10 1/2 D whats yours?

    7. Re:Programmers *are* the problem by StillNeedMoreCoffee · · Score: 1

      I submit that as stated by another comment that the analysis is programming, just in maybe a graphical language if your using something like UML. It is just a high level language and it is a programmer/architect that uses it. This is not different that what goes on now.

      You then have the step from design to implementation. Which is done now by programmers and in some cases automatically generated by code generators.

      It is valuable to have a high level language for design, but to use that same language for detailed design, down to what the deferent yeild calculations for each form of stock, bond, CD ..
      would make that high level design a haywire nightmare. Not easily understood, not easily changed. The most efficient means for translating that last step is people.

      There is the issue too of what happens when all the programmers go away, and the automatic tool breaks, or a new need is found that it does not do? What then? We are really talking about a IT ecology which requires all level alive and well for the continued health of the whole system.

      It is through the continued 'different approaches' that we have progressed. Our new ideas and pardigms have come from these. We are part of that evolutionary process.

      I lament the growth of so many "easy to use" GUI based product where people can loose site of the entire process, loose site of what the implications of what they do are. This will cause people to use tools in ways that are inefficient and inapproriate because they haven't a clue whats really going on. So bottom line, your suggestion I think is self defeating.

    8. Re:Programmers *are* the problem by Anonymous Coward · · Score: 0

      11 4E
      Big wide gun boats...

    9. Re:Programmers *are* the problem by Anonymous Coward · · Score: 0

      There is the issue too of what happens when all the programmers go away, and the automatic tool breaks, or a new need is found that it does not do? What then? We are really talking about a IT ecology which requires all level alive and well for the continued health of the whole system.

      Yes someone will have to maintain the tools that generate the code but that will be a much smaller group of low-level coders. This way it can be left to the ones who are really good (theoretically) and the talentless people who are in it for the money can go into something else.

    10. Re:Programmers *are* the problem by ClosedSource · · Score: 2

      Actually, its often the quality of the analysis that is the root of the problem. Incomplete or incorrect requirements are common.

      What you say about programmers could also be said of analysts: No two perform their analysis exactly the same way or come to exactly the same conclusions. But uniformity is neither sufficient nor necessary to guarantee a good result.

      The fact is that creating a good software application is hard - way to hard for a machine to perform given the current state-of-the-art.

    11. Re:Programmers *are* the problem by dubl-u · · Score: 2

      Personally, I think good OO code is the optimal modelling language. Done right, the code should end up being easily readable:

      SlashdotPost post = new SlashdotPost(request);
      if (post.validate()) {
      story.addPost(post);
      return new PostSubmittedPage(post);
      } else {
      return new PostEditPage(post);
      }

      People who think that a phone book of UML diagrams and user-written specs are enough to produce code are generally fooling themselves. And if the spec does have all the information needed to produce the code, then somebody should just write a compiler for it and let the programmers go do something interesting.

    12. Re:Programmers *are* the problem by NFW · · Score: 2
      What we need is an easy way to translate analysis directly into code in a reliable way without human intervention.

      This is already the case. The people who can write those analyses are called "programmers." Higher level languages will make programming easier, faster, and cheaper, but the people writing the analyses will still be programmers. Non-programmers, managers, and aspiring programmers will always find that it's difficult to solve difficult problems.

      Programming is actually not very hard. Understanding the client's problem is kinda hard, but describing the solution is the really hard part. It will always be hard, unless the problem is trivial.

      Higher level programming languages will still require programmers.

      --
      Build stuff. Stuff that walks, stuff that rolls, whatever.
    13. Re:Programmers *are* the problem by Randolpho · · Score: 1

      "People who think that a phone book of UML diagrams and user-written specs are enough to produce code are generally fooling themselves. And if the spec does have all the information needed to produce the code, then somebody should just write a compiler for it and let the programmers go do something interesting."

      That was an implication of my post that I was hoping people would notice. No modeling language goes so far as to detail every step necessary to accomplish a task. That's what the programming language is for.

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
  112. Better Abstractions *Have* Made Things Easier by namespan · · Score: 5, Insightful

    From the article:

    The most a high-level language can do is to furnish all the constructs that the programmer imagines in the abstract program.

    A-men. But if it does that well, then it makes the job a lot easier. That's why going from C to Java or Perl was sheer relief. Actual strings? Real associative arrays? Whoohoo! And less memory management grief. Not to mention the component libraries available for things I hadn't even thought of yet. CPAN...

    To be sure, the level of our thinking about data structures, data types, and operations is steadily rising, but at an ever decreasing rate. And language development approaches closer and closer to the sophistication of users.

    True... but the user sophistication is increasing to. It seems highly apparent to me that with more experience and more shoulders to stand on, language and component developers are able to concieve of more and more useful abstractions. And because of the internet, they're more easily available for sharing, commentary, and change.

    To sum up, I am much, much happier with the readily available toolsets I have access to now than the ones I had 15 years ago, or even eight years ago. They make developing much easier and much more fun.

    --
    Libertarianism is rich wolves and poor sheep playing gambler's ruin for dinner.
    1. Re:Better Abstractions *Have* Made Things Easier by Tablizer · · Score: 1

      It seems highly apparent to me that with more experience and more shoulders to stand on, language and component developers are able to concieve of more and more useful abstractions.

      Unfortunately, I think there is a practical limit. Some things are easy to package, some are not. If people have to write their own communications packages, report writer, or database (searching, sorting, indexing, cross-referencing, etc.), then they are probably idiots or newbies.

      However, business logic often involves multiple *intersecting* factors. You can't package something very well for reuse that is very business or user-specific, and involves other specific factors from other parts of the company.

      "Infrustructure" issues are fairly easy to make generic libraries or tools for, and this is where it has been done. However, business rules are often not like this. Just when you think you have found a clean abstraction, the boss throws a monkey wrench into the works. "I just want it to rotate counter-clockwise every 3rd Thursday of even number months unless the CEO is in town and the inventory on these items is lower than what they were this time last year ignoring sales to Tennessee legal agencies....."

      Abstraction and reuse hit a wall here. The rules tend to be "one-off" such that it is easier to code them from scratch than try to integrate generic attempts with all the factors. It is the connectiveness that is the issue, not the algorithms that need packaging. Algorithms are relatively easy to package. Connectivity among jillions of factors is not (so far). Business rules are mostly about complex interactions, and not complex algorithms in a "chomp on data" sense.

    2. Re:Better Abstractions *Have* Made Things Easier by Locutus · · Score: 2

      I agree 100% but notice how anything with reall OO abstraction gets opposition from Microsoft? How did they feel about CORBA? How did they feel about OpenDOC? How did/do they feel about JAVA? I thought I read recently that MS Visual C-- is only around 40% ANSII C++ complient.

      Abstraction is what enables the computer hardware industry to keep building cheaper and more complicated designs year after year. When was the last time you saw a 555 or RS232 interface and thought about building it with transistors and R/C's? Abstraction makes development easier and will develop standards via market acceptance. That is, in a free market...

      LoB

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
  113. Ergonomic keyboards ? by doru · · Score: 0, Offtopic

    Title says it all...

  114. self-stablizing system by Anonymous Coward · · Score: 0

    >Has Software Development Improved?

    No. As soon as a developer gets a clue, they get so discouraged by the madness of the industry that they change careers.

    Being a truely good developer requires a shift to the right side of the brain, at which point the infinitely interesting ways one can use the right side of the brain become apparent. And software development turns into "just a phase" we pass through.

  115. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 1, Funny
    Maybe you're the man for Tom Ridge.

    He needs someone to solve serious problems his brand new Homeland Security Office has. There are, for instance, "...technical issues such as how to handle incompatible e-mail systems".

  116. 2002 - 1987 = 15 years (or 25 with new math) by Anonymous Coward · · Score: 0

    > earnest_deyoung asks: "Twenty-five years
    > ago Frederick Brooks laid out a vision of
    > the future of software engineering in "No Silver
    > Bullet."

    But the article was written in 1987 ... :-)

  117. It's gotten much worse!!! by jamesk · · Score: 2, Flamebait

    Actually I think programming has gotten *MUCH* worse with GUI based programming environments like Delphi, VB and even Visual Studio. These tools strongly encourage painting the program and responding to events rather then concentrating on abstractions, infrastructure and good design. In making things easier, they fail to allow programmers to understand what goes on under the hood and most younger programmers (who never really had to understand what goes on) are programming via wizards that assumes a certain architectures and approach. Outside in (GUI based) programming methodologies usually collapse after programs reach a certain size and complexity.

  118. not for me by Anonymous Coward · · Score: 0

    Although being a fan of software development process
    models, UML and even formal methods, here I am,
    hacking away
    -- without a specification (spec-on-the-fly)
    -- with a broken and buggy win32 api-s below me
    -- with undocumented legacy code above and beside me
    -- with no real deadlines (moving-target)
    -- no code reviews
    -- no real test cases (too complicated)
    -- no time to educate the bosses and change the company way

    Sad Ha?

  119. That's Easy... by avdi · · Score: 2
    I've found postings on /. where people tout all sorts of design tools, from languages like Java, Perl, Python, Ruby, and Smalltalk to design aids and processes like UML and eXtreme Programming. I'm in a Computer Science degree program, and I keep wondering what "improvements" over the last quarter century have actually brought progress to the key issue


    All of the above. Each has brought improvements to some aspect to the development process in certain projects. Next question?
    --

    --
    CPAN rules. - Guido van Rossum
  120. My answer... by redragon · · Score: 1

    Well, so far design tools are primarily based around UML, which is useful and helpful, but certainly hasn't been the answer to the prayers of software engineers. eXtreme Progamming is more of a process model and not a design model.

    I would say that visual languages have done a great deal for prototyping, the unfortunate fact being that those prototypes are seen an used, and development of a true solution forgotten. (The only reason i can come up with for the proliferation of VB applications)

    Off-the-shelf components have not taken off, though the game development community seems to be one environement where this can occur quite succesfully. The key being cross-platform. So many "off-the-shelf" components are sold only as ActiveX controls. What does that get us? Those developers taking the time to write a robust physics engine are writing it in C/C++/etc and marketing to people who can use it on any major platform.

    What have we gained as far as real usable helpful tools? Not much. We still type out our .h's and .cpp's. I have no idea why as I type a function declaration in a header (assuming it's not virtual) it isn't being added to a .cpp. Developers spend hours a day dealing with processes that could be greatly improved. Interfaces for handling complex code could be done. Don't get me wrong, there are some companies/people trying to do this, but it's really hard. It's what we should be trying to figure out.

    We need to integrate our design tools with our solution creation tools. This goes above and beyond code generation, refactoring needs to be a major component.

    Good designers can make do with just about anything, but we need to enable ourselves to do better. Unfortunately it costs money, and companies don't like to spend money on code tools.

    Cheers.

    --
    - Sighuh?
  121. Libraries are the silver bullet by Anonymous Coward · · Score: 0

    Libraries are the silver bullet, always have been, always will.

    It doesn't matter as much what kind of language you do, declarative or imperative - functional, logical, object oriented or procedural. If you haven't got the libraries, you're not going to be very productive.

    To build libraries that can stand the test of time requires inhuman efforts in design, simplicity, flexibility and elegancy. Any system that lack this herculean effort, will remain inferior in terms of software development efficiency. Also, the implementation of said libraries will form, shape and both enhance and limit the ability of the developer. It is also very important that the libraries can stay current, and not "grow old with age", without breaking too much (yeah right!).

    So while many types of languages touts enormous advantages, the developers on said platform are not going to benefit unless they develop a community of collaboration AND a standardizing body.

    Then there is the argument of "the right tool for the right job". Functional is NOT "better" than procedural in this context. It may be harder to grasp, but so is brainfuck, saying little of what is "best".

    Eg: Currently, the language with the cleanest human readable syntax, is Ruby. Although limited compared to functional languages, this beautiful gem of an imperative language should stand out as an example in simplicity the rest should follow (just as we have many C-like languages now, Ruby-like languages should follow).

    But Ruby falls apart in the library department. It would be best to scratch all the custom-hacks they call libraries and start all over again. This is the hard and naked truth. These libraries doesn't do a power-packed language like Ruby justice at all! There is currently not even one descent hook-library, leaving overloading of procedures to faith and prayers nobody else will break yours.

    Hopefully, the limitations discovered by the meta-ruby project will spur a movement into a powerful and even simpler meta-language, with libraries that can match the strength. Certainly, the ugly hacks in the language needs to be removed and replaced with standardized methods of handling "meta-stuff".

    But building those libraries are STILL going to be the biggest task and the most important job...

  122. It's still so early by putzin · · Score: 1

    Realistically speaking, it is still very early in the computer age. We haven't even begun to sort out some of the basic issues about what is really important to society just yet. Sure, we have great business tools, and we have cheap PC's, and we have diversity (Mac, Linux, Windows, Big Iron, embedded, ...), but the industry is so very young. It's still dealing with how to sort out what distribution methods work the best (free v not free?), what development paradigms work the best, and what situations or business models deserve what type of development.

    This is where I think future Sci-Fi gets it right. You never see anyone there fighting to understand the newest user interface, or wondering when the bridge computer is gonna crash and reboot. No one ever talks about a 5 computer redundancy in the flight controls. Those are the ideas that all of the current work is moving towards. All of the books, all of the failures, all of the fighting, and all of the fast paced development will move us towards a happy equilibrium at some point.

    Where is software development now? It's growing up. Slowly, but this isn't easy. It may never be, but sooner or later, it will be done in some correct way. That's the day you don't see a Mac switch add talking about how easy it is to use a Mac vs. a PC in my opinion. Or you don't read about how the newest US fighter jet may reboot a flight control computer in flight. And your mobile phone rings every time you expect it to ring. It's all about evolution here.

    --
    Bah
  123. It isn't engineering yet, and won't be for a while by BigTom · · Score: 5, Interesting

    We don't know enough to do software engineering yet. If materials in the physical world were as poorly understood, and changed as fast as they do in the software world they couldn't do it there either.

    If requirements were as poorly understood and changed as fast in the physical world as they do in the software world construction would cost a fortune and most big buildings would never get finished (or would never be fit for purpose).

    People who say things like "Make sure the requirements don't change" are living in a fantasy world where they want to blame their inability to deliver on someone else.

    The rules haven't changed, get a high quality small team, get good access to a user who knows what they want and grow a system from small beginnings, checking at each stage that it all works and that quality is high.

    Its all there in Brooks.

    Its no surprise that the guys pushing the agile methodologies were all very succesful designers and developers anyway.

  124. Politics preventing progress by edxwelch · · Score: 1

    Software development should get more and more productive as developers take advantage of class libraries, frameworks, and third party components, unfortunately due to political decisions in various companies things aren't improving as fast as they should be (at least in the Windows world). I see a lot of companies stopping development of the GUI side of things, because they have become "unfashionable". For instance, Stingray no longer make newer versions of their Objective grid product, even though there is a lot of new features that could be added to it. Also, in the latest version of Visual studio, Microsoft has decided to discontinue the MFC framework (I mean no new features will be added, it's still supported as regards bugs). In fact the MFC framework has seen scarce improvements improved since VC 4.2 (at least regarding GUI stuff, like components and doc/view architecture). Even where Microsoft add new components , they often are awkward distribution restrictions like dependency on IE.

  125. not much progress at all by corrosiv · · Score: 1


    Unfortunately we're stuck in a paradigm which doesn't leave much more room for innovation. C and straight-ahead procedural programming are still used for most complex systems, and C++/Java are used for larger systems where OO is suitable. Unfortunately for the advocates of each of the other popular languages today, a real change in thought is going to have to happen to bring them into the mainstream.

    The largest hindrance to software design is the free software world, where far too many people are hacking code without the proper skills. Linux is already behind the eight-ball because of this - a million people hacking constantly without cohesive structure makes for chaos, versionitis, and distributionitis. These hacker kids don't have to interact with anyone they don't want to - in the event of a design disagreement, the kiddo takes his ball and goes home to start his own distribution. That doesn't lead to advanced design (or soft-skills either). Think of the 16 year old kid who has an inflated opinion of his skills - he's never going to learn a thing in university because the "hello world" lesson in day 1 will prove his opinion that this is beneath him. Unfortunately he won't be listening when the curriculum passes him by and leaves him in the dust in second year.

    To the 16 year old wearing the "code poet" (shudder) T-shirt because you made the kernel print your name while booting: learn humility - without it you won't be able to access the most powerful tool of all: the wisdom of your peers. While that Knuth box-set looks l33+ on your shelf, you'd be surprised at what you'll learn by opening it.

  126. Software development improvements by bytesmythe · · Score: 5, Insightful
    I think software is becoming cheaper and more reliable, but not much more efficient.

    I notice the original post mentions several things that could influence the development time of a software project. I will address a few of these below:

    1) Object Oriented Programming
    This is one of the bigger Silver Bullets to be unleased upon the programming world. I don't think it entirely lived up to the hype. Most OOP is just for local project design, and heaven help you if you have to reuse code somewhere else. It isn't just a case of bad design. Problems like software design are actually ambiguous. The design process is not algorithmic; rather, it's heuristic. You use "templates" and "patterns" to represent your ideas. Trying to shoehorn real-world complexities into these cookie-cutter styles is difficult at best. Trying to further take those styles and integrate them with each other in a very large scale product is a hair-tearing nightmare. I think Tablizer would agree with me on this... :)

    2) Reusable components
    The most visible place reusable components come into play is GUI programming. It's very, VERY simple to use a visual-based system (like Visual Basic, C++ Builder, Delphi, etc.) to create a GUI simply by dragging the desired components onto the blank form window. If anything has been sped up significantly in the past several years, it has been the GUI development.
    Components are, of course, used in a variety of other places, particularly in run-time libraries of various programming languages. However, learning to use these components effectively takes more time and dedication than one might suspect as the syntax tends to be rather cryptic looking. ;)

    3) Java
    Don't get me started. I am currently employed as a Java developer. I don't really like it a lot. The file scoping rules bug me. (Similarly, I don't like Python because of the way it enforces indentation.) Also, the Java IDE sucks. Whoever thought the entire GUI needed to actually be written in Java needs to be taken out and beaten with a stick. A large stick.

    4) The Internet (and OSS)
    One thing I noticed that you hadn't mentioned is the Internet. I have never been exposed to so many programming concepts and new languages. There is an astounding variety of tools, and thanks to Open Source and researchers at various universities, you can try your hand at as many of them as you have disk space for. The 'Net can be a wonderful place, after all. ;)

    My advice to any new programmer would be to get online and start reading. Download and try out new languages, especially ones in different paradigms, like functional programming. The tools you need (such as compilers, editors, databases, GUI component libraries, etc.) are ALL there, free for the taking. The only real "silver bullet" is to make yourself the best programmer you can be.

    --
    bytesmythe
    Hypocrisy is the resin that holds the plywood of society together.
    -- Scott Meyer
    1. Re:Software development improvements by deanj · · Score: 1

      Just out of curiosity, which IDE are you being forced to use right now?

    2. Re:Software development improvements by bytesmythe · · Score: 2

      JBuilder.

      If we could use whatever we wanted, I'd stick with TextPad at this rate. My machine originally had 256 MB of RAM and the damn thing spent more time swapping than a Three Card Monte dealer. Doubling the RAM has made it at least usable, but it's still a little flakey. It swaps at weird times, uses way too much RAM, and can't seem to figure out when to pop-up autocompletion boxes at all.

      Please tell me you have a better IDE to suggest. I won't get to use it at work, but if I have to do Java programming for a class project, I'll certainly look into it.

      --
      bytesmythe
      Hypocrisy is the resin that holds the plywood of society together.
      -- Scott Meyer
    3. Re:Software development improvements by pmorelli · · Score: 1
    4. Re:Software development improvements by Anonymous Coward · · Score: 0

      Another major improvement is the RDBMS products
      available for that class of applications.

      Relational databases are based on mathematical theory and combined with management of the data it makes application development much easier than 25 years ago.

      SQL is now the common language across the entire spectrum of RDBMS and though it has weaknesses is a standard that improves productivity.

      Of course, boneheads can still make a mess out of a database application.

    5. Re:Software development improvements by kerch · · Score: 1

      Like you, I can't stand JBuilder. Or Forte. I use Eclipse on a daily basis on my P3/1GHz/256MB/Win2k laptop and I'm happy with the features and performance. Unfortunately, I haven't been as pleased with the Linux versions.

      IntelliJ looks quite nice but I can't spend the money.

    6. Re:Software development improvements by deanj · · Score: 1

      I've always liked JBuilder, but then again, I've always run it on a machine with 512meg or more. I like Jbuilder quite a bit. I've used it for many big projects, and it's always come through for me.

      I'm always up for other tool suggestions though. I plan on trying IDEA (which was suggested below).

    7. Re:Software development improvements by LarsWestergren · · Score: 2

      Try Oracles JDeveloper. The user interface resembles JBuilder a lot, one of them is probably based on the other, but I think JDeveloper is faster. It's free too.

      --

      Being bitter is drinking poison and hoping someone else will die

  127. Design, design, design by Windcatcher · · Score: 3, Informative

    One thing I always keep in mind when developing a project is something from my Electronics class so long ago:

    The most important thing in developing a product is having the "right" design.

    What he was getting at is that, if you rush into devleopment (coding in this case) without having fully thought the design though, you could end up shooting yourself in the foot later on. Redesigning and recoding something later on in its development cycle can be hideously expensive and time-consuming. Also, depending on the industry, it can be fatal (think lost contracts from being late). It's absolutely vital to think all the issues through regarding your product, not just in the short term, but what you might anticipate for the long (and in many cases, the very long) term.

  128. Cheap, Good, Fast - Take all 3, if you're good by smagoun · · Score: 5, Insightful

    Good, Fast, and Cheap can happen, even in software. If the aircraft industry can pull it off, so can the software industry. Read up on the Lockheed Skunk Works. They did incredible stuff with very few engineers in a very short amount of time. The key is people. You need a top-notch staff and more often than not a world-class leader. Such a team is hard to come by, but when they do get together they can pull off some amazing stuff.

    1. Re:Cheap, Good, Fast - Take all 3, if you're good by Communomancer · · Score: 4, Interesting

      A top-notch staff and a world-class leader, I'm guessing, is significantly more expensive than your average software development team. Therefore, it ain't exactly cheap.

      On the other hand, it's _probably_ as cheap as good and fast is gonna get.

      --
      "UNIX" is never having to say you're sorry.
    2. Re:Cheap, Good, Fast - Take all 3, if you're good by Coz · · Score: 2, Interesting

      Incredible stuff, few engineers, short amount of time - and absolutely no control over their budgets. Read Ben Rich's biography - the Skunk Works has historically been a money pit. They'd figure out how to do a job, quickly and well, and then turn it over for production, but their price tag was enourmous.

      --
      I love vegetarians - some of my favorite foods are vegetarians.
    3. Re:Cheap, Good, Fast - Take all 3, if you're good by arivanov · · Score: 4, Insightful
      A top-notch staff and a world-class leader, I'm guessing, is significantly more expensive than your average software development team. Therefore, it ain't exactly cheap.

      It is actually cheap compared to the usual practices especially in big companies (hiring 100 cretinoids to midlessly click and drag). The problem is that such teams are not a commodity readily available on the market. You cannot just go out and buy one. And they are hard to manage so the average PHB prefers the monkeys

      --
      Baker's Law: Misery no longer loves company. Nowadays it insists on it
      http://www.sigsegv.cx/
    4. Re:Cheap, Good, Fast - Take all 3, if you're good by Anonymous Coward · · Score: 1, Interesting

      You are right that the key to good software
      is not methodology (though it helps) nor
      good process (though that helps too.) The key
      is great people (or taking good people and
      making them great.) In software engineering
      the difference in productivity between an
      average programmer and a good one can be as
      much as 1000%, and between a good and a great
      programmer another 1000%. That means that a
      great programmer can do more in a week than
      an average programmer in a year.

      That also means that if you have to pay the
      great programmer $1000 an hour, then it is
      a bargin. However, great programmers are much
      cheaper than that. Usually, pay them third
      quartile, a fat bonus, as much computer
      equipment as they want, and give them interesting
      challenging work in a nice work environment,
      and they will do what comes naturally to them.

      One other thing, it is better, IMHO, to get
      fast programmers than good (quality) programmers.
      People who produce very high quality code slowly
      are quite hard to train to become quick at doing
      so. Fast programmers can generally speaking be
      easily taught how to produce good quality code
      without impacting on their productivity. (Great
      programmers usually hack macros to do the boring
      stuff for them.)

      For our student freind, I would tell him/her that
      if he wants to become a great programmer listen
      to all they are teaching you, but far more
      important is to code code code. Write lots of
      programs, way more than the dumb ass homework
      assignments they give you. Also, read as much
      great source code as you can get your hands on.
      There is lots of it available under GPL.

      Learn from the masters, and practice is the key
      to a skill like computer programming. It won't
      matter at all if you forget the seven layers of
      the ISO communications model, but if you don't
      know the key idioms to writing great code to
      the point that they are muscle memory, you'll
      never be a great coder.

    5. Re:Cheap, Good, Fast - Take all 3, if you're good by patter · · Score: 2, Interesting

      Leadership and a bunch of intelligent ambitious developers are all you need.

      They don't have to be the best developers on the planet IMHO, just competent. I work for a company where the leadership has gone from a vapourware touting salesman, to a still slightly too ready to believe that the developers are all wrong, because now the major powerhouse is the support/customer service organization.

      What really would have helped was STRONG capable development management. None of the people I work with are stupid, they've just been made to believe they are for so long, some of them have bought into it.

      They badly want to rearchitect core products, but are continually dragged in several directions through mismangement.

      Anyone is capable of brilliance, but they need an opportunity to fend off the naysayers while they accomplish it ;)

      --
      -- If at first you do succeed, try to hide your astonishment. -- Harry F. Banks
    6. Re:Cheap, Good, Fast - Take all 3, if you're good by Badgerman · · Score: 5, Insightful

      A top-notch staff and a world-class leader, I'm guessing, is significantly more expensive than your average software development team. Therefore, it ain't exactly cheap.

      It is actually cheap compared to the usual practices especially in big companies (hiring 100 cretinoids to midlessly click and drag). The problem is that such teams are not a commodity readily available on the market. You cannot just go out and buy one. And they are hard to manage so the average PHB prefers the monkeys


      This hits on a very critical point - talented people who get the job done are the solution, but they aren't always easy to find and they aren't always what PHB's expect.

      Finding talented people requires one be able to recognize the talent, be willing to pay for it, and be willing to use it properly. That's a tall order for many people. You can do it, but you have to really understand what you're doing.

      Secondly, very talented people require proper management - that's sometimes at odds with common managerial philosophy. If you have someone who is good at what they do, micromanagement, not giving them proper resources, etc. can minimize the impact of the talent. Not understanding personality quirks of certain talented populations can be disastrous.

      So, people go with what they know, even if 100 codemonkeys are hired as opposed to 50 talented people, even though the 50 talented people may save you 25% of your budget.

      I'm fortunate. Where I'm consulting now is a place where my manager is an IT guy, knows how people work, and lets us to our job as long as we file progress reports. When he sees a talent/skill, he maximizes it. He talks to people as people.

      I got lucky.

      --
      "The Sage treasures Unity and measures all things by it" - Lao Tzu
    7. Re:Cheap, Good, Fast - Take all 3, if you're good by Citizen+of+Earth · · Score: 3, Funny

      If the aircraft industry can pull it off, so can the software industry. Read up on the Lockheed Skunk Works

      Yeah, but an advanced tactical fighter aircraft is utterly trivial compared to the complexity of a software system.

    8. Re:Cheap, Good, Fast - Take all 3, if you're good by adamjudson · · Score: 1

      When we say Good, Fast, Cheap - pick two, we aren't saying that we can't produce software that satisfies all of theses criteria.

      We are saying that only two of these things are variables.
      Quality and speed determine the cost.
      Cost and speed dictate the quality.

      A.

    9. Re:Cheap, Good, Fast - Take all 3, if you're good by AB3A · · Score: 1
      Where do you get the idea that it was cheap?

      Purchasing, maintaining, and operating the aircraft built by the Lockheed Skunk Works is not cheap. It may be inexpensive given the mission it performs, but it's still anything but "cheap" even in the expensive world of aviation.

      --
      Nearly fifty percent of all graduates come from the bottom half of the class!
    10. Re:Cheap, Good, Fast - Take all 3, if you're good by Anonymous Coward · · Score: 1, Informative
      Go do some research. Skunk Works aircraft were delivered at bargain-basement prices when compared to the rest of the aeronautical world. Look up Have Blue's cost vs. the cost of Tacit Blue. Look at what the P-80 cost, and the U-2.

      Maintenance costs were one of Kelly Johnson's big pet peeves; he had some good ideas about maintenance, and he was right. For example, why do military personnell service aircraft? They're rotated every couple of years, so there's a constant retraining cycle (read: expensive). Instead, why not contract with the OEM or a third party to do maintenance? Much lower turnover, more experience, and so on.

    11. Re:Cheap, Good, Fast - Take all 3, if you're good by Locutus · · Score: 2

      Wasn't this guy asking why the software industry has not grown to a enable a system which uses components and off-the-shelf parts?

      There are always going to be good and bad places to work. It's the industries direction of never being able to get a component architecture off the ground so others can build on. Please don't bring up DDE/COM/ActiveX/etc since it doesn't work in the enterprise where MS-Windows isn't EVERYWHERE.

      I really thought we were getting there in the early 1990's with all the C++ frameworks around and CORBA. So what ever happened to DCOM? Is that now MS-Web Services...

      We seem to be running in circles and every loop around seems to require a toll at the Redmond Toll Booth.

      LoB

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
    12. Re:Cheap, Good, Fast - Take all 3, if you're good by Badgerman · · Score: 4, Insightful

      We seem to be running in circles and every loop around seems to require a toll at the Redmond Toll Booth.

      Which is definitely part of the problem.

      Software Companies do NOT neccessarily exist to produce good tools and products. They exist to make money and please the shareholders.

      This does NOT mean they are out to produce the best, they're out to sell. Hopefully it is the best, but . . . well, no more needs to be said.

      That clouds the initial question on the possibility of Silver Bullets. Even if they're out there, we've got to wade through tons of irrelevant stuff to find our particular Silver Bullet.

      And a lot of our vendors are NOT helping. That's one reason I like open source. People may participate for different reasons, many far from noble, but the product and usefulness are a major focus.

      --
      "The Sage treasures Unity and measures all things by it" - Lao Tzu
    13. Re:Cheap, Good, Fast - Take all 3, if you're good by AB3A · · Score: 1
      The BEST you can get is two out of the three. You can do worse, if you're not careful. The DoD of the United States has a very long history of purchasing substandard products for ridiculously high prices.

      I stand by my statement.

      --
      Nearly fifty percent of all graduates come from the bottom half of the class!
    14. Re:Cheap, Good, Fast - Take all 3, if you're good by Anonymous Coward · · Score: 2, Funny

      Shit..
      I got none of a degree but I can replace a simple iterative procedure with a bugged out recursive
      one with the best comp-sci major son.
      Only thing you cs guys got going for you is a case of the "must readmes" and an attitude.

    15. Re:Cheap, Good, Fast - Take all 3, if you're good by Anonymous Coward · · Score: 0

      Facts?

      oh well

    16. Re:Cheap, Good, Fast - Take all 3, if you're good by Anonymous Coward · · Score: 1, Insightful


      Furthermore, very often the best people will completely founder under a PHB, so the talent is never recognized and goes to waste. They'll be identified as troublemakers, or worse as lazy, rather than the creative problem-solvers they are. What we really need to teach our brilliant CS students is how to stick up for themselves and known their own worth (and how to bring it out).

      K

    17. Re:Cheap, Good, Fast - Take all 3, if you're good by thunderbug · · Score: 1

      Notice that the successful projects were focused. They did one thing, and they did it well. Quality, cost, and time suffered proportionally with the number of objectives.

      Note too that the successful projects had decision makers; decisions were not made by committees.

      Success requires continued focus on a well defined goal.

    18. Re:Cheap, Good, Fast - Take all 3, if you're good by Locutus · · Score: 2

      yup, once apon a time, software development tools were successful when they made our jobs easier and producted better applications. The best product could win because the market made the choice. Those companies still were in business to make money and please shareholders but it was done by building the better mousetrap.

      Today, that really only exists in the OSS arena because for the most part, it's not money that's driving the projects, it's mostly solutions to problems.

      LoB

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
    19. Re:Cheap, Good, Fast - Take all 3, if you're good by Dave_bsr · · Score: 2

      Ha ha ha, laugh all you want... but -

      Part of the complication of "an advanced tactical figheter" is it's software and control mechanisms. "An advanced tactical fighter" minus computer(s) isn't nearly so complicated.

      And that's part of what Brooks was saying. A bridge is a bridge, it doesn't do much but sit there and you can study it really well. The same with a building, or a road, or any other engineering Construct - simple, with relatively few states to study.

      A computer system, on the other hand, has near-infinite states, especially when a user is added to the equation. It's pretty much impossible to study and test them all. Read the Mythical Man Month, he talks about all this stuff. Compared to the rest of the plane, the software systems of "an advanced technical fighter aircraft" are tremendously more complex.

      --


      Who is this Anonymous Coward character, how does he post so much, and why is he always such a whore?
    20. Re:Cheap, Good, Fast - Take all 3, if you're good by johnnyb · · Score: 4, Insightful

      So, people go with what they know, even if 100 codemonkeys are hired as opposed to 50 talented people, even though the 50 talented people may save you 25% of your budget.

      ***

      Actually, often 3 great developers can do the work of 30 codemonkeys. It really is that much of a distinction.

      The problem with the advances in computing tools is that people have become dependent on the tools, and have no understanding of the underlying technology. Then, when they get stuck, they can spend weeks or months trying to figure it out, while it only took the good programmer about 30 minutes on Google, because he knew what to look for.

    21. Re:Cheap, Good, Fast - Take all 3, if you're good by Citizen+of+Earth · · Score: 2

      Ha ha ha, laugh all you want... but - [...] Compared to the rest of the plane, the software systems of "an advanced technical fighter aircraft" are tremendously more complex.

      My posting wasn't really intended to be funny.

    22. Re:Cheap, Good, Fast - Take all 3, if you're good by lbonser · · Score: 1

      Good points about the Skunkworks. And it points out that quality is more about work ethic and commitment than about tools.

    23. Re:Cheap, Good, Fast - Take all 3, if you're good by michael_cain · · Score: 1

      Read the chapter "The Surgical Team" in TMMM. Some of the quoted work led to IBM trying the "chief programmer team" concept using that organization on real projects. The results were pretty staggering -- an order of magnitude increase in productivity, IIRC. The long-term problem, and reason that they had to give up on the technique, was that there were a lot more projects than there were people qualified to be "chief programmers."

      There are a lot of people who think they can invent new algorithms, do innovative design, and generate boatloads of well-structured easy-to-maintain code. There are a lot fewer people who can really do it. And I'll cheefully admit that I'm not one of them.

    24. Re:Cheap, Good, Fast - Take all 3, if you're good by Anonymous Coward · · Score: 0

      Teams like this only help you solve Good and Fast. People on the level it takes to perform this way do not come cheap.

    25. Re:Cheap, Good, Fast - Take all 3, if you're good by Anonymous Coward · · Score: 0

      >Actually, often 3 great developers can do the work
      >of 30 codemonkeys. It really is that much of a >distinction.

      This is not the whole story. Your 30 codemonkeys may never achieve the project objectives. Most codemonkey projects don't. Sometimes extending project schedules can mitigate but will never solve the problem. If you hire codemonkeys the first time you may have to start completely from the beginning when your project eventually fails. Refactoring badly broken software can be more expensive in time and money then any other alternative.

    26. Re:Cheap, Good, Fast - Take all 3, if you're good by Anonymous Coward · · Score: 0

      recursive != better than iterative

      depends on your language, your machine, and the problem

      recurse this buck-o

      for(long long i=0; i (1 63) ; i++)
      {
      printf("%l",i);
      }

      you are a monkey, and not cheap, fast, or good

    27. Re:Cheap, Good, Fast - Take all 3, if you're good by TeknoDragon · · Score: 2

      in addition every software system inside such an aircraft is tripply (or more) redundant

    28. Re:Cheap, Good, Fast - Take all 3, if you're good by Anonymous Coward · · Score: 0

      err, html...

      that's (long long i = 0; i < ( 1 << 63 ) ; i++)

    29. Re:Cheap, Good, Fast - Take all 3, if you're good by Badgerman · · Score: 2

      Furthermore, very often the best people will completely founder under a PHB, so the talent is never recognized and goes to waste. They'll be identified as troublemakers, or worse as lazy, rather than the creative problem-solvers they are. What we really need to teach our brilliant CS students is how to stick up for themselves and known their own worth (and how to bring it out).

      Irony for me - I'm a psychology major. It actually helps a lot on the job, and in no small amount of interviews it gets brought up - mostly for the advantages it brings to dealing with people.

      The ability to debate, analyze, and argue is definitely an advantage.

      --
      "The Sage treasures Unity and measures all things by it" - Lao Tzu
    30. Re:Cheap, Good, Fast - Take all 3, if you're good by Badgerman · · Score: 2

      Actually, often 3 great developers can do the work of 30 codemonkeys. It really is that much of a distinction.

      Furthermore, very often the best people will completely founder under a PHB, so the talent is never recognized and goes to waste. They'll be identified as troublemakers, or worse as lazy, rather than the creative problem-solvers they are. What we really need to teach our brilliant CS students is how to stick up for themselves and known their own worth (and how to bring it out).


      A lot of my current job in a nutshell. New technology I have to use, a whole new architecture to get used to, plenty of extras, a nasty deadline, and I'm on my own. Only one other guy in my team has similar skills, and he's busy on other things.

      But I know how to research, prototype, and analyze. I've done it for years.

      There's no way a codemonkey could do this job. It'd probably take at least 3 to keep the pace. That doesn't mean I'm brilliant, but it does mean I'm experienced and I know what to look for.

      My example of hiring half as many talented people as codemonkeys is just a rough estimate based on my experience overall. I agree in some cases you get a higher ratio, even the 1-10 you mention, especially when you factor in maintenace.

      After all, the talented people do more right the first time, screw up less, and have less to go back and fix.

      --
      "The Sage treasures Unity and measures all things by it" - Lao Tzu
  129. Eiffel by Per+Wigren · · Score: 2
    There is no silver bullet. There is no simple solution that will solve all problems. But it helps to not using overly complicated languages.. Before I tried out Eiffel I had been struggling with C++ for quite a long time.. C++ is extremly hard to learn! It's easy to learn the basics, but after a while everything just becomes a mess.. It's overfeatured and it's hard to debug.. Then I gave Eiffel a try, mostly just for fun, and everything became clear.. It just makes sense! It's simply a beautiful programminglanguage!

    It's pure OO, just like smalltalk, not hybrid.

    It's syntax is easy to learn, write and read.

    It has assertions nicely integrated into the language, everything must meet the precontitions and postcondition you set up. It feels natural to add checks and tests pretty much everywhere instead of cluttering the code with assert()s and #ifdef DEBUG..

    SmartEiffel (the GNU Eiffel compiler) compiles to ANSI-C or JVM so it's portable to every platform there is.. Some other compilers can also compile to .NET..

    You can use existing C and C++ shared libraries without wrappers/bindings. (although making bindings are preferrable to make it follow standard Eiffel-style)

    It manages memory for you and has a garbage collector. You never have to think about buffer overflows and malloc()/free() again!

    Its runtime speed is as fast as C/C++, and sometimes even faster because the compiler compiles to C-code that is more optimized than most human beings can code..

    I could rant about it forever, but I won't.. Instead you should read one of these great tutorials!
    Eiffel for beginners
    Eiffel: An advanced introduction
    Eiffel Object-Oriented Programming

    And of course, the GNU Eiffel compiler: SmartEiffel ;-)

    --
    My other account has a 3-digit UID.
    1. Re:Eiffel by peerogue · · Score: 1

      I could not agree more on whatever you said on Eiffel.

      Some will say Java is the Sliver Bullet at OO because it is "better than C++" and "portable". Haha!

      Eiffel is truly a unique language. It conveys all the good things I can think of regarding design with OO. And Betrand Meyer's "Object-Oriented Software Construction" is a masterpiece.

      I wish more software was written in Eiffel. It's a pity the free Eiffel compilers are not as good as ISE's, and that there is so little Open Source stuff written in Eiffel.

      I'd do all my projects in Eiffel if there were.

  130. Structured programming by rotenberry · · Score: 1

    I wrote my first program using punch cards in 1973, and I've seen a lot of changes.

    The two most significant are structured programming and the widespread use of interpreted (as opposed to compiled) languages.

    When I ask an old-timer like myself to compare the introduction of objected oriented programming to structured programming, he usually agrees that, while OOP can be useful in many cases, structured programming is always useful and was a huge step forward.

    Using a computer monitor beats the hell out of using punch cards, too.

  131. Has it actually got worse? by mestoph · · Score: 2, Insightful

    To be honest, to throw my 2 cents in, we are seeing more and more bad programming. 20 years ago, you might have expected a program to have bugs. But know we see some of the biggest software houses and programmers releasing half standard programs, just to get them released on time. With many bugs still with them. And for the most part these bugs are bareable only because, our massive increases in hardware does not notice the odd memory leak here for a long time. To be honest, how many things we have designed over the years, would run on a 286, with 4 meg of ram. Fair enough you can't ask it to hand some of the graphics side, but the bare bones should at least run, even if you would be waiting hours for it to say Yippie. All in all, we can get payed silly money for stuff we write, and the pressure of deadlines makes some awful things. But on the plus side, those that do side projects, do end up being the best things around. As you dont want to release a personal project unless its perfect.

    --
    --+> Life, is there any?
    1. Re:Has it actually got worse? by Anonymous Coward · · Score: 0

      I've seen some fancy stuff done on a 286... those damn assembly demo coders were pretty good at exploiting machines to their full potential.

  132. Stop reinventing the wheel! by jazzbotley · · Score: 1

    Dr. Doug Schmidt hosts the Adaptive Communications Environment (ACE), which is essentially a C++ library or framework of building blocks. Although the learning curve is a bit steep, I have since created several Win32 NT-service client/server apps using the ACE library. I find that the ACE mindset simplifies design, and once the project's designed, implementation is very rapid since it's just a matter of gluing together various pieces of the ACE library. Please forgive my sorry introduction to this wonderful toolkit, and go read about ACE for yourself! You will be glad that you did!

  133. eXtreme Programming == Try it first by st.+augustine · · Score: 4, Informative

    For a construction project all of these elements are mapped out well in advance, which is why the construction industry can work on lower margins.

    This is where so many people get it wrong. Making software is not analogous to making buildings. Making software is analogous to designing buildings. (You'll notice that the Design Patterns movement is based on a technique for architects, not builders.)

    (And, by the way, if you think real-world construction projects follow a simple waterfall model like that, you should read about the Panama Canal.)

    XP is the embodyment of the non-engineering approach to computing that pervades this marketplace. The idea that you can build it wrong and change

    What makes you think that if you design the hell out of it up front and build strictly to that design you won't find, six months or a year later when the project's finally finished, that you'll have built it wrong anyway? Or worse, what happens when halfway through you realize that your design was wrong, or your requirements were inaccurate or inadequate -- and you're locked into a process that requires a ream of up-front paperwork before you can change what you're building?

    don't design, "code and check"

    Again, coding is a design task. Everything else is just requirements gathering.

    have a unit test written by a bad coder to check his own bad code.

    I think you've missed the point of XP's approach to unit testing. The unit tests aren't written to "check the code" -- I agree, it's pretty pointless for someone to write a test that proves that his code does exactly what he coded it to do. The unit tests are written to describe what the code is supposed to do -- they're like a design document that can automatically validate the code that implements the design.

    Also, pair programming -- even when it's not between "two people of equal ability", so long as they both have enough ability and they're communicating well -- goes a long way toward alleviating the problem of having the watchmen watch themselves.

    Don't knock XP if you haven't tried it.

    --

    -- Some things are to be believed, though not susceptible to rational proof.
    1. Re:eXtreme Programming == Try it first by The+Pim · · Score: 2
      This is where so many people get it wrong. Making software is not analogous to making buildings. Making software is analogous to designing buildings. (You'll notice that the Design Patterns movement is based on a technique for architects, not builders.)

      Exactly. The things that build software are called compilers and interpreters and CPU's. Everything above that level is design.

      When you realize this, you appreciate that the software design is a whole other problem than building design.

      --

      The evaluation of an action as 'practical' . . . depends on what it is that one wishes to practice.
  134. Eclipse. by TomRitchford · · Score: 2, Informative
    Eclipse is the first development system I've used in over 20 years of programming that's an improvement over emacs and make/ant... and what an improvement... it has changed my life!

    Seamless integration with CVS, automatic refactoring tools, incremental compilation, full integration of unit testing, plug-ins, etc, etc... you owe it to yourself to try this fantastic open-source tool. /t

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

      No kidding! For coding, I've taken to running Eclipse and XEmacs together. At least under Win2K, I can drag and drop a file from the project to XEmacs to tweak. Mostly for cleaning up and filling paragraph comments, though. (M-q is my friend!)

  135. Got an assignment? by pipsqueak · · Score: 2, Funny

    > I'm in a Computer Science degree program, and I > keep wondering what "improvements" over the last > quarter century have actually brought progress to > the key issue: more quickly and more > inexpensively developing software that's more > reliable?" Sounds to me like someone got an assigment entitled "Discuss improvements to Software Engineering in the last 25 years" handed out at the end of their last lecture.

  136. It's all about the process by omnirealm · · Score: 3, Informative

    One study I recall reading about (take it with a grain of salt) has shown that the average error rate in a program is 60 errors in 1000 lines of code. Some companies have managed to get that down to around 1 error per 1000 lines of code. Organizations that successfully incorporate the ISO 9000 model (Dilbert jokes barred) tend to have a much better rate. For example, code for a space shuttle only has 1 error per 420,000 lines of code - an astronomical (excuse the pun) figure as far as software engineering statistics go. Critical software development teams at Lockheed-Martin, for example, may spend up to two-tirds of their time in meetings and in design, rather than in actual coding. And the engineers tend to go home at 5:00 too. Just some food for thought.

    --
    An unjust law is no law at all. - St. Augustine
  137. Stallwart by Ektanoor · · Score: 2

    Well this is not exactly about languages and libraries but more about experience and use.

    Frankly the market looks big but it looks bad. Yes, there were tons of improvements for the last 30 years. I still remember as a kid how my father had to fight small bugs in code by looking at the holes in the punch cards. I remember how terrible it was to fight Xenix in a S/36 and learn my very few first steps in *NIX. I remember the horror I got when I saw one of the very first PCs in Europe. It was a terrible world where the only help was the guru and yourself.

    When I met the new OSes, Object Oriented Programming, RAD and all that pretty stuff out there I thought we had the road ahead and, soon, the horrors of the past would be gone. However, looking behind I see that we have lost something valuable - creativity. Today we use nearly the same things that were created in the beginning of the 90's. With the exception of Java, we have not seen any major revolutions in computing. Linux is not a revolution per se, in fact it is the congregation of revolutionary steps that were breeding for the last 30 years before its creation. Apart of this, Linux is quite old and conservative.

    When you look at old generations, you see that 90% of what they did is what you do today. The only difference is that you either reuse their work or invent the wheel again. Most of the market got reduced to a bunch of architectures and programming technologies. We no longer see computing rooms looking like zoos, with every kind of hardware and software. We don't see people fighting for every bit inside the memory and making marvels out of small chunks of code. We no longer have these weird 7bit, 8-bit or 12-bit computers laying around. And that's bad.

    It's bad because we are going from an intensive revolution into an extensive evolution. And we forget that there are still tons of fields that are still unexplored or badly explored. AI looks standstill, Robotics is nearly forgotten, technologies beyond the microchip look more and more as SF, Quantum computing as far as Quantum theories, neuron networks look as cracks in a barren desert. These are areas that demand bleeding edge ideas and methods, those same methods that gave rise to our modern computer world. Btw, on our OSS world we have a good example of the lazyness of modern times - look at Hurd and where it stands now.

    Besides, because we are loosing the bleeding edge in computing, it is probable that we do not see nothing beyond the present languages, architectures and technologies. It is very probable that we may had a whole New World behind the present Ocean of Information. But to cross it, one needs some will and courage.

  138. Not enough! by Glock27 · · Score: 5, Insightful
    I've been programming on a full-time basis for over 20 years. I suspect that's a bit longer than the average Slashdotter. ;-)

    I've often thought over the last few years that we've made too little progress in making programmers more productive. I largely blame that on Microsoft, simply because it drives more software development with it's tools than any other entity. One language I've categorically made a decision to avoid is Visual Basic. I have always felt it was basically (sorry) a waste of brain cells. It has certainly done nothing to advance the state of the art.

    In my opinion, one of the best things to come along in a long time is Java. The gentle reader may recall earlier posts along those lines. I enjoy C, and have spent the majority of my career doing C and C++. However, I have also spent _way_ too much time tracking down memory-related bugs. Often, they were in third party code. That is no way to run a railroad.

    Java addresses almost all of the glaring deficiencies of C++, both in language design and in runtime safety. In my opinion, the best programming tools will be those that enable single programmers to tackle larger and larger projects.

    Compared with C++, Java enables me to tackle much more ambitious projects with confidence. A team approach can never attain the efficiency of a single programmer approach. The "sweet spot" of software engineering efficiency is the largest project one person can tackle. Extreme programming is a useful hybrid that attempts to turn two programmers into one programmer. ;-) (Also teams can be nearly as efficient as single programmers if the system is properly decomposed into subsystems separated by simple interfaces. This rarely happens smoothly, in my experience. It takes a top notch group of people.)

    One last note on Java - performance is now almost completely on par with C++. On my most recent round of benchmarks, Java (JDK 1.4.1_01) on both Linux and Windows outperformed C++ (gcc 3 and VC 6) on most tests. Dynamic compilation and aggressive inlining are that effective. The VM also soundly spanked the gcj ahead of time compiler in gcc 3. It thoroughly rocks to have truly cross-platform code that runs faster than native! Think how many religous wars would be avoided if 99%+ of software was available on all OS platforms...and think how much it would help Linux! :-)

    If you want to see what's out there for Java, download either the NetBeans IDE project, or the Eclipse IDE. Both are free and each has its strong points. NetBeans is a Swing app and includes a Swing GUI designer. Eclipse uses a new open source "native widget wrapper" library from IBM called SWT which has it's interesting points. You'll also need a Java VM (there are also others available from IBM etc.).

    One last thought - wouldn't it be cool if web browsers had support for something like Java? I mean, you could deploy apps just by putting them on a web page! It wouldn't matter what the target platform was! What a great idea! (This paragraph was sarcasm in case you were wondering.)

    --
    Galileo: "The Earth revolves around the Sun!"
    Score: -1 100% Flamebait
    1. Re:Not enough! by TheSync · · Score: 2

      My opinion, slightly opposing, is that Visual Basic has been a revolutionary tool in helping a wide range of people write simple GUIfied programs (about 90% of real-world business tasks) exceedingly quickly. Combined with COM and ActiveX, novice programmers can get rapid access to a lot of power.

      Moreover, VB and VC++ have really popularlized the concept of the GUIfied IDE.

      VC#'s continues this with its "build a Web service/Web service client in a minute" concept based on WSDL. And ASP.NET's Web forms are taking the power of the "Visual" line to the Web as well.

      After growing up on Emacs and vi, the modern IDE is really a marvel!

    2. Re:Not enough! by spakka · · Score: 2
      In my opinion, one of the best things to come along in a long time is Java. The gentle reader may recall earlier posts along those lines. I enjoy C, and have spent the majority of my career doing C and C++. However, I have also spent _way_ too much time tracking down memory-related bugs.

      Java addresses almost all of the glaring deficiencies of C++, both in language design and in runtime safety.

      Certainly, Java helps shit programmers write code without worrying about the most obvious category of memory leak. However, it introduces its own insidious memory problem, not acknowledged by Java advocates.

      The first thing a competent C coder learns about malloc() is *always check the return value*. Ask a typical Java programmer what happens when the VM runs out of memory and they look blank or mutter some bullshit about the garbage collector.

      The trouble is that OutOfMemoryError isn't a checked exception: you're actually encouraged to ignore it. Moreover, there's no easy way to determine if any code you call can throw it.

      So, they solve a supposed major problem of C and C++ by pretending it doesn't exist, with the result that almost all Java code in existence, certainly all I've ever seen, is broken in conditions of low memory, and can't reasonably be fixed.

    3. Re:Not enough! by BigZaphod · · Score: 2

      I'm really not a Java advocate, but I have to wonder why this matters for most cases? I mean, in my own personal C code when I check return values for malloc I usually have it bailing if it runs out of memory. What's the difference between an uncaught exception (which will kill the program with an error about catching exception "OutOfMemory") and doing a printf( "Out of memory!\n" ) and exit?

      I can certainly understand that in some cases you might want to continue even with a memory problem. Perhaps you have control over so much data that you can then start relasing some of that memory elsewhere or something. But that seems to be an exceptional case and if you're doing programming where that situation can arise, well then you likely know what you're doing and this whole entire complaint wouldn't be issue.

      So, I guess what it boils down to is, what's the point? I may be missing something here. I haven't been programming 20 years or anything like that. If so, please share!

    4. Re:Not enough! by Tablizer · · Score: 1

      My opinion, slightly opposing, is that Visual Basic has been a revolutionary tool in helping a wide range of people write simple GUIfied programs (about 90% of real-world business tasks) exceedingly quickly.

      Actually, I would credit MS-Access with this a bit more. However, Access projects tend not to scale and developers or managers often ingore maintainability issues when chosing and developing in it. But as far as getting the initial project up and running to a usable level, Access is often used. It is one of those 80/20 products: makes the first 80 percent easy, but the last 20 percent a bear. Amature programmers have an advantage over pros here, because they can simply say that they "don't know how". However, a pro is pressured to force it to do X using funky workarounds and hacks.

    5. Re:Not enough! by Glock27 · · Score: 2
      My opinion, slightly opposing, is that Visual Basic has been a revolutionary tool in helping a wide range of people write simple GUIfied programs (about 90% of real-world business tasks) exceedingly quickly.

      The revolutionary tool was Turbo Pascal, which Microsoft ruthlessly imitated to create Visual Basic. The only reason 'a wide range of people' use VB is because Microsoft pushed it. IMO.

      One of the main problems with VB is, of course, that non-programmers write "simple GUIfied programs" which later turn out to be not so simple, not so extensible, and not so defect-free. I much prefer maintaining systems written by professionals. Again, IMO. :-)

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    6. Re:Not enough! by spakka · · Score: 2

      You're right that in many cases it wouldn't really matter, except maybe pissing off a customer with a terse error message.

      The problem comes in those other cases when you need to handle the error locally. The only way is to trap it with try & catch, which is syntactically ugly and explicitly discouraged by the SDK documentation and the JLS.

      Perhaps you have control over so much data that you can then start relasing some of that memory elsewhere

      Nothing so exceptional - perhaps you just want to tell the user 'Not enough memory - try again later' without exiting, or perhaps you just have some cleanup to do.

      I just offer it as an example where the use of Java has made programs typically lest robust than previously, in the arena where it supposedly trounces C and C++

    7. Re:Not enough! by bloosqr · · Score: 1

      I'm a bit surprised by this actually. One of the main reasons I switched over to C++ from C was to have a C with a #ifdeff'd compilable memory leak detector and bounds checker (this was simpler than carrying the bounds checking C around w/ me or using efence) Basically I just templated around new, delete and of course []. Anyway over time i've grown throughly addicted to some portions of stl (i.e. trust it more) and its nice for non-cpu intensive portions of code (i.e. built in hashes i.e. map is great!) But in all seriousness, C++ I've always thought was the answer to memory debuggin hell :)

      -avi

  139. It's About Human Nature... by fygment · · Score: 1

    ... not software. There are a ton of systems/methodologies out there. All of them are valid IMHO. But you don't see the benefits because programmers simply don't rigourously adhere to any one of them. And why should they? Software engineering rarely has the impact that the older engineering disciplines have. Poor aeronautical engineering kills people. A buggy word-processor or game is irrelevant by comparison.

    But the tools are out there to make a difference if you can motivate people, and yourself, to be more disciplined in the use of those tools; to give a damn about the end product. Learn to understand human nature and you'll see better code as you motivate yourself and your peers. And if you really understand human nature, I've found you can even influence managers and other suits to give a damn too.

    --
    "Consensus" in science is _always_ a political construct.
  140. The key issue by Anonymous Coward · · Score: 0

    I don't think the key issue is "more quickly and more inexpensively developing software that's more reliable." Rather, I think it's developing software that handles change gracefully, because customers and managers are always changing what they want. Features almost never get removed from a product; and questions like "how readable, orthogonal, and well-factored is the code" become more important over its lifetime. These are human elements, not easily measured and it's not always possible to anticipate every change but it helps to try. Read the Pragmattic Programmer for some great advice about this.

  141. Design, Design, Design! by zerofoo · · Score: 2

    Programming tools, development environments, and languages have gotten easier in the past 10 years. That does not replace good software design. Efficiency and serviceability cannot be added to a bad software project by switching languages or development tools. Only good design principles can make good software.

    The Linux kernel, while monolithic, seems to be a great example of this...massively complicated, but easily broken down into parts that all fit well together and can be replaced easily. (And documented well...for the most part).

    -ted

  142. The trouble isn't the silver bullets. by Doctor+Hu · · Score: 1

    It's the clowns who are aiming the gun. "Foot, meet Bullet. Bullet, meet Foot."

    In about 30 years earning my daily bread in the IT business there have been improvements. Lot of snake oil as well, of course. One thing that's stayed constant is that requirements get changed partway through development, which you can cope with in a small project with smart people and good tools. But in a large project it's a guarantee of cost overuns, late delivery, and angry recriminations.

    Unfortunately, over the last few decades the environment in which applications work has become significantly more complex. 30 years ago much of IT was just a matter of shuffling data from one set of files to another: if you were a big organisation, you might even have a genuine database or three rather than just using files. Or you might be doing leading edge online stuff, which had it's own well-understood ways of doing things, one of which at the time was keeping the execution path lengths under control (yeah, we used to care about efficiency in those days).

    These days, to serve up some information to a customer at home, an application might be running in a specialised enterprise-level java environment, communicating to some legacy big iron which holds much of the data and to other machines for specialist functions like authentication. All these interfaces have to be specified and implemented accurately for the whole system to work correctly and reliably, and it's still far too easy to miss the point at which a relatively well-understood project has slipped out of control.

    In short, over 30 years, the proportion of projects that are large and complex and hard to coordinate has been increasing. In the circumstances, it's surprising that things work as well as they do.

  143. Re:Standard libraries: right on! by MarkWatson · · Score: 2
    Yes, you have it exactly right!

    For most modern languages, you spend a week learning how to use a langauge and then (potentially) months learning the (class) libraries.

    I just started using Smalltalk again for commercial product development - it is amazing how little new code one needs when reusing already debugged and efficient libraries.

    -Mark

    Warning: I am blogging now: http://radio.weblogs.com/0115954/

  144. Garbage collection by chrohrs · · Score: 1

    There is no silver bullet, but having a good programming language sure helps. Of all programming language features, garbage collection probably improves programmer productivity the most. Anyone who has ever tracked down a stubborn memory leak or dangling pointer knows what I mean. Most newer languages (e.g. Java, C#, Python) have some sort of automatic storage reclamation, and it can be used with non-cooperative languages like C/C++.

  145. Think Y2K and ask where the improvement is... by dinotrac · · Score: 2

    When Y2K was getting ready to roll around, businesses spent billions of dollars ensuring that 30 year old code would handle the change of millenium.

    Think about that!

    How much new code, made with all of the zippy new tools in all of the latest and greatest paradigms, do you expect to be in critical use 30 years from now?

  146. Re:"I'm in a Computer Science degree program"????? by jelle · · Score: 2

    Big part of software development is often communication and interaction with the customer. Now it may be that in some of those countries many programmers will be fairly or very well versed in the languages. But not all will be, plus the distance and time zone problems will add to the communication and interaction problems. You just can't do everything over the phone and email, some things just need the engineers and the customer locked up in a conference room with coffee and a whiteboard, and flying people around the planet costs money and time too.

    Sure, you may get cheaper software, but it won't be exactly what you want, or it won't be as effective a product as it could be.

    Some jobs will move to the cheap regions, mainly the jobs (usually considered boring) that can be easily written in a spec, or that can be done by a completely separated team with minimal externally driven spec changes. Other jobs will remain available closer to the customer, and that is not just sales.

    Basically, aided by the advent of open source software taking the role of commodoty software, this will mean that US and European programmers will relatively do a lot more custom jobs. A lot of the testing and bugfixing (QA), and supporting library development will probably move to the cheaper regions.

    Actually, it should make the jobs a lot more fun to the programmers in Europe and the US.

    --
    --- Hindsight is 20/20, but walking backwards is not the answer.
  147. .NET (duck and cover) by boatboy · · Score: 1

    Even though it won't earn me cool points for saying so, I know .NET has brought about a huge increase in productivity and scalability of apps where I work. We've rolled out several large and well-designed applications very quickly (2 months). Of course, you can always take the best tools and write bad code slowly, but .NET makes it easier to write good code quickly. If projects like Mono pan out, make that 'good, cross-platform code quickly'.

  148. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0

    >I predict that very few people in the US and
    >Europe will be employed to develop software in 5-
    >10 years time.

    And this is bad... how?

    If your skills can be automated or easily replaced by cheap labour, then that's a pretty good sign you should change your skill set. This is much the same situation as that faced by the people you've displaced by writing code which makes their work environments 'more productive'. Never thought you'd see the same paradigm applied to yourself, huh?

    Adapt or die. Those who are trying to keep coding jobs from becoming more cost-effective are little better than the Luddites who burned those first looms. There's more to CS than writing code.

  149. The problem are greed and requirements by insac · · Score: 1

    Talking about System Integrators Industry...

    For what I see, if we had the tools we have today with the requirements of 25 years ago, we could do fast and good software.

    "Cheap, Good, Fast in detail"

    Cheap: our marketing/management wants it cheap to get more money
    ------
    More programmers? They'd be useful. I know about "The Mythical Man Month" but I know also about "Under-staffed Death March Project". But unless the project is already in crisis, the senior management won't give developers

    Good: just the developers/end users want it good
    -----
    Sure the customer claims it wants a good product, but such a claim is not supported by realistic time requirements and superficial attention to the results.

    Fast: the customer needs it yesterday
    -----
    I've heard a customer revolutionizing all the requirements for a project (when we were 60% of the schedule) changing the framework we should have worked on and telling "Give me you're new estimate, even though it is clear we won't accept any change of the release date"

    So my opinion: the sw dev process has improved but hasn't kept the pace with the market requirements and senior management greed

    --
    This message doesn't need a sig
  150. SD has improved, but so has complexity of software by UpLateDrinkingCoffee · · Score: 1
    As Software Development techniques improve, API's, frameworks, etc. the software increases in complexity so they kind of maintain an inverse relationship.

    I think this happens because we lose sight of the problems we are trying to address with the software. In many ways, we are developing software for it's own sake (if you don't believe me, just look up some project failure rate statistics)

  151. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0

    I predict that very few people in the US and Europe will be employed to develop software in 5-10 years time

    That shows that you're incredibly naive and project every trend infinitely into the future. Firstly, apart from the fact that India mainly served as a development center at the peek when "Western" developers were just enormously expensive, since then it has faded largely away as an issue. Secondly, If software development were such an easy, external issue then there wouldn't have been internal software development in the first place.

    Software development, and "brain" engineering isn't going anywhere. Prophecies to the contrary are the domain of the burger flipping jealous.

  152. Absolutely! by twoslice · · Score: 2

    30 years ago I was programming in assembly language and had to code my own library of subroutines. You young whippersnapper programmers have it easy.

    When I was programming I had to walk in three feet of snow on my way to school... uphill in the snow both ways... lard sandwiches... old rubber boots... carrying my younger brother...80 degrees below zero... aaaannnnd we had to use MSDOS on a 4.77 mhz CPU!

    --

    From excellent karma to terible karma with a single +5 funny post...
  153. Try XEmacs... by hobbit · · Score: 1

    ... and if it doesn't do everything you want it to do, implement the kitchen sink yourself.

    --
    "Wise men talk because they have something to say; fools, because they have to say something" - Plato
  154. Only one IDE that lives up to the promise by Anonymous Coward · · Score: 0

    COCOA! Formally known as NeXTStep. End of story.

  155. So, show me the goods by N8F8 · · Score: 3, Troll
    Such a widely read opinion as yours surely must have a project laying around you could use as an example of your preaching. Preferrably one you yourself wrote.

    In my experience many in the IT field fall into one of two categories: Those who do the work and those who make a living telling people there are better ways to do the work (this group usually correlates with people who couldn't actually do the work themselves). Reading your resume it is readily aparent what category you fall into...

    --
    "God fights on the side with the best artillery." - Napoleon, Marshal of France - speaking truth to power
    1. Re:So, show me the goods by Stu+Charlton · · Score: 2

      Ah yes, the "if they haven't done it themselves they couldn't possibly teach me anything new" school of thought.

      The most optimal ways to approach problems are rarely intuitive. Software engineering needs as much help as it can get, including those who professionally observe the industry's patterns. It's worked in other areas.

      --
      -Stu
  156. Lisp by Anonymous Coward · · Score: 0

    Yep, it's improved. XML, Java, Perl, Python and Ruby are all slowly reinventing Lisp. This is a good thing, as it allows people to use Lisp without admitting it to themselves.

    Sigh.

  157. In a word... by Anonymous Coward · · Score: 0

    In a word, no. The major change in the last 20 years has been to commoditize the programmer. It isn't finished yet, but it is heading that way.

    I guess you could say there has been some improvement. Software tools have developed to the point that you can hire a large number of fairly incompetent people and have them work together without it being a total loss.

    The average coder this days is far inferior to the average coder 20 years ago. There are a lot more of them. And code quality hasn't improved a bit, perhaps it has decreased.

    On the other hand we are building larger and more complicated systems.

    On the gripping hand, a lot of the size and complexity is there for not reason but to deal with the problems introduced by size and complexity.

    So it isn't a clear win either way, except for the managers.

  158. Re:Thinking about thinking.... (and engineering) by Sun+Tzu · · Score: 2

    Yes, exactly... except for the part about other engineering disciplines. ;)

    The trouble with that phrase is that 'software engineering' isn't properly one of them... or is it?

  159. Of course not by TheAncientHacker · · Score: 2

    For the most part the industry has stagnated. Let's get real. This is a site that primarily is a haven for people who dislike innovation and who worship variants of an OS (Unix) originally designed in 1969 to run on a PDP-7 minicomputer. The languages espoused here are virtually all derivatives of C which was a quick hack developed at roughly the same time.

    Even in 1969, C (and Unix) weren't state of the art. But, they were, mostly by accident, available for free to universities with little budget for their math departments. Hence a generation of coders who actually think that C has value.

    Let's get real. A language with no concept of a string? A language with no concept of buffer validation? A language with enough precedent levels to keep thousands of programmers confused and making errors? A language with symbols and operators that mean different things based on context? A language with standards that actually consider order of compilation rather than requiring multiple pass evaluation? A language with case sensitivity?

    These things were all obsolete in the early to mid 1960s. That C and its descendants continue to this day is both a tragedy and a source of shame for all of us yet we see few new languages that aren't designed to look like C.

    Perl, Python, Java, LiveScript/JavaScript/JScript/ECMAScript, C++, C#, ObjectiveC are all children of a badly designed parent that inherited many of the faulty designs. Where is the new Simula? Where is the new SmallTalk? Where is the new PL/I? Where is the new GPSS? Where is the new Algol? For that matter, where is the new BASIC?

  160. .net Rocks by Anonymous Coward · · Score: 0

    We have built a million really great world class products in 3 days because of .Net. It's like visual basic for real programmers.

    The real secret is faster processors. The faster the computer, the faster the development.

    No, not really.

    Pr0n.

  161. Yes. Here's why: by Qbertino · · Score: 2

    1.) Back then, you had a zillion platforms and things where much more experimental. Today you get x86 whereever you look. It's become <i>the</i> standard plattform for developement.

    2. )Todays comps are <i>fast</i>. And I mean really fast. Things like my favorite Editor JEdit (www.jedit.org) are actually usable with todays standard hardware, even though it is a hideous chunk of OOP stuff running on top of a VM. In five years from now no one will give a shit what processorpower an app will need, as long as the Framework is easy to use, OOP all the way through and extendable within hours.

    3.)Rocksolid OOP packages that have years of expierience and expertise in high level softwaredev behind them. Just think of Java or it OSS 'counterpart' Python if you will. I programmed a simple Inet-Agent with it's own HTTP socket within a few hours the other day. I didn't even bother of using wget as an external programm, because it would even have been more difficult(!!). Think about that. No way would have that been possible 10 years ago.

    You have you're libs that can be bound into any PL you can think of within minutes, you have entire Application Servers that will install with 2 mouseclicks (ok, maybe three...) and have you're project rolling 10 minutes later and if you know one PL good enough it usually takes you round abouts 3 hours to get rolling with a new one because they all follow the same tried and true principles that have proven the to be the best. And if you only keep you're eye on it a little bit you're bound to have zilch hassle in migrating or porting to another plattform.

    Yes, Softwaredevelopement has developed from an exotic experimental thing to a fully grown science and profession, with all the benefits that come along.

    --
    We suffer more in our imagination than in reality. - Seneca
  162. Experience by Anonymous Coward · · Score: 0

    is what counts most. With experience also comes the ability to work in a structured fashion. It doesn't really matter what structure you follow: OO, State Machines, Waterfall Development... as long as you adhere to whatever process you have in place and not work in a haphazard fashion.

    Fancy programming tools and paradigms don't help much, but revision control and requirements tracking do help a lot.

    Last but not least: Test, test, test and test again...

  163. The inevitable comparision with construction by TeeWee · · Score: 1

    For a construction project all of these elements are mapped out well in advance, which is why the construction industry can work on lower margins.

    Ah, the inevitable comparison with the construction world... Just keep in mind how many of the larger construction projects (focus is on the larger projects, because the problems for software development are also on the front of the larger projects) are delivered on-time, on-budget.

  164. Re:"I'm in a Computer Science degree program"????? by BitwizeGHC · · Score: 0, Flamebait

    I predict that very few people in the US and Europe will be employed to develop software in 5-10 years time.


    The difference between contracting out to an Indian IT farm and hiring a great programmer -- from any country -- is rather akin to the difference between employing 100 monkeys and hoping one of them will bang out Hamlet, and hiring William Shakespeare.

    The truly brilliant programmers are few. And pretty expensive. But they're well worth it.
    --
    N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
  165. So, they've caught up to... by alispguru · · Score: 5, Funny

    ... Lisp development environments in 1980? If Visual Studio is an example of progress in the last 20 years, I'm impressed... NOT. Every one of those features was in every commercial Lisp development system of the era (Symbolics, LMI, Xerox), along with lots more. And, they live on in the ilisp development environment, which gives them to many Common Lisp and Scheme implementations.

    Yes, this is flamebait. Yes, I'm bitter and curmudgeonly. Perceptive of you to notice...

    --

    To a Lisp hacker, XML is S-expressions in drag.
    1. Re:So, they've caught up to... by BerntB · · Score: 1

      Damn, I never have mod points when I see something I want to mod up. :-(

      --
      Karma: Excellent (My Karma? I wish...:-( )
  166. Coding over the last 25 years by Anonymous Coward · · Score: 0

    I first started writing code for money in 1979, for McDonnel Douglas. Let me tell ya, things have gotten WAY BETTER. In those days, we wrote Fortran using IBM's TSO (TSO - Time Sharing Option). We didn't even have EMACS! We had crappy "line editors". We used those old Tektronics "storage tube" displays that could display graphics, but only static vecter images, or we used VT100's. There was no such thing as an IDE and compiles were "jobs" you "submitted" to the OS using Job Control Language. Oy, it was a pain.

    OOP and IDE's and source code control and project management tools have all gone a long way towards making programmers much more productive. We've advanced hugely.

    This doesn't translate to less buggy products, however, because increased productivity just means that more is expected of programmers. The products we work on are huge now and much more complex. The one, main underlying rule of producing software products hasn't changed and never will:

    You can have it good, fast or cheap, pick any two.

  167. Visual Assist + DevStudio = MUCH better by medscaper · · Score: 1

    If you haven't tried Visual Assist, give it a shot - 30 day trial, and it's awesome at helping out those who are used to VC++ but need a bit more quickness and functionality when writing C++ stuff in Win32 environments...

    Sorry for such a blatant plug, but I have recently purchased it after a demo, and love it!

    --
    Any sufficiently well-organized Government is indistinguishable from bullshit.
  168. the bar keeps rising by Anonymous Coward · · Score: 0
    Well of course software development has improved in the last quarter century. If that's not immediately obvious to you, it's just because the software we produce is constantly growing larger and more complex (e.g. user interfaces).

    Is software better (i.e. easier to use, more powerful, more detailed) than it was in 1975? Yes. Is that improvement driven entirely by the changes in hardware? No. Have programmers as a group gotten significantly smarter in the interim? Probably not. Ergo,

    A few of the things that have made for better software development are:
    • bigger, faster hardware: Can you imagine running today's CodeWarrior 8 or Visual C++ on a circa 1990, let alone ca. 1975, machine?
    • OOP: Sure, we all have fun complaining that the promise of OOP has never been fully realized. But I think the world wouldn't be nearly as nice a place without the reusability and encapsulation that OOP brings us.
    • time & experience: we've all learned from the failures and successes of the programmers who've come before us. That experience is passed on by oral tradition, through books, through formal education, and perhaps most importantly through the tools we use themselves.
    • open communication: whether you take part in any formally open source projects or not, the fact that you're reading this means that you've probably interacted with others on the net and shared your knowledge with them in the form of written comments and/or source code. Give yourself a pat on the back!
    • better tools:editors, compilers, linkers, revision control, etc. all do more and work better than they used to.


    The essence of the human condition is a desire to improve the environment, and I believe that drive is strongest in scientific and engineering disciplines. It's only natural, then, that 25 years of labor by millions of relatively smart folks has resulted in some significant improvements. It's also only natural that we continue to look for ways to improve things, rather than saying: "Okay, we're done! These are the software development tools, and they're not going to change any more from here on out."
  169. software developement improving by frieked · · Score: 0

    heh, I pull up the comment page for this post and what advertisement do I see?

    Microsoft Visual Studio .Net

    Ironic?

    --

    I have often regretted my speech, never my silence.
    -Xenocrates
    1. Re:software developement improving by mojogojo · · Score: 1

      I see an ad for SourceForge - to improve collaboration. I guess we see what we want to see... (/. banner ad - the next great oracle of the IT world?)

  170. No silver bullet by Anonymous Coward · · Score: 0

    I've been a programmer for 16 years, and I've seen no real improvement. Throwing up a skeleton UI is certainly easier, like in VB, but in large applications the toughest work is still in the middle and on the back end. These are the areas that require sound mathematical and algorithmic principles, such as those expounded by Knuth. These days it may be easier to keep track of objects and components, and get F1 help and documentation, but someone still needs to write the guts.

  171. not a money pit... by smagoun · · Score: 4, Interesting
    Actually, that isn't correct. I've read Ben's bio, Kelly's bio, etc, and one of the things that struck me was that Kelly insisted on giving money back to the government when a project ran under budget (which happened more than once). Hell, even Have Blue (the precursor to the F-117) only cost $14 million/unit. Compare that to the "low cost" F-16, which is about $20m, or the $185 million "Tacit Blue," which was Northrop's first foray into world of stealth. $14m vs. $185m. Think about that.

    Johnson and Rich were also proponents of having Lockheed engineers maintain their aircraft instead of having military personnel do it. Using Lockheed engineers would save a ton of money because they aren't rotated and therefore don't need to be retrained. Sure, Lockheed would get some money out of the deal, but not as much as the gov't would save.

    The Skunk Works wasn't perfect, but overall they were pretty good with money under Kelly and Ben.

    1. Re:not a money pit... by TeknoDragon · · Score: 2

      Incidently my Software Engineering instructor (who introduced me to Brooks and the horrors of real world development), worked on a few of those projects.

  172. Software Engineering by Tim12s · · Score: 1

    > ...and I keep wondering what "improvements" ...
    > have actually brought progress to the key
    > issue: more quickly and more inexpensively
    > developing software that's more reliable?

    Your question has more aspects that one would realise:

    1) The realisation that reusable packaged components are a boon to development.

    2) The realisation that during development of a large project, one can produce reusable components as a spinoff resaleable develop that adds true value to the company (by value of the asset.. whereas a customised application is typically worthless to anyone but the company that requires that specific set of customisations).

    3) The actual resale of those developed components through mass market repositories at REASONABLE prices.

    4) A culture of purchasing components instead of developing something simple ensures ownership of a non-core problem (maintainance of a component) is not the responsability of a company whose business only requires the usage of said component. A number of component companies price their components and support costs outside the range of small businesses... which is a shame.

    5) Open Source repositories of reusable components is an evolution within the world of software development.

    ---

    Software, tools and components that provide massive improvements in TTM (time to market) for small projects are possibly insignificant when taking into account large projects but a quick summary would be:

    The various middleware and appropriate environments allow a developer to develop and deploy solutions without developing those lower software layers (eg: JSP, SQL Server, Websphere, RMI).

    In my opinion, with more companies developing reasonably priced, stable and secure infrastructure the more one can reasonably engineer a reasonable solution.

    A brilliant example is the infrastructure developed by Borland:

    For small projects, the biggest boon to developers is reasonably priced components for GUI development environments such as C++ Builder, Delphi, etc.

    Drag, Drop, connect a few dots, Run.

    True engineering.

    ---

    There are some hazards one must realise. Many software companies are setting the industry/world economy up for a typical downfall by destroying the companies that support them. They do this by over-charging for products. MS, Oracle, IBM, etc are common examples.

    They charge monopolistic rates and take large profits for the use of their engineering services at the cost of the longterm viability of the economy as a whole. With large taking excessive profits, they reduce the expendature that real companies can use to grow their business. Money is centralised in software companies which ONLY facilitate other companies to do business. They do not ensure profitability of real businesses.

    This is why ALL IT companies, IT departments, etc, are not profit earners because they do not conduct business, they only facilitate it, optimise it. Being able to make transactions, does not imply that one will give a company money because its got a good set of servers. I want fruit and dont care about your lovely pair of servers.

    So, our view of IT isnt too good at the moment.

    ====

    The next major development boons will come in the project management field but it will have limited development benifits instead improving the maintainence and formal validation of engineered software.

    Realise that developing software is (as someone said somewhere... not sure who) akin to developing a new theory of relativity every time you write a new program and that its easier to explode and manipulate a 25m x 25m square of reinforced concrete than it is to radically adjust and transform a program into something that has an improved framework.

    Typically, once you've chosen your framework and added functionality to a software application - you've locked yourself into a framework paradigm its difficult to change your framework without a total rewrite.

    ==============

    So... considering project management:

    Various environments and languages need to come up with a common framework and process description as output by the language compiler at the time of object code compilation. This need is based upon the realisation that there is no language and environment that suits every need. Html, Perl, Python, Java, C++, Smalltalk, Assembler, Natural, Cobol, JScript, ASP, XML, XSL, etc - all have/had their need and provided the best solution to the problem at the time of the initial development of various solutions. To compound matters further, the various environments are probably fractured hybrids of many environments. Eg: JSP frontend with a backend group of application servers connected to a database server and possibly a rendering/computation farm in there somewhere. All that connectd by various perl, shell scripts, corba, PL/SQL, java, c++, libraries, etc.

    The need for a consolidated project management view that is able to analyse, verify and formalise every aspect of a large system is the next evolutionary phase of software development and project management.

    This will only happen with compiler writers developing a common.process.description output file that can be consolidated by a single project management tool reading the outputs of many different compiled outputs.

    This would ensure that the task of analysing source code the responsibility of management tool developer (he'd go out of business before analysing in detail various languages) but rather the compiler writer (who is the only person who can truely formalise and describe the processes that his compiled output will execute based on appropriate input source).

    If this ever happens, it would be paradise in binary.

    ====

    So, your typical bane of any project is either an inappropriate project development paradigm and inappropriate project management tools that provide little real value to the developer/engineers and are more of a token of accountability for management to disclaim responsibility by implying that the developers/engineers are not developing according to schedule when managements theory of relativity ends being relatively different to the theory of relativity that is possibly concievable by developers.

    Its funny that my views intrestingly correlate with real life:

    The cost of project failure is then typically carried by shareholders/ investors/ owners and as a result the company performs badly and the economy is weakened as inflation rises.

    "
    http://theregister.co.uk/content/7/28299.html
    IT project failure is rampant - KPMG
    "

    Yes - technology has advanced.

    Yes - various tools are easier to use.

    Yes - vendors are more easily able to make available certified components.

    No - there is nothing significant that improves the actual programming of complex projects outside the leveraging of infrastructure frameworks. Please show me something significant.

    -Tim

  173. Re:Java and GPL - slower software, less incentives by Randolpho · · Score: 1, Informative

    The problem with Java's performance issues when it comes to inheritence isn't the inheritence itself; it's the way java handles it. Couple that with what is essentially interpreted code (ducks from the Java purist flames), and you've got a big performance hit.

    --
    "Times have not become more violent. They have just become more televised."
    -Marilyn Manson
  174. Software Development Advances by Anonymous Coward · · Score: 0

    Im also in a Computer Science Degree program and just from what I have observed through lectures, labs, and a couple of internships, I would say the biggest improvements have not come in new languages or development environments, but in the software process itself. In 1994 81% of companies who's software processes were reviewed using Watts Humphrey's Capability Maturity Model, rated at level 1, which means they had literally no software process, no QA, metrics, nothing. By 2000 that number had dropped to 35%. Companies figured out that a decent software process helps to reduce costs, produce a better product, and realize schedules.

  175. The new BASIC by Anonymous Coward · · Score: 0

    Le BASIC nouveau est arrivee!

    http://www.realsoftware.com/

  176. what about AOP? by Anonymous Coward · · Score: 1, Interesting

    Not sure if it was invented by college kid, but AOP seems pretty promising:

    aosd.net

  177. Visicalc by jbolden · · Score: 2

    Take some programs from the late 70's early 80's. Do you have any doubt a talented programmer could knock out something like Visicalc in about a week using modern tools? How about a simple flat file database system?

    Programmer effeciency has skyrocketed. The applications being designed today are much more complicated than those of 25 years ago.

  178. XP... been there.. done that... laughed.. by MosesJones · · Score: 2


    Seen XP work with 4 people who were very good. Saw it fall flat on its face with 16 average people.

    As all the XP books say, XP doesn't scale.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
  179. Improved for who? by skribble · · Score: 1

    There definately seem to be some improvements for the developers: API's, Frameworks, Libraries, Methodologies, Languages, etc... All help the developer build apps faster and easier.

    For the end user however things have gotten worse, since much of the above mentioned things are flawed and unoptimized (note: this is a generalization, there *are* exceptions). Eventually most of the flaws get worked out (except there are a few cascading bugs which will likely remain), however efficency sucks, and rather then optimize developers rely on faster computers to make up for the lack of optimization. I'm not even talking bloat here... just pure execution. WP 5.0 was rediculasly more effcient then Word XP and did everything I need in a Word processor today.

    For the future things should improve. People have stopped the silly upgrade cycle of computers, and more and more development is moving towards embedded devices where is becomes a competitive advantage to go back and focus on optimizing code.

    --
    --- Nothing To See Here ---
  180. More to it than code and tools by Rocketboy · · Score: 5, Insightful

    I wrote my first computer program in 1974 or 75 and have been a professional programmer (meaning that I got paid to write code) since '79 or so. School was mainframes and an early Wang desktop system (Basic and punched cards, oh yeah, baby!) I later moved into minis, mainframes, and I've been working with desktop systems since CP/M and the S-100 bus, so I guess I've seen a little of the history, anyway.

    In my experience, the actual process of coding has greatly improved over time but the process of developing software hasn't improved as much. As other posters have pointed out, object-oriented tools, technologies and techniques (among other factors) have greatly facilitated the generation of code but the management of the process; deciding what gets coded, when, by whom, etc. is little better now in actual practice than it was in the late 70's or early 80's. In fact, in my opinion the situation is in some respects worse.

    Management of software development today makes the same mistakes and operates under many of the same misguided assumptions as it did back when I spent my day in front of a dumb terminal. Adding outsiders unfamiliar with the details of a project makes the project later, not earlier, etc.: all the platitudes we know and love are still with us, still the butt of Dilbert jokes.

    Technology may change; people aren't quite so amenable to upgrades, I think.

  181. Logical/physical by StillNeedMoreCoffee · · Score: 1

    I think that one of the great ideas that has come to us from mathematics is the Abstract Data Type. With its seperation of logical view from physical implementation. That is describe the functional service in it minimal essence. Then you can implement it any which way without breaking things.

    That was the important idea behind Databases. and why we adopted Databases quickly even though they cost more in terms of time space and money. It was a realization that this meta model of design solved the maitaince problem that was threating to bring down Computers as a viable business tool.

    The second big one came from normalization of databases. Which solved much of the maitainence problems with data storage and handling. This came after Databases.

    Then there was Modulo which allowed segmentation of software into computational units, a first step to implementing ADT's.

    Then we brought these together in OOP with modular normailzed data and programs together. All part of a march towards a natural evolution of compact maintainable systems.

    With the next round which seems to involve efforts like J2EE and others with allowing software to talk seamlessly over networks as just part of what they do. We are starting to abstract out even the computer hardware underneath.

    Who knows what evolution will decide is then next great idea. Where we will end up doing our work.

    I just hope our economy lasts long enough for us to realize the next step.

  182. Depends on who's in charge . . . by Anonymous Coward · · Score: 0

    From what I've seen over the last 15 years, any shift in IT/engineering personnel supply and demand has largely dictated the importance and enforceability of disciplined approaches to problem solving. At this point in the state of things, everyone is at least buzz word compliant and talks a good game. The real issue is getting follow through. I've found that when engineers appreciate their jobs (especially if there are not as many around), they are much better team players and more easily controlled by management that understandably wants to be able to predict the outcome of a project and leave behind more than a few bread crumbs for maintainers to follow. During the dot com era, I saw many arrogant developers that held management hostage with threats to leave if various conditions (salary, snacks, choice assignments) were not met. These same developers very rarely functioned well within a team - there were many "personality" issues within "engineering" (code slinging) groups. With the dot-com era over and the subsequent decrease in demand, management once again has more control over the process. Now to find some strong technical management . . .

  183. 100 Lines/Day by Mybrid · · Score: 1

    Hi! Happy Tuesday! I have to say that estimation of projects is still 100 lines per day per developer. As hardware has gotten more sophisticated so have software tools. In the end we are right back where we started, 100 lines of code per day. Call this Brook's law, "The advancements in hardware and software offset each other such that productivity remains a constant 100 lines of code per day per developer."

    1. Re:100 Lines/Day by glenstar · · Score: 2
      I have to say that estimation of projects is still 100 lines per day per developer.

      Hm... the average developer may *write* 100 lines of code in a day, but my empirical knowledge says that probably only 10% of those lines will make it into the end product. There are exceptions, of course... I worked with one developer who seemingly never made any errors in his code... but that is a rarity. On the flip side, I have worked with developers who even they may have written hundreds and thousands of lines, ended up with *none* of their code in the final product.

    2. Re:100 Lines/Day by dlakelan · · Score: 1

      In fact, it seems to me that 100 lines per day is high when you start talking about very high level languages.

      Sure 100 lines of C or even C++ or maybe Java, but in Haskell or Lisp or Prolog, mercury, whatever, you're likely to write 50 or 60 lines per day.

      Of course lines per day is an amortized quantity, what really happens is that you think and play for a few days, figure out what you're supposed to be doing, and then write 1000 lines at once, during debugging you rip out a few and replace others, but it took you 10 days total...

      My belief (and it mirrors Brook's real take-home message) is that there is a narrow distribution of abilities to grasp a concept in a given time.

      His whole point (which no-one seems to be getting on this thread) is that the hard part about software is NOT really the writing of the software.

      Yes that's hard (ie. takes up 20% of the total time), but when you get a perfect oracular black box that spits out perfect code instantly as soon as you grasp the way things ought to work, it still doesn't make you 10 times faster (no silver bullet)!

      Why? Because it takes time to figure out how things should work, and THAT's what's hard about software. Software is all about solving the hardest problem of all (the way things should work), with the most tractable tools available (words).

      We write so much code, because we have to try things out before we know whether they're right or not. And we seem to do that at about the rate of 100 ideas per week with a standard deviation of say 10.

      --
      ((lambda (x) (x x)) (lambda (x) (x x))) http://www.endpointcomputing.com a scientific approach to custom computing.
  184. NeXTSTEP by Anonymous Coward · · Score: 1

    NeXTSTEP, OPENSTEP, OSX, Objective-C and Interface Builder.

    Nuff Said

  185. And let there be an IDE... by mojogojo · · Score: 1

    I've been a developer for half of those 25 years, and I think the most important improvement has been in the IDE - the Integrated Development Environment... Borland's always had the best (IMHO, but perhaps I've simply grown used to their IDE). Features such as CodeInsite (press CTRL-Space to see an objects methods and procedures - and in Delphi 7 just the ones that make sense in your current context even inside of a WITH) and a Debugger (with useful features - ability to set Breakpoints with conditionals for example). There's nothing like tracing through logic as it's running in the IDE when you're in the guts of development.

  186. Silver Bullet by Anonymous Coward · · Score: 0

    Will people please stop using this phrase!!! It is driving me nuts! I nominate it for the most overused phrase of the last 10 years (not to mention this slashdot article)

    There is no silver bullet for a phrase that is the silver bullet of..oh, never mind.

  187. Remember the Fifth Generation? by b1t+r0t · · Score: 2

    You don't hear much these days about the "fifth generation" computing projects that Japan was spending a lot of money on back in the early '90s, do you? This is why.

    --

    --
    "Open source is good." - Steve Jobs
    "Open source is evil." - Microsoft
  188. code by Anonymous Coward · · Score: 0

    Just write some damn code. Why does everyone want things easy?

  189. READ THE BOOK by Marc2k · · Score: 2

    "No Silver Bullet" was included in the famous book, The Mythical Man-Month, as most or some of you know. The newest 20th anniversary edition includes both "No Silver Bullet" and "No Silver Bullet Refired", an introspective look an how software methodology has improved over the last 20 years. I don't mean to sound pompous, but while some of you have talked of your experience over the last 20 years, Dr. Brooks was already a project manager at IBM working on operating systems 30 years ago, so the man assuredly knows what he's talking about.

    Admittedly, I can't comment on Dr. Brooks' latter essay, as I bought the book myself not long ago and just finished "No Silver Bullet" (the last chapter in the original version of the book), but it still makes for interesting reading. Pick up a copy, or just even sit down at Borders and read both chapters, I promise you'll be intrigued if you're interested in software development.

    --
    --- What
  190. Re:Java and GPL - slower software, less incentives by Anonymous Coward · · Score: 0

    I fully agree. Java is a really sweet language, and I enjoy using it, but it's slow as hell even on some simple things like scrolling.

  191. Rational Programming by Baldrson · · Score: 1
    I've previously discussed the future import of rational programming based on revival of Bertrand Russell's relation arithmetic. For a taste of simple one-place relations and how they are useful for obtaining fast results without "fuzzy logic" or "expert systems" -- and how relations can work without SQL -- you might try the correlator calculator. It shows how rational programming is a direct result of applying simple relations to problems with arithmetic operators. I'll be expanding it to do 'units' matching based on column identities and keeping track of dimensions and their sizes (positive and negative column counts).

    There are lies, damn lies, statistics and the over application of Mark Twain's complaint.

    Unfortunately, since things have been so bleak professionally lately due to all the 'help' received by US programmers it may be left for someone else somewhere else to complete this work.

  192. Available code by maxconfus · · Score: 1

    Has software develpment gotten better? I am not sure but I can say the amount of info available online to complete a software project has gotten better. The web sites, bulletin boards, and so on are packed with info on any language that was not so easily available 20 years ago.

    A hand up and a foot on every chest...

    --
    A hand up and a foot on every chest...
  193. There's nothing wrong with valid URLs either [EOM] by hobbit · · Score: 2

    [no body]

    --
    "Wise men talk because they have something to say; fools, because they have to say something" - Plato
  194. Silly question... by Anonymous Coward · · Score: 0

    It's like asking "Has art improved?" because programming is an art, even though there are elements of science and mathematics.

    To drive home the point further, I tried getting slashdot to mail me my password, but I got an internal Web server error... someone please mod this up to +1. :-)

  195. Easier? by Anonymous Coward · · Score: 0

    It sure as hell has not gotten any easier to do software development in the past 20 years.

    What I find ironic is that we spend most of our time solving the same problems over and over and over again, just using some new language and/or methodology to do it.

    (oh sh*t, I just gave away our secret...)

  196. Some places are better, some are worse. by TheCubic · · Score: 2, Insightful

    I work for a Fourtune 500 company (intern) working with a software & hardware development model. The model that we use constantly goes through changes and is very sucessful in terms of delivering software and hardware on time, and defect free. I have no clue about budget, but I'd guess that it is not over budget either. Working here has given me a favorable view of software engineering. Every process is laid out and explained, and there are many tools at our disposal, including a requirements tool, a UML tool, code generation tools, code testing tools, etc.

    Now for the rant. I also go to a large University 20 miles down the road, and I am taking their software engineering course (<- yay for relevance). Among CS majors there is a bad reputation for the SE class, that it is never organized well and leaves students with a bad taste for SE. In my class, we are currently in the 'Design' phase for our semester-long project, we will be done tomorrow. The Implementation phase is a week long. That's right, a week. We spent months on the requirement and ooa phases, but they are still unclear (because the document that calls for them is unclear), and now we have a week to iron everything out. This class leaves me with an unfavorable view of software engineering.

    I think that more colleges should teach software engineering not as just one class but as an approach along with code classes. It makes sense when teaching people how to code that one should also teach them the likely environment in which they will code, otherwise students will get the impression that they can opt-out of having to deal with software engineering.

    Has software engineering become better? Probably. Would you be able to tell when taking the class that I am? Hell no.

  197. Where's the spec by oliverthered · · Score: 2

    Looks like your painter doesn't have a good specification to work to, or hasn't been 'empowered' enough to ask for one.

    ALWAYS blaim the management.

    --
    thank God the internet isn't a human right.
  198. Welcome to the real world baby... by Hecubas · · Score: 1

    All the blood, sweat and tears put into your programming masterpiece will be undone by your bonehead boss who hires some schmuck who looked good on paper. All the diagrams and CASE tools won't save you from your team members (or even yourself after a few years, many beers, and grey hairs).

    You can either stay in the trenches and live with this inevitable truth or move up the food chain and pray that you know how to hire like-minded developers.

    Ah, I remember the school days. It seemed so simple then. Who would have thought that the programming field would be so torn with politics, moron team members, and pointy haired bosses. It's never going to get easy, but that's a good thing.

    --
    Hecubas
  199. Re:"I'm in a Computer Science degree program"????? by westphalia999 · · Score: 1

    I completely disagree, stay in, get your degree. I've found many non programming jobs which have wanted a CS degree probably because the HR person thought it would make them better to fix a server. I do think you should get it and you probably won't regret it. You want every advantage you can get and a degree is a great one.

    --
    ..this is but a fantasy..
  200. read the parent post by Anonymous Coward · · Score: 0
    You're interpreting it wrong. Quality and speed do NOT determine cost if you have the right team. Cost and speed do NOT determine the quality if you have the right team.

    but thanks for playing.

    1. Re:read the parent post by adamjudson · · Score: 1

      The right team makes everything better.

      Doing more, or doing it better always takes more time.

      A.

  201. Nope by TheAncientHacker · · Score: 2

    That's the old BASIC in a new version. The new BASIC would be a language designed for beginning non-programmers to get an idea of programming concepts in a SIMPLE, friendly environment.

    Compare Dartmouth BASIC running on its interactive time-sharing terminals to batch Fortran on punch cards to get an idea of what a revolution it was at the time.

  202. OF COURSE IT HAS IMPROVED - Look at M$! by AtomicX · · Score: 3, Funny

    Of course software development has improved,

    Security is at the heart of the Windows' design - It is so bloated, unstable and slow that no hacker ever gets a chance. Now you know why it got C2 certification.

  203. GNU by Anonymous Coward · · Score: 0

    GNU Software, GNU/Linux, and FreeBSD have been
    the MOST significant improvements in the last 25
    years. Peer review and Free Software ROCK!

  204. one tip by spazoid12 · · Score: 1

    To the person that writes "more quickly and more inexpensively ...", here's one tip: in Lisp, you don't need to say "( ( (" when "(" will do.

  205. Actually, no by Anonymous Coward · · Score: 0

    Actually, it is those people who rely on the wizards and IDE features that tend to produce code that scales well with the project. One smart-but-naive programmer of ours started building a Win32 application. As requirements got added, he realized he needed to make it more "modular." As he did not understand the full workings of MFC, he opted to create his own MFC-like library. Eventually, a thousand bugs cropped up and he left the company in proud frustration. "Idiots" he called us for suggesting he move to MFC or VB for the UI (WinForms wasn't around back then). Had he used the built-in IDE features for GUI creation, he'd automatically have inherited Microsoft's best practices and we'd have gone through a lot less trouble.

    Plus, it sucks when a prima-donna like that ends up taking a week just to add another button.

  206. Re:Java and GPL - slower software, less incentives by ChannelX · · Score: 3, Insightful

    You should duck from the Java purist flames because you and the poster you're replying to are wrong. Java hasn't been interpreted for years. All Java virtual machines use some sort of JIT mechanism to compile the code before its run.

    --
    My blog: http://jkratz.dyndns.org/~jason/blog/
  207. The unfulfilled dreams of infinite modularity by corvi42 · · Score: 5, Insightful
    So far in all that I've seen / read / heard in the literature and water-cooler talk about the advancements and improvements of code design is that the real improvements in design that were supposed to increase our productivity by reducing development time were mostly due to the advances and applications of modularity in programming. The whole object oriented approach was and still is heralded as the solution to all programming woes in some quarters, and hence the development of completely object based languages like Java.

    The idea of course being that good modular design, and good use of classes can increase reuseability ad infinitum, so that eventually there will be no task and no problem that cannot be assembled lego-like from blocks of premade reuseable code. The marvelous technology in Douglas Coupland's Microserfs ( called Goop wasn't it ? ) was really the epitome of this concept, a totally reuseable code system that was so generalized, so modularized that anyone with no more experience in programming than a child could assemble working programs for just about any purpose in a drag-and-drop virtual lego-building reality.

    Any student of the history of science and science forecasting should begin to smirk at this point. Is it any surprise that these visions have not materialized? The hard truth, IMHO, is that logic is inherently not conducive to such high degrees of abstraction and modularity. For given tasks which are fixed and well defined with completely known and understood parameters and requirements than yes, abstraction and modularization can be a great boon in optimizing design and improving the development cycle. We can see the great advantages that this has yielded in some areas where the requirements are fixed and the applications are mostly derivative of each other. GUI design is a great example, and there are a multitude of GUI building toolkits & development environments that take great advantage of this.

    However the whole thing breaks down when you move from the known to the unknown. When you try to extend this principle from fixed tasks to hypothetical ones in which the basic requirements are not envisioned. I would argue that there is a basic lack of understanding among some of the proponents of these techniques that at a fundamental level logic cannot be generalized out across all possible tasks, and all possible configurations. This was similar to the revelations of Godel's theorem in mathematics already in the 1930's - that any axiomatic system could be consistent but never complete. In reality adapting one set of code to a purpose other than that for which it was designed, or with parameters other than those originally envisioned usually is more trouble than it is worth, and often you would be better served by building new objects from scratch. You will always need intelligent educated people to design these things; there is no such thing as logical lego.

    Unfortunately it seems to me that many have not gotten this message yet. Sun and Microsoft are still actively humping that dream of infinite modularity and drag-and-drop programming design. In my experience with both Java and .Net, I have found that I always run into blocks where the established object model is too constraining and has too many built-in assumptions about what you're going to be using the classes for, and so I have ended by coding new versions from scratch. Of course it may simply be the nature of the applications I'm working on, and your mileage may vary. Ultimately I think that for derivative applications this kind of abstraction and generalization is definitely an improvement, but when you come to applications that move beyond those fixed tasks it actually becomes an impediment not an advantage.

    --

    There are a thousand forms of subversion, but few can equal the convenience and immediacy of a cream pie -Noel Godin
  208. The skunk works was a hack shop by MountainLogic · · Score: 2

    All the skunk works did was cool hacks. And like software hacks it got the job done in a fast and dirty way, but in the long run their products were unworkable. The SR 71 Leaked more fuel than it lifted. Thats right, they blew-off all thermo issues and said, "who cares that it leaks like a sieve on the ground, it'll heat up at Mach and the pipes will expand and stop leaking." This is the Aero equivalent of not checking for a null handle on a malloc. Sure it'll work most of the time but it;s sure to blow-up on you. Lockheed did some great research with the skunk works, but they never delivered a product. Sure you can build something flashy real quick with VB, but would you want to fly in a play controlled by it?

    1. Re:The skunk works was a hack shop by Anonymous Coward · · Score: 1, Informative

      Tell me how you build a plane that doesn't leak non-flammable fuel, but also doesn't burst pipes when going Mach 3 because the friction-generated heat has caused those pipes to expand.

      And no, it's not "sure to blow up on you". Before they were decommissioned, I got a chance to be as close to an SR-71 as a civilian ever gets. It was sitting in the hangar, leaking fuel. One of the maintenance guys thought it would be fun to get a rise out of us and took his lighter and held it down against the fuel on the ground. No big kaboom ... not even a flicker. The fuel needs an oxidizing catalyst to ignite ... even at sea-level.

    2. Re:The skunk works was a hack shop by khuber · · Score: 1
      The SR-71 was built with titanium to withstand the heat it generated at mach 3+ and that metal was new at that time for aircraft. Since the titanium had to expand there were ground leaks. Why don't you design a mach 3 jet that can fly at 85000 feet and isn't such a "hack"?

      The more serious problems btw, are that it can't operate in the rain due to its coating I believe and its heat signature is huge. Bear in mind that this is a 1960s era aircraft designed without CAD/CAM and it's still pretty damned impressive IMO.

      -Kevin

  209. software development process has improved by esarjeant · · Score: 2

    The software development process has greatly improved in the last 5-10 years. While software hasn't specifically gotten all that much better, the processes for producing good software have been advanced.

    Here is my list in ascending order;

    1. The Internet and the web. Access to resources like USENET archives and online vendor documentation have greatly improved the development process. For example, a defect in a popular Java Application Server was causing me considerable difficulty, and a quick check of the vendors website indicated SP1 would fix my issues.

    2. Acceptance of high-level interpreted languages. While Smalltalk tried to make this happen, it wasn't until Java, Perl and ASP (VBScript) that this trend became popularized as computer hardware started catching up. Developers no longer have to author their own implementations of String(), and many other common functions are readily available.

    3. Object oriented development.

    4. The relational database server and ANSI-SQL. Developers today are versed in the methods of normalization, and dependencies on home-grown datastores has virtually disappeared.

    5. Modular / packaged code. While this isn't a recent development, it has become a best-practice and this has greatly improved the development process.

    6. Revision control best-practices. There are still many organizations who version sourcecode using a copy command, but the vast majority of pro shops now use some form of source code control.

    7. Open source software. IMHO, this is key to the next wave of development and it has already had an enormous impact.

    A variety of software development lifecycle models have helped professional developers learn how to manage projects, but this still needs work particularly from the perspective of management. It's quite possible OSS will obviate the need for many ongoing commercial software development efforts, and while the last decade has been about software teams getting bigger the next decade can really be about the team getting smaller.

    Once the teams can leverage existing OSS code, wheel re-invention becomes less necessary and code can be written under-budget (cheap) and on-time (fast).

    --

    Eric Sarjeant
    eric[@]sarjeant.com

    1. Re:software development process has improved by leandrod · · Score: 2

      I would put relational modelling at a distant first, even if people almost universally do it wrong ("denormalising", even if this is a contradiction in a word), partly because ANSI SQL falls so short of the relational database possibilities, unlike defunct IBM BS12, Ingres QUEL and the new Alphora Dataphor.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    2. Re:software development process has improved by esarjeant · · Score: 2

      While most developers wouldn't know third normal form if it landed in their lap, things are much better than they use to be.

      Today even if an attempt wasn't made to build a good data model the developers will usually recognize this failure; whereas, before the advent of widespread commercial software (Oracle, DB2, Informix, Sybase, etc.) it was often acceptable that all your data was in one big ASCII flatfile somewhere.

      --

      Eric Sarjeant
      eric[@]sarjeant.com

  210. Re:Java and GPL - slower software, less incentives by Randolpho · · Score: 1

    Which is why I added the keyword "essentially". I'm aware of JIT compilers, and their limitations. But when you boil it down, you're translating bytecode into the current machine's code, and that takes extra time to do.

    --
    "Times have not become more violent. They have just become more televised."
    -Marilyn Manson
  211. Literate Programming by WillAdams · · Score: 3, Interesting

    I am still mystified that a discussion like this can take place and the system which Donald E. Knuth created to enable him to write TeX (www.tug.org, see the book, _TeX: The Program_ for the pretty-printed source) and METAFONT (_METAFONT: The Program_) is almost never mentioned.

    DEK has since written an entire book on the concept (_Literate Programming_ a CLSI series book) a decade ago, but one seldom sees source so provided.

    There are some really cool example programs which're quite interesting (and educational) to read, for example:

    Will Crowther's game Adventure - available here: http://sunburn.stanford.edu/~knuth/programs/advent .w.gz (with an offer of a $2.56 reward check if one can find a bug), or as a document to just read here: http://www.literateprogramming.com/adventure.pdf

    Or a CWEB version of the RPN calculator for K&R's C Book: http://www.literateprogramming.com/krcwsamp.pdf

    Probably what really needs to happen is a way to post a program as a web page, then to click on a link on it, to automagically compile and run it....

    William

    --
    Sphinx of black quartz, judge my vow.
    1. Re:Literate Programming by Knackered · · Score: 1

      Dream on. Knuth's concepts may have been fine, but his implementation through obscure macro languages and complex tool-chains was just not usable for everyday programming. Also, there is no evidence that these mechanism scale to large modular programs and systems (TeX and Metafont are monolithic). Integrating support for documentation and cross-referencing in the language is the only sane way to go on this (see Perl's POD, and Haskell for rudimentary examples), otherwise it won't be supported by all language tools.

      --
      a.
  212. Software Engineering (something more appropriate) by Tim12s · · Score: 1


    Realise that developing software is (as someone said) akin to developing a new theory of relativity every time you write a new program and that its easier to explode and manipulate a 25m x 25m square of reinforced concrete than it is to radically adjust and transform a program into something that has an improved framework.

    Typically, once you've chosen your framework and added functionality to a software application - you've locked yourself into a framework paradigm its difficult to change your framework without a total rewrite.

    =====

    The above is a fundamental hurdle to all software development.

    We typically get about 3meters up this pole-vault by using various infrastructure environments that are a boon to developers - JSP, SQL Server, SAP, etc. They ensure that the developer does not need to reinvent the wheel. The boon of reusable components is modern computing.

    ===

    Problems with IT businesses are their lack of extracting resalable components from their software. Customised software is effectively worthless to anyone else other than its intended recipient. Reusable components have a real value to many companies.

    ===

    A brilliant example is the infrastructure developed by Borland that promotes engineering:

    C++ Builder, Delphi, etc:

    Drag, Drop, connect a few dots, Run. - True engineering.

    ===

    The next major development boon will come in the project management field but it will have limited development benifits instead improving the maintainence and formal validation of engineered software.

    Various environments and languages need to come up with a common framework and process description as output by language compilers at the time of object code compilation. This need is based upon the realisation that there is no language and environment that suits every need and so there are many different languages and environments eg:Html, Perl, Python, Java, C++, Smalltalk, Assembler, Natural, Cobol, JScript, ASP, XML, XSL. They all have their purpose but make it difficult to coordinate and collect information in a single project management tool that has real value. Taking observations further one will notice that projects often use many different environments and are fractured hybrids.

    Eg: JSP frontend with a backend group of application servers connected to a database server and possibly a rendering/computation farm in there somewhere. All that connectd by various perl, shell scripts, corba, PL/SQL, java, c++, libraries, etc.

    The need for a consolidated project management view that is able to analyse, verify and formalise every aspect of a large system aswell as any meaningfull application by software developers/engineers is there, but nonexistant. This will only be realised when compiler writers develop a common process description that can be consolidated by a single project management tool reading the outputs of many different compiled outputs.

    This would ensure that the task of analysing the source code is not the responsibility of the management tool developer - he'd go out of business before analysing in detail every appropriate language - but rather the compiler writer - who is the only person who can truely formalise and describe the processes that his compiled output will execute based on appropriate input source.

    ====

    Your typical bane of any project is either an inappropriate project development paradigm and inappropriate project management tools that provide very little real value to the developer/engineers and provide more of an accountability token for management to disclaim management responsibility by implying that the developers/engineers are not developing according to schedule when managements theory of relativity ends being relatively different to the theory of relativity that is possibly concievable according to a reasonable schedule by developers.

    an intresting read:
    "
    http://theregister.co.uk/content/7/28299 .html
    IT project failure is rampant - KPMG
    "

    ===

    There are some hazards one must realise. Many software companies are setting the industry/world economy up for a typical downfall by destroying the companies that support them. They do this by over-charging for products. MS, Oracle, IBM, etc are common examples.

    They charge monopolistic rates and take large profits for the use of their engineering services at the cost of the longterm viability of the economy as a whole. With large taking excessive profits, they reduce the expendature that real companies can use to grow their business. Money is centralised in software companies which ONLY facilitate other companies to do business. They do not ensure profitability of real businesses.

    This is why ALL IT companies, IT departments, etc, are not profit earners because they do not conduct business, they only facilitate it, optimise it. Being able to make transactions, does not imply that one will give a company money because its got a good set of servers. I want fruit and dont care about your lovely pair of servers.

    ===

    -Tim

  213. 25 years? No 15 years by the_danielsan · · Score: 1

    Brooks, Frederick P., "No Silver Bullet: Essence and Accidents of Software Engineering," Computer, Vol. 20, No. 4 (April 1987) pp. 10-19.

    2002 - 1987 = 15 years

  214. Re:Java and GPL - slower software, less incentives by ChannelX · · Score: 2

    Yes...it takes time the first time through the code. Big whup. There is definitely a trade-off when using Java but then again nobody ever said that Java had to be used for every project. Someone else posted about how slow Java is even scrolling. They're full of crap. The machine I'm currently using is a P3-500 with 256mb of RAM which is not by any means a speed demon and I use JEdit exclusively for coding. Scrolling is not slow. It would seem that most people saying that Java is slow probably haven't actually used Java in years.

    --
    My blog: http://jkratz.dyndns.org/~jason/blog/
  215. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0

    It's pretty easy to outsource system management - just sign a contract and forget it.

    On the otherhand, a huge chunk of IT programming is customer interfacing and requirements gathering. That will always be inhouse.

  216. Size matters by Animats · · Score: 2
    Software has made considerable progress in the last 25 years. Large projects that would have been high-risk R&D efforts in the 1970s are routinely implemented today. On-line, real-time transaction processing is standard and easy to do; everybody with a web site that sells something has it now.

    As for programming itself, it's now common to put together many megabytes of code. In the 1970s, you couldn't make anything that big work.

    On the other hand, we have a major cruft problem. We're still living with design decisions from the early days of DOS and UNIX. They're hidden under layer after layer of additional structure, but they're still there, warping the architecture. C++, X-windows, MacOS, and the Win32 API are good examples.

    Although it's less realized, we also have a hardware cruft problem. The PC of today is a warmed-over version of a much smaller machine designed for a much simpler operating system. Although today's PCs are far more complex than the mainframes of the 1980s, they don't have a mainframe-type architecture. The big problem is in I/O - I/O isn't channelized, as it is on mainframes. The lack of uniform channelized I/O means that drivers are at too low, and too privileged, a place in the operating system. Thus, every new driver is a source of system instability. Even though the hardware is slowly becoming channelized (SCSI, USB, FireWire), the operating systems have a low-level driver model. So we have scanner and printer drivers that can crash the whole system.

    But at least the ISA bus is gone. Finally.

    The other big change in programming, although I hate to say it, is the rise of "scripting languages". Visual Basic, Perl, and their lesser competitors have made programming more accessable to the many, and less risky. Yes, many of their basic features were in LISP and Smalltalk a quarter-century ago. But the syntax of LISP turned too many people off, and Smalltalk somehow didn't quite make it. What makes a good scripting language is an interesting study, and it's worth reading Larry Wall on this, whether or not you like Perl.

  217. Development Improvements by hackus · · Score: 3, Insightful

    Yes, I think things have improved.

    Such things as Structured Design, and OOP have made coded reuse better.

    What hasn't improved:

    1) Programmers STILL refuse to use tools that could help them in productivity. (i.e. source debuggers, instead of writing printfs around everything and printing out your variables)

    Tools tools TOOLS people. Use a source debugger and save yourself a great deal of time.

    If you can't use a different language or infrastructure to write the code.

    Sadly, many programmers still do not use source debuggers, citing a waste of time. But they will sit there and hack over and over again trying to understand the code they write with printfs!

    Tsk tsk.

    2) Cost Time Estimation. Wow, talk about almost zero improvement there. Almost zero, but not quite zero. After all, most people are now adopting an open source strategy so that even if your estimates are off, the cost penalties are reduced. Furthermore, most people are beginning to realize that you have to complete a full requirements document, and do some fact finding before you attempt to quote work.

    3) Finally, the hardware we use to write software is vastly more powerful, and as a result we can run much nicer environments on our machines when we write code, such as API references, etc. I have far fewer references now days to things like Java for example than I use to have to keep on my desk. Primarily because with the rise of IDE's the development environment can answer alot of questions I might have about the language I am using to write the software with.

    ---

    I would also like to point out things have got a little worse. If you believe like I do that 80% of the work in writing software is debugging it and maintaining it over its lifetime, then you like me have problems with our IDE's.

    Primarily when our IDE's produce automated code for drag and drop environments. They produce horrible code, at the expense of saving time now, and end up costing a great deal of time later.
    (Anyone use the latest .Net Beta 3 to generate controls, will understand what I mean.)

    I primarily write only Java code, but even my SunONE environment produces some pretty cruddy stuff if I am writing a desktop app.

    I think automatic code generation is a step backwards in many ways, and ends up costing more money to fix or maintain it.

    I still think a code "repository" built by humans, and nicely documented, like a cvs tree for example, is the better way. Time spent on the CVS code repository for building customized pieces is time much better spent IMHO.

    -Hack

    --
    Got Geometrodynamics? Awe, too hard to figure out? Too bad.
  218. Absolute progress, but not relative progress by Lumpish+Scholar · · Score: 3, Insightful

    Look at the software written twenty five years ago, and look at the software written recently.

    Bill Joy wrote vi pretty much by himself. Bram Moolenaar write Vim pretty much by himself; it's a huge superset of Joy's editor.

    The original portable C compiler (PCC) was about 5,000 lines of C. No one even blinks if a graduate student writes a far more sophisticated language processor, e.g., a C++ compiler, a complete Java development environment (including a compiler and debugger).

    The original SimCity was awesome. No one thinks twice of re-implementing it for a PDA or a Java-enabled web browser.

    What's changed? Programmers don't have to worry so much about CPU, disk, or memory limitations. The tools (compilers, libraries, source control) are much improved. Some of the new languages are far more productive. There are also new practices, and the results of lessons learned, on how to do development; some programmers take advantage of these (not enough!)

    But our abilities haven't kept up with our aspirations. Compare SimCity to the masively multi-player Sims Online. How do vi or PCC stack up against Eclipse? Look at the text formatters of twenty five years ago, and then look at OpenOffice (or Microsoft's stuff); at Unix v6 vs. Max OS X.

    Software hasn't kept up with Moore's Law. We're running a Red Queen's race, going as fast as we can just to stay in one place; and we're losing.

    --
    Stupid job ads, weird spam, occasional insight at
    1. Re:Absolute progress, but not relative progress by HuguesT · · Score: 1

      If you know a student who has written a complete ANSI C++ compiler I want to know about it.

  219. Re:Java and GPL - slower software, less incentives by Randolpho · · Score: 1

    I have no interest in getting into a flame war over this. I have never claimed that Java is a bad language; I code in either it or Python (depending on what I'm doing) almost exclusively. Let's just say "we're both right" and move on.

    --
    "Times have not become more violent. They have just become more televised."
    -Marilyn Manson
  220. My toolbox... by NNland · · Score: 1

    When I first found C/C++ in my freshman year of college, I was in love. It just made sense with the way my mind worked at the time, and I could just hammer away and make good working code quickly.

    A year later I found Python. All those things you want, quick development time, limited bugs, etc., I have found to be accomplished through the use of Python. I've written high-speed socket servers, GUI applications (with wxPython), console email readers... So many things that all work well, and I spent more time writing them than debugging them. And writing them took 1/10th the time of C/C++ development. That coupled with amazing built-in and user developed modules...really makes Python my language of choice when doing ANY development, including processor-intensive stuff.

    As long as I program in the proper Python style, I find that my application development time is reduced significantly, the incidence of bugs are very low (less than 1 per 10 lines of code, usually syntax errors - forgot a paren or colon), and maintainability is high.

  221. Open Source (Re:CVS / RCS) by InodoroPereyra · · Score: 2
    I agree: cvs/rcs and similar software are a great improvement. But in particular you say:

    I seriously doubt that a program like Linux could flourish without programs like CVS.

    If you are talking about the Linux Kernel, only recently Linus adopted a version control system (bitkeeper). There are many huge projects maintained on CVS though, and this includes KDE and GNOME. But, the common denominator to all these projects is the fact that the source was made publically available for peer review and international collaboration.

  222. How do you mitigate blind prejudice? by stinkyfingers · · Score: 1

    I've found, in the last ten years, that the most detrimental part of the software engineering process are twofold:

    1. People with a kneejerk bashing reflex. These are the ones who carry on holy wars, bitching and moaning all the way, when if they would just shut up and do the best with the hand they were dealt, some actual work can get done.
    2. People who can't seem to follow the processes established for a project. This is especially problematic for government contacts.

    There is neither a perfect set of software engineering tools nor a perfect process for *every* situation. The software enginerr that knows how to effectively deal with the shortcomings of his/her environemnt and can stay focused on the task at hand, rather than bemoaing every little thing is ahead of the game.

  223. I don't by samael · · Score: 2

    When I want a bunch of things in order I stick them into a cursor or other data abstract and say "sort".

    1. Re:I don't by binaryDigit · · Score: 3, Insightful

      Actually you bring up an excellent point that I'm afraid will get lost, but anyway.

      What you described is an "ideal" situation, but then the ugly reality of programming rears it's ugly head. What if you want to sort by something other than the first column, your data abstract should support that (a property perhaps). What if you want to sort an object by a member (do you supply a comparison routine that now makes the abstract not quite as abstract), what if you need to sort unicode, what if you're sorting 500MB of data. All these extra requirements have a tendency to break many abstractions and force the programmer to A) have a lot more knowledge about the tool B) make any particular tool less likely to fit the bill.

  224. Re:Java and GPL - slower software, less incentives by haruchai · · Score: 1

    So, how would you save the compiled code? And, can you optimize it ?

    --
    Pain is merely failure leaving the body
  225. Whatever happened to rapid prototyping? by melonman · · Score: 2

    Always struck me as a wonderful idea. Fifteen years ago I worked at a place where the client came up with a new idea in the morning and we aimed to demo a solution that afternoon in OO Lisp. A lot of fun, and it made having a dialogue with the end users a million times more useful than Bible-thick specs that no-one can get their head round. Maybe programmers don't actually want clients telling them how they want programs to work?

    --
    Virtually serving coffee
  226. Improvements in process by kwerle · · Score: 2

    In the last 15 years, I've been grateful to improvements in process. Great bug tracking software (I use bugzilla) and source management (cvs) has improved the process of writing and maintaining projects greatly.

    In terms of language and library improvements, I think they enable programmers to finish projects much faster than they could before. Well, much more complicated projects. I think that OO languages allow programmers to write good code more easily.

    Finally, I think these improvements most help good programmers. Anyone can code poorly, but good programmers are still hard to find. Process is as much a part of programming as language/library knowledge. When I was in school this was not really emphasized, and I think it's an important aspect of coding that most programs still fail to mention.

  227. Re:Java and GPL - slower software, less incentives by Randolpho · · Score: 1

    NAFAIK. (Karma--, but necessary post)

    --
    "Times have not become more violent. They have just become more televised."
    -Marilyn Manson
  228. Too young but offering some insights by gpoul · · Score: 1

    I'm too young to say if it improved since brooks published his first book but I can say that the processes around project management improved.

    At least in major corporations there is typically a huge intellectual capital (somewhat I hate that word...) involved in project management. Processes, documentation, evaluation.

    When brooks wrote his book these weren't as good as they're now and they didn't have the experience.

    Although with increased complexity in today's projects and hypes about various technologies and pressure on project managers by senior management I'm not sure if quality really imporved.

    IMHO it's not important if quality increased but that we learn from our past mistakes and at least mitigate risks that we've already experienced. This way it can only become better.

  229. Objective-C + OpenStep APIs by MouseR · · Score: 3, Informative

    The Objective-C language has been around for a while, but kinda got locked-up in proprietary runtime implementations by NeXT (now part of Apple) or the Stepstone corporation which were amongst the first to come up with an Obj-C compiler (for x86). Now, GCC does Obj-C and MetroWerks also has an Obj-C capable compiler. Also, the entire runtime is now open sourced in Darwin, the core OS at the base of Mac OS X, in the form of "Core Foundation" and "Foundation Frameworks".

    Couple that with the open-source API SPECs (oppose "implementation"), and you have an amazing combinaison.

    On the Mac, this is now known as Cocoa. Cocoa is an object framework that's now mostly accessible via the Java programming language.

    For Linux (x86, but soon PPC as well), thetre's AfterStep, an open-source implementation of everything that had made the NeXT a NeXT, including the dev environment.

    If you have access to a Mac, get yourself some tutorial and explore Cocoa programming. If you only have access to a Linux box, get yourself a complete install and explore what you can do with this.

    No amount of description actually gives any justice to how amazing this dev environment actually is.

    If you're tempted to explore further, o'Reiley has a couple of Cocoa books, but the very best Cocoa books out there is written by Skott Anguish and al, and is called Cocoa Programming.

    1. Re:Objective-C + OpenStep APIs by otuz · · Score: 1

      Sorry, the Open Source project is called GNUStep.
      AfterStep is just a window manager.

  230. Looks upon the steel book gathering dust and weeps by NZheretic · · Score: 3, Informative
    bane, I read your comments and glanced at my copy of the steel jacketed "Franz Inc. Common Lisp, the Reference", gathering dust upon my bookshelf and wept for what might have been.

    The problem is that the big players priced the Compiler based Common lisp development frameworks right out of the reach of most business developers. They also failed to take full advantage in the increasing capability of the PC, turning their noses up at in favour of past glories of the Symbolics machines. A good Lisp compiler could factor out the "cons", producing code sometimes surpassing the performance of C++.

    The void was filled mostly by C++ and now Java, lesser beasts dispite their current quality standard libraries, overly verbose and fragmented incomparison to Common Lisp elegance.

    Today there are open implementation of the lisp compilers, but they still lack a comparable development enviroment to the commercial varients. Sadly, since I started professionally in 1988, I have not had one job or contract were they would consider the adoption of Common lisp, and I have never programed professionally in it. David Betz's XLisp, and later XScheme was the closest I came to using it at work for scripting, and at home for some early AI-planning system hacking that has yet to see the light of day.

    In my opinion, IBM's Eclipse IDE has finally comming close to surpassing the old benchmark of the commercial Lisp IDEs, it even has the ability to plug in refactoring tools. But then I can remember when, thanks to the "cons"-ed Lisp, manupulating the source of the program was as easy as mainpulating the data,

  231. Sure...but by Anonymous Coward · · Score: 0

    It's never been about the process; that is simply a crutch to allow bad programmers to become statisfactory ones...

    Good code is still written by good programmers.

  232. Software not a scientific discipline by SysKoll · · Score: 5, Insightful

    Software is at best a cottage industry of craftmen that have widely different abilities. At worst, it is a cottery of alchemists that promote their own secret snake oil recipes and only succeed by sheer luck.

    And I am a developer that calls himself a software engineer, so this is not a flame.

    Why craftmen? Because we develop with tricks and recipes, often called "processes". But neither of these are scientific processes. They cannot predict the outcome of a software project within a definite set of constraints. They cannot be disproved. And they cannot explain failures. So they aren't science, they are rules of thumbs. The guy who makes a living by applying rules of thumbs and learned tricks is a craftmen.

    Why alchemists? Because scientists publish their methods and their results. To the contrary, the software industry hides its customer references and does not publish its source code (with the notable exception of Open Source, with remains the exception in large-scale software projects). This is how alchemists and "savants" worked in the Renaissance. They hid their trade secrets, they had confidential relationships with rich patrons, and they feared full disclosure.

    On top of that, each subbranch of computing has its own lingo and redefines as many words as possible. Mathematicians who specialize in field theory topology may not understand number theory, but at least, they use distinct, well-defined jargons. In computing, terms like "record", "field", "server", "link" are so overloaded that they are just noise.

    About 60% of all software projects are cancelled or written-off as failures. I don't think civil engineering or, say, aeronautics have such a abysmal track record.

    I hope that some day, we'll practice and teach Computer Science as, well, a science, not as a craft.

    -- SysKoll
    --

    --
    Mad science! Robots! Underwear! Cute girls! Full comic online! http://www.girlgeniusonline.com/

    1. Re:Software not a scientific discipline by HuguesT · · Score: 1

      > I don't think civil engineering or, say,
      > aeronautics have such a abysmal track record.

      Aeronautics certainly had an appalling record in the first few decades of its existence. At least we're not killing ourselves when our programs dies on an unhandled exception.

      Let's get some perspective. It's perfectly natural that software engineering is as crappy as it is now: our society can afford it to be that way, and it's the path of minimum local cost.

      Now if we took a 100 year perspective on the matter it might be different, but who can afford to do that?

    2. Re:Software not a scientific discipline by SysKoll · · Score: 2
      It's perfectly natural that software engineering is as crappy as it is now: our society can afford it to be that way, and it's the path of minimum local cost.

      I don't believe this even makes economic sense. Look at the incident this weekend on the ISS. The rail cart was blocked by a mechanical incident, and then by a bug. Bugs on such an expensive contraption are very costly, not to mention potentially deadly.

      Look at the Westminster Bank fiasco, where a badly managed software project (replacing the back-office mainframe processing with NT servers) collapsed and led to a very expensive delay. This fiasco cost about $200 million. I don't think a correctly (scientifically) managed project, if such a thing was possible, would create such a cost overrun.

      I have many more examples. What's missing in the demonstration, of course, would be example of scientifically managed software projects as a counter-example to the voodoo-like approach to software that we all know and loathe.

      So really, it's not that we can afford them. It's that we don't know better.

      -- SysKoll
      --

      --
      Mad science! Robots! Underwear! Cute girls! Full comic online! http://www.girlgeniusonline.com/

  233. Faster, Better, Cheaper... by daVinci1980 · · Score: 2

    ...Doesn't work. Ask NASA .

    --
    I currently have no clever signature witicism to add here.
  234. different minds by Tablizer · · Score: 3, Insightful

    After years of debating and haggling with OOP fans (I think OO is way overhyped), I have concluded that an important factor is the personal psychology of the individual. IOW, "mindfit".

    People simply perceive things differently and are bothered and helped by different conventions, notations, traditions, etc. Each individual has to find their *own* silver bullet, or at least a brass one. Some of the surveys by Ed Yourdon seem to back this. OOP scored higher when "OO fanatics" worked on projects, but as OO went more mainstream, its score faded into the background noise (average).

    Perhaps IT shops can focus more on screening for individuals who think alike rather than simple buzzword matching. It perhaps is time for an inkblot-like test for developers.

    I used to complain about how Perl is a "write-only language", but I later realized that it is just write-only to *me*. If other Perl fans can figure out Perl and are productive under it (both in writing and maintenance), then I see little reason to complain. A given shop just has to be willing to accept the fact that they are married to Perl and Perl-loving developers. But if they can get things done, then why should I or anybody else fuss? One man's spehgetti is another's gormet favorite.

    (It is still important to explore other viewpoints to expand your horizons, but if something does not seem to "click" for you after a little while, then don't feel bad. I am tired of "you just don't get it, neener neener" from various fans of different paradigms or languages.)

  235. a little bit of NASA bashing by hashmap · · Score: 1
    I noticed that many posters brought up NASA engineers as the ultimate high-quality software developers.

    Not to crash their party but hasn't NASA that crashed their multi-million dollar Mars probe because one sensor took measurements in the metric system while the other was stuck with the imperial one (yuck!) and the software did not convert those? Anybody can tell you that science and the imperial system do not go together... Ain't rocket science ya know...

    Or (this are the frecnh now) hasn't the Ariane rocket crashed because of a integer overflow in a software component "inherited" from a previous rocket that could not have produced such a value and therefore was not checked...

    So there you have it.

    1. Re:a little bit of NASA bashing by dlakelan · · Score: 1

      I was under the impression that it was the vendor specifications of the hardware module that were ambiguous. In other words, the rocket put out (let's say)q 15000 lbs of force and they entered it as 15000 newtons (or whatever).

      Not so much a software error as an error in understanding.

      --
      ((lambda (x) (x x)) (lambda (x) (x x))) http://www.endpointcomputing.com a scientific approach to custom computing.
    2. Re:a little bit of NASA bashing by SlySpy007 · · Score: 1

      Here's the straight dope: The vendor actually CHANGED the specs in the middle of the project (from one unit system to another - I don't remember the order) and this information was not trickled down the chain. So it was purely a communication error (unexcusable nontheless, but I do not blame the guy who wrote the code).

      Also, the Ariane 5 disaster was a result of improper code reuse - this is true. Be sure to check out my post earlier (titled "There are some really amazing things going on...") that deals with some of the techniques currently being investigated/employed to solve reuse errors just like that (and this is precisely the pitfall of OOA/D - it really DOESN'T aide in reuse all that much).

      Just my thoughts...except for the Mars stuff. That's 100% true.

  236. The hell it was by Anonymous Coward · · Score: 2, Insightful
    The Skunk Works delivered lots of products. The SR-71, U-2, F117, P-80, blah blah blah. The U-2 is still in service today (50 years later! What have you built that's been around for 50 years?), and many people argue that the SR-71 should be. The SR sure did leak a ton of fuel, but it's not like they didn't look for a solution. They certainly didn't "blow off all thermo issues." The plane grows a full 12" longer in flight. That 12" has to come from somewhere, and it's not like they can use pine tar to plug the gaps the way people did when building ships (oh wait...wooden ships leak like sieves too, until their in their natural environment, at which point they expand to be nice + tight, just like the SR). Read up on the SR someday, it's an technological tour de force. And it was done by a bunch of guys with slide rules. Do you even know what a slide rule is?

    Please come back when you know what you're talking about. Until then, HAND.

  237. Canada's National Software Engineering Conference by Anonymous Coward · · Score: 0



    Canada's National Software Engineering Conference might try to answer these questions for you. If you are a university student or in academia you should check out:

    http://www.cusec.ca

  238. Testing a design... by MosesJones · · Score: 2


    If you do a formal design using elements like Z you can test that the design works. You can also do this using things like OCL to define the requirements/pre/post for the classes in your design and then running conditions against this.

    There aren't many products that do this yet as most people don't see the need, because most people don't test code properly, let alone designs.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
  239. Re:Faster hardware leads sloppier programming by Anonymous Coward · · Score: 0

    I agree. Unfortunate, but true.

    Management says problems with slow code can be solved by buying faster machines. Because after all, these days computing power is cheaper than human power. There is almost no incentive when whatever you produce is "good enough".

    Let's be honest here. If you have a 2.4GHz machine, you might not care or know that your code might run slowly on someone else's lesser machine.

  240. abstraction hides MS Windows API's. That's a NO-NO by Locutus · · Score: 3, Insightful

    Just as the hardware industry has grown from abstracting commonly used circuits into chips, what occurs is the creation of building blocks on standard designs. In the software sector, that would equate to a component architecture which keeps building on what's been done in the past. The big problem here is that if ANYBODY starts trying to hide anything in Microsoft Windows, Microsoft eliminates them from the market. C++ frameworks were very popular in the early 90's but they all but disappeared as Microsoft provided their C-- (object like) way of doing things at a financial loss. Borland was a leader in the C++ dev tool market but their work hide MS Windows API's so much you could start building applications that recompiled on many different operating systems. MS gutted Borland of it's top level design engineers and paid Borland a tiny fee to settle out of court. CORBA was another framework for building applications across a network of different operating systems and languages. We got 3+ years of intense MS-DCOM press coverage and CORBA eventually faded. I worked on a project which was to use CORBA for a large military hospital system but 1 year into it we were told to stop and start using MS tools and languages with no explainations. Java did/does the same thing( OS/API abstraction ) and it too was fought by Microsoft with incredible gusto.

    As long as Microsoft holds the major share of the desktop computing platform, they will not allow anybody else to decide what's to become a standard software component or API. And changing this every 2 years or so keeps the $$ flowing from your pockets into theirs.

    Sure you can do some of this within your own organization but as an industry, the largest software company in the world opposes such thinking. And with $30 billion in cash, they have the power to change the minds and directions of whole countries.
    IMHO

    LoB

    --
    "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
  241. Re:CVS / RCS - the next step? by Tablizer · · Score: 1

    [flaw in a given function at one point is always followed by exasperation because one realizes that the function needs to be changed in X number of programs.] You don't need a new version control tool, you need a refactoring tool.

    Sometimes a change in *interface* will ripple throughout a system. This is hard to avoid. WRT functions, named parameters often help IMO. You can add a new named parameter for those callers (users) which need the new functionality, but those which don't simply don't use that named parameter (and it defaults to something inside the function/module). Languages without named parameters seem to have more problems with parameter count changes.

  242. XP seems good for overcoming sticking points by Anonymous Coward · · Score: 0
    I tend to think it's better to let programmers pursue their own work in parallel where possible, rather than always being doubled up. However, if someone hits a sticking point, then XP seems a good way to break through. In particular, if you have a senior guy pair up with a more junior guy to help the junior guy through some sticking point, then:
    • it only takes away *some* of the senior guy's time
    • the junior guy learns a lot (staff development)
    • the problem gets solved
    • hopefully, both guys tend to get along and establish some sort of rapport. Maybe the junior guy will be grateful, and help the senior guy later somehow (such as praising the senior guy when the managers are about)

    So maybe XP should be viewed as expensive but useful 'grease' to use where necessary.
  243. Re:Java and GPL - slower software, less incentives by sbrown123 · · Score: 3, Interesting

    loss of performance with the current obsession on over-inheritence and Java-style interpreted/P-code software overall.

    Most companies see the small performance loss from using object oriented languages does not compare to the loss in man hours maintaining non-OOP code. OOP code scales better when that small application gets larger. Code reuse is simpler and can aid in quicker development of other applications with similiar functionality in the future.

    The "vanilla unix" does not exist anymore so its not really an issue. The original idea of byte-code compatiblity was lost when unix commercialized. This spurred the development of a language like Java which allows code to be cross-platform. Writing in ANSI C would be another way of doing this if only it was implemented the same across the Unixes and the hardware remained a constant. That will never happen.

    Add to this GPL/OS that slashes meaningful business value from well engineered software components

    I think that there are many well engineered software components under the GPL and could give plenty of examples. These components required the experience and time of many programmers. By sharing this codebase IT departments do not have to hire dozens of programmers to create a similiar product.

    You may be a "professional" developer, but I think you should avoid any position where you would have decisions on the direction of what technology is used within your company until you come into the realization of the economic savings of GPL code and the reasoning behind object oriented languages. These subjects are generally covered in most computer science programs at most universitys.

  244. There are some really amazing things going on... by SlySpy007 · · Score: 2, Interesting

    ...and I'm surprised no one mentions it too often. Things like generative programming, aspect oriented programming, domain engineering, the list goes on. They are all headed towards filling in the gaps where OOA/D falls short (and yes, it DOES fall short. WAY short) and creating flexible, general programs that are highly reusable and highly correct with a minimum of change. It's really great stuff, straight out of Star Trek. And if you think it's just theory, it's not. Do some research and find out that big (and I mean BIG) companies are going this way.

  245. You used the 'L' word by smittyoneeach · · Score: 2

    I'm perpetually amused at those seekers after a silver bullet.
    Their faith in the existence of a magic method is comic.

    All of these studies roll up statistics for us to nod at knowingly, yet they are impotent when it comes to taking creativity and serving it up so that the novice can be productive. That bit of Southern engineering wisdom: "y'all just cain't polish a turd" applies to staff as well as designs.

    People just don't aggregate, and pursuit of models and methodologies is a diminshing-returns game. Have a model. Have a methodology. Stick to it. But never mistake this means for an end unto itself.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    1. Re:You used the 'L' word by TeknoDragon · · Score: 2
      pursuit of models and methodologies is a diminshing-returns game. Have a model. Have a methodology. Stick to it. But never mistake this means for an end unto itself

      I doubt Brooks would have said it any differently.

  246. The essence of Abstraction by Tablizer · · Score: 2

    The focus has definitely shifted away from algorithms and toward abstraction.

    The term "abstraction" is another overused, overabused, and now watered-down buzzword, I am afraid to say.

    It generally means, "Hiding away stuff that you don't want to worry about", but has taken on all kinds of paradigm- and language-specific meanings to suit the author's POV.

    A "fun" debate tactict is to call anything you don't like a "low level detail". This will usually result in a fat flamewar along the lines of "my thing is a *higher* level than yours, neener neener....".

    I would also note that abstraction is relative. The proper abstraction for one user or module may not be sufficient for another. An accountant and an engineer may look at the very same parts, but each will have (or want) a very different view. Techniques that use "levels" (hierarchies) of abstraction tend not to do well with such relativism. Point of views are needed, not levels.

    Levels are like a map zoom-in/zoom-out. However, perspectives are like a geology map versus a road map. Zooming is an orthogonal issue to what the map actually shows. Also, in some cases one may want *both* views on the same map so that they can take the right road to find the minerals they are seeking.

  247. Answer: YES by p3d0 · · Score: 4, Insightful
    Software development has most certainly improved, though that is not to say it's in good shape right now. We still have a long way to go.

    However, take a look at Parnas' classic paper on information hiding. In it, he makes the following statement (emphasis mine):

    The KWIC index system accepts an ordered set of lines, each line is an ordered set of words, and each word is an ordered set of characters. Any line may be "circularly shifted" by repeatedly removing the first word and appending it at the end of the line. The KWIC index system outputs a listing of all circular shifts of all lines in alphabetical order.

    This is a small system. Except under extreme circumstances (huge data base, no supporting software), such a system could be produced by a good programmer within a week or two.

    Is there anyone in the crowd that doesn't think he could write a shell script/perl script/etc. to accomplish this in 30 minutes or less? I'd be willing to bet I could do it in Python in under 15 minutes.

    This paper was written 30 years ago. It only pre-dated Brooks by 5 years. In that time, if my estimate is accurate, the development time for simple programs may have fallen by a factor of a hundred or more.

    Software doesn't appear to have improved in that time simply because we keep trying to do more complex things.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    1. Re:Answer: YES by Tablizer · · Score: 1

      Is there anyone in the crowd that doesn't think he could write a shell script/perl script/etc. to accomplish this in 30 minutes or less?.....In that time, if my estimate is accurate, the development time for simple programs may have fallen by a factor of a hundred or more.

      I don't think that example is very representative of the tougher problems. We have indeed improved on data structure manipulation techniques over the years. However, most of the hard spots are NOT due to shifting ring stacks or whatever. The real problem is managing jillions of factors that intersect in changing and unpredictable ways.

      Better stacks are not going to solve that.

    2. Re:Answer: YES by p3d0 · · Score: 2
      I don't think that example is very representative of the tougher problems.
      I invite you to re-read the portion of my post you quoted:
      In that time, if my estimate is accurate, the development time for simple programs may have fallen by a factor of a hundred or more.
      I'm not talking about tougher problems. However, now that you have brought that up, there is another thing I said that is relevant to tougher problems:
      Software doesn't appear to have improved in that time simply because we keep trying to do more complex things.
      So, to say it another way, we are always trying to handle more and more of the "jillions of factors that intersect in changing and unpredictable ways". The fact that our success rate has not improved is because the complexity of our problems have exactly kept pace with the power of our tools.

      Indeed, the very fact that you consider the KWIC system to be merely a data structure problem indicates just how far tools have advanced. You don't need to consider any of the implementation details and engineering trade-offs that Parnas considered because your tools can do that. All that's left is the abstract datatypes. Parnas' problem has been reduced to practice, and that's precisely what I'm talking about. It's the first steps on the road toward true software engineering.

      Software is a cerebral, etherial medium. There are just two things limiting it: your fingers, and your imagination. Tools can reduce keystrokes and make your fingers more efficient, but the human mind has not changed in the last 30 years. Thus, although we still have the same level of talent, we are able to accomlpish more complex tasks.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    3. Re:Answer: YES by Tablizer · · Score: 1

      In that time, if my estimate is accurate, the development time for simple programs may have fallen by a factor of a hundred or more.

      I guess I did not make my position clear. I don't think the way our current techniques handle business rules is much better. Yes, we have UI, and collection libraries (or databases), but even BACK THEN those issues were a portion of the problem.

      I don't think that the *ratio* of time spent on business rules versus non-business rules has changed significantly since 1970.

      In fact, many OO techniques resemble the "network databases" of the 1960's, before that article was written. The table-centric techniques that I tend use are based on Codd's Relational Algebra, born in 1970, first implimented about 3 years later. With something like LISP (born 1959) and a 1974 relational database, I have pretty much everything I need for my current techniques (minus GUI's). About the only trend that was not around that I might miss is built-in dictionary arrays......and faster machines.

      Like I said in another message, the easy improvements are already taken up. Yes, we usually spend less time diddling with data structures today, but the amount of time spent on managing business rules/logic has not changed much, nor do I see any magic solutions on the horizon.

      Dynamic languages were born in the late 1950's, OOP was invented in 1967, and relational databases in the early 1970's. Perhaps one could say that their libraries were immature, but I would have to look at specifics. The "shifter" in the example may have been dirt simple with LISP. LISP programmers tend to be very productive. (I am not a LISP programmer, but would look into it more if it provided paychecks.) I don't know what the LISP libraries looked like back then though. Any LISP fans have a history? What is needed from a library anyhow to solve such a problem?

    4. Re:Answer: YES by p3d0 · · Score: 1

      Those are some excellend points. I don't spend a lot of time writing business logic, so unfortunately I don't have much to say about that.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  248. The answer is Yes, a bit by AlecC · · Score: 2

    All the developments in tools described by the questioner have bought improvements in both speed and quality of programming. But they are small increments - 10% here, 50% there. Structured programming was an advance on spaghetti coding, and OOP an advance again. But while software productivity has, maybe, doubled or trebled, the size of the problem has tracked hardware with Moore's law. The result is that software developers are *always* on the back foor. And I agree with Brooks - there is no silver bullet. We will always be on the back foot. But new tools will help a little.

    Actuall, for all the spiel about different languages, styles and tools, I think the biggest advances have been the intrioduction of portable, well tested, well documented libraries. The best tools in the world don't beat pulling 90% of the solution out off a hat.

    --
    Consciousness is an illusion caused by an excess of self consciousness.
  249. Twenty-Five Years??? by Anonymous Coward · · Score: 0

    "No Silver Bullet..." was written in 1987. By *my* math that's only about 15 years ago.

    His book "The Mythical Man-Month" was written in 1975 - that's closer to 25 years.

    I assume the poster of this item is confused since the "No Silver Bullet..." article was included in the 25th anniversary edition of "The Mythical Man-Month" - released in 2000.

  250. Re:Looks upon the steel book gathering dust and we by Tablizer · · Score: 1

    The problem is that the big players priced the Compiler based Common lisp development frameworks [which have MS-Visual-Studio-like editing and auto-complete features] right out of the reach of most business developers. They also failed to take full advantage in the increasing capability of the PC

    Well, Microsoft maybe invented a new technique: start out charging (relatively) low and get your revenue by locking people into your proprietary stuff rather than frisk them up front.

    I don't know of any IT company that did this before Microsoft. I don't remember that complaint logded against IBM in its monopoly heyday (I did some reports on IBM complaints in school), but I could be wrong.

    The best innovations of the last 20 years are perhaps marketing innovations :-)

  251. Re:"I'm in a Computer Science degree program"????? by ZINGYWINGY · · Score: 0

    I have an idea -- why don't you choose your career wholly on the basis of whether there are lots of jobs available in that career at the time you are in college? Then when the economy, and the entire world, changes in 10 years, you'll be God knows where. Not to mention the fact that what you've chosen to do with your life will have absolutely nothing to do with what fulfills you or what kind of person you want to be, and you can spend 40 hours a week miserable because you really don't like X at all. Sounds like a great plan! Just remember: money is the only thing that matters, and that when you are lying on your deathbed you definitely won't be looking back and asking yourself what you did with your life!

  252. HDLs by trumpetplayer · · Score: 3, Insightful

    May I point out that programming languages can be used to develop things other that software (although related) nowadays.

    Probably, the thing I find most interesting is hardware, which can be described using Verilog or VHDL, both Hardware Description Languages. That, together with technologies like FPGA, enables a programmer to design his own microprocessor if he wishes to do so, I find that revolutionary.

  253. It's not the tools, it's the developer by louzerr · · Score: 1

    Tools have given us incredible power over just about any language - C/C++, Perl, Java, etc. But does the average programer really understand what they're creating?

    I've tried several IDEs for Java and Perl, and still end up back at my basic text editor (EditPadPro). Why? Because those IDEs tend to throw so much extra crap in my code, and I don't even know what that code is doing half the time! I don't know how many times I've seen programs that have every possible bell-and-whistle thrown in, but if I have a question about the code (why is this routine trying to connect to another computer?), the IDE author isn't sure. "Well, I just dragged it onto the tree, and there it was!".

    The same can be said for most WYSIWYG HTML editors. I prefer using Dreamweaver, simply because I can easily look at the code I'm creating. But I am always leary to suggest Dreamweaver to someone with no HTML experience - where we have, we've ended up with 500k web pages with crap bouncing all over the screen.

    Tool or no tool, there's no substitue for experience and knowledge.

    --
    "The large print giveth, and the small print taketh away" -- "Step Right Up", Tom Waits
  254. development is a business process by f00zbll · · Score: 1
    Therefore, you can't fix software development without fixing business process. If the business process is crazy and requirements fluctuate constantly, no language or devleopment technique is going to fix it. From personal experience, software tends to have a higher quality if the communication is open and honest. The projects that fail miserably are ones where business requirements change daily because the business guys haven't got a clue. Rather than trust the engineers to help and assist in solving the problem of "what do we build", it degenerates into "change this, change that."

    The best way to ensure the project you work on is successful is to pay attention to the business side and learn how to work with business people effectively. Without that, it doesn't matter if you use XP, OOP or whatever you choose.

  255. Re:Java and GPL - slower software, less incentives by kscguru · · Score: 2

    1) Hotspot: definitely interprets TODAY. Designed to interpret. Just intelligently compiles the most-commonly used code. And yes, it's a major speed boost to do things this way. But tight C/C++ would be faster. Roughly, all Java ~ mediocre C++, which means it's easier to write good Java, but Java won't solve all problems.

    2) Trying to compile everything (bytecode->native) beforehand is what makes the JVM so slow. A programming language that loads 40Megs of memory for a GUI and takes several seconds to load (on a fast machine!) is bad. And then you close the program, and lose all the gains running it and compiling efficiently earned you...

    --

    A witty [sig] proves nothing. --Voltaire

  256. OCAML by g4dget · · Score: 2

    OCAML is a very practical functional programming language with excellent compilers. A number of Linux utilities are written in it.

    1. Re:OCAML by SurfsUp · · Score: 2

      OCAML [ocaml.org] is a very practical functional programming language with excellent compilers. A number of Linux utilities are written in it.

      Out of interest, which utilities?

      The benchmark reports I've seen of compiled OCAML programs are quite amazing, considering the functional model and heavy use of lisp-like garbage-collected structures. There are oddities, like 31 bit integers. I suppose one of the bits is used for garbage collection, and there you have to realize you're really not in Kansas anymore. This is one of the languages on my list of things I need to try, in the interest of learning new, useful paradigms. Plus I want to know first hand what OCAML brings to the party in terms of design and rapid prototyping capabilities. By all accounts, you can't complain about the speed. It's just a few tens of percent behind C/C++, even doing the things that C is good at.

      --
      Life's a bitch but somebody's gotta do it.
    2. Re:OCAML by dlakelan · · Score: 1

      unison for one.

      fftw (the Fastest Fourier Transform in the West library) is written in C by a OCAML program. Ie. they wrote an OCAML program to do symbolic manipulations to optimize mathematical relations and then dump C code that implements those optimized conditions.

      dunno what else. Try looking at their web site.

      --
      ((lambda (x) (x x)) (lambda (x) (x x))) http://www.endpointcomputing.com a scientific approach to custom computing.
  257. I agree. by pb · · Score: 1

    Syntax is entirely a matter of opinion, and anyone who gets hung up on it is being shallow; (or can't figure out how to write a pre-processor...) this was the one thing that completely baffled me in the old C/Pascal debates. Even at the time, there were translators available to convert Pascal to C, and they did an ok job, so quibbling about the syntax (and not the language features) seemed completely useless and absurd to me...

    --
    pb Reply or e-mail; don't vaguely moderate.
  258. Re:"I'm in a Computer Science degree program"????? by spanky555 · · Score: 1

    Well, you are assuming that he is a smart person.

    Your other comments also seem to assume that there isn't a sea change taking place. That sea change is globalism and the strength of the American dollar pushing companies to outsource to every Third World country they can find.

    I would recommend to ANYONE still in college to steer clear of CS and engineering, too. I'd say go for something where you will have some kind of dignity. Maybe doctor or lawyer.

    Even during the boom years, there was very little dignity given to CS folks. It was done only very begrudgingly, and if "dignity" only means high salaries (with looooong hours) and giving people Nerf guns but still putting them in cubes, then my definition of dignity is way off.

    For the past 2 or so years of the down market (job market didn't *really* start sliding everywhere until late 2000, even though stock market took a serious dip in beginning of 2000), I was treated like a slave - I had SALES guys "managing" me, telling me that they could replace me tomorrow, etc. etc., and that's only when I was working. I have been out of work 6+ months in those 2+ years.

    I don't remember doctors or lawyers ever being run out of their chosen field. It seems to happen a lot in engineering and CS.

    As for some folks who said that CS degree will give you that edge - well, out of the hundreds of resumes some of these jobs are getting, I guess I will be in the "top" portion of these - but I have no idea what that percentage is. Even if it's only 10%, that still puts me in with 30, 40, 50 other people competing for the same job. If you like those odds, go for it.

  259. Re:Java and GPL - slower software, less incentives by kscguru · · Score: 1
    /Click/

    Just realized what I just said. Java is better the longer the program runs? Very, very strange... /shudder/. Meaning, Java is exactly the WRONG thing to use for an applet and the RIGHT thing to use for a heavyweight editor!

    /Retreats to a Java editor to think about this.../

    --

    A witty [sig] proves nothing. --Voltaire

  260. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0

    >The difference between contracting out to an Indian IT farm and hiring a great programmer -- from any country -- is rather akin to the difference between employing 100 monkeys and hoping one of them will bang out Hamlet, and hiring William Shakespeare.

    I find the racisim implicit that statement quite staggering!

    So, Indian programmers are '100 monkeys' and programmers from the good ol' USA are 'William Shakespeare', right?

  261. I'm not that old! by kgb1001001 · · Score: 2, Informative

    Actually "No Silver Bullet: Essence and Accidents in Software Engineering" was published as an article in Computer magazine in April 1987. That was (for the math challenged) only 15 years ago, rather than 25 years ago. I remember reading the article in its original form in college and I don't think that I'm THAT close to retirement yet...

  262. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0

    Racist accusations aside, the analogy is quite good.

    All too often, the results from offshore programmers are very close to the "100 monkeys" he spoke of.

  263. the Law of Uniform Pain by Anonymous Coward · · Score: 0

    Nothing fundamental will change because of the Law of Uniform Pain. At any time when we can create function x for software pain level n, improvements will improve the relation of x and n. But instead of preferring function x and pain level n-k, people will instead choose function x+k and pain level n. (Of course, the change might be in exponents, but the margin is too crude to contain it...) And so it will feel the same, although the software generated will be more powerful/functional/etc. I believe this was originated by an academic named Erbach.

  264. Brooks was wrong by g4dget · · Score: 2
    There are silver bullets in software development. Problems that used to be very hard can be solved safely, efficiently, and quickly using better tools and languages. Imagine how much longer your average Perl or Python script would have taken you to implement 30 years ago using Fortran. And there are much better and more modern languages than Perl or Python.

    I think people like Brooks have done a grave disservice to the community by claiming, without solid evidence, that languages don't matter. Some language differences don't matter--Pascal and C are almost equally cumbersome and error prone. But in general, languages do matter enormously: runtime safety makes it easier to compose programs out of large numbers of components, dynamic typing and reflection help with configurability and I/O, static type safety and garbage collection reduce the probability of bugs, etc.

    A disregard for the importance of languages is why projects like Mozilla, Gnome, and KDE keep lumbering on in languages like C and C++, producing software that crashes with regularity, consumes enormous amounts of memory, and takes forever to get finished. It's why software like Apache, IIE, and IIS keep shipping with bogus and avoidable buffer overflow errors.

    Programming technology has improved enormously over the last three decades. It's just that most programmers don't use the improvements and still stick with three decade old technology for their jobs.

  265. Re:There are some really amazing things going on.. by robson · · Score: 2

    There are some really amazing things going on... and I'm surprised no one mentions it too often. Things like generative programming, aspect oriented programming, domain engineering, the list goes on.

    I'm interested in hearing more... do you have links to specific pages that exemplify some of these practices?

  266. Random thoughts... by jlowery · · Score: 1

    Code completion/syntax checking has probably saved me countless compile/debug cycles.

    I think the only way to become a better programmer is to suffer through a product's first few life cycles: concept->analysis->design->implementation->mainten ance 1->reengineering->maintanence 2.

    After the second maintenance cycle you're just milking the cow, so move on to another start-up project and apply your new-found experience elsewhere.

    The point is, until you have to maintain and rewrite you're own mistakes, you don't learn much of anything.

    Up until the recent past, unfortunately, a lot of startups have been bottom-heavy with young, inexperienced developers who are willing to put in the long hours necessary to brute-force their mistakes through by whatever bandaids and chewing gum it takes. That's a hit-or-miss proposition.

    Alas, it's very hard to get a doomed project cancelled or realigned due to political inertia. When it becomes obvious that management is living in Cloud Cuckooland, it's time for you to pick up sticks and move on.

    --
    If you post it, they will read.
  267. java by b17bmbr · · Score: 1

    what bugs me about java is its verbosity. just to open a socket and write to it is like 6 or seven lines. perl is one line. i am sure there is a happy medium. (no, i don't know enough c to compare). also, java bugs me in that there is only one way, as opposed to the perl's there is infinite ways. again, a happy medium thing. what i have found though is java can do basically anything, and it is relatively easy to learn. perl on the other hand can do anything, but is a bitch to learn. but other than that, i have been very productive with each. in fact, i just fire up vim and have a tererminal or two open. i have tried every ide, and like none. except for jedit. really nice and fast, for a java app.

    --
    My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
    1. Re:java by Tablizer · · Score: 1

      what bugs me about java is its verbosity. just to open a socket and write to it is like 6 or seven lines. perl is one line. i am sure there is a happy medium.

      I don't know why, but the most commercially successful languages tend to be verbose. Witness COBOL.

      I don't really know why this is the case. Perhaps managers look at the code and something like:

      system.output.services.print("hello world")

      LOOKS more sophisticated than:

      print("hello world")

      earning praises and raises on the developer's part.

      (Isn't the long path a Demeter violation? One should abstract away the "path" to the service of printing because it is not a detail that should be repeated over and over because it could change, besides being verbose. Also, I admittedly exaggerated the length a bit to emphasize my point.)

    2. Re:java by b17bmbr · · Score: 1

      java.lang.System.out.println("hello world");

      job security!!

      --
      My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
  268. People are still the limiting factor... by CrashVector · · Score: 3, Interesting

    Hmmm,

    Of people and projects and the use of tools and technologies:

    Let's see... Two contracts ago I was on a team of developers who had one hammer in their toolbox: COM. I pleaded with them to limit their use of COM but they went on a rampage. They wrapped ADO in a COM based object/relational DB abstraction. Then they used the COM based DB wrapper in their COM based business tier to talk to COM based Active-X controls in the UI. I pleaded with them to use MTS, distributed transactions, and stored procedures as the system was a distributed client/server app; but I was told that transactions and stored procedures would add too much overhead. COM, COM everywhere and no transactions in sight! Result: A slow, giant, buggy, leaky, unstable 4 tier COM based pig of a system that has major database issues. I finally couldn't take it anymore and so I gave notice after 1.5 years on the project. I left there 2 years ago and today they have sold the thing to one customer - who is extremely unhappy...

    My last contract was an aircraft carrier combat system. 220 developers had been playing in Rational Rose for 1.5+ years when I showed up. They had modelled over 5,000 classes and had not modelled anything called "Weapon", "Sensor" or "theShip". They used Rose to generate their C++ code for HPUX and VxWorks and they used TCL/TK to do their UI. Frankly, if there a was a fork in the road these guys took the hard way every time. Result: the system is an impossibly huge nightmare that runs on dying platforms and depends on a dead UI language. The company has run out of money to finish the system. The staff has been cut from 220 to 50 and no deadlines have been moved. None of my friends who remain on this project work 40 hour weeks...

    Currently I'm on contract to do a UI by X-Mas. I just fought a 2 week pitched battle with pig headed engineers over whether or not we should use C#, VB, or MFC to do the UI. I finally ended the battle last week when I walked into a meeting with working screens coded in C#. The UI is mostly finished and all are very impressed with my work. But I have been unable to convince unwilling, MFC loving, pre .NET era engineers of what "Managed C++" is and so I'm currently coding an unnecessary Managed to UnManaged code layer so that C# can talk to unmanaged C++ on the back end...

    I guess what I'm saying is that the biggest thing I've run into in the last few years is people who have very real design decision making power but who don't have a good background in what tools and technologies are available. I see projects blunder into Death March situations because the people working on them are unwilling to keep up with technology or are unaware of what tools are out there...

    I work like heck to keep up with the times. I wish more people would read books like "The Pragmatic Programmer" and take them to heart...

    --Richard

  269. Re:Java and GPL - slower software, less incentives by mr_e_cat · · Score: 0

    No one can claim that a program written in Java is as fast as a program written in vanilla c. For that matter, when real execution speed is required, people still optimise in assembler (or even design custom hardware). Java is not designed for execution speed. No point in pretending it is. Different lanuguages are useful in different situations. They are tools. There is no point in claiming your screwdriver is better than my hammer. Java is slower than c. So yaaahhh

  270. Silver bullets? by cmburns69 · · Score: 1

    Silver bullets do exist! They have to! Otherwise, how will we kill all the werewolves?! (or get drunk!)

    --
    Online Starcraft RPG? At
    Dietary fiber is like asynchronous IO-- Non-blocking!
    1. Re:Silver bullets? by CrashVector · · Score: 1


      How do you get drunk off of Silver Bullets? I have tried many times but after a full day of drinking and gaming I still only have a buzz on...

      I am going to try again this Thanksgiving weekend and maybe this time I will spike my bullets with some Vodka... :*)

      --Richard

  271. Re:Java and GPL - slower software, less incentives by StillNeedMoreCoffee · · Score: 1

    Well, tight C++ code may be a confusion in terms given its prepenstiy to leak memory.

    another day, another line of code, I'll debug it tomorrow.

  272. Re:Java and GPL - slower software, less incentives by StillNeedMoreCoffee · · Score: 2, Informative

    Why would you want to scroll? Why not use it for real programming?

    Lets not confuse Java the language and its performance with Java GUI framework. Just like you would not compare C++ the language with the Microsoft windows framework.

    The Java framework sacrifices some speed for generality. So see what you save writing it once and delivering it to multiple platforms vs re-writting the GUI portion for another platform. There is method and cost to this madness.

  273. You Lie - Java can never be as fast as C or C++ by cculianu · · Score: 1

    Java can never be as fast as C or C++. I don't know what 'your benchmarks' are, but have you published them? I think you are outright lying if you have ever been able to get Java to perform faster than any native binary in a sufficiently _fair_ test. It defies logic. Every Java 'instruction' in the bytecode translates to tens if not hundreds of actual machine instructions. Its slow and bloated.

    There are, however, skewed tests which make Java look faster by making the C++ code used in the test do things the "dumb way" by passing around a lot of object copies rather than references.. this type of thing makes Java look almost as fast as C++ _on a very limited subset of problems_ (even with all the object coping). Java programmers claim this is a fair test because everything except (for the most basic types) is a reference in Java. The Java pundits like to point this out and say "yeah Java is faster because all objects are references". This can be true if you are a dumb C++ programmer with no sense of efficiency.. but just a little extra effort can get you as a programmer to think in terms of what is more efficient and use references when you can and thus you leave Java in the dust. Native binaries are several orders of magnitude faster than Java's interpreted bytecode. It's a pure fact. Anything else is FUD.

    1. Re:You Lie - Java can never be as fast as C or C++ by Anonymous Coward · · Score: 0

      Reread his post. He's comparing a state of the art JRE to g++ and some Microsoft compiler. Of course C++ (assuming you make your code look more like C) can be faster than Java, but when you get in the real world and use real tools, things aren't always like they should be. Just as my Supra is more technically advanced (overhead cams, four valves per cylinder, and turbo) than a Corvette, the Corvette will still out run my car. That doesn't show that those more technically advanced features are bad. It just shows that when you compare those two specific implementations, the other one comes-out ahead.z

  274. Human ability by heroine · · Score: 2

    The tools make probably 10% of the process easier. The ability to cut and paste text is the biggest gain from tools, with every other tool declining in return for investment. Fundamental to tools is the fact that every time a tool comes out to fix a certain problem, we increase the magnitude of the problem until the tool is ineffective. Secondly, tools don't give you a competitive advantage because everyone has the same tools. The human brain and the ability of the people is still the only thing making a difference.

  275. He's a Karma whore vying for a few extra points. by cculianu · · Score: 1

    Well he's either a troll or a Karma whore. He makes a retarded argument. Basically you are correct. In java you can either ignore the exception and get a reasonable error message with zero effort from you.. or you can have a big try statement wherever you want to and catch (OutOfMemoryException e).

    The alternative in C is ugly. A million if() statements for every malloc that basically do the explicit checking. Big whoop.

    Actually the java approach is superior in the sense that at least the vm tells you "Out of memory" with zero work from you as a programmer. With C you have the extra "printf("Out of memory\n"); exit(ENOMEM);" code after every malloc. In fact the Exceptional approach to memory is way better IMHO.

  276. Re: Delphi is Great! by Anonymous Coward · · Score: 0

    Yeah, Delphi and Kylix really don't get enough mention. It amazes me how little they are mentioned on Slashdot. Delphi is still the best development tool that I've used. I've used C++, Delphi, Java and VB and x86 assembler. Delphi is the only language / tool that I've used that really is able to handle the full development spectrum. It is almost the one-size-fits-all development tool. I say "almost" because it you can't write apps for Solaris or MacOS. But, the reality of it is that you can write apps that are just as scaleable on Windows or Linux using Delphi, so there is no real need to develop on Solaris.

  277. Re:CVS / RCS - the next step? by Aapje · · Score: 2

    Refactoring will solve exactly this problem, one of the refactorings (Rename Method) allows you to change a method and have the method calls be changed to reflect this. Refactoring like these are extremely handy and are one important way to solve the problem of reducing and managing duplicated functionality (AspectJ is another interesting solution).

    --

    The Drowned and the Saved - Primo Levi
  278. Re:Java and GPL - slower software, less incentives by ChannelX · · Score: 2
    I'll give you 1 but will say that even with Hotspot Java is not an interpreted language. Hotspot does compilation of those sections of code that need it the most but once that happens the classes become a hybrid of native/bytecode. Java was an interpreted language when it first came out. It is no longer.

    Incidentally I've read several things that talk about the fact that Hotspot server version is the one everyone should be using....even if on the client. Client is only designed for short-lived things like applets.

    --
    My blog: http://jkratz.dyndns.org/~jason/blog/
  279. Software Development is a Human-Centric Activity by Aron+S-T · · Score: 3, Insightful

    That one sentance, which was Brooks' key insight, sums up why progress will always be limited. You can read commentary on that point in a paper I wrote here.

    Other's have already pointed out the obvious corollary: good management practices are most important for successful, reliable software development.

    I don't think the Agile people need to be trashed as much as they are here. Sure, they are gurus. But they are emphasizing human-centric instead of "software engineering" which is a Good Thing (TM). Just don't get too religious about XP and you'll be fine.

    Other than that, the greatest thing for programmers since sliced bread is Python.

    And yes, I also agree open source development has pushed this industry light years ahead. But it works because - it's human-centric programming!

  280. Re:Java and GPL - slower software, less incentives by ChannelX · · Score: 2

    As to 2 I don't know of any Java application that I've used yet that takes 40MB of memory on load. I agree though that you do lose the gains made on loading/compiling to native. Sun needs to address that issue. OTOH you can also buy native compilers that do the work upfront. If you want a fast GUI use SWT. Not as functional as Swing imho but certainly faster.

    --
    My blog: http://jkratz.dyndns.org/~jason/blog/
  281. Re:Looks upon the steel book gathering dust and we by Anonymous Coward · · Score: 1, Informative
    This is sooooo wrong...

    There are plenty of Common Lisp tools (IDEs, web servers, utilities, etc.) available at reasonable prices or free: Allegro Common Lisp, Corman Lisp, CLISP is free...
    Go read the Lisp Tools

    Everything you need is available. Get a Lisp today!

  282. Re:Java and GPL - slower software, less incentives by ChannelX · · Score: 2
    No one can claim that a program written in Java is as fast as a program written in vanilla c.

    Until one comes up with a meaningful version of each version coded properly to use the strengths of the language in question you can't say that. Server-side Java is extremely fast and you gain far more coding in Java on the server than you'd lose in speed.

    c. For that matter, when real execution speed is required, people still optimise in assembler (or even design custom hardware).

    Uh...whatever. People who worry about that type of optimization wouldn't be looking at much more than C or C++. Java and the like aren't even on their radar.

    Java is not designed for execution speed. No point in pretending it is. Nobody ever claimed it was.

    Java is slower than c. First off its C....not c. Secondly you can't make that claim. It certainly is true in some respects and not so in others. Making that claim is pretty much pointless.

    --
    My blog: http://jkratz.dyndns.org/~jason/blog/
  283. UML is NOT a Process by Anonymous Coward · · Score: 0

    Just to clear something up from the posters comment, the Unified Modeling Language is a notation not a process. Period. End of discusion. If you want a process that uses the UML look into the Rational Unified Process (RUP), Unified Process (UP), or OPEN.

  284. Re:"I'm in a Computer Science degree program"????? by Anonymous Coward · · Score: 0
    I had SALES guys "managing" me, telling me that they could replace me tomorrow, etc. etc.,


    Why the hell would you be wasting your time even acknowledging a salesman. Not too mention letting one try to "manage" you. allowing such a thing demonstrates a total lack of confidence and assetiveness which adversely impacts ones employment in tough times. When the axe falls, the weak get cut off. You can be the best IT worker int eh world, in a corporation, you still have to demonstrate the traits which a corporation finds desirable in all workers.

  285. Re:CVS / RCS - the next step? by Tablizer · · Score: 1

    Refactoring will solve exactly this problem, one of the refactorings (Rename Method) allows you to change a method and have the method calls be changed to reflect this.

    Are you saying this is better than named parameters, or just of many techniques to consider?

  286. Have you actually red that resume? by Anonymous Coward · · Score: 0

    Have you actually red more then his latest assignment?
    His resume goes back to 1974! I was 6 years old and had still 7 years to go to get my hands touching a computer myself.
    Just one example, 1979: "Debugged and enhanced software for the Space Shuttle flight simulators at NASA/JSC."
    It half of that resume is truthful, other developers (including myself) would
    kill for it.

  287. The Real Software Crisis by sgml4kids · · Score: 1

    Twenty years ago, methodologists described the software crisis as the difficulty in building reliable but complex software systems. I truly believe that a lot of the "best practices" established over years have improved our ability to build good software.

    But the real software crisis we face today is that most software we use never underwent legitimate requirements analysis. There was a time when large organizations sought out software solutions and paid to have them built. The vast majority of software used today in business, was not build against user requirements. Instead they are built to meet buyer requirements or marketing requirements.

    Mass-market software (ie. everything that runs on a Windows PC) isn't built at the request of its user. Instead, companies built software based on what they *think* users want and then close the gap by marketing their pre-built products to us. Users have very little input into how their purchased software will function. Often a software company will spend a disproportionate amount of money adding features that will attract buyers not users.

    I mean think about it: The core functionality of word processing software has remained unchanged since the days of Magic Window and StarWriter. There is only a finite amount of functions a word processor can perform.

    There is, however, an unlimited number of features a company can add to a product (functional or not) in order to distinguish it from a competitor or previous version.

    The vast majority of software is not purchased based on satisfying a clear set of requirements. We buy MS Office because, well... just because.

    That's the real software crisis.

  288. Learn, then forget LISP. by Anonymous Coward · · Score: 0

    First learn the language of the sages. Warp your mind around its concepts. Get good. Then give it up and go back to one of your other more enjoyable languages.

  289. Sorry, but I'm going to disagree, at least a bit by Anonymous+Brave+Guy · · Score: 2
    Quality software comes only from quality developers--people, not methods or schools of thought or books by really smart people.

    I disagree somewhat. Good practices can make a sub-standard team into a gets-it-done-well-enough team, or a good team into a great team. They won't turn a lousy team into a great team, but you'll never have a great team with them, either.

    Since quality developers are rare (like Leonardo DaVinci rare), quality software is correspondingly rare.

    I disagree with that as well. There are plenty of good developers out there. The problem is invariably that management fails to acknowledge the nature of good developers, usually in one of two big ways.

    • You have to give them good compensation, because if you don't, someone else will. They more than make up for it with the long term quality they provide; you might reasonably take that as the definition of a good developer, in fact.
    • You have to let them do their job. Give them management and practices that work with them, not against them. I've seen way too many professional developers who were technically excellent and had an exemplary attitude, but who never met their potential because they were forced to use overweight procedures, or to follow a coding standard set by an old fashioned senior guy who didn't notice things changed in the past decade, or whatever.

    If management could get over its short-termism and help good developers to develop well, then they'd find that such people really aren't that rare at all. There are a few in every company I've ever worked at, and I've worked on some teams that consisted almost entirely of high calibre people. But just having a team of good guys isn't enough; this is why good management is worth what you pay for it. Kinda like good developers, when you think about it... :-)

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  290. Re:Java and GPL - slower software, less incentives by joeljkp · · Score: 1

    I use jEdit (4.0.3) for my coding also, but it really is quite slow. The menus, the response times, the dialogs, the loading, everything seems to be stuck in a slower dimension. I have the J2SE 1.4.1_01, too. Any advice?

    By the way, my computer's faster than yours.

    --
    WeRelate.org - wiki-based genealogy
  291. Off the mark, perhaps? by Anonymous+Brave+Guy · · Score: 2

    I can't help feeling that this post is off the mark.

    The issue isn't software complexity, it's how well the software does its job, which is helping real people to do something more easily.

    Yes, it's true that one drive individual used to be able to write full packages. Of course, that's still true. Many of the best tools I use look every bit as professional as the mass-developed, highly-complex things, and work at least as well, yet were developed by a single enthusiastic person. They have a smaller scope, but on the flip side, they tend to do their one job very well.

    As for collapsing into mayhem... You are more generous about current software than I am. When did MS-DOS or WordPerfect 5.1 ever crash and lose your last hour's work? Yes, yes, they weren't multitaskingGUIfrontendmousewavingbizapps(TM), but they let me write my letters, booted in a heartbeat and didn't keep asking me if I wanted fries^H^H^H^H^Hhelp with that. I accept that today's software tries to do much more, but it's hardly an exemplary field for progress in an engineering discipline.

    Oh, and WinXP is so much less stable than Win2K it's not funny. I speak from direct personal experience, on several different machines at several different places. Win2K was the one MS got right. WinXP was the candy-covering they forgot to taste before they put it in the shop.

    Having said all of this, I do think software development has advanced a lot as a field. I just don't think your argument justifies that conclusion in itself.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  292. unprovable principles by ticktack · · Score: 1

    Unlike any other theories, software engineering theories are just unprovable principles. Among all the different languages, methodologies, people are choosing. More interoperability between languages, better revision control system, better distribution system, better bug reporting system, more specific coding guidelines... Slowly, things are getting better and better, when people started to know what exactly they want (not just some hollow words).

  293. Re:There are some really amazing things going on.. by SlySpy007 · · Score: 1

    Sure. I'll also recommend some books which are on the cutting edge of what's going on in these areas. By far the definitive guide is "Generative Programming" by Czarnecki and Eisenecker. They delve into Domain Engineering, Aspect Oriented Programming, Intentional Programming (being developed by Simonyi @ MS), and other topics in general programming. The book is great, and you can check out Czarnecki's website associated with it which includes source code and links to other online resources. Other literature currently close to my heart is "Modern C++ Design" by Alexandrescu, which deals with Policy Based library design (closely related to the idea of generative programming; it allows C++ to act as a 2-tiered language by giving the compiler the ability to make decisions on what should be compiled), and anything that you can find on the Eiffel programming language (I suggest The Official Eiffel Software Homepage) which implements Design by Contract (DBC). Basically this states that there are certain pre- and post- conditions which must be met by each part of your program and places constraints on the code based on the 'contracts'. As a side note, this can currently be spoofed in C++ by using the static assertion library. Wow, that was long-winded. In any case, hope that helps. If you want more info, drop another post.

  294. Re:Java and GPL - slower software, less incentives by Anonymous Coward · · Score: 0

    FWIW: I believe that if you have programs that are going to be running for a good long while, the Java 1.4 VM -server option will optimize heavily-used code. I don't have my 4th-ed Java in a Nutshell handy, which is where I believe I read this.

    As for Java performance, I think the best piece I have seen on it so far was a few months ago in Java Developer's Journal - The issue's archives page lists it as "Performance Tuning in Java" - but unfortunately you need to be a subscriber to access the archives, and I am not. There are of course a lot of steps you can take to make Java *relatively* fast, but I think prior posts covered most of those.

  295. LISP, methinks by euroderph · · Score: 1
    After ten plus years of coding in 8080 ASM, PL/I, FORTRAN, C, and C++, I've settled on Java as the tool of choice. But it's only recently that I've dug into LISP, and I'm fascinated by what I find. Read the story about the Yahoo online store that two guys wrote, but then they hired a dozen more people so the VC's wouldn't ask stupid quesions like "How could only two guys possibly write something so excellent?". The story can be found here.

    I don't know well LISP stands up in a production environment -- in that I have no idea how easy it is (or is not) to read and understand and maintain someone else's LISP code -- but just for the perspective and the opportunity to get a revelation, I'd advise giving LISP a serious shot.

  296. Eiffel by Anonymous Coward · · Score: 1, Informative

    Design by Contract and BON (Business Object Notation) provide a very nice agile development methodology. Take a look at Eiffel.com for details.

  297. No silver bullets, but plenty of hammers by Arandir · · Score: 3

    There are not silver bullets in software development. Probably never will be. So get that out of your mind.

    On the other hand, our toolbox is filling up with lots of nice silver hammers, silver screwdrivers and silver saws.

    When I started coding, structured programming was the latest tool in the toolbox. It was and still is a great tool for many tasks. Since then we've gotten object oriented and generic programming tools. These are great tools as well. But they're still tools. Which means you have to but some labor into using them, and they won't be suitable for every task.

    If you don't think that software development has improved in the past twenty five years, it's time you rummaged through your toolbox and picked something other than a screwdriver to hammer in nails.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  298. Re:CVS / RCS - the next step? by Jeppe+Salvesen · · Score: 2

    I use recursive grep to identify where I call a certain function. I get a few false positives, but usually, it's not too bad.

    --

    Stop the brainwash

  299. Re:Java and GPL - slower software, less incentives by kscguru · · Score: 2
    That could be why the footprint is so big... I'm running apps written in Swing - although even then the GUI is nice and responsive. I do stand corrected... the Java-based IDE (either JBuilder or Eclipse) is 40Meg, the program itself is only 20Meg (still way too big IMHO - I haven't even loaded any data!). Oops - now another correction - after a minute of running idle, my program's memory drops to under 10Meg! Spooky... but insanely wasteful on startup.

    It seriously takes 3-4 seconds for an "open file" dialog box to come up (Solaris runtime). The second time it's down to maybe 1/3 of a second (thank you hotspot!), and I'd bet I could take that time out by caching the dialog instead of making a new one each time. It's that first pass being way too slow though...

    Hotspot in of itself is pretty good. A year and a half ago, I was cursing Java for slow everything - now it's just the startup time and memory footprint - the rest of the language has shaped up nicely. Another year of improvements and I just might switch... :-)

    Never gotten to play with one of those native compilers :-(. But I'd bet a good one would take out half my complaints right now! However, I just don't feel the memory footprint is likely to go down.

    Hotspot server is better? Very interesting... Thanks for the info!

    --

    A witty [sig] proves nothing. --Voltaire

  300. Re: Java can be faster than C++ by Glock27 · · Score: 2
    Native binaries are several orders of magnitude faster than Java's interpreted bytecode. It's a pure fact. Anything else is FUD.

    Heh. Non-intuitive, ain't it?

    The fact is that C++, in particular, has 'features' that prevent certain optimizations. Java, due to stricter specification, has some advantages. Whether or not Java will ever be faster than optimized FORTRAN is a different question, but largely moot since very little non-scientific software is developed in FORTRAN (or hand optimized assembly, the other performance poster boy).

    Anyway, I'm working on a magazine article regarding my benchmarks so I can't release them yet. However, for a much earlier article that shows great results with last generation VMs, check out Binaries vs. Bytecodes. The 1.4 VMs are substantially faster than the 1.3 versions he used in that article, while the C++ compilers have made little or no progress in the same time period. Cool, eh? ;-)

    Source is provided with that article, so you can test it with current compilers and VMs.

    So, anyhow, before you do any more spouting about "several orders of magnitude faster than Java" you'd better run your own benchmarks. You're in for a surprise.

    --
    Galileo: "The Earth revolves around the Sun!"
    Score: -1 100% Flamebait
  301. Incrasing Complexity outweighs other gains by Anonymous Coward · · Score: 0

    I've been programming for 30 years. In that time we've made huge progress with languages, libraries, code resues, etc. However, the growth in the expectations of users and the complexity of the tasks to be accomplished exceeds our progress in improving programming productivity.

    Everyone want "easier to use". Making a complex app eay to use is reall hard. And eas to use for whom? Ask 50 users and you'll get 100 opinions on what is easy. And people want to sit down and use complex systems with classes and training. So we add context sensitive help, wizads, but we also need the expert mode.

    Then we have the apps that need to be distributed, network aware, fault tolerant, scale to tens of thousands of users, etc. This stuff adds a tremendous amount of cmplexity to design, development and QA. And our requirements are growing not shrinking.

    Then, we can't throw out any of the old systems, so we're writing glue layers and translators and front ends, etc. And then those take on a lfe of theri won.

    Finally, we need bigger teams. Once the teams get large, the management becomes difficult. That hasn't changed in 30 years. We have new methodology from SEI or others, but it requires incredible discipline and a senior management who doesn't change the plan, cut the budget and lay off 20% of the developers.

    1. Re:Incrasing Complexity outweighs other gains by SimonInOz · · Score: 1

      True, true. Recently I built an integration system to talk to a wide variety of other systems, from screens craping 370 to XML messages with NT and unix. It was fun. Guess which systems were easiest to integrate with? Basically the older the system, the easier. The actual order was the easiest had a database I could read, then the XML message systems, then the screen scrapers, then the hardest of all was the most recent, the NT Windows based system. So much for increasing ease of use and integration!

      --
      "Cats like plain crisps"
  302. No Jobs! No Joke! by Anonymous Coward · · Score: 0

    I actually saw a listing last week for a software beta testor in Albany, NY. This software company was only paying $10/hr, and you needed to have a BS in computer science.

    Ridiculous.

  303. We keep 'improving' irrelevant things by mobil1 · · Score: 2, Interesting

    For the last 20 years the commercial software development
    churned through imperative programming languages that do the same thing with just a bit different syntax and Spartan/or complete set of standard libraries (Cobol, fortran, C++, pascal, java, C++, C, perl, C#). So we have wasted investors money,
    customers money, many man hours by lying to them that when we use the new programming languages things going to be much better (that self-satisfying process is now called 'commercial software industry').
    In addition to manual conversion to different lang. syntax (and fixing some bugs on the way) of the existing software, we spent millions of dollars on what we call 'Design Tools' and those are mere lego-like packages that allow us to break-down our tasks into such small and disjoint components that a developer who was not part of the 'team-that-did-the-breakdown' would need to spend weeks to find out what set of 'components' (an important word in our vocabulary) enables that button (and it turns out that the a row in a database is read by the 'database layer', then the there is code that the checks if that row is has all the necessary data, then it sets some boolean flag (we call that a business logic layer), then the button checks that flag and to be enabled or disabled (and that we called our GUI layer)).

    In the last 10-15 years, we came up with a role of a 'Software Architect' -- that probably had a noble goal, but really degenerated into a task of dowloading the latest 'new' technology from the internet, then setting them up for some irrelevant test, and then running around the company and telling everyone how we should 'upgrade to the latest technology for some great benefit and no one can understand'.

    Then, in the past 20 years we convinced our customers that they cannot really expect bug-free software from us, but instead we can do something that does most of what they want and fix the rest later. So then the customers simply stopped believing us that we can manufacture something that works, the only thing that customers can do is to request us to do something by some date (therefore the unreasonable (but always movable :-) deadlines) -- and in fact, we got accustomed to it:
    Look at the press releases of the public software companies: they do not mention what functionality their products have, how fault-tolerant they are... instead they mention what Tools they used to build their stuff (XML, EJB, Java, OO, UML, web-enabled and wireless ready). And for a while the stock market rewarded just that. But have you seen a profitable hardware design and manufacturing company bragging in their press releases what compiler or VLSI design tool they use, instead of highlighting the functionality of their product?
    -----------
    We also convinced ourselves that there are no 'methods' to desing software without bugs, instead we'd rather rely on QA to test it -- because we think software is like nothing else -- it cannot be VERIFIED for CORRECTNESS by us.
    And that is fundamentally what needs to be changed: we must be able to use mathematically sound algorithm verification techniques and we should ask our tool vendors NOT to deliver to us a syntax change every 3 years, but build for us tools that would do what do data-flow analysis on the program logic level, that would simulate timings and parallel execution for concurrency enabled applications (threading/etc) and so on.

    -----
    Of course there has been a lot of progress in the computer science and mathematics that supports it, but most of it did not make in to commercial app development world.
    Compilers are better, language parsers are better, OSses are better -- but those are the tools where the science was used to design algorithms (like graph coloring for register allocations, or other optimization techniques)
    And hardware, of course is much better --

    the commercial software 'looks' like made leaps and bounds -- but it is really some of tools that we use underneath that made us look better.

  304. Hmm, current stats... by pommiekiwifruit · · Score: 2
    27400 lines of assembler from two people in 4 months 8 days (let's call that 96 programmer days) = 286 lines per day that we hope to end up in the shipped product.

    That's not including the 14100 lines of C++ in the main support tool (which won't be shipped) or the other tools, or data.

    So short small projects let you be a lot more productive in terms of LOC :-), well until we get into the proper testing phase anyway :-(

    1. Re:Hmm, current stats... by glenstar · · Score: 2

      Hm... perhaps I should hire *your* developers for my next project... ;-)

    2. Re:Hmm, current stats... by dlakelan · · Score: 1

      When did someone sit down and say "we want to make a product that does something like ".

      That's the date from which you should start counting, not the day the first code was written.

      But yes, small projects with well understood problems (such as a compiler, or a new optimization pass) develop faster than large projects with various miscellaneous business, technical, and user constraints.

      --
      ((lambda (x) (x x)) (lambda (x) (x x))) http://www.endpointcomputing.com a scientific approach to custom computing.
    3. Re:Hmm, current stats... by pommiekiwifruit · · Score: 1
      When did someone sit down

      While we were finishing off the previous project. So we had something to think about while waiting for bug reports. There was about one week of looking at and obtaining background materials for the problem (which was very well defined, if obscure; google was helpful and so was amazon's second hand bookshop) and another week starting building the main tool before the first product code was written.

      OTOH I'm sure I used to write a lot faster before slashdot was invented ;-)

  305. Re:He's a Karma whore vying for a few extra points by spakka · · Score: 2
    Well he's either a troll or a Karma whore.#

    My karma is excellent, so I guess I must be a troll.

    you can have a big try statement wherever you want to and catch (OutOfMemoryException e)

    Well, it's an Error, not an Exception. This means that a reasonable application should not try to catch it, according to the documentation. If you go against the documentation and decide to attempt some local recovery after certain failed allocations, you need a try-catch clause around each one.

    The alternative in C is ugly. A million if() statements for every malloc that basically do the explicit checking. Big whoop.

    To be fair, it's at most one if statement for every malloc.

    With C you have the extra "printf("Out of memory\n"); exit(ENOMEM);" code after every malloc.

    Nonsense. If it's acceptable to terminate in the event of any malloc failing, you'd write a wrapper to hide the details. There would be no explicit error checking at all at the call site. Now whose argument is retarded?

  306. Re:CVS / RCS - the next step? by Aapje · · Score: 1

    Named parameters are nice as well, this is an alternative which has its advantages and disadvantages. If I had to choose I would go for the refactoring(s). They are more versatile, encourage improving your code and save some find/replace (well, a lot actually).

    I consider refactoring one of major new OO coding techniques of this decennium (some things might work with procedural programming, but a lot of refactorings are OO specific). If you want to learn more, you should read Ward Cunninghams famous wiki and check out refactoring.com (although it's a bit hard to navigate).

    --

    The Drowned and the Saved - Primo Levi
  307. What's humback notation by Anonymous Coward · · Score: 0

    Do you mean Hungarian notation (which sucks in my opinion).

  308. is the OO bubble popping like the dot-coms? by Anonymous Coward · · Score: 0


    http://www.dreamsongs.com/ObjectsHaveFailedNarra ti ve.html

  309. ML dot net by Anonymous Coward · · Score: 0

    There is actually a .net ML compiler out there. I just attended a talk by Nick Benton last week and it was really appealing. Take a look at
    http://www.cl.cam.ac.uk/Research/TSG/SMLNET/

    Regards,
    Kennie

  310. Just like in #perl -- No homework! by Jaeger- · · Score: 1

    I refuse to do your homework for you, you CS slacker!!

    --
    E V E R Y T H I N G I W R I T E I S F A L S E
  311. On the subject of Silver Bullets by cranos · · Score: 1

    First I just wanna say why is there a sodding great ad for Visual Studio on a discussion about silver bullets???

    Now that I've got that out of my system I'll get on with it. I've been in this game for only two or three years now so I maybe completely out of line here, but I don't think there is such a thing as a silver bullet in the software dev industry.

    Sure we have a wide range of tools some excellent, some just crap. However what it comes down to in the long run is the developer behind the tools. I use a plain text editor for most of my work for a couple of reasons, a) I know what code is going into my app and b) It forces me to know as much as I can about what I am doing. This suits me down to the ground.

    When it comes to languages again there is no silver bullet. Each language has its own strengths and weaknesses. For sys-admin work I choose Perl, for Application level development I would choose C++, for Systems level development C and so on and so on.

    It may just be me but becoming wedded to a specific language or toolset without looking at others is a sure fire way to lose ground quickly in this industry. The only thing that Im wedded to in terms of development is Linux (mind you thats partly to piss off the MCSE guy here). :)

  312. Re:Java and GPL - slower software, less incentives by SirCrashALot · · Score: 1

    QT GUI on Mac/Win/*Nix. And its gpl on mac and unix.

  313. Re:"I'm in a Computer Science degree program"????? by johnnyb · · Score: 3, Insightful

    I think the tech market is very good right now. However, you have to look at it from the right perspective.

    I'm in a tech company that has been growing over the last 3 years. The problem is knowing how to find business.

    Every business wants to automate what they do. Every business wants to operate better and faster. The problem is, most tech companies know very little about how to actually do this, especially how to treat and care for customers.

    Get to know the people and companies around town. Find out what their problems *actually are*. Find a way to fix them, possibly using technology. Present your solution and your price.

    There are always people with problems that are willing to pay for them. What happened in the tech industry are:

    a) it grew so fast, "developers" were in such demand that completely unqualified incompetents were being hired. In addition, HR had no way of distinguishing between competent and incompetent people. This is probably the biggest problem.

    b) Even fewer people cared about actually serving consumer needs. Upgrading to Windows 2000 became more important than making my processes more efficient.

    c) Management finally wised up and stopped doing useless things with technology. However, there is still a demand for useful technology, you just have to be able to justify it to a much smarter crowd.

    d) Management refuses to go along with technology people who can't communicate.

    Tech people are used to being able to just make sales based on the fact that they knew more about technology than anyone else. Now they have to be able to actually help solve problems. I see this as a good thing.

    By the way, solving problems is something that can't be outsourced to third-world countries. It requires personal communication. It requires being able to see technology from the point-of-view of the business owner, and being able to speak intelligently and understandably about them and their problems, and only speak about technology when it's absolutely relevant.

  314. cscope by bob_jenkins · · Score: 2
    The improvements I've seen have been:
    • Cscope to tell me where variables are declared, used and referenced
    • Development environments, merge tools, test suites that allow distributed, concurrent changes to the same files.
    • Google and groups.google.com, for quickly finding answers to any generic question
    • Web browsers for user interfaces
    • Bigger libraries
    • Faster computers

    Some of the other good things (C, debuggers, the Unix command-line interface) were there before 25 years ago.

    Some things have been steps backwards:
    • Long, mixed-case variable names
    • Excessive layers make things bigger, slower
    • Software patents

    And some bad things were already there 25 years ago (unrealistic schedules, buzzwords, complexity).
  315. Re:Java and GPL - slower software, less incentives by cbcbcb · · Score: 1
    I've seen some benchmarks on this. You definately shouldn't use hotspot server unless you have benchmarked your application and proved it faster.

    While hotspot server generates significantly better code, it spends much longer doing it and therefore the execution time is frequently worse.

    If you don't believe me, try compiling some Java programs using javac with each VM. :)

  316. Snappy Answers to Stupid Questions by npsimons · · Score: 2, Funny
    Q: Has software development improved?


    A: No. First we had UNIX, then MacOS, then Windows. If that's not evidence for a decline in software quality, I don't know what is.

  317. Re:"I'm in a Computer Science degree program"????? by spanky555 · · Score: 1

    Why the hell would you be wasting your time even acknowledging a salesman. Not too mention letting one try to "manage" you. allowing such a thing demonstrates a total lack of confidence and assetiveness which adversely impacts ones employment in tough times. When the axe falls, the weak get cut off. You can be the best IT worker int eh world, in a corporation, you still have to demonstrate the traits which a corporation finds desirable in all workers.

    Believe me, I try. I am an exemplary worker, and I can give employers outstanding referrals from former contracts and jobs I've had. I also have plenty of confidence in my skillset..but when your other option is not to work, or work in, say, retail, you will have to listen to even the biggest of idiots, especially if they are "in" with the company owner. Just because YOU have not been placed in this position (yet) does not mean it can't happen to you, and that situations like this aren't pretty common these days.

    BTW: This sales guy was only managing for a short time, and it was a very small company. But he had to be tolerated because he was the buddy of the CEO. One of my co-workers was a complete nitwit, but she would go out of her way to kiss ass, while the rest of us would be actually getting things done, or cleaning up her mess. Guess who's still working, and who isn't?

    Lastly, it's not the weak that *necessarily* get cut first. It would make the most sense in a free market economy if that were the truth, but reality isn't always that way. The brown-nosers stay to the last, I've noticed - the ones who play golf with the CEO/CTOs of the world, not the most competent. That's not to say that some chaff has not been done away at the beginning of this down market, but now it seems to me it's down to nepotists and brown-nosers who are keeping their jobs the most frequently.

    I have worked with several competent people at contracts and I know the skill layouts at those places - the competent got cut, and less-than-able people were kept. It's not cost-cutting, it's more likely to be who is buddies with whom.

  318. The Most Important Thing(tm) by foodforthemoon · · Score: 1

    Successful software projects are not successful because of a particular platform, methodology, or soft drink. It's the people, and how they interact. In my view, success hinges on one thing: the management of expectation. User's expectations of the system and vice versa, management's expectations of programmers and vice versa, users' expectation of IT and vice versa. If communications of these expectations are clear, honest, and consistent, one's chances of success are improved by quite a bit.

  319. Hiring practices by spanky555 · · Score: 1

    All your points are very good and valid ones. However, the only people who can seriously effect a positive change are the people doing the hiring, and doing the "managing". If these folks continue set the bar of excellence by "X years using Y tool/language/methodology", then they will continue to get shitty workers, because even an idiot can stumble along at various jobs doing Y until he reaches X, and it's no measure of his talent, skill or knowledge.

    I've also noticed that people who have fallen backwards into coding are often rewarded for their skills at brown-nosing or the gift of gab (the meaningless how's-the-weather type of chit-chat), and those who are really good at what they do, and can and do help others around them do better, are not always justly rewarded - in fact, I've been reprimanded for helping team members - I was told I "talk too much". In fact, those that are NOT in M0 seem to be rewarded the most, even if most of the team-members really despise working with these types of folks, because of all the crap code they produce.

  320. Software Devs by Anonymous Coward · · Score: 0

    I've recently had a few interviews and found the same old disturbing attitude among developers:

    We think that the lower level our knowledge goes, the better developers we are. We think that by understanding all the gorey details of what goes on under the covers, we improve our value as software engineers.

    Hogwash, I say.

    For all the effort the industry has spent bringing us to a higher level of programming, it is confusing as to why we stick with our low-level eliteist attitude. What has changed my opinion over the years is having worked with:

    1. Database engineers who don't know a lick of C++. They are good at what they do. But do they strive to understand how SQL Server or Oracle was written? No!

    2. User Interface designers who don't know a lick of C++ but can ask the important questions pertaining to usability. Do they strive to understand how the TreeView control was written? No!

    and so on and so on.

    The funniest thing I have encountered was an engineer who could talk for hours on the ins and outs of Unicode. Yet, nothing he produced was globalizable. Another engineer just used best practices and probably couldn't tell you nearly as much about Unicode, but we had an easy time creating globalized versions of his app.

    Go figure.

  321. Re:Java and GPL - slower software, less incentives by ChannelX · · Score: 2
    Yeah....using HotSpot server instead actually was passed along from a friend who had a presentation at his work from some of the HotSpot engineers so I consider it first-hand. Too bad HotSpot server doesnt ship with the JRE :/

    Incidentally IBM has pretty much always had a great VM as well....dont think its available on Solaris tho ;) Certainly works well on Linux and Windows.

    I dont think any of the companies that do native compilers for Java offer trial versions which sucks and they're not cheap either. There are at least 4 companies and each product is better suited to certain types of applications (some server-side...some client, etc).

    --
    My blog: http://jkratz.dyndns.org/~jason/blog/
  322. Re:Java and GPL - slower software, less incentives by Narcissus · · Score: 1

    I have one question: when we all compare the speed of Java to C, are we necessarily comparing the JVM to a compiled C application? How does a natively compiled Java app (through GCC-Java) compare to a compiled C application?

  323. access to books by Anonymous Coward · · Score: 0

    I hope access to books were easier than it is currently. Thanks to the net I can have access to a lot of information for a low cost, but almost none access to the books you mention. Searching in IRC, Kazaa, newsgroups and other ''illegal'' sources you can find easily "learn visual basic in 24 hours", "microsoft word for dummies", etc, but not the truely great books.

    I don't live in USA, so books for me are a lot more expensive. First consider transport cost, but don't forget relative prices. If you live in Boston you can make US$1800 cleaning bathrooms, but here for that kind of job you would be paid around US$150. That makes a big difference when you want to read a US$50 book.

    1. Re:access to books by lars_stefan_axelsson · · Score: 2
      I don't live in USA, so books for me are a lot more expensive.

      Well, there's always the library. Do you have access to one of those? I read Knuth in my high school years via inter library loan. And Brooks as well.

      Now, that I can afford to, I own them

      --
      Stefan Axelsson
  324. Re:Java and GPL - slower software, less incentives by StillNeedMoreCoffee · · Score: 1

    GUI stands for graphical user interface and is a general term not a package/library name.

  325. History by SimonInOz · · Score: 1

    I've been working with computers for 30 years. assembler, Fortran, Pascal .. Java .. it all goes around. Each new generation tends to dismiss the leasson of its predecessors. It's quite funny after a while. But we still come back to the basics. Make libraries (whatever they may be called - classes, even patterns). Use them. Design the system decently but not too much. Test the suckers. Try to get the end users to listen to you and stop changing everything all the time.

    --
    "Cats like plain crisps"
  326. Key Issues? by Anonymous Coward · · Score: 0

    You sure you're not in an MBA program? "Quick and inexpensive" are not the key issues. How about quality and client value?

    c

  327. Static typing. by jameson · · Score: 1
    Well, someone mentioned ML earlier, but to summarize: Proving your programs correct-- or at least "mostly" correct (it's hard to prove that you have applied a function of type 'int -> int' exactly the right amount of times if you can't specify what that is) has helped a lot. Anyone who has used ML or Haskell for anything serious will probably be able to attest to how hard it is to have bugs in these, when compared to weakly typed or dynamically typed languages like C, C++, Perl, Python, Java. Haskell even typechecks for side effects (and has second-order types, or "type classes", which SML/NJ is lacking), which helps even more.

    The advantage of type systems is that it is, in general, easy for programmers to figure out what kinds of things they expect ("This will be a name/int tuple... the next is either a function from int to int to int or nothing..."), and reasonably easy for compilers to infer the rest (so you can annotate your code and the compiler figures out where you're wrong-- and if you don't annotate, it'll still be able to figure out that you're wrong, just not quite as precisely where). I've now arrived at the conclusion that a programming language is worth using (as opposed to investigating) if and only if it does static type checking (with parametric types); that's just my opinion, of course.

    Other advances have been in garbage collection (not having to worry about freeing your memory, manually keeping refcounts etc. is a major time-saver, prevents memory leaks, and keeps your code cleaner and more readable) and formal software engineering (e.g. done in VeriFun,
    this allows you to formally verify that, given the semantics of your program, a certain statement holds-- while Hoare triples (as used e.g. in Eiffel) are somewhat useful, they're not quite as powerful as this.

    So, if you want to write good software:

    • Use statically typed systems
    • Use garbage collection
    • Formally prove your programs correct


    You can, of course, do the latter by hand if you don't have verification tools (or don't have them for your language of choice). The big problem with these things is that, while they tend to lead to excellent, readable and reusable code, they're harder to do than quick perl hacks which work 99% of the time and can be done by J. Random Hacker; also, you won't find many good ML or Haskell programmers-- mostly for reasons of legacy and popularism, I guess.

    For reference, I rarely do the three things above. Formal correctness proofs are non-trivial, and the problem with statically typed languages is that it's (a) hard to find good libraries for them, because (b) very few other people use them (usual chicken-and-egg problem, I guess) and (c) most of my own legacy code is in those weakly typed languages, so I'd have to re-implement big chunks of code. If we're lucky, we'll one day see C and C++ and Java and Python and Perl die out, and everyone will start using statically typed languages, formally have their programs verified etc. If it happens, it'll be years away, but I believe that it's worth working towards this goal.
  328. Only recently, not during 1983 - 1998 by NZheretic · · Score: 2
    AC Wrote: "There are plenty of Common Lisp tools (IDEs, web servers, utilities, etc.) available at reasonable prices or free: Allegro Common Lisp "...

    Common Lisp vendors, including franz missed the window of oppertunity during the impressionable years from 1983 to 1998. Even with making the tools readly available to universites, the commercial and per-seat licenses where expensive even incomparison to IBM's offerings.

    1. Re:Only recently, not during 1983 - 1998 by alispguru · · Score: 2

      Common Lisp vendors, including Franz missed the window of opportunity during the impressionable years from 1983 to 1998.

      You may call those years the "window of opportunity" - another name for them in the Lisp marketplace is "AI Winter". You know, the period when AI overpromised and underdelivered, and Lisp took a lot of the blame for it.

      If there's any justice in the world, we'll see "XML Winter" in a few years, when the Semantic Web fails to solve the exchange-any-data problem, and Java will take a lot of the blame for that. It would only be fair, after all...

      One can second-guess Franz's business model, but they're still in business selling a high-quality product. It's hard to argue with longevity.
      --

      To a Lisp hacker, XML is S-expressions in drag.
  329. Coding Improvements? by complexmath · · Score: 1

    Try none. Intellectual property laws have effectively hamstrung software engineering as an industrial process. While this may be great from a programmer's perspective (income potential and job security), it's detrimental to the industry as a whole. I've even run into situations where I've been unable to bring standard utility code with me from one job to another because the companies I work for are afraid of a lawsuit.

    You have to accept the fact that the software industry is still it infancy. We're still working on a development process that allows for true compoment interchangability and programming by design rather than direction. The software industry is the same place now as it was 25 years ago. It's much like metalsmithing shortly before the industrial revolution. Everything is hand-crafted and trade-secrets are jealously guarded by companies, while programmers/journeymen are encouraged to attribute their skills to their company and not to leave to work anywhere else. Finally, basically no effort has been made at anything resembling component interchangibility (see: "intellectual property laws"). While mechanical engineering may have long since settled on the idea of basic compoment standards (you can go to any hardware store and buy a replacement screw for that thingamabob at home), only passing attempts have been made in the software industry and this only by a company who wants to sell their new "component solution."

    This is one area where open-source software has the potential to fundamentally change everything, but until there's a way for programmers to make a living developing OSS, the change will be long in coming. Ultimately, companies may start to realize that jealously protecting knowledge/code isn't necessarily in even their best economic interest, but until then we have a future of hand-crafted software to look forward to. After you've re-created the same wheel 10 or 15 times it starts to get old. It's much more satisfying to be able to focus on the high-level problems without mucking in the minutae. IP laws may have been created to protect investment and thereby encourage innovation, but their actual effect is exactly the opposite.

  330. down on "refactoring" by Tablizer · · Score: 1

    Named parameters are nice as well, this is an alternative which has its advantages and disadvantages. If I had to choose I would go for the refactoring(s). They are more versatile, encourage improving your code and save some find/replace (well, a lot actually).

    Named parameters is to *avoid* find-and-replace.

    I consider refactoring one of major new OO coding techniques of this decennium

    I actually consider this "refactoring" push a *failure* of OOP, or at least a bad idea. Rather than trying to avoid the Code Change Gods, it is giving into them big-time. I don't get it.

    1. Re:down on "refactoring" by Aapje · · Score: 2, Insightful

      I'm sorry for my late response, a virus penetrated my firewall and set the automatic defense system in motion: increased priority to the 'White cell' service at the expense of the Intelligence app.

      Named parameters is to *avoid* find-and-replace.

      Yes, I know. But the effect will probably be substantially smaller than using refactoring(s). My point was more that they don't exactly overlap, refactoring can do much more than named parameters and also a bit less ( named parameters can be arbitrarily ordered, may increase the readability of function calls and allow functions with the same name+parameter type(s) ).

      I actually consider this "refactoring" push a *failure* of OOP, or at least a bad idea. Rather than trying to avoid the Code Change Gods, it is giving into them big-time. I don't get it.

      I guess you don't like Extreme Programming then ;) The problem with avoiding change in your app is that you get code rot. The real world changes while the code stays the same. You add local hacks to support feature X, Y and Z, messing up your code. Changes become harder and harder to make. You start to get massive code duplication and (unnecessary) interdependencies. Your resistence to low-level change catches up with you because you are now forced to make all kinds of wide-spread, buggy hacks just to support the features that your customer really need. Finally you throw out the mess and start again.

      XP tries to avoid this as long as possible by making it much, much easier to keep your code up to date. Many of the XP rules support this:
      - no ownership of code
      - no clever tricks, KISS
      - rigorous unit tests
      - only create the code that you need now
      - integrate often
      - refactor regularly and in small steps

      Having unit tests for just about everything is a very important rule in this regard. It gives you confidence that you can change the implementation without changing the functionality. This allows you the maximum amount of freedom. You keep the code lean and mean. The design evolves along with the addition of new features. You won't be prevented from making necessary changes just because it's 'too hard to do' (which happens in real life - a lot). I understand why it is hard to grasp, this goes against the engineering principles that you where taught: gather all requirements first, make a detailed design, etc. Of course, we all know that the world doesn't conform to the waterfall model and that software is especially prone to changing requirements. There is only so much you can do to reduce the effects of this threat. Instead of fighting it, XP embraces this law of nature (which makes it very effective for some projects). Refactoring is an important part of this strategy and I don't see why you consider it pushing a failure. Is procedural programming immune to code rot and changing requirements? Is any programming paradigm?

      --

      The Drowned and the Saved - Primo Levi
    2. Re:down on "refactoring" by Tablizer · · Score: 1

      I guess you don't like Extreme Programming then ;) The problem with avoiding change in your app is that you get code rot. The real world changes while the code stays the same. You add local hacks to support feature X, Y and Z, messing up your code. Changes become harder and harder to make.

      Constant refactoring and good unit testing is a lot of work. Most managers don't seem to want to spend now to reduce problems later. Some say it is short-sightedness, others say it is the widely-accepted investment accounting principle of "time discounting" applied properly.

      An interesting, but long debate that topic is.

    3. Re:down on "refactoring" by Aapje · · Score: 1

      Hacking code and fixing bugs is a lot of work as well. Defects that are not detected during coding will usually cost much more to remedy later on. You can often actually decrease the schedule (up to a point) by focusing on quality. In addition, the nasty consequences of low quality are hard to quantify beforehand and usually come up at an inopportune time (at the end of the project). In real life, projects & people are usually evaluated by their adherence to the schedule. A project that promises to complete in 8 months, but lasts a year, is usually considered a failure. The same project might be considered a succes if the plan was 13 months and the project finished exactly on time. That means that a smart project manager might even want to trade speed for a reduction in risk.

      I could go on and on, but my prose is hardly as enjoyable as McConnell's. I suggest you read Rapid Development. He goes into this in much more detail than I can and he has the references to back up his opinions. The book is very practical and the author calls OO a fad (it's an old book), so you might like it ;)

      --

      The Drowned and the Saved - Primo Levi
    4. Re:down on "refactoring" by Tablizer · · Score: 1

      Hacking code and fixing bugs is a lot of work as well. Defects that are not detected during coding will usually cost much more to remedy later on.

      It is a matter of balance. The "discount future" rule of accounting *is* applicable IMO, regardless of how unintuitive or dishartening it may seem.

      I am not saying ignore future maintenance, just don't get wrapped up in it. A good developer can make good compromises between the extremes and still finish on time. Bring the significant tradeoff issues up with the customer or boss, and let them make the final decision.

      For example, I was working on a project where status codes for items seemed like they might increase. To track the number of sub-items in a given status category, the original schema had a slot field to put the count for each status. It seemed to me that if a new record (row) was created for each status then it would be easier to add new statuses in the future, but it would complicate the design. I brought this up with my boss, but it was voted down. So goes it.

    5. Re:down on "refactoring" by Aapje · · Score: 1

      It is a matter of balance. The "discount future" rule of accounting *is* applicable IMO, regardless of how unintuitive or dishartening it may seem.

      There is quite a bit of evidence which suggests that most projects are on the low end of the quality scale, where focusing on better quality still has a (very) good ROI. I don't think the discounting rule applies though, one of the rules of software development is that late changes/defects cost much more (instead of less). Perhaps we are dealing with deflation. ;)

      I am not saying ignore future maintenance, just don't get wrapped up in it. A good developer can make good compromises between the extremes and still finish on time.

      There is a natural tendency to do 'productive' work and skip testing and QA. One of the steps towards becoming a good programmer is too understand these tendencies and to replace them with rational decisions. Saving a bit of time during coding which both increases your schedule and reduces the quality is not a wise thing to do, but it does happen in real life (a lot).

      Bring the significant tradeoff issues up with the customer or boss, and let them make the final decision.

      Exactly. The problem is that they usually don't know what's good for them. It can be very hard to convince a boss/customer/marketeer that a set of features will require at least a certain amount of time to build. Most programmers already estimate far too agressively and then let themselves be swayed to accept an even shorter deadline. This results in crappy software that actually takes longer too build because of all the extra effort (rework, bug-fixing, spending time on finishing touches long before shipping) and it has a lot of negative effects on programmers (long work hours, burnout, always falling short). A good technical lead will not fall for this trap and is able to achieve true win-win situations for everyone.

      But again, the book is much better at explaining all this. I recommend it heartily.

      For example, I was working on a project where status codes for items seemed like they might increase. To track the number of sub-items in a given status category, the original schema had a slot field to put the count for each status. It seemed to me that if a new record (row) was created for each status then it would be easier to add new statuses in the future, but it would complicate the design. I brought this up with my boss, but it was voted down. So goes it.

      Your example is a design issue, it's not so much about quality. You wanted to spend time that will only repay itself when a certain feature is added in the future. Paradigms like Extreme Programming are based on the assumption that the "discount future" rule is very strong for functionality that you build for the future. Only 10% of that pre-work will actually be used and having clean code will make your code much more maintainable (they also say that you should always use the simplest design that supports all requirements), so you are usually better off by leaving it out. Even if you need it later, adding it to a clean design isn't that difficult.

      --

      The Drowned and the Saved - Primo Levi
  331. Re:He's a Karma whore vying for a few extra points by spakka · · Score: 1
    s/whose/who's

    my grammar is retarded

  332. Making Babies by DaveAtFraud · · Score: 2

    The joke when I worked for a large aerospace company went something like this:

    Generally, when people want to make a baby, one woman gets pregnant and you wait for nine months. Low and behold, after nine month and assuming nothing goes wrong, you have a baby.

    Software development managers seem to be of the opinion that if you get nine women pregnant and puts lots of schedules on the walls and yell and scream alot that you can then produce a baby in one month. No matter how many times this approach fails, development managers refuse to give it up.

    In their defense, I will say this company learned the "mythical man-month" lesson and stopped adding developers to late software projects. Instead, their approach was to add additional managers so there were more managers posting schedules on the walls and yelling that the project was late. I guess in some ways this approach really did work a little better since it got them around the adage that adding more developers to a late project only makes it later. Unfortunately, the additional managers all usually wanted status reports so the developers wasted more time writing status reports for the additional managers which still ended up making the project later.

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
    Ben
  333. Why OOP and other leveraged practices fall short by Anonymous Coward · · Score: 0

    Something that people seem to forget is key, to quote a friend "software is made by people". People are inherently imperfect, as is code. Do not get me wrong, there is good code however in nearly every application there is something that could be improved.

    Not many people would argue with that, and I think that this is key to why OOP isn't all that its cracked up to be. Essentially you are using code, undoubtedly written by a genius, as a block into your code. This component will be a little less stable than the previous one as more inaccuracies, redundancies, leaks, and unexpected behavior are introduced.

    The whole process happens again and again until you have your application. This application is now bloated due to it containing reusable components that are general enough fro you to use however contain more features than you need. At the same time causing your code to be very shaky due to the sheer number of layers that it contains.

    People are not perfect, and these imperfections only multiply exponentially as OOP and such practices are used.

    Not a new concept by any means, but something that seems to apply very well to this discussion.

  334. the triangle of output by Anonymous Coward · · Score: 0
    quality, speed, price... while many (including some here) have said "pick one" I have found that it is very popular in the Defense Industry to pick a resounding "D" for "None of the Above."

    Granted there is the CMM levels, but again words mean nothing if not applied as intended (or just say that unenforced policy is just words). Many places I have worked at enjoy spending your tax dollars on bullshit while the actual product is seen as secondary. They wrap them up in fancy names then politely make excuses for gross negligence but the result is simply a broken system that does not deliver and that cost millions to "create." To solve this problem the government and the big contracting firms take the ethical road and improve the process... HAHAHAHA, gotcha! No, what happens is that policy is set forth to force that system down the throats of users regardless of what the results are. Basically all the bad that can come of standardizing but none of the good.

    there are hackers, then programmers, then developers then engineers... these are not ranks and levels as much as different roles. However those become mere words when not understood and applied through intelligent and consistent policy and procedure. UML can be a horrible buzz word or it can be a great way to standardize representations. OOP can be a great way to abstract and reuse code or it can be just another nightmare of security and overhead. Remember that the best system in the world is nothing if used by monkeys, of which most modern management seems intent on setting as the standard for software development.

  335. College assignment by subStance · · Score: 1

    Is it just me, or does this sound like a college assignment that some professor gave out, and only one guy in the class had the balls to post it to Slashdot for research ?

    --
    Servlet v2.4 container in a single 161KB jar file ? Try Winstone
  336. Re:Java and GPL - slower software, less incentives by arb · · Score: 2

    First off its C....not c. Secondly you can't make that claim.

    The poster was right - it is c. c is the speed of light, and as we all know, nothing can go faster than that, so it follows that Java is slower than c.

    8-)

  337. Java == Productivity, Professionalism to come by Anonymous Coward · · Score: 0

    I am CTO at an internet software company. I have worked in all kinds of environments, from COBOL on an NCR mini to FORTRAN on a Cray, and I have to say that Java has been a revelation. We do our core product in it, and all we have to do is write the application code - need a hashtable? No problem, just call the library. While I think people should understand how the tools they are using work (which VB kids often do not) having tools rocks.

    The key challenge that still hasn't been addressed is that 90% of the people writing software are still amateurs, in the sense that they do not have a computer science education. Just as you expect a bridge designer to have a degree in structural engineering and some postgraduate certification, the software industry will necessarily go the same way if it is to be successful. That doesn't stop you from putting up your own tool shed in the back yard (c.f. little toy db with MS-Access, quick Perl CGI, etc.) but the core industry churning out code on which $tn's of our economy relies needs to turn professional - let alone safety critical stuff like ABS controllers and ATC.

    1. Re:Java == Productivity, Professionalism to come by jmcfadden · · Score: 1

      QUOTE: The key challenge that still hasn't been addressed is that 90% of the people writing software are still amateurs, in the sense that they do not have a computer science education. I don't disagree with this, but if your are a CTO.. you sound really naive. Code monkeys can handle 90% of the "coding" required for typical corporate applications. This notion that you need hard core programmers (and btw, COBOL and FORTRAN are code monkey tools,just a different era) to program Excel spreadsheets for the marketing department is foolish and a waste of money. BTW, my dick is bigger than yours.

  338. Big Blue Box's Satelite system by Ianworld · · Score: 0

    I'm not much of a programmer so i can't comment on actual programming improvements but one common thread i saw was that large libraries of code has been a huge boon to development. Big Blue Box has developed a system of organizing its seperate projects. (They develop computer and console games) Each project or brandname product they have gets spawned as a small group or satelite company. The first example was that they have spawned off their Black & White studios to work on that game line.

    How they use this is called the satelite system. Every month the seperate companies/groups meet and share their ideas and what they have done with each other. They can get the viewpoint of many different developers that way. They also can share code between them. One example was that one group developed some awesome water effects. (looks damn close to real water) They all now have access to the great water renderer. Sharing code like this allows less programers to create more together. Its the same idea as having large online libraries of code at your hands. (another advantage to this system is that it is easy to intergrate a new small team of developers and give them access to large amounts of code to get started.) I can see this as a method that will take off in the near future.

    Now all i have to do is to train my sheep to sort through my spam...

  339. Actually, Customers are the problem. by Anonymous Coward · · Score: 0

    Which just goes to show how some people like to think everything in the world is *somebody elses* problem. ;)

    Programmers are not the biggest problem - CUSTOMERS are. You wouldn't buy a car if they welded the hood shut and tried to throw you in jail for working out what was under the hood? Yet you *will* buy the swill some people call software and claim it is any single companies fault for providing exactly the cheapest product the market will support (since anything less will get them undercut by someone who is willing to publish crud).

    There /will/ be a silver bullet in the next few decades, it's called EDUCATION and MATURITY. Once people begin to understand the full ramifications of computing (just as ram-raiding is one of the ramifications of automobiles) then people will start developing a more mature approach to buying computers, which means the industry will either improve or get regulated once groups of people are actually willing to vote on that issue alone.

    Unless of course you can think of any single entire industry which *independantly* decided to improve itself for the good of humanity? ;)

  340. Re:Java and GPL - slower software, less incentives by Anonymous Coward · · Score: 0

    Java like any object-oriented language is difficult for an expert C programmer to learn. It is not difficult because it is better or worse but because the development process is completely different. If you are an expert C programming a lot of what you have learnt/understand to be true about software development will be wrong or will not apply. Many things you consider unimportant are very important when you go to object oriented development. It is actually much harder to change from the functional -> object-oriented paradigm then to start from an object-oriented paradigm. This is why so much bad object oriented code has been written i.e. why Java is slow. If you can't write fast Java code you don't understand or are unable use the object-oriented paradigm. If you persist and learn your programs will become faster and more robust.

    Complexity is a bit of an illusion, the standard C library is complex but once you understand it you can make massive reductions in the complexity of you programs. This is the same with standard java classes. There are a lot, but with them you can make massive reductions in the complexity of your code, with the added advantage that the standard java classes are already documented and well tested, which reduces your work. It also allows you to defer many decisions till later in the development. e.g. will it be an array or a linked list, or should I determine this at runtime.

  341. [OT] You only charge $20/hour? by Disco+Stu · · Score: 1

    I just took a look at your website. Judging by the books you've written, it seems like you're skilled. I can't believe you're only charging $20/hr for consulting services... how do you eat?

  342. Oh, lovely by 0x0d0a · · Score: 2

    I know some people use languages in which programs can be proven to work like ML

    Oh, the languages can be proven to work, eh? When you produce a compiler that can prove that your *arbitrary* program ever stops, much less does A, B, or C, come see me, because we'll have tons of fun turning the entire mathematics and computer science worlds upside down.

    If you just mean human-provable, and only for small non-arbitrary programs, that's quite doable with C or any other language. ML makes it slightly more structured, which is convenient, but doesn't give you anything that you couldn't do with C.

  343. Re:Java and GPL - slower software, less incentives by SirCrashALot · · Score: 1
    I missed a br. It should say
    QT
    Runs on Mac/*nix/Win
  344. OCAML software by 0x0d0a · · Score: 2

    Let me prepend this by saying that I really do not like ocaml or other ml languages, but if you're into functional languages, you may like it. There are some things that are done right, like a very strong type system.

    Unison, a file-sychronization tool, and MLDonkey, a P2P client that supports just about every significant P2P protocol out there (except the closed version of FastTrack) are both written in ocaml. That's all I know of, though.

    Give me something like ocaml but without type inference (most annoying invention of all time) and not a functional language (sorry, just don't think that way), and I'd be pretty happy. It's about the fastest safe language out there, followed closely by eiffel.

  345. Re:Java and GPL - slower software, less incentives by khuber · · Score: 1
    Have you tried the concurrent GC?

    -Kevin

  346. Re:Adv for Executable UML by Anonymous Coward · · Score: 0

    Is this supposed to be an adv for Executable UML. It does exactly this.

  347. Ceding Control to Software Dev Companies by smagruder · · Score: 2
    We seem to be running in circles and every loop around seems to require a toll at the Redmond Toll Booth.

    In a tangential manner, you've hit upon what's the real problem. As long as software developers cede their craft and their profession (and their sanity) to the market desires of big software development companies rather than what's best for computer science, these stupidity cycles will continue dragging us all round and round and round. It's high time for a powerful programmers' guild that not only takes on poor software development management, but also software development companies that push their own selfish/myopic agendas over what's technically/financially best for the organizations we work for.

    --
    Steve Magruder, Metro Foodist
  348. Re:"I'm in a Computer Science degree program"????? by Annoyed+Coward · · Score: 1
    The truly brilliant programmers are few. And pretty expensive. But they're well worth it.

    Yes. And most of them are from India. ;)

    Wake up man. :-D

    --
    Hmmm... Ok.. Chivas on the rocks.
  349. Re:Java and GPL - slower software, less incentives by Anonymous Coward · · Score: 0

    Server side java (I sneer at your capitalization), is not extremely fast, it is extremely adequate on modern hardware for low volume websites. You'll have quad processors with a gig of ram before it even comes close to the ability to handle the load of a pentium 2 with 128 megs using a lowly interpretated language like perl, and once you start to scale (load balancing, clusters, caching), java really falls behind a native solution. It's only because it runs on bigger hardware than many apps, and that there is more enterprise infrastructure, cheaper that java has any success.

    And I like java. Because I'm not good enough to be a good c programmer.

  350. Re:Java and GPL - slower software, less incentives by code_martial · · Score: 1
    loss of performance with the current obsession on over-inheritence and Java-style interpreted/P-code software overall.

    Most companies see the small performance loss from using object oriented languages does not compare to the loss in man hours maintaining non-OOP code.


    While this is true, it does not invalidate the point that there is a general obsession with over-inheritance, especially among novices. Overuse of inheritance also leads to situations where code flexibility is reduced or the implementation becomes quirky.

    I prefer to use switches where I see no significant benefit in capabilities with inheritance and I can assure myself that:
    • the switch will occur only in 1 or 2 places in the code.
    • the code that goes in the switch is trivial and easy to track.

  351. Re:Java and GPL - slower software, less incentives by Anonymous Coward · · Score: 0

    except that a vm will never be as stable as the native os, even with a perfect vm, there'll still be bugs in the os that it exposes. Oh, and java has a very long way to go before memory is handled as efficiently as it could be.

  352. Re:Java and GPL - slower software, less incentives by Anonymous Coward · · Score: 0

    there's the rub. Caching isn't really a good option in java, because it is such a memory hog, and because allocating and deallocating is so inefficient. PS. JWT isn't java, its an interface to native toolkits.

  353. Re:Java and GPL - slower software, less incentives by joeljkp · · Score: 1

    Concurrent GC? What's that?

    --
    WeRelate.org - wiki-based genealogy
  354. Re:CVS / RCS - the next step? by whereiswaldo · · Score: 2


    My dream system would be something like what you've said, except the functions would be stored in a language-independent manner (okay, Perl's probably out). When you need a function, 'fvs' would generate code in the language of your choice.

  355. correction by Anonymous Coward · · Score: 0

    Remember Genera, or the other LispM OSes?

    Those operating systems were written in Lisp to about the same extent that, for example, Linux is written in C, that is, about everything except some assembler parts was Lisp.


    In fact the whole point of the Lisp Machine and its derivatives was exactly that the assembly language was Lisp. Certain instructions and data types were directly supported by hardware. Others were trapped and handled by an implementing routine, microcoded using the directly supported instructions. In this respect the Lisp Machine OSes were much like modern Lisp family languages: In those languages, the interpreter or compiler supports a subset of the language directly and the rest of the language is built using those primitives. In a Lisp Machine, a subset of Lisp is supported directly and the rest is built on top.

    Exactly the same language was used for the entire O/S, all applications, and user level scripting in a Genera system. Maybe someday when Star Trek comes true, such a wonderful system will again be available.

  356. Re:Java and GPL - slower software, less incentives by khuber · · Score: 1
    There are two new garbage collectors you can use starting with JDK 1.4.1. The Concurrent GC may reduce the pauses. The switch is -XX:+UseConcMarkSweepGC. I have been using the parallel one (-XX:+UseParallelGC) with good performance results on server programs.

    Here's more detail:
    tuning JVM v1.4.x+

  357. Re:Java and GPL - slower software, less incentives by Viol8 · · Score: 2, Funny

    Any good C programmer would have done OOP in C (maybe without knowing it) before he switched to a "proper" OO language. Some aspects of OOP are easy in C , eg by using function pointers in structures to mimic methods and inheritence. The problem learning OOP languages is more due to their appalling design and syntax, I mean was Bjarn on drugs or something when he came up with the C++ template syntax?

  358. Wow, is that what programmers do? by Anonymous Coward · · Score: 0

    You guys must be geniuses or something.

  359. Java can go faster than C++... by Thalia · · Score: 2

    It's probably way to late to bring this up, but, yes, Java can and probably will beat C++ performance. There are two basic reasons:

    First, Java byte code operation is specified completely. This means that is a calling tree never calls any sort of native method implementation, the optimizer can play 'fun with graphs'. This gives the optimizer the oportunity to use tricks like non-blocking I/O, and aggressive inlining. Most importantly, it allows register optimization across method calls. In C/C++, optimizing across method calls runs afoul of odd and random pointers.

    Second, Java can reoptimize based on current runtime usage pattern. Imagine a banking transaction program that processes a million checks and deposits. Cashing a check involves looking up the account, withdrawing the money, applying overdraft, etc. In reality, 99.99% are correct without overdrafts. The Java optimizer rewrites the code as 'look up account or panic, then subtract check amount from account leaving a positive balance or panic'. The program is shorter and can make better use of registers in the usual case, and the 'panic' means to unwind the optimized code back to the Java byte code. This beats C++ when you do a million checks followed by a million deposits.

    There really is a much larger theoritical cieling for Java optimization. It comes with the cost of stepping back from the hardware.

    1. Re:Java can go faster than C++... by Glock27 · · Score: 2
      It comes with the cost of stepping back from the hardware.

      I read "benefit" where you say "cost".

      It bears mentioning that its quite trivial to call C/C++/whatever routines from Java. In the vast majority of cases, the overhead is acceptable. You lose portability, but that is the price of being tied to the hardware that closely (or of using that legacy code). You still get all the benefits of Java elsewhere in your application.

      The gcj compiler also shows some promise. Its interesting because its a traditional ahead-of-time compiler, and it provides a very thin calling interface for C++. It is being targeted (as I understand it) primarily at embedded applications.

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
  360. 2x ?1? by Anonymous Coward · · Score: 0

    You'd change compilers for a 2x improvement in speed? You'd get that in better machinery before you could get really proficient on the new compiler.

  361. A language is as good as its libraries... by Richard+Steiner · · Score: 1

    Give me a good set of comprehensive libraries, and I can create solutions in Fortran VERY quickly.

    Perl is nice. I'm in the process of learning it myself. But don't give it too much credit.

    --
    Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
    The Theorem Theorem: If If, Then Then.