Category: "Web Business"

Accelerate +

A side effect of accelerating development by assembling systems of available open source components is the risk of incompatibility.

In this case, one must choose between abandoning the component, or modifying it. My recommendation is almost always to abandon it, because it is often an issue with the platform and the age of the component.

This error:

Assigning the return value of new by reference is deprecated

Was thrown by a great piece of software, on a PHP 5 platform.

I checked the release date and it looks like the software is not being updated. So, I chose a different package.

As a general rule, I don’t modify open source code. I strive to understand how the developers intended for it to be used, and work within those constraints. There are a few occasions when I will apply a patch or a quick fix because there is no alternative, but not many.

This has business impacts. It is almost always less expensive to use existing code than write new code. The tradeoff is that you accept a learning curve and some limitations to save the time. Thus - the code must be powerful and flexible enough to meet the requirements and must be fairly easy to use. Anything that is too difficult to work with should be discarded quickly.

Accelerate - Focus on the end product, not the components

There is so much awesome open source code available, and some of it is very powerful. To build a powerful, cost-effective solution, the best approach is to use open source code to provide the bulk of the functionality, and then extend or integrate the remaining elements.

The complexity is in gracefully combining elements from diverse sources into a cohesive unit, and ensuring the design is manageable in the event that more than one application is used on the site.

The choice of components is extremely important. I think the only way you can really decide is to try them out.

Management notes

One the most important things I have learned is the impact of organization, roles and responsiblities, on a company.

Even with a great technical team, if you don’t have good leadership and management, you will not be successful.

If you fail to resolve a conflict between employees, you risk losing the better employee, because they will likely have a choice (meaning able to get another good job), where the less qualified person will not.

If the goals and limits of a project are not clearly defined and communicated to a team, the team members will be unable to make good decisions as they work, and they will not be able to stay within the budget.

Choosing a web "technology" or product

There is an amazing array of awesome open source software available for a wide variety of applications. Choosing the right product is extremely important.

Be sure you have a clear definition of what you are trying to do first. If you are trying to create a simple web site that is easy to use and maintain - you can use a blog or content management system. You could even use a template based system offered by many hosting companies. If you want to sell items on line, and you don’t want to use eBay - you may be able to use PayPal, or you may need a cart. The only way to decide what makes sense is to really understand what you want to do, and then, what the different methods are. The same is true for a social network, a resource site, and or a huge multi-function system.

Next, you should understand your time frame and resources. In a nutshell, if you don’t have much time, you will need to choose a solution (hosted or not) that allows you to bring it to life quickly. If you have a team with experience with a specific product, that may be a driving factor. Be sure their experience is with a current, active product, not an unsupported technology. If you have LAMP servers, and you want to use a java based product, be sure the servers are ready to support it.

Another key consideration is the interaction with other systems. For example an ecommerce site may need to interface with an accounting system.

Finally, one of the best ways to evaluate products is to try them out. Even if you have to buy a copy (assuming the cost is not prohibitive), to evaluate it fully, the investment will probably be valuable - either by allowing you to purchase it comfortably, or abandon it after careful review.

My evaluation criteria for web-based products:

  • Will run on my server
  • Online/live demo at the source site to experiment with
  • Documentation is accessible and adequate, and in a language I can read
  • Does not have current serious security issues, or offers a patchSecunia
  • Market share, popularity
  • Interfaces to other products
  • Easy to install
  • Easy to use
  • Support forum or organization
  • Community and contributions, plugins
  • Architecture of software
  • Extensibility
  • Comments posted in blogs and forums about the product, although these must be reviewed carefully.
  • Cool name and neat site :)

Check your web stats

No matter what is running on your server, you should periodically check the web stats.

It may be the only way you find files that shouldn’t be on your server.

No application is unhackable. Hackers are smart and persistant.