Complexity of Technologies in the Workplace
I met with a client the other day when the topic of introducing a new technology into their environment came up. This client has some very talented individuals working in his company who develop software in the technologies mandated by the company. One of the individuals had raised a desire to use an additional toolset to develop applications; namely ColdFusion. The relative merits of ColdFusion were not the issue under debate; though I'm sure it does the job just fine. The issue my client faced was whether it was sensible to allow the introduction of a new toolset into his environment considering they were already using a range of web-development tools, and what were the trade-off's he would be facing.
This scenario poses some interesting questions: when is a company's mandated technology-set the optimal, productivity-yielding combination of tools? and when are the tools employed simply out of date?
Our businesses must keep up with the times and not find themselves using legacy tools and technologies; but at the same time, there are pragmatic considerations to be weighed up when introducing tools into an environment.
Anytime an application or solution is developed for a client (or your internal users) in a particular technology; your company must live with that technology until the application is end-of-lifed. A well-built, well-suited application may live on for many years providing useful value to clients. The application itself may out-live the tenor of the many of the original developers who created it.
This poses a challenge when running a business which relies on custom-built software solutions; such as websites, proprietary databases and mobile device software. If the technology toolset is too limited in range or is outdated; it will be more difficult to deliver the functionality required to satisfy business requirements. As the saying goes, there are horses for courses - not all technologies suit all purposes.
Consider the converse situation where a business has introduced quite a large number of disparate technologies in order to build their solutions. The combination of these tools may enable the business to deliver the first couple of releases of the desired solution in a reasonably quick timeframe, but there is a catch.
What happens when the technologies and tools need to be upgraded and patched? The more individual technologies present; the more administrative effort that is required to upgrade and patch, each and every tool. Over the working life of an application; this administration budget may represent quite a large proportion of the initial development cost.
Secondly, the more technologies employed to deliver a particular solution, the more skills your development team must possess. Without a large team; each developer must be well versed in all of the used technologies if that developer is to maintain or extend the application in the most efficient time and cost possible. This poses a very difficult hiring proposition; especially in the tight IT labour market we are currently experiencing. It is not impossible to find that person; but it raises the possibility of paying a high premium to attract staff with the requisite skills to maintain an existing, and in some cases, what is now a legacy application.
Another overlay to this decision is how much developer support and activity is there in the marketplace for the tools you use. Popular technologies which have a strong backing throughout the technical community are more likely to outlive flash-in-the-pan technologies that are super-cool now, but will be obsolete by next year. Why is this an important factor? Because you will need to hire staff to work on applications built in these technologies for a long time to come. It is much easier, and in most cases cheaper, to hire technical staff to work in popular, ubiquitous technologies; such as Java, PHP, MySQL, and .Net.
Have you tried to hire a COBOL or Delphi developer lately?! I'm not knocking these technologies; its just practically impossible to find quality people who have the skills and desire to develop in them.
So, what to do about it? There needs to be a sensible trade-off made by business owners and IT executives. The number and range of technologies must be kept to a reasonable minimum without being draconian. Ask your development teams they want to use. They are the experts in the toolsets, technologies and what is hot at the moment. Armed with this information; together with the development team or development lead; pick one or two technologies per discipline. For example; limit the number of database technologies you are using. If you can do everything with MySQL; do it. If its Sybase, Oracle or SQL Server; then that's your choice. (I'm not advocating one over the other as it very much depends on your situation, budget and requirements).
The Dedication Takeaway
Next time a new technology is suggested for use in your environment; embrace the concept, but ensure you understand whether you can get people to develop in it, how long you're going to be living with this technology, and what the total cost of using it will be.
In Summary
- Create a Technology Toolset Policy which provides guidance over company mandated tools
- Limit the number of similar tools which achieve the same result
- Ask your senior technical people what they recommend
- Use the candidate market as an indication of what technologies you can employ for at a reasonable cost
|