Fog Creek Software
Discussion Board




application platform?

Is there an app environment
*for non-programmers
*db and os independent
*scalable
*flexible
*plug-in oriented

Delphi, Powerbuilder tried getting there. But they need some amount of programming and they are probably not that scalable.

Oracle forms approach addresses some of the issues.

curious_dev
Saturday, May 11, 2002

When you mention scalable do you mean the ability to gracefully scale to serving a large number of simultaneous users?

If so a modern Pentium and bit of RAM pretty much any well written server application will be able to serve a lot of users. For example Slashdot seems to be able to support a lot of users running in Perl.

Since you're running the server you can measure it's performance and when you have more users than the machine can support, get a few more computers and spilt the load.

That's what Google does, and they manage to serve a very large amount of users.

Matthew Lock
Saturday, May 11, 2002

What does "for non-programmers" mean

Daniel Shchyokin
Sunday, May 12, 2002

> Is there an app environment
> *for non-programmers
> *db and os independent
> *scalable
> *flexible
> *plug-in oriented

Wow, looks like you're trying to list all the holy grail criteria to get rid of the bizapp sector of the software profession. Could you please be more specific?

I am assuming you mean business applications when you say "app environment", since you mentioned Oracle Forms.

In short. NO.

Business applications require programming expertise just as much as bookkeeping requires accounting expertise. (After all, accounting is just adding and subtracting numbers, right?) Moreover, business requirements change over time, and application rules need to be carefully readjusted over time to reflect the changes in business needs.

Like Law and Accounting, Software Engineering (ok, bizformappz) is going to evolve toward becoming more of a real profession.

Saying that Software Engineering is just Programming is like:
Saying that a lawyer is just a writer.
Saying that an accountant is just adds and subtracts.
Saying that a Pharmacist is just a checkout clerk.

Software Engineering has gotten a bad rap because SWEngineers have traditionally not been ones to toot their own horns. Other "professions" typically have artifacts of "professionalism" in order to justify the paycheck. Ever wonder why the dentist drill is called a "handpiece"? It's because it "sounds better" and creates more perceived value for both the dentist and the patient.

Even if you get rid of the "programming" part (which I think is very very difficult), you'll still end up requiring some sort of "software-app-environment" professional to do the business rules writing and validation. Because at this point, just "having a simple description" or "vision statement"  doesn't cut it anymore. Somebody still has to run through and audit all the possible side effects of "a simple business rule change".

a-ha! - and I haven't even gotten into "scalable" and "plug-in" yet :-)

-james

James Wann
Sunday, May 12, 2002

"For non programmers". Interesting. I've often wondered if this category exists, or if it does what it means. For example, if you don't understand the idea of variables refering to values is there any language or environment that would let you develop an application? If you do, how far from being a "programmer" are you? If you can't grasp subroutines or other reusable chunks of code can you make much progress however the development environment is setup?

Is there a basic set of semantics that you have to understand to be able to program in the simpliest languages, however visual/graphical or otherwise they are? If this is true and most code, at least on the business side, is simple semantics and various more or less complex syntax then it certainly should be possible for someone who can explain the business process to program it. Perhaps the situation is that some people are able to do something but not explain how they do it or why they do it or how it fits in with what others do. In this situation I don't think its possible that they can automate the process with a program.

Alex Moffat
Sunday, May 12, 2002

To answer the original question:  No such tool exists, that I know of.  Some tools manage to match one or two of the criteria, but not all.

However, I beg the community's indulgence as I wander off briefly on a tangent relating to the concept of an environment "for non-programmers."  I will warn that this is my first attempt at codifying my thoughts on this matter, so my explanations will probably be vague.

We've worried about this problem at work, where we're developing an application that should allow any user to automate certain processes within the app itself.  Our target users are engineers, their managers, and executives, so we've wanted to make this automation easy for those who aren't classically-trained programmers.

From our discussions, I've come to believe the following points (which are generalizations, I readily admit):

1. For people who know what programming is but can't program themselves, programming is a complex skill approaching black magic.  It's seen as a strange ability to write weird instructions that make a computer do all sorts of incredible things.

2. Programmers tend to have a surprisingly narrow view of the nature of programming.  They tend to think of programming in terms of writing in a high-level language (or at worst ASM).  Macros, for example, are seen as "not really programming."  But macros are using specific computer instructions to create specific computer behavior, right?

