Fog Creek Software
Discussion Board




Application development without programming?

Hi:

I have never written one line of code in my life, though I consider myself an expert in a certain field. Are there any tools out there to help non-programmers like myseld develop applications without a third-party? I need a tool for diffusing my knowledge functionally, but cannot afford to spend time "learning to code."

Jason
Thursday, April 22, 2004

find a programming partner for your venture ?

Joe Hendricks
Thursday, April 22, 2004

I saw a tool called VBWire that you might want to look at. It uses diagrams to create the code.

Also Visio 2003 will create code from UML diagrams.

Slartibartfast
Thursday, April 22, 2004

The general-purpose answer is "use a general-purpose programming language".  Depending on your domain, there might already be a tool that encapsulates the model of your domain and lets you work with nothing but the relevant primitives.  Obviously you'll have to tell us what the domain is for us to provide you with anything suitable.

Kalani
Thursday, April 22, 2004

Physician.

Do you guys envision a programming environment without quasi-arbitrary rules / syntax...that a domain expert can easily understand and work with?

Jason
Thursday, April 22, 2004

Hi Jason,

I think we need a little more information about the stuff you want to write a program about.

Generally you will not be able to come around some kind of programming, but if you're just going to make a program to fill in some simple forms in a GUI and not really do anything to it, I guess you would be able to learn an easy programming language quickly and get your task done. (Delphi maybe...)

You say you can't afford the time you will have to spend on learning a programming language, so my question is: "What can you afford"?

Is it in the endcheaper...
- not to make the program,
- to pay someone else do it, or
- to learn programming and do it?

