×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Has Software Development Improved?

Cliff posted more than 11 years ago | from the code-from-today-better-than-code-from-yesterday dept.

Programming 848

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?"

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered

848 comments

lots of love here (0)

Anonymous Coward | more than 11 years ago | (#4758443)

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

the cubicle (-1, Troll)

Anonymous Coward | more than 11 years ago | (#4758444)

The cubicle has greatly improved development and productivity. ...Where's my Swingline stapler?

Euro is gaining ground - in Iraq and North Korea! (-1, Offtopic)

Anonymous Coward | more than 11 years ago | (#4758479)

Hahahahahaha!

Euro is being adapted [timesonline.co.uk] by "progressive" nations like North Korea and Iraq...

North Korea is not the only state to adopt the euro. Iraq said that it would use it to sell oil and has converted its holdings at the UN. Cuba uses it for international transactions and has made it legal tender in the resort of Veradero Beach.

Way to go, eurotrash.

Cheap, Good, Fast - Pick 2 (3, Insightful)

SpaceLifeForm (228190) | more than 11 years ago | (#4758454)

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

Java and GPL - slower software, less incentives... (1, Insightful)

oldwarrior (463580) | more than 11 years ago | (#4758622)

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.

Re:Cheap, Good, Fast - Pick 2 (5, Insightful)

TeknoDragon (17295) | more than 11 years ago | (#4758642)

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)

no (0)

mindserfer (209937) | more than 11 years ago | (#4758460)

no

but pictorius prograph language visual progrmming came close.

Re:no (-1, Offtopic)

Anonymous Coward | more than 11 years ago | (#4758593)

What the hell do pornographic pictures have to do with programming?

Re:no (0, Offtopic)

EnderWiggnz (39214) | more than 11 years ago | (#4758605)

oh come on... dont you think that the whole WWW thing was a way for scientists at CERN to share porn with one another ?

Open source and collaboration (3, Interesting)

tres3 (594716) | more than 11 years ago | (#4758461)

Open and free source and collaboration will become the ruling way that software is developed in all but the most vertical markets. Things like controlling the amount of radiation that is released from a medical device and that sort of things. Everything that has a large consumer base will shift to an open collaboration on free software with all of the freedoms still intact.

Re:Open source and collaboration (3, Insightful)

e8johan (605347) | more than 11 years ago | (#4758599)

I must say (regrettably) that open source does not mean more reliable and better code automatically. The major problem is the lack of leadership, for example a plan of features that is followed and proper design of the GUI. As features are added from multiple sources both the GUI and the code can easily get bloated.

As it is hard to control what features are added, and to get good support I doubt that open source software will take over most large consumer base markets anytime soon.

I'm not saying that there isn't possible (look at Linux) but I doubt it happening quickly.

Functional languages (5, Interesting)

nick255 (139962) | more than 11 years ago | (#4758467)

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

Re:Functional languages (2, Informative)

gnalre (323830) | more than 11 years ago | (#4758594)

I always found erlang(www.erlang.org [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.

Re:Functional languages (1)

Ace Rimmer (179561) | more than 11 years ago | (#4758627)

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!

I haven't programmed much lately... (2, Interesting)

vasqzr (619165) | more than 11 years ago | (#4758468)



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.

Re:I haven't programmed much lately... (0)

Anonymous Coward | more than 11 years ago | (#4758615)

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...

Re:I haven't programmed much lately... (1)

theforest (99345) | more than 11 years ago | (#4758617)


"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.

eXtreme programming.... (0)

Anonymous Coward | more than 11 years ago | (#4758469)

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

Thinking about thinking.. (5, Informative)

kslater (142595) | more than 11 years ago | (#4758482)

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.

WELCOME! (2, Funny)

Anonymous Coward | more than 11 years ago | (#4758486)

Welcome to termpapers.slashdot.org!

CVS / RCS (5, Insightful)

voudras (105736) | more than 11 years ago | (#4758488)

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.

Re:CVS / RCS - the next step? (2, Interesting)

voudras (105736) | more than 11 years ago | (#4758559)

I've been using CVS for some time now - even bought a _great_book_ [slashdot.org] 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.

Re:CVS / RCS - the next step? (0)

Anonymous Coward | more than 11 years ago | (#4758592)

Many people resolve this issue with shared libraries.

Re:CVS / RCS - the next step? (2, Insightful)

feronti (413011) | more than 11 years ago | (#4758635)

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...

Re:CVS / RCS (0)

Anonymous Coward | more than 11 years ago | (#4758570)

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

Progress Balanced By More Demands on Developers (5, Interesting)

John_Booty (149925) | more than 11 years ago | (#4758491)

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.

Re:Progress Balanced By More Demands on Developers (5, Interesting)

sphealey (2855) | more than 11 years ago | (#4758646)

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

The Software Process (2, Interesting)

vikstar (615372) | more than 11 years ago | (#4758494)

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

a few thoughts.... (3, Insightful)

Yoda2 (522522) | more than 11 years ago | (#4758497)

.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.

"I'm in a Computer Science degree program"??????? (2, Interesting)

exhilaration (587191) | more than 11 years ago | (#4758499)

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.

Re:"I'm in a Computer Science degree program"????? (1)

EnderWiggnz (39214) | more than 11 years ago | (#4758531)

IT/APp programming sucks...

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

Re:"I'm in a Computer Science degree program"????? (1)

Anitra (99093) | more than 11 years ago | (#4758571)

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. ;)

Re:"I'm in a Computer Science degree program"????? (3, Insightful)

Anonymous Coward | more than 11 years ago | (#4758584)

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.

Re:"I'm in a Computer Science degree program"????? (0)

Anonymous Coward | more than 11 years ago | (#4758653)

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.

Look at the 90's... (2, Insightful)

Havoc'ing (618273) | more than 11 years ago | (#4758500)

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.

more quickly and more inexpensively? (5, Insightful)

ColdBoot (89397) | more than 11 years ago | (#4758505)

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.

Re:more quickly and more inexpensively? (0)

Anonymous Coward | more than 11 years ago | (#4758618)

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

Re:more quickly and more inexpensively? (1)

EnderWiggnz (39214) | more than 11 years ago | (#4758643)

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...

Best programming tools ever... (5, Insightful)

vikstar (615372) | more than 11 years ago | (#4758508)

The invention of pencil and paper.

Re:Best programming tools ever... (1)

vasqzr (619165) | more than 11 years ago | (#4758545)

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.

speedy programming (0)

Anonymous Coward | more than 11 years ago | (#4758509)

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.

None really.... (2, Insightful)

inepom01 (525367) | more than 11 years ago | (#4758512)

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.

I dunno what world YOU'RE living in (4, Insightful)

CrudPuppy (33870) | more than 11 years ago | (#4758588)

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

Don't know about improvements.... (5, Funny)

platos_beard (213740) | more than 11 years ago | (#4758514)

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

Re:Don't know about improvements.... (0)

Anonymous Coward | more than 11 years ago | (#4758595)

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 [http].

Components and Containers (3, Insightful)

jstell (106681) | more than 11 years ago | (#4758516)

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.

still no silver bullets (5, Insightful)

jilles (20976) | more than 11 years ago | (#4758517)

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.

Best improvements (5, Insightful)

Anonymous Coward | more than 11 years ago | (#4758518)

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.

I can say this.... (5, Insightful)

Asprin (545477) | more than 11 years ago | (#4758519)


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.

Away from algorithms? (3, Interesting)

wiredog (43288) | more than 11 years ago | (#4758614)

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.

Re:I can say this.... (3)

binaryDigit (557647) | more than 11 years ago | (#4758620)

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.

Microsoft? (1)

skirch (126930) | more than 11 years ago | (#4758522)

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.

It depends on what you think is an improvement (1)

BillLeeLee (629420) | more than 11 years ago | (#4758524)

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.

1975 to 2002 is not 25, it's 27 (-1, Offtopic)

Anonymous Coward | more than 11 years ago | (#4758525)

.

1975 to 2002 is not 25, it's 27. Unless you were late getting this stat out, and brought in a few 100 to help you out, then it's not that you're count is wrong, just DAMN LATE!

.

eXtreme Programming == NO (4, Interesting)

MosesJones (55544) | more than 11 years ago | (#4758526)

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.

faster and less reliable... (3, Insightful)

Quazion (237706) | more than 11 years ago | (#4758527)

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.

lowered expectations is the key to success (1)

Smallpond (221300) | more than 11 years ago | (#4758529)


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.

Software improvement in the last 25 years? (4, Interesting)

fungus (37425) | more than 11 years ago | (#4758530)

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 =)

One day... (5, Interesting)

pubjames (468013) | more than 11 years ago | (#4758533)


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".

Very few improvement, and it just gets harder... (0)

Anonymous Coward | more than 11 years ago | (#4758538)



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.

Re:Very few improvement, and it just gets harder.. (0)

Anonymous Coward | more than 11 years ago | (#4758603)

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.

Absolutely! (4, Informative)

Gary Franczyk (7387) | more than 11 years ago | (#4758539)

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)

It improved sneakily (5, Insightful)

mir (106753) | more than 11 years ago | (#4758541)

I have to say (and I know I am preaching to the choir here) that for me the biggest improvement is really Open-Source and how it allows me to re-use existing libraries.

I do most of my work in Perl and the fact that I can call any of the thousands of modules of CPAN [cpan.org] makes all the difference in the World. When I worked in C in the late-80s we could either buy libraries, and have to go through the vendor to maintain them, or build our own, expensive and buggy toolkit. Nowadays I can build really powerful code in a few hours, using the combined efforts of dozens of authors and thousands of constibutors in the form of a few Perl modules.

For me that's the main improvement: instead of being part of a team of 5 people writing mostly memory management code I can now simply focus on the task and do it myself. Quicker, without weekly meeting, and having fun in the process.

Has Software Developement REALLY improved? (5, Insightful)

idontgno (624372) | more than 11 years ago | (#4758544)

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.

Refactoring (0)

Anonymous Coward | more than 11 years ago | (#4758550)

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.

Here's a thought... (3, Interesting)

fireboy1919 (257783) | more than 11 years ago | (#4758554)

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).

Engineers! (2)

snatchitup (466222) | more than 11 years ago | (#4758557)

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.

the proof is in the pudding (4, Insightful)

tps12 (105590) | more than 11 years ago | (#4758560)

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.

Do you like putting lipstick on a hippo? (5, Insightful)

nicodaemos (454358) | more than 11 years ago | (#4758561)

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.

Plenty of Improvements - In a sea of dreck (5, Insightful)

Badgerman (19207) | more than 11 years ago | (#4758563)

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.

No progress .... (3, Insightful)

binaryDigit (557647) | more than 11 years ago | (#4758564)

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.

Good & bad (2)

maiden_taiwan (516943) | more than 11 years ago | (#4758565)

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.

Net Access. (5, Insightful)

slycer9 (264565) | more than 11 years ago | (#4758567)

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.

Interesting article posted by Joel about this... (1, Informative)

Anonymous Coward | more than 11 years ago | (#4758572)

The law of leaky abstractions (Joel on Software) [joelonsoftware.com] seems to address at least one aspect of why this software nirvana has not been achieved.

--Shashank

The Silver Bullet that kills... (1)

Cap'n Canuck (622106) | more than 11 years ago | (#4758576)

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.

Object Technology.. (3, Interesting)

eastshores (459180) | more than 11 years ago | (#4758579)

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.

Re:Object Technology.. (1)

solo_seven (629437) | more than 11 years ago | (#4758663)

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.

The Silver Bullet (3, Funny)

mr_gerbik (122036) | more than 11 years ago | (#4758583)

Coors Light. Its done wonders for my hacking skills. No wonder its called the Silver Bullet.

Available Tools and Libraries are a Lifesaver (5, Insightful)

unfortunateson (527551) | more than 11 years ago | (#4758590)

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.

Metamodel creation and code generation (3, Insightful)

crovira (10242) | more than 11 years ago | (#4758591)

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.

Observations (4, Interesting)

GeckoFood (585211) | more than 11 years ago | (#4758596)

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.

Important Stuff: (0)

Anonymous Coward | more than 11 years ago | (#4758601)

* 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.

nope (2, Informative)

Anonymous Coward | more than 11 years ago | (#4758602)

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 [joelonsoftware.com]) 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.

outsourcing (1)

yo_yo_mr_roboto (615241) | more than 11 years ago | (#4758609)

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.

Is it engineering, or not? (5, Insightful)

gosand (234100) | more than 11 years ago | (#4758610)

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.

Only for yesterday's problems (2)

zanerock (218113) | more than 11 years ago | (#4758626)

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.

Evolution (1)

voudras (105736) | more than 11 years ago | (#4758629)

The next big step you can watch for is true AI, and as Jaron Lanier [edge.org] 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!)

Standard libraries (5, Insightful)

smagoun (546733) | more than 11 years ago | (#4758631)

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.

The problem is... (2)

FJ (18034) | more than 11 years ago | (#4758639)

software has gotten more complex and user expectations have grown at a rate equal or greater than software development tools.

Programming is Still Hard (1)

OneOfThree (599373) | more than 11 years ago | (#4758640)

We certainly have better tools. Things like OOD and UML help us think about our solutions to problems. We have a broader choice of languages with rich capabilities such as C++, Java, C#, Perl etc. We have different ways of organising the way we develop software: RAD, XP, etc. And of course the platforms that we develop on top of are much more capable. In short, we have a huge selection of tools from which to choose depending on the nature of the problem.

But at the end of the day, we still seem to have a tough time writing good code. I think the dot-com bubble, the seductive nature of drag-and-drop IDE's and the capabilities of massive APIs/class libraries have distracted us from the fact the programming is, fundementally, hard. Decomposing a business process, for example, into thousands of lines of code that fit together to properly perform the required task and properly deal with errors, security, concurrency, etc, etc, is beyond many of the so-called professional programmers working today.

My friends in other industries such as management consulting, law and marketing all work under a regular - even regulated - regimine of review. I'm constantly amazed at how many systems get designed and built with nothing but a QA team to assess the correctness and completeness of the work. QA can never find every bug, nor can it assess code readability, maintainability, extensibility as well as a host of other aspects of the design and implementation.

We've created fantastic tools. We have to find a way to create fantastic programmers.

Patterns... (2, Interesting)

Alphaloc (227011) | more than 11 years ago | (#4758641)

have made my OO life a lot easier. Providing developers with a basic terminology that all other engineering disciplines already had. Making it possible to quickly discuss what solution you're going to use instead of how you might try to solve a problem. And those patterns prove to be a nice example of how to think "out of the box" and how even the hardest problems can and should have a nice design.

you were wondering (0)

Anonymous Coward | more than 11 years ago | (#4758649)

Was it you wondering or was it your tutors asking you to wonder in 2000 double spaced words??

There is a silver bullet: Project Management (1)

__roo (86767) | more than 11 years ago | (#4758656)

Ed Yourdon made an excellent point in his introduction to Software Engineering Project Management, 2nd ed [amazon.com]:

I would like to propose that the silver bullet (or bullets if you prefer) exists, and it is software engineering project management. A properly managed project, in a mature software engineering environment, managed by a competent manager, can repeatedly deliver a software system on time, within cost, and satisfactorily to the user. Good project management environments can compensate when things go wrong, for example, adjust the delivery schedule under changing conditions, select appropriate people for the job at hand, provide clear and unambiguous direction, monitor progress and job completion status, and take the appropriate action when controlling metrics indicate plans are not being followed.

In my experience, the Capability Maturity Model [cmu.edu] is a very effective tool for helping to create that mature software organization in which solid project management can thrive. For example, I was able to apply parts of the CMM to the company I work for to reduce our release cycle 45%, from 27 months to 15 months. Neil Potter and Mary Sakry found a good way to use the CMM (as well as standard software engineering and project management techniques -- and common sense) to improve an organization in such a way that it meets the business goals and causes the least amount of friction. It's laid out in in ther excellent book Making Process Improvement Work [amazon.com].

Project management and process improvement together are the silver bullets that can give a software organization the ability to produce software on-time, on-budget and in-scope.

Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account

Loading...