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.

Use a base tag to ease the transition from a development environ to a live server

If you have to develop a site or application on a server that isn’t the target server, you can use a base tag to set the base directory for HTML references. That will allow the vast majority of the code to be URL/domain independent. This is especially important if userdir access is being used. When the site goes live, changing or removing the base tag should ensure the site has valid references in all the links.

To be sure all the development references are removed, use grep.

grep -r development_ref *

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.

How many site have the same IP address?