If the stuff you want to do requires expert knowlegde (f. x. numerical integration where you also want error bounds, is not for anyone although it's taught in the first year of Computer Science) then I'll suggest the second option.

Peter Monsson
Thursday, April 22, 2004

If as you say you've never done any programming I second the motion to partner with someone who does it professionally.  Unless you have time for a lot of learning -- which as a doc I would not think you do.

Despite what may be claimed by marketeers there is no such thing as a tool that will let a non-programmer develop an application.  There are tools that will get you started, but even those assume some knowledge of the application development process, and when it comes to dealing with all the special cases of a real application you will find yourself drowning.  Like I would if I tried to be my own doctor by using WebMD.

AMS
Thursday, April 22, 2004

There used to be a game for kids - gamemaker.
You could create your own games without coding, just by filling out options in some dialog boxes.

For a limited domain that may be the way to go.

I think there is something similar for business applications
- a tool called MAGIC 
http://www.magicsoftware.com
(years ago, i cam across that, and thought it was a braindead tool, but maybe i am wrong)

Michael Moser
Thursday, April 22, 2004

ups, how comes games came up as a link?
i didn't write that.
(html witchcraft).

Michael Moser
Thursday, April 22, 2004

Jason, to add to what others here have said: I have seen a lot of really, really lousy crappy programs "written" by people who had domain knowledge but no development knowledge.

If you truly think you have a world-beating idea, take it to a professional developer who can help you bring it to reality. 

You have a big ego - that is one of the things that helped you become a successful doctor - but you also need to know that you can't do everything and that you are not smart enough to pick up a software program and develop a usable and MAINTAINABLE application without professional experience.

Before all of this, though - unless you are independently wealthy - find a venture capitalist who will help fund your project right.  More software projects have died due to underfunding than due to bad ideas or bad programming.


My 2 cents.

Karl Perry
Thursday, April 22, 2004

Hi:

I have never touched a stethascope in my life, though I consider myself an expert in a certain field. Are there any tools out there to help non-medical people like myself develop an education about medicine without a third-party? I need a tool for diffusing my knowledge functionally, but cannot afford to spend time "learning to be a doctor."

Everything society has told you is false. Programming is not just for hacks and 14 year olds with nothing to do on Saturday nights. Find a programming expert to team up with or hire them. Those are your best options.

Anon-y-mous Cow-ard
Thursday, April 22, 2004

I suppose my lack of knowledge in the field is very evident. Still, I did hear of Sun releasing a Java product  (J2EE, I believe) which was supposed to spur "development for the masses."

I take it that most people would conclude that there will always be a gap between those with domain expertise and the art of programming?

Jason
Thursday, April 22, 2004

I think you just proved it!

chris
Thursday, April 22, 2004

So Sun is BS-ing me?

Jason
Thursday, April 22, 2004

Sorry, I couldn't resist.  It's possible to be a domain expert and a programmer.  Many software developers become domain experts in the fields they write programs for (the braedth might not be there the depth will be).

Realistically there is no tool that a non-programmer can use to build a non trivial computer program.  That's why software developers still have relatively high paying jobs.  J2EE is certainly not bringing programming to the masses!

chris
Thursday, April 22, 2004

Jason,

Tools can relieve some of the administrative tasks, but they can't architect it, write the code, debug, or test it.

It you were going to write a book in a langauge you didn't speak (French, whatever) a tool might help you with the spelling, etc, but you'd still need to learn French and learn to write well enough to produce something a reader would understand.

On the bright side, domain knowledge is very important in sw development. But...ummm... so is software development knowledge.

Mr. Analogy
Thursday, April 22, 2004

> I take it that most people would conclude that there will always be a gap between those with domain expertise and the art of programming?

No, not at all: some people have both (domain expertise and programming experience); and, sometimes, domain experts work with programmers; and, with only a very little programming knowledge and a bit of willingness and some guidance and general education, some people can fairly easily learn to write some little, artful programs ... perhaps in a language like BASIC or Java, for example ... you'll find books in the bookstore that puport to get you started in a programming language within a day.

Back to the topic, when you said "develop applications" and I thought "what kind of 'applications'? does it have a database? a GUI? is it web-based? networked? multi-user? is it for personal use, or for sale? who is supposed to use it? what does it do? what are its inputs and outputs?"

When domain experts work with programmers they often start by defining the program's "requirements" or "specifications".

Christopher Wells
Thursday, April 22, 2004

Jason, the sort of programming tool that you desire - one that allows easy translation of domain knowledge into working programs - was hyped to death 10 or more years ago. 

Maybe this industry has matured a little, because one doesn't hear any more about any products that promise to enable non-programmers to program. In the early 90s there were multiple such tools.

Someone else mentioned Magic-PC. I worked with the DOS incarnation of MAGIC. It was a *terrible* application development tool. It appeared to "simplify" the task of writing software but it did so by restricting the kind of program that could be developed to one that simply allowed display and editing of flat database files.

The worst part of MAGIC was that any sort of functionality that went beyond MAGIC's prepackaged functions and ability required incredible amounts of tricks, macros, keyboard buffer stuffing operations, and other stuff that made the applications absolutely non-maintainable.

My guess is that products that were advertised with the same words as your post title have developed an extremely tarnished reputation and vendors know better than to advertise such systems now.

With no development budget, your best bet is to use a "simple" RAD programming tool like Visual Basic, or MS Access if your idea requires extensive database screen and table development, and just plod along with developing simple pieces of functionality.

With a small development budget and/or vision and the ability to persuade, your best bet is to find a partner.

Also, there's Rentacoder.com, where many people with ideas post very low cost RFPs.

So, there's three constructive suggestions on ways to go.

Bored Bystander
Thursday, April 22, 2004

Sun has something that's supposed to be comparable to Visual Basic (rapid development tool) and I believe this is it:

http://wwws.sun.com/software/products/jscreator/

I don't think it fits your requirements. 

I recommend go drinking with a nerd and sketch some stuff on a napkin.  Repeat as needed (second opinion?)

I drink Scotch.

Lee
Thursday, April 22, 2004

Also, learning to be a great programmer takes a lot of time and effort just like learning to be a great doctor does.

I don't know much about being a doctor, but I take medicine when I have a headache or cold, put on a band aid when I get a cut etc...  Now I could read some books and buy some tools then try to give someone bypass surgery, but I'm pretty sure I'd fail.

It's the same deal with programming.  Someone who knows nothing about programming can write a program that says "Hello world!" when you press a button by looking up a few things on the internet or reading a book, but I wouldn't want that person doing the programming on guildance systems for missiles the next day.

chris
Thursday, April 22, 2004

Yes, there are environments without, as you mentioned, quasi-arbitrary rules/syntax.  Some languages support syntactic abstraction.  However, while they're increasingly influential, it's still considered esoteric by the general dev population.  So you basically have to wait for language designers to build a new language with syntax which makes your domain more easily expressed.

But you know, your task could be really trivial.  It seems you don't want to share your idea with us because someone might steal it.  So we're rather handcuffed in giving you advice.

There is one other thing... there are limits to what today's computer architectures can feasibly do.  The "complexity" of even simple-looking tasks can balloon to the point where thousands of fast computers couldn't finish before the universe ends.  So even with good tools, you may often need to consult with a computer person, depending on how far off the beaten track your creation is.

Tayssir John Gabbour
Thursday, April 22, 2004

>Also, learning to be a great programmer takes a lot of >time and effort just like learning to be a great doctor does.

Ok, programming might be hard, but its NOT like being a doctor which takes about 7-8 years of specialized education and training to just start practising. I have plenty of people programming after a year or two of learning. And have also seen some people just pick it up and become pretty good at it over time. 

neither doctor nor programmer
Thursday, April 22, 2004

I may have missed it, but do we know what the original poster wants his application to do?

He speaks of capturing his domain-specific knowledge. I take this to mean he wants a tool that could extract knowledge from him to be able to automatically diagnose a patient based on their symptoms. (But I could be way off.)

Such systems do exist (although they are, of course, not yet as good as a doctor). You might like to look into the machine learning literature -- specifically Bayesian Networks. However, the maths behind the methodology is beyond that which most programmers could follow -- so a physician stands little chance. However, researchers in these fields are often keen to collaborate with people who have the domain knowledge that they lack.

C Rose
Thursday, April 22, 2004

Softwire

http://www.softwire.com/prod_intro-4.html

Dubious
Thursday, April 22, 2004

Everyone here seems very dismissive, but if what you want to put together is something that could be loosely termed an 'expert system', something which asks the user a sequence of questions and makes a diagnosis by applying given logical rules to their answers, there do exist quite mature and flexible systems that will let you build this kind of system without much, if any, serious coding. You input the questions and the rules through a graphical or text-based interface and it does most of the difficult work. Not so strong on specific suggestions but I've definately seen this kind of thing before so it's out there if you look.

The result might have to run inside the third party application though so if you want something truly individually crafted which stands on its own as an application coding it yourself (or getting someone else to do so) is really the only option. Coding a GUI application isn't desperately hard intellectually speaking, but there are a lot of new concepts to get to grips with especially if you've not coded before, so if you value your time at a non-trivial hourly rate I'd suggest it'd be much cheaper to pay someone else to do it than to learn yourself purely for the one project.

Matt
Thursday, April 22, 2004

Jason, if it was possible for a layman to use a tool to do what software developers do, then there would be no dedicated software developers.

Your query about J2EE would raise a few chuckles here. J2EE is regarded as a particularly complicated system for enterprise development, not a beginner's tool.

Having said all that, you might not be asking the right question. Your words have a certain interpretation for software developers, implying an automatic tool that lets non-programmers program.

But I suspect what you really want is something described as a multimedia authoring tool. These are simple tools for content people, including domain experts, to tip their knowledge into a bucket. The most prominent example is Director. I know medico's who have used tools like Director to put together course materials.

To the guy who says people can program in a year, "program" can mean many things. To capably be involved in any significant project, at least three years experience or study are needed. Mastery will require at least another three years.

Must be a Manager
Thursday, April 22, 2004

Oh, of course.  Something like old Mycin.  Should've read more carefully before vomiting to screen.  Ironic not to diagnose properly...

Tayssir John Gabbour
Thursday, April 22, 2004

Jason, don't listen to what these other guys are telling you.  J2EE is a great way to "program" without programming.  Simply download the JDK and  J2EE executables, and run them.  Then, you'll need to set up your enviorment variables accordingly (J2EE_HOME, java_home, etc.) You'll need to then get ant, so you can build your EARs/WARs.  Don't worry though, xml is pretty simple, so editing build.xml and your web.config files will be a breeze.  Once you deploy the sample application's  EAR to the app server, your 3/4s there.  Good luck!

vince
Thursday, April 22, 2004

Jason--

It isn't entirely clear what you plan to do, but if you want to develop some kind of tutorial or other multimedia software, don't listen to any guff from the pros, either here or elsewhere.  Just about any any intelligent bloke can do that sort of thing with html and javascript.

My background is chemistry, and I'm developing a tutorial mainly with tools I've developed, plus a few good graphics programs.  Javascript took a little time to work through, and I'm by no means expert at it, but I get by.

I'd be happy to email you with more info, if this sounds like something you want to do.

James
Thursday, April 22, 2004

"Ok, programming might be hard, but its NOT like being a doctor"

Everyone is replaceable with software, but the programmer.

Nix
Thursday, April 22, 2004

> don't listen to any guff from the pros, either here or elsewhere.  Just about any any intelligent bloke can do that sort of thing with html and javascript.

Immortal last words. It is certainly true that any fool can do a few interesting things with javascript. The problem is that any non-trivial project eventually comes up against non-trivial problems.

For example, our intrepid medico discovers the same material can usefully be displayed in several different contexts. At first, he just copies the original. Then when he updates the original, he has to make changes to the copies too, which rapidly becomes tiresome, slow and prone to error.

A pro, on the other hand, would have been using a database from the start, or some other form of modularity.

Must be a Manager
Friday, April 23, 2004

Nix,

Be sure to tell the surgeon that when you are going in for an operation. I'm sure he'll think it's hilarious... ;->

mystified
Friday, April 23, 2004

What part of the "knowledge diffusion tool" is the thing you feel Word/Excel/Acces/Powerpoint/Frontpage lacks?

Just me (Sir to you)
Friday, April 23, 2004

Jason,

First, to paraphrase George Bernard Shaw: thank god for all the unreasonable buggers demanding what the "reasonable" folks say can't be done. So keep at it my man! And ignore the naysayers and comedians who are not being more helpful. A lot of programmers are like car enthusiasts; happiest when they're in the garage with the engine block on the bench and the transmission on the floor. They just can't understand why anyone would ONLY want a car SOLELY for the purpose of getting from A to B. The horror! :O


Second, you're not alone.<g> There's some very smart folk who are of similar opinion - Bill Atkinson and Alan Kay are a couple names I can immediately think of. Bill, for example, created an application development tool called HyperCard that allowed complete non-programmers to knock together their very own applications. "Real programmers" may scoff at the naive hackishness of the average HyperCard-based application, but to non-programmers with modest needs it was a fantastic enabler. Now HyperCard itself is sadly deceased after a long and lingering illness, but the idea lives on in similar tools such as Supercard and Runtime Revolution.


Third, and here's the "bad" news: you'll almost certainly have to learn _some_ programming skills. How much you need to learn depends on the type, scale and ambition of your project, and what sorts of tools you can find to develop it in. The trick is to learn just enough - preferably not too much, and _definitely_ not too little - to solve your problem.

On the one hand you don't want to burn time and effort developing lots of l33t skills you really don't need and can easily do without. On the other, if you aren't at least _aware_ of what's available, you can easily dig yourself into a very deep, dark, nasty hole as you try to solve more complex problems using skills that simply aren't up to the task.

I've made this mistake myself, btw, and it's why I eventually resolved to learn to program properly. Funny enough, learning to program well turned out to be not too difficult in itself; by far the hardest part was actively UN-learning all the atrocious habits I'd previously developed! As a simple rule of thumb: as soon as you start to struggle, it usually means you're doing it wrong (or at least badly), so stop right there and go hit the books to see if you can learn a better way. Basic programming in itself _is_ really simple; sadly, the hard part is learning to identify and avoid all the worthless crap that's always getting piled on top of it for one stupid reason or another.

I'll give you a hint: learning to program isn't about learning a language's features, or what libraries to use, or what techno-buzzwords to spout when impressing friends and family. It's about 1. identifying the big, complex problem you wish to solve, followed by 2. breaking that big, complex, initial problem down into lots of small, simple, little problems that you can easily solve one at a time.

BTW, the best book I bought at that time was neither a professional programming title nor one of those wretched "Dummy" books; it was an A-Level Computer Studies textbook for high school students. Great reference for pegging basic theory without getting bogged down in tons of trivial language-specific "How to..." details that clog your brain while missing the really important questions, like "What's the purpose of X?", "Why should I use it?", "When should I use it?", "When _shouldn't_ I use it?" Any moderately intelligent adult [who isn't too ashamed at being seen reading such an obvious "kid's" book;] shouldn't have any problems grokking such a text, and I'd thoroughly recommend it.


As for finding the best tool for the job, that largely depends on what the job is. For small, simple desktop apps, minimal hacking abilities (enough to use variables, loops and conditionals) plus a novice-friendly environment like Revolution or RealBasic may be sufficient. Or maybe Director or Flash if it's multimedia, or Access or Filemaker for something that mostly just manages data.

You should definitely explore your options here. Most of the above tools are very good for solving a relatively narrow range of problems due to their specialised nature and restricted focus. While such limitations would be anathema to professional programmers, who are much more willing and able to trade simplicity and ease of use for freedom, they can be extremely valuable to someone like yourself who doesn't need scads of flexibility and is happy too trade that complexity for some ready-made convenience where you most need it and a bit of hand-holding along the way.


Sorry for the ramble; ya just happened to push a topic button that's near and dear to my heart. ;) HTH.

has
Friday, April 23, 2004

Hey doc, I've got something wrong with me. Is there a medical procedure a layman can use to get me well again?

Stephen Jones
Friday, April 23, 2004

mystified,

just wait some years.

Nix
Friday, April 23, 2004

*  Recent Topics

*  Fog Creek Home