Ask YC: Will software development ever be so cheap, that we will waste it?
Basically is anyone of the opinion that we will ever be able to create software development methods which are significantly (orders of magnitude) more productive than what we have now? And if so, will we ever reach the point where users/customers/clients can have very capable and sophisticated custom made or customized applications for a price that warrants "wasteful" or "trivial" (for trivial reasons) software development?
34 comments
[ 2.9 ms ] story [ 93.1 ms ] threadI think it doesn't matter to much what method you use just as long as you have excellent communication between client and the end development team.
Think beyond agile and other current cutting edge methods. What I'm really asking about is will software development ever become so productive that significant, useful applications could be created for such a low cost that "throwaway" one-time development that occurs only to take advantage of fleeting opportunities or needs is fairly common and is not considered "extravagant" but rather a smart thing to do?
Take a simple calculator application for instance. If you asked a team of engineers to build one in 1950 they would consider it hard but possible given some months of work programming their punch-tape spewing tube-filled constantly overheating monster of a computer. Now it is considered trivial.
In the future it will probably be as simple to build what we consider a complicated application as it is for us to program a calculator application. But the only thing that has changed is that the bar has been moved up a few notches.
They call it progress.
2) When you put the invisible hand at work, if developing software of type X becomes too easy, there will be a surplus of X apps, so it will get unprofitable and people with good software development skills will start pushing the envelope and invent Y apps, etc. Because every piece of software depends on another one, the software that interacts with Y apps will also need to advance, so it's an infinite loop, if you will. :)
In engineering land, we continue to get better tools for building certain type of applications. Ruby on Rails has shown us the benefits of constrained thinking. A blog in 10 minutes! But Rails only excels at building one type of application, standard fare web apps, with loads of standard database-driven tables/forms.
It's very very hard to generalize programming. We have a long way to go still. Software gets the job done today, but often, it's not pretty and often fights against the user.
Users would put up with this for about 10 seconds before just grabbing the mouse and dragging things where they want them.
I think that's why voice interfaces have not become popular. PC applications tend to be developed for a direct manipulation (window, icon, menu, pointing device) paradigm, so adding a voice interface doesn't help much. A useful voice interface requires an entirely new UI paradigm.
I think this would require natural language processing far better than what we have now and great deal of contextual knowledge as well as a great deal of "common sense" built into the software (agent? interpreter?). Mice and keyboards remain easier to work with.
It's much nearer than you expect.
It may not be agile or maybe it's the extreme of agile.
Our finance guys started using the scripting language just 6 months ago.
The requests are drying up from them as well...
None of the script would pass even basic IT standards, but they work. And they only have to work once. Answer the immediate question. They don't care if it takes 1 min or 8 hours.
It's not pretty, but it is disposable code with no IT involvement.
We do the HOW.
They determine the WHAT.
Doesn't matter how efficient we get at doing the HOW until someone figures out how to get more efficient determining the WHAT.
All of us (users, hackers, managers, entrepreneurs) are so bad at determining the WHAT that we don't even try anymore. We build something "close" and we iterate until it's "close enough".
Until someone comes up with a methodology or technology for tying down the WHAT into a rigorous functional spec, I wouldn't worry about anything becoming too cheap.
I prefer to say:
SUCCESS = WHAT * HOW
Neither can approach 0.
Regardless of performance increases, sometimes more powerful abstractions appear anyway. e.g. the relational database, Amazon S3, the git filesystem.
Better abstractions are what makes us more productive, not methodologies.
Will we ever be able to create abstractions or systems of abstractions that make software development significantly (orders of magnitude) more productive than what we have now? And if so, will we ever reach the point where users/customers/clients can have very capable and sophisticated custom made or customized applications for a price that warrants "wasteful" or "trivial" (for trivial reasons) software development?
The only question I wonder is how long before software development as we know it becomes no more intrinsically difficult than other forms of expression (e.g essay writing, public speaking, etc).
The canonical essay on this topic, is Fred Brooks: No Silver Bullet. http://info.computer.org/portal/site/computer/menuitem.eb7d7...;
His argument, is that there isn't a single programming methodology that creates order of magnitude productivity gains. It's worth a read.
I don't really think that the answer to your question lies in user of programming methodologies. I do think that you can get great improvements in productivity based on tool selection, however. See PG's essays on beating the averages.
will we ever reach the point where users/customers/clients can have very capable and sophisticated custom made or customized applications for a price that warrants "wasteful" or "trivial" (for trivial reasons) software development?
I think it's already being done.
Non-programmers are already using specialized scripting languages like BBS code, or html tags to customize their web pages, forum posts and blogs. People are using Excel scripting to write their own mini financial applications. Graphics programs like Maya, Houdini and After Effects have built in scripting languages for procedural graphics. And, years ago, the Word Perfect word processor was built on the idea of a template language for document layout.
http://pragmaticprogrammer.com/articles/star-trek-and-adapta...
I'm going to put the project on elance, since I obviously have no experience writing programming languages. How much do you want to bet some Indian firm says they can program it for $1,200 in 2 weeks?
At long last, Weinberg said, he finally came up with the argument that got the project killed. It went like this. "Say you have an automatic debugging machine. I could feed it a blank sheet of paper, and out would come the program I wanted. So you'd have to have a mind-reader in there!"
I'll list that on elance too.
Thus everyone reinvents the wheel.
Several people have pointed out that people lacking the word "programmer" in their job description write code to get their jobs done. But what happens when they have two scripts that look similar to them but one finishes in an hour and the other is still running two weeks later? Then you need someone to break out the big O notation, look at the source code for the high level language and figure out what's really happening.
The need for this will continue to diminish over time in most firms. However, for companies that provide software over the internet this will remain very important (make something at Google 5% faster and you're probably saving them a whole lot of money). So, just one more reason to make sure your career does not hinge on getting paid to write software at a place where software is not the main source of revenue.