Fast, Reliable & Affordable Web Services
  • email marketing ...
  • content management ...
  • fastest VPS hosting ...
  • new SEO techniques ...
  • Online business drivers ...

software project

An Apple a day?

Actually they seem to be selling a great deal more than that. I’ve been reading the recent (not so recent) news of Apple’s sales figures. See:

This is important for Colrosa as a company that undertakes software product development for our clients.

It seems that Apple has made a 49% increase in sales (units sold) in desktops and a 37% increase in portables from Q3 in 2007 to Q3 in 2008. These figures are staggering and have a potential impact on the sorts of decisions software developers make on their choice of development platform and delivery platform for their software applications.

This slightly older article (May 2008):

relates that “Apple’s retail market share is 14 percent, and two-thirds for PCs costing $1,000 [in the US] or more”, and this was prior to Apple Q3 figures announced in July.

I haven’t been able to find any figures on SME, corporate and home use market share, which of course would greatly impact this issue:

If I am considering developing a software product, do I: develop for MS Windows only, MS Windows and MacOS X or indeed MacOS X only?

However, this:

and other articles indicate a 4.5% penetration into the business market (Aug 2008) in general, much lower than the overall market share. Not being a market analyst I can’t say if the business market, being late adopters, are likely to follow the general or home use trend. It seems to me though that (logically, but without proof) this increase may be in the SME market, where personal preference can be more important than corporate IT strategy.

Cross platform development greatly limits the technologies and languages that one might choose to develop with, yet commercially is making more and more sense.

This is still an open question and one that is swayed by the vertical market that you might be developing for. It pretty clear that an application aimed at graphic designers would be more profitable if cross platform. Perhaps something in the legal sector would not benefit at all. But, what about an application of ubiquitous use across both the SME and corporate market? Where would we draw the line?

What are the development options?

Please post a comment if you know differently!

  1. C++ (option 1) with a common interface library, e.g. QT
  2. C++ (option 2) with separate interface code
  3. Java – compile once and debug everywhere.
  4. scripting and GTK (I haven’t really looked in to this, but understand that this would be possible)

Choices would depend on the simplicity/complexity of the UI design and therefore its percentage of the build. For example if I were building a local file indexing engine (a la spotlight for the mac) with a half a dozen user settable preferences and an on/off button I would not need to worry about re-writing the UI. If, however, I was building a diagramming tool, then my first concern would the the common UI tools between platforms.

The other important factor to consider is the additional cost to developing cross platform. My experience of developing cross platform in Java is that it is about 10-15% more expensive (depending on various factors), than developing for one platform.

My last thought on the matter is this: Mac users often have less choice in applications and are usually prepared to pay for something that works well, simply and with grace; right or wrong this is why they went for the Mac and MacOS X in the fist place. I believe that users are often as concerned about their experience with an application as they are about the raw features and as often as not confuse the two: rating more usable applications as more effective in getting a job done.

Software Development Project Risks – The Human Side

This is a very short post about software development that I hope will be useful to anyone that finds it. I wanted to put on our blog a five key checkpoints that help identify risks in a software development project, based on the more human aspects. Some of these items seem obvious, other less so. As my background is software development and software development consultancy, this list pertains to that discipline, however many of the ideas cross over into project management in general.

  1. Is the project ‘project managed’? If there is no dedicated project manager with project managements skills, then risks and issue are not likely to be picked up and dealt with.
  2. Is the software development project technically managed? This is quite different from good project management. Good technical management reduces risks, such as: bad choice of technologies; ego programming; bad communication between developers; poor testing; lack robustness, no extendibility and poor documentation.
  3. Is the software development team qualified? It’s not just important to have managers with the right experience, the team need to have the right experience too. Sometimes skill areas are transferable and training can help. In general a software development project team lacking some experience, that has been identified up-front and managed through training and time given to self learning may be an acceptable risk. After all, we all go through the process of learning new skills from time to time. However, asking a team of Cobol programmers to tackle a web integration project on the basis that “they are programmers” and “that is all that is needed”, would most certainly be a recipe for disaster. Of course most software development projects are not so extreme. The risk is that your software development project might be closer to this example that you might think; without looking at it carefully you might never know until it is too late.
  4. Staff attrition: is anyone likely to leave the team before the end of the software development project? This does happen and can cause a real issue if work is so segregated that each team member does not have any real idea of what the others are doing and therefore cannot pick on someone else’s area of work.
  5. Is the client (or project owner) communication good with the software development project team and managers in particular? Is progress well communicated with the client? Do the team understand their client’s expectations and have the project limitations been well communicated with the client? Does the client understand the risk and issues that have come up during the development to-date and do they have a good grasp of the project plan, schedule and current progress? In the end project success is about meeting your client’s expectations and it’s key to at least manage these expectations!

There are many factors that can effect a project adversely – these are my top 5 – what are yours, please comment on this article below …