3. Programming can be thought of in very broad terms.  One can get down to semantic questions -- for some programmers, programming *is* using a well-defined, ISO-standardized language, and that's understandable -- but IMO, programming is simply a matter of using specific computerized instructions to create specific computer behavior in a repeatable fashion (this latter being the program itself).  That's a vague definition at best, but I think my point is reasonably clear.

4. Programming can be presented through tools that are quite unlike traditional high-level language tools like IDEs.  These tools can be understood and used by "non-programmers," e.g. secretaries and executives.

How?  Ah, there's the rub, and we're still hacking away at that problem.  But I believe it is possible, and that it's worthwhile to think about programming in these terms.

Brent P. Newhall
Monday, May 13, 2002

You can go a long way toward your goal with Zope.

www.zope.org

Dan Sickles
Monday, May 13, 2002


Business applications require programming expertise just as much as bookkeeping requires accounting expertise. (After all, accounting is just adding and subtracting numbers, right?) Moreover, business requirements change over time, and application rules need to be carefully readjusted over time to reflect the changes in business needs.

>> It is a question of how much expertise the business analysts need to have to design a collection business rules.
The bar has been coming down for quite some time (c/c++ ->java/javascript/jsp ). I am looking at an application builder environment like visual basic wherein i define the data model and specify a bunch of rules about the flow (in a declarative way) and that is all. This business rule/data model enforcer/engine could be written in servlets/ejb approach, talk to different databases and be independent of OS/databases.

The 'cajun' (new bea app dev environment) is approaching this area. They have a bunch of controls and heavy ejb/java programming is not required (or atleast that is the idea as the version matures).

So, it is about business process design. This environment can have authoring end, runtime (client end and server end) and is independent of db/os.

still_curious
Tuesday, May 14, 2002

> It is a question of how much expertise the business
> analysts need to have to design a collection business
> rules.
>
> The bar has been coming down for quite some time
> (c/c++ ->java/javascript/jsp ). I am looking at an
> application builder environment like visual basic wherein i
> define the data model and specify a bunch of rules about > the flow (in a declarative way) and that is all. This
> business rule/data model enforcer/engine could be
> written in servlets/ejb approach, talk to different
> databases and be independent of OS/databases.

We'll, in the scope of declarative business rules, there's versata. Which is declarative, though they exist strictly within the J2EE universe/religion.

As with all current rad-like tools, it'll only get you 80-90% there toward your goals. Getting something like this to finish (spit and polish) will still take a good chunk of programming time.

In the end, tools like this won't be the end all. Business app projects typically lose money and waste time because of poor requirements gathering and prototyping, and that's the real limiting factor behind quickly getting an application to market. As the rules become more complex, you'll find that the percentage of time that is spent coding goes down tremendously, replaced by planning and testing.

James Wann
Tuesday, May 14, 2002

We'll, in the scope of declarative business rules, there's versata. Which is declarative, though they exist strictly within the J2EE universe/religion.

>> interesting, I am not sure how generic it is . 'll take a look at it.

I agree that planning and testing takes lot of time. I think the following issues related to code also aggravate that issue.

*not enough understanding of the problem: rad tools can't help the situation but if they support rapid changes as well, incrmental planning will be possible.

*testing: I am not sure how typical business apps/internal apps are automated. In the case of app platform with declarative approach to business rules, it should be easy to add simulation modules that can try different data sets etc. This is not super easy. since user is in a restricted environment, it should be possible to try different variations of data sets.

I am loudly wondering if it makes sense to pursue an idea in this direction. Or is it going to be like your thinking...apps are complex--so RAD tools can only take me this far..why get stuck into a restrictive environment...develop an app in java/c# or whatever and keep doing the changes..

but those apps are stuck for one designed paradigm...how are mobile devices/pdas/speech interfaces faciliated..In the case of restricted app environment, new modules can be added by vendor to render this stuff on to mobile devices etc..the bizapp developer is really free from those issues.

still_curious
Tuesday, May 14, 2002

There will never be an application development platform for non-programmers.

Never.

Programming is not about learning arcane syntax. It's not about using curly braces and semicolons. It's not even about being "into computers."

It's about breaking down a complex problem into increasingly simple steps until the problem can be solved automatically by following those steps.

No one will ever be able to develop applications without learning how to think through a problem logically, regardless of how intuitive or simplistic their application development platform.

A typical example:

"In tic-tac-toe, different games can be played in such a way that different sequences of moves result in an identical board. However, not all possible board combinations are valid games (i.e., there can never be more O's than X's on the board, but there can be one more X than O). How many different valid games are there that produce unique board combinations (ignoring board combinations that are identical simply by rotating the board)?"

I don't know the answer to this problem (in fact, I just made it up), but I do know how I would start approaching it. There are efficient algorithms for figuring this out, and there are inefficient algorithms. It would take me a while to hit upon an efficient algorithm, but I could start working on it because I know how to break down a problem rationally. I have a little bit of practice with this kind of thing.

And problems like this aren't rare. Sorting algorithms and validation routines and word-counting algorithms all require this kind of logical thinking (especially if you're going to use efficient algorithms).

My point is: there are no magic tools that you can use to develop the algorithms to solve logic problems. And that's all programming really is. There are easy ways to design user interfaces (VB or any visual RAD tool) and there are easy ways for non-programmers to interface with a database (MS Access).

But, to do anything meaningful with the data in your application, yes, you do have to be a programmer.

Benji Smith
Tuesday, May 14, 2002

Most of the business problems are about getting data from user and let that run thru some workflow (bunch of users) and interact with other systems and get back. Very minute portions of this are highly algorithimic.

Average bizapp developer should be comfortable about problem solving but need not be an expert about efficient searches and sorting algorithms.

given that, isn't there lot of scope for such app environments (author, run, deploy all within)

Versata is one name that came up. Remedy's arsystem has some of the markings.

still_curious
Tuesday, May 14, 2002

If all you want to do is have users put data into a form, submit the data to the database, and view the data in a friendly format, that type of application already exists. It's called Access. (And even Access is too obscure for many users.)

Putting an additional layer of abstraction on top of Java (or some other HLL) doesn’t help to make programming concepts any simpler to non-programmers (although such paradigms can make programming concepts easier to learn for wanna-be programmers, which I think is fantastic).

I imagine though, that that's not what you're talking about. I assume that what you want is some sort of point-and-click application development environment with no variables, functions, operators, conditional structures, loops, or classes. Those are programming concepts, after all, and they would confuse non-programmers.

Well, no matter how abstract you get, any application development environment will have to let you put data into some sort of container (an array variable) and perform some kind of operation on that data (functions or methods). You'll need to let the program make decisions about that data (if statements) and you'll need to perform an operation multiple times on the same data (loops), once for each row of data, for example.

Now, you can represent these concepts any way you want. You can use an existing high-level language like java or whatever. Or you can represent the concepts graphically with different colored tinker-toys. Either way you do it, it is still a programming language, even if it’s the TinkerToys language.

You can't represent programming concepts by removing the programming concepts. You can only change the way that the abstractions are presented to the user.

Benji Smith
Wednesday, May 15, 2002

Hi Benji,

You are right on the broad concept. ie. However abstract it might be, it is a question of brining programming concepts in terms of non-developers. (better visual interface etc) also it has the potential of masking off all the complexities of several variables (security, load balancing, multi device access etc..)

Versata was mentioned earlier. It seems like good tool. Haven't opensource folks attempted this problem? This is a great way to answer regular dev environments and attract business analysts etc..

still_curious
Wednesday, May 15, 2002

Non-programmers can't build Access applications because they don't know how to design tables.

Normalisation is quite a hard technique that escapes most non-programmers.

Matthew Lock
Thursday, May 16, 2002

Matthew Lock:
>> Non-programmers can't build Access
>> applications because they don't know
>> how to design tables.

>> Normalisation is quite a hard technique
>> that escapes most non-programmers.

Formatting a Word document is quite a hard technique that escapes most non-programmers.

No matter how simple, no application development platform will ever be simple enough to make the job reasonably do-able for non-programmers.

Benji Smith
Friday, May 17, 2002

<<< For example, if you don't understand the idea of variables refering to values is there any language or environment that would let you develop an application? >>>

How imperative of you! Lisp? Prolog?

Steven Wisener
Friday, May 31, 2002

For everyones education there is now the ability foir "NON IT Professionals" to build applications - see www.procession.com
Removal of complexity just think process! - becomes more of analysts job - buysiness savvy programmers could get there!

David Chassels
Tuesday, August 17, 2004

*  Recent Topics

*  Fog Creek Home