The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Web Application Development Is Still To Hard

Currently, successfully developing even a modestly complex web application typically requires a full time, professional, experienced, technical development professional.  This makes development expensive and limits the amount of application ideas that are actually implemented.  Development can be outsourced or freelanced, but this introduces many of its own problems and hidden expenses.     
    I propose that a radically simpler development environment is therefore needed.  This environment would abstract away technical details, allowing the developer to work in a simple and intuitive IDE and to build the application by specifying its functionalities.  Above all, this development tool “would just work”.
    It would allow a single individual with a solid knowledge of programming in general, but no particular experience with the underlying back-end technologies, to implement a powerful, fully featured web application.  Essentially, if someone seeking to implement a web application could provide a user interface design and graphical skin and specify in pseudo-code what the application does, they should be able to painlessly and straightforward implement their idea.  I envision this software doing for web applications in general what Blogger, TypePad, WordPress et al. have done for blogging.
    The firm that provided this environment would make an obscene amount of money.  Many people would pay a lot of money for the development software because it allows them to jump into the exploding web application market and to do so without investing time in learning technical skills that would soon be rendered obsolete.  Also, such an environment would allow people who are more business-oriented or otherwise more focused on market needs than implementation details to develop web applications.
    This radically simplified development environment would open web development to a larger and more diverse group of people at a lower price and with less risk, spawning a correspondingly diverse suite of new web applications. 
    I’m curious to hear what the community thinks about this idea.  I’m also interested in hearing how you would respond to this prompt: “I am a non-technical individual who has an insight about an unmeet software need it the specialized domain space that I work in.  What would be the best way for me to go about getting a web application developed to meet that need?”
Mark McGranaghan Send private email
Thursday, June 22, 2006
 
 
> “I am a non-technical individual who has an
> insight about an unmeet software need it the
> specialized domain space that I work in.
> What would be the best way for me to go about
> getting a web application developed to meet
> that need?”

Hire a web developer?
Glen Hamer
Thursday, June 22, 2006
 
 
I have a new car idea. What's the best way for me to manufacture my new car design?
son of parnas
Thursday, June 22, 2006
 
 
I think you could accomplish your goals with a DWIM compiler.
DHofmann Send private email
Friday, June 23, 2006
 
 
"I propose that a radically simpler development environment is therefore needed.  This environment would abstract away technical details, allowing the developer to work in a simple and intuitive IDE and to build the application by specifying its functionalities.  Above all, this development tool “would just work”."

Perhaps a manned mission to Mars is not so complex after all. We can just propose a simplified transport mechanism thingy and life support doohickey.
CIFChamp
Friday, June 23, 2006
 
 
"Also, such an environment would allow people who are more business-oriented or otherwise more focused on market needs than implementation details to develop web applications."

Sorry to join the others in putting down your idea, but the reality is that what you are proposing is a sort of Holy Grail of IT in general. The only thing that has changed is that you are talking of Web Apps.
10 years ago it was Client/Server
20 years ago it was block terminals

What you are talking of is basically a 4GL (Fourth Generation Language) for the Web.
None of the previous attempts (and we could count even COBOL among them, with the idea of using "English-like statements) really delivered.

In my opinion, a lot of people notices we are writing a lot of boilerplate, repetitive code to manage things that seem to be always the same. Record browsing, user profiles, field validation... so why not abstract everything so that record browsing is, like, just one statement, hmmm...

BROWSE ORDER

Nice eh? So any Business Analyst will be able to deploy their Business Logic without the need to involve IT or to meddle with the low level details.

Problem is, the istant you cross the border of the most basic "CRUD" functionality, you really need to involve professional developers.
It's not the web. The same would happen with green screen applications. It's not the language, or the OS.

IT is hard. If you can solve your problems with toy Access applications or Excel spreadsheet it's ok. They are just like random notes you scribble down on the back of an envelope.
The moment you need to scale them up to 2 users (not to say 2000), or to handle inputs from a business partner using EDI, or to interoperate with some other application in your company, or to cope with rule or business changes, no "generic" solution, especially one catering for non-developers, will help you.
Paolo Marino Send private email
Friday, June 23, 2006
 
 
"I have a new car idea. What's the best way for me to manufacture my new car design?"

Manufacturing cars is so inefficient - I propose we build a factory which can, given the right specs, build car manufacturing factories to build the cars that we want...


Okay, so it's an old gag.
Paul Brown Send private email
Friday, June 23, 2006
 
 
There are actually plenty of tools out there that do what you're looking for.  But as somebody mentioned, they only work for the simplest of applications.  They don't handle the complex business logic that goes on behind them; there's no good way to easily capture the domain logic except by writing code, and as soon as you cross that line you're talking about something a lot more complex.

As for the best way to get an app built that capitalizes on your domain knowledge, the answer is to hire a developer.  Hire somebody that you've met in person, that you get a good vibe from, that can show you other successful projects.  You'll provide your domain knowledge, they'll provide theirs.  Trying to go it alone just isn't going to work.
Clay Dowling Send private email
Friday, June 23, 2006
 
 
I reccommend a simple software program that automates bean counting so we don't need business analysts on our payroll anymore.

Scheduling boring inefficient meetings, piling up corporate Credit Cards with Golf trips, and reading the latest software buzzwords out of PC World would no longer require a human salary!  A person who writes this will make a ton on money!

Find real work instead of trying to eliminate ours... because it's "too hard."
Bean Counting is Too Hard!
Friday, June 23, 2006
 
 
Just use Frontpage. All of the other web hacks seem to use it and do quite well. What's stopping you?
anon
Friday, June 23, 2006
 
 
Actually, what you propose has been done: Ruby On Rails. But...the moment you decide to create something other than a plain-vanilla solution using RoR, you're writing code again.

Here's why writing good web applications is so dang hard:
(1) You must develop a good data layer: i.e. a database to handle current business data requirements and be flexible enough to handle future ones.
(2) You must develop good data access layer: i.e. procedures that accurately reflect business requirements to fetch and write the necessary data, all without straining hardware resources unnecessarily.
(3) You must develop a good business layer: i.e. software (object-oriented or not) that represents the business objects that exist within the organization. If the business layer doesn't represent the business objects faithfully, you'll have exceptions and work-arounds before too long. This leads to code that becomes buggy and difficult to maintain.
(4) You must develop a good data transmission strategy: i.e. using HTTP in such a way to transmit and process the data well from server to client and back. For example, do you write new variables to the HTTP header to handle I and A? Do you use AJAX to expedite data traffic in certain instances? Lots of nit-noid questions that have to be answered.
(5) You must develop a good presentation layer: i.e. a user interface that (a) contains valid HTML, (b) a nice look and feel using CSS, (c) client-side behavior that makes sense and aids the user, and (d) all of the above having taken into account the demographics and business needs of the representative user(s). To do this well requires more expertise than most programmers care about.

I won't even go into hardware and system administration, information security and assurance, etc., etc.

But, notice all of the refernces to business requirements. I argue that they drive the development of every layer in the n-tier, web application development model. I argue further that this is precisely why web application development is so dang hard. Businesses are typically very complex in terms of who they are, what they do, and why they do it. Sure, we can generalize the major processes and data for each organization, but at the finer points each differs from all others. And these differences must be accounted for properly under the hood of each web application. Else they would all look and behave the same.
Albi-wan
Friday, June 23, 2006
 
 
There are many many attempts at such systems, each differentiated by where they drew the line between flexibility and simplicity.

One good example I can think of that allows relatively non technical people to get a very long way in creating an enterprise level web app is Lotus Notes/Domino.

With but a little knowledge of the Notes formula language (whose power is very underrated by most programmers) and a basic understanding of how notes documents, views and forms work, a semi-technical user could construct, and construct quite quickly it must be said, quite a range of useable and useful applications. (Of course the succcessful apps generally continue growing till they do reach a point where its necessary to call in experts to implement difficult new features or correct issues).

Another example of a (non-web) platform that allows end users to build 'useful' applications for themselves is Excel. Cant tell you the number of times Ive tried to flog my glorious abilities to develop custom software only to be put in my place by  "oh we already banged up an excel sheet to do all that and were really quite happy with it, so thanks, but no thanks...". Its pretty humbling what a suitably clued up person can do with Access too.
Java GUI Programmer
Friday, June 23, 2006
 
 
I develop a shrinkwrapped native Win32 app. My experiance is that business requirements and/or end-user requirements typically occupy at most 25% of my time. The rest of my time is taken up in dealing with the weaknesses of the particular tools I am using at the time. (VB6, C++, COM, Win32 API, Windows Installer)

A few years ago I got serious about .NET. I got a book on C# and was really excited to be learning about it. But eventually I came to the realization that it didn't solve enough problems to make it worth rewriting 300K lines of code.

Apparently there are a lot of people in this boat. On the WinFX beta page (http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/default.aspx) there are four scenarios listed. The third one is "I want to develop native-only applications using the latest Windows SDK". It also says "The Win32 API - part of the overall Windows SDK package - includes over 7,000 new APIs for native development!"

I'm gradually porting my fully object-oriented VB6 code to C++. I'd rather be targeting the WinFX platform, but until they make it an integral part of the operating system, I am planning to avoid it. Apparently the Office team has reached the same conclusion, because Office 2007 is not managed code.

I agree with the spirit of the original post. Application development is too hard. I believe that we will eventually see better tools that will eliminate some of the complexity that is *not* inherent in the business problem being solved.

What disappointed me about C#?

1. The fact that control definitions are injected into my code as a special region that I am not supposed to edit. In VB6, you don't have to worry about inadvertently modifying system-generated code blocks when you use the find & replace command. Partial classes (in VS2005) don't seem like a very effective solution. They seem like an afterthought.

2. Hooking up an event handler in C# is much more complex than it is in VB6. I use a lot of event handlers. This seems like a big step backward.

3. I do tons of low-level string processing in C++ using pointers. There's no way to get that kind of performance using C#. I understand why pointers were not provided in C#, and I agree that this was an appropriate decision. But the fact that I need to drop down to C++ for efficient processing of large strings just increases the complexity of the overall solution, supporting the original poster's claim.

I look at it this way: During the American Civil War, soldiers had to stop and reload their weapons after every shot they fired. They spent most of their time fiddling with their weapons, and a relatively small percentage of the time actually focusing on the real goal. I'll be generous and say that writing managed code is twice as efficient as writing native code. As far as I'm concerned, we're still firing muzzle-loaders. This will become clear only when someone invents the software equivalent of the repeating rifle. Like the original poster, I have faith that this can and will happen. And I believe that it will involve a much greater reliance on declarative programming and a correspondinly reduced relienace on imperative programming methodologies. If I am right, then .NET is not really moving forward, but sideways.

As always, YMMV.
Smoothie
Saturday, June 24, 2006
 
 
"1. The fact that control definitions are injected into my code as a special region that I am not supposed to edit."

There's nothing wrong with editing them.  Manually editing them is a much easier way to do something things, such as replacing a standard WinForms control with an inherited version but keeping the same property settings; you just change the declaration and instantiation lines.

"2. Hooking up an event handler in C# is much more complex than it is in VB6. I use a lot of event handlers. This seems like a big step backward."

On the other hand, it's pretty easy in VB .NET, even if you're doing it manually.  One line:

AddHandler control.event, AddressOf eventProcedure

Yet another reason I don't get why some people refuse to use VB .NET purely on principle.
Kyralessa Send private email
Saturday, June 24, 2006
 
 
control.event += eventProcedure;

What's so complex about that?

Also, C# does have pointers.  I've never used them for manipulating char arrays so I can't comment on the speed relative to C++.
SomeBody Send private email
Saturday, June 24, 2006
 
 
"Currently, successfully developing even a modestly complex web application typically requires a full time, professional, experienced, technical development professional.  This makes development expensive and limits the amount of application ideas that are actually implemented.  Development can be outsourced or freelanced, but this introduces many of its own problems and hidden expenses."

Honestly, a good and stable application requires this, I would be very suspicious of any application that was built by someone who wasn't a "full time, professional, experienced, technical development professional".  There is just to much theory involved to leave it completely to an environment to come up with.  Heck, I don't even know any real developers that rely on the wizard tools in various IDE's let alone an entire tool to make the whole program.

"It would allow a single individual with a solid knowledge of programming in general, but no particular experience with the underlying back-end technologies, to implement a powerful, fully featured web application.  Essentially, if someone seeking to implement a web application could provide a user interface design and graphical skin and specify in pseudo-code what the application does, they should be able to painlessly and straightforward implement their idea."

Again, and not to rain on your idea, but how would you plan to support it?  What if the "tool" did something that caused an error and you don't have the skills to fix it.  Further, what if an enterprise depended on this application for a critical task, and it had some unknown anamoly that did something weird without them knowing it for months and months...  Hopefully you can see where the lack of an intimate knowledge of whats happening underneight could really come back to bite you.  With the stuff I build....If I am presented an error by somebody using something I built, I can generally turn around and know exactly what caused it...because I know the code behind the application like the back of my hand.  If you didn't have somebody that knew that...or had to hire someone to dig through the spaghetti that WOULD be created by such an application...it would be a nightmare.

"I envision this software doing for web applications in general what Blogger, TypePad, WordPress et al. have done for blogging. "

I fail to see the connection between the examples and a full blown automated IDE.  Those applications are fairly linear in their actions whereas something as dynamic and ever changing as "what do you want to build now?" would require magnitudes more complicated algorithms.

"  The firm that provided this environment would make an obscene amount of money.  Many people would pay a lot of money for the development software because it allows them to jump into the exploding web application market and to do so without investing time in learning technical skills that would soon be rendered obsolete.  Also, such an environment would allow people who are more business-oriented or otherwise more focused on market needs than implementation details to develop web applications."

It would also create a HUGE market for the real technical folks to come in behind and fix the stuff that it didn't do correctly! :o)

"I am a non-technical individual who has an insight about an unmeet software need it the specialized domain space that I work in.  What would be the best way for me to go about getting a web application developed to meet that need?”

Not to be abrupt, but learn a web app language, or hire someone who does already.  You will be much better off knowing something about your application if you learned a little of it yourself.  I personally highly recommend learning one of the .NET languages (VB or C#).  With knowledge of a .NET language you can on one day build a client server app..then turn around the next day and build a web application..with the same language.  The same would go for Java et al...but I wont evangelize for that technology much.
Dan Hirsch Send private email
Sunday, June 25, 2006
 
 
I'll answer this: "I am a non-technical individual who has an insight about an unmeet software need it the specialized domain space that I work in.  What would be the best way for me to go about getting a web application developed to meet that need?"

After you answer this:

"I'm a technical individual who has to deal with crappy management who has no idea what they are doing but making unreasonable demands which in turn generates unwieldly software code which makes development too hard.  What would be the best way for me to deal with this imbeciles on a daily basis because they ruin software development with their hard coded estimates, unreasonable demands and a total lack of understanding that this is software 'engineering', not 'how to get a gumball out of gumball machine'.  This is like me saying 'it's too hard to build a skyscaper, can you come up with some idiot proof 'instant skyscaper' formula for me?'
ForTheLoveOfGod Send private email
Sunday, June 25, 2006
 
 
VB is the worst mess Microsoft has ever created.

Think of how much further we'd be if MS didn't have to create 5 different languages to do the same thing.

I can recall being a teched on this escalator when MS was releasing .NET and this guy behind me says "I don't know if I can learn this C#, it TOO HARD..."  Gawd!  I about busted a gut.

It's that mentality that greets you at the door of a VB shop.
ForTheLoveOfGod Send private email
Sunday, June 25, 2006
 
 
The OPs problem can be resolved with one technology:

Flash.
grover
Monday, June 26, 2006
 
 
"I envision this software doing for web applications in general what Blogger, TypePad, WordPress et al. have done for blogging."

Will never happen. Why? Because you cannot mechanize a tool to figure out everything that a user wants to, or can do.

People have been trying to do this for 40+ years. Still haven't succeeded.

Can web application tools do a better job of managing the infrastructure for you? Probably. The client-server development tools do a pretty good job of it now. But no tool is going to manage the business rules for you. That's your job.
Steve Hirsch Send private email
Tuesday, June 27, 2006
 
 
Alan Kay, the developer of Smalltalk, has pointed out that programmers do not have great sense of history...

http://www.openp2p.com/pub/a/p2p/2003/04/03/alan_kay.html

Many of the issues raised on this thread have were being worked on in the 70s. Smalltalk addresses most of the problems of making programming easier by being cenceptually simple and consistent. The class hierarchy is huge (and how) but even kids can learn to program very quickly...

http://www.squeakland.org/

There are also smaller less well known applications that make cross platform development easier for non-programmers...

http://revmedia.runrev.com/

You can even create your own web app these days...

http://www.ning.com/
http://www.dabbledb.com/

There are solutions out there folks, it just seems that most of the time that the mainstream market tastes leave some coders blind to alternatives.
Seamus Brady Send private email
Wednesday, June 28, 2006
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz