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.

Which languages to develop a product?


As a sideline, I have an opportunity to develop a product for the building industry (UK). It has come out from a development about 5 years ago, that didn't really take off due to reasons that were nothing to do with the available market.

The software was written in dbase plus for windows.

As this is a side project (at the moment) I do not really want to commit a lot of money to development tools yet which leaves me as to which languages to choose.

The app is going to be mainly used on windows desktops and at first it will be single user. I would like an avenue to be open for cross platform.

My choices are :-

1) .NET
2) Java SE
3) Python
4) Ruby


1) SQL Server Express
2) MySQL
3) PostgreSQL

and for web site development

2) PHP
3) J2EE

Obviously any Microsoft tools are going to be best when working on windows and ease of deployment but I also want to use this as experience to learn another language so if the product doesn't go anywhere then at least I have added another skill set.

I currently use .NET at work and have dabbled with Java.

Any thoughts?
Monday, February 13, 2006
We sell to companies within the UK manufacturing industry that provide products to the construction industry so our customer base may be fairly similar.

Both products we sell are written in .NET and we have yet to receive any feedback that installing the .NET runtime has put people off. What I don't know is how many it has put off who have not provided any feedback.

An earlier product (also written in .NET) connected to a MSDE or SQL Server database did put lots of people off. Most of our potential customers don't have IT departments. The work is normally outsourced which means they have to pay several hundred pounds to get a SQL script run to generate our tables. We eventually dropped the product as the support costs were too great.

The thing to remember is that your customers are not IT people. Everything should be as simple as possible.

Also, for cheap MS development tools, try this: 
It gives you enough licenses to create a whole network within vitual PC's for very little money.
Monday, February 13, 2006
This won't necessarily be what you want to hear, but at the end of the day, the customer isn't really interested in whether you want to learn a new language or not - they just want a product delivered on time that works.

So, I would go with whatever you have the most experience in and feel most comfortable with. From what you've said, that would appear to be the Microsoft / .NET route.

Whatever technology you choose, though, you must ensure that you can support it and fix whatever problems happen to be thrown up, even if you didn't write the original code. This might be either having access to the source and permission to deploy changes to it, or by having a good support contract in place. Again, the customer isn't interested whether the bug's in your code, Microsoft's code or some other third party vender's code - they just want a product delivered on time that works. See
Ritchie Send private email
Monday, February 13, 2006
If your customers like your product, but are put off by pre-requisites like the JRE or .Net RTM, you should have a look at smart clients, especially ClickOnce. It's primarily because of the response to an app that I've been developing.

Or maybe you should just package your product using a professional deployment tool that will bundle all pre-requisites along. Clients dont like being left in the lurch when they just want to try out your product.
Vineet Reynolds Send private email
Monday, February 13, 2006
Oops, my previous post mentioned ClickOnce. Please read it as  ClickOnce deployment.
Vineet Reynolds Send private email
Monday, February 13, 2006
@ Anonymous

What database did you use?

@ Richie,

This is something that I am writing that I will eventually sell. At present there are no customers and no time constraints.
Monday, February 13, 2006
@ Vineet.

I agree it must be zero hassle to install as I will only be supporting it part time.
Monday, February 13, 2006
I'm generally a big Microsoft fan -- .Net 2003 has been easy to work with and performs great, and 2005 is even better -- but I don't think they've made it easy enough to choose MS in this type of situation.

The biggest problem is the platform lock-in, and the second-biggest problem is the existence (or not) of the .Net runtime on any given PC.  I think everyone understands the issues with these things, and I've got some opinions about what MS should be doing differently, but those aren't really going to help you.  -g-

You mentioned that this is targeted at Windows desktops, but it looks like you're planning to build this as a web app -- is that right?  I also believe you're familiar w/ MS dev tools?  If so, you might find Mainsoft's Grasshopper a good way to get some measure of platform flexibility:

This lets you develop in ASP.Net (no .Net 2.0 yet, as this is based on Mono) and deploy to a Linux server.  Mainsoft sells a commercial product that lets you deploy to any J2EE server -- it's a little pricey, but at least you've got options.

Disclaimer: I eval'ed Mainsoft, and I've played with Grasshopper, but I haven't taken either one to production, so I don't know what kind of teething pains you'd have.  Despite that, they both seemed pretty stable to me.
D. Lambert Send private email
Monday, February 13, 2006
No it is not going to be a web app, it is going to be a desktop app.
Monday, February 13, 2006
I would seriously consider the .NET and ASP.NET option. Couple that to SQL Server Express and you have an enviable development platform. True, your distribution will be a little large with multiple components to install but it is not difficult to build and should not have any untoward impact upon your customer's machines.

Just one other thought - why set out to write a "single user" application? Why complicate your life? In any case if you go the .NET/SQL Server route you will find that almost all of the multi-user issues you might otherwise have to worry about are taken care of.
Mike Griffiths Send private email
Monday, February 13, 2006
"Cross platform" sounds nice, and makes everyone feel good, but at the end of the day, if you're building a niche line-of-business application for an industry in which 95% of the workstations run Windows, then your application doesn't _need_ to be cross-platform.

However, if your industry is 80% Windows, then the economics are much different.

I would start by determining what platforms your users in the UK building industry are using. If the vast majority are on Windows, then I agree with the previous comments that you should stick with the Microsoft developer stack (WinForms, SmartClient, VS2005, SQL Express, ClickOnce).
PWills Send private email
Monday, February 13, 2006
What about the database installation and administration? Most customers don't want to deal with that either.
Monday, February 13, 2006
Hi, Ace.

Personally I'm a huge Python fan and I would recommend that you give it some serious thought. There is an application framework called Dabo which works with multiple databases and uses the wxWidgets GUI toolkit, which is fairly platform neutral. Another option you might consider is IronPython, which is a port of Python to .Net. But then you'd have to rely on Mono to run under Linux, and I don't know of any port of .Net to the Mac (which isn't to say one doesn't exist). Another potentially quick way of getting a Windows app up and running is to use Mozilla as a front end, but I don't know how well this would port to other platforms.

I've also looked at C#, and it seems pretty cool. But personally I can develop more rapidly in Python...
Mike Pentney Send private email
Monday, February 13, 2006
The app will be multi user but it will, at first, be installed on a single machine.

I won't be able to support multi user networks as this will be a part time thing.

How difficult is it to deploy and configure SQL Server 2005 express?

How would I handle database upgrades (i.e. field additions) using ClickOnce?
Tuesday, February 14, 2006
The reason I was thinking of Java was that by getting up to speed with it, I would be adding another string to my bow so to speak.

I know that desktop apps written in Java have a bad reputation for being slow to start up and not quite native looking but as I mentioned earlier, this is not just about creating a product to sell but also as a learning exercise.
Tuesday, February 14, 2006
This is a HUGE question for everyone starting out now. It depends on what you need :

productivity costs vs deployment costs

Deployment costs (such as 20meg framework download) can cost you bigtime in sales.

In order of preference for typical microISV with non-technical target market selling shrink wrap software.

1. C++ no deployment costs, medium-low productivity.
2. vs2005 (framework1.1**), good framework coverage, good productivity
3. Java good jre coverage, medium productitivty, lousy UI
4. vs2005 (framework 2.0) poor framework coverage

**NOTE: MS is working on allowing VS2005 to build to the 1.1 framework.
Tuesday, February 14, 2006
Do you really need a high-powered SQL database engine for you probduct?  You might find that SQLite would be enough.  It gets installed as just another part of your app; no separate download or license, no configuration, no maintenance.
Tim Evans Send private email
Tuesday, February 14, 2006

Thats a good idea. Can it be used from VS2005 express?

I was also thinking about dbf files too.
Wednesday, February 15, 2006
Ace, I'm don't know if it can be used from VS2005 express (which I've never used).  As long as you've got a C/C++ compiler I don't see why it wouldn't.

Alternatively, the site has pre-compiled binaries for win32 that depend on MSVCRT.DLL.  I'm not sure if that will conflict with msvcr71.dll from newer MS compilers in some way.

For the other languages you mention you can probably find an existing interface to SQLite, such as for Python.  With luck you'll be able to find a package (like pysqlite) that provide whatever standard API the language uses for databases.  This will make it easier to change to a different SQL database later if you need to.
Tim Evans Send private email
Wednesday, February 15, 2006
"Can it be used from VS2005 express?"

Mono has a SQLite client library that will work in .NET too. I'd recommend using that over SQL Server Express if you need a low install overhead, portable solution.
Aaron Flynt
Thursday, February 16, 2006

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

Other recent topics Other recent topics
Powered by FogBugz