Over the course of time, I’ve had very interesting, funny, heated and even some irritating conversations with people over strategic and tactical technological choices. Since Helmes has a wide range of different technological approaches – the custom software development in most common technologies (.Net, PHP, Java) and the ready-made business tools from industry leaders (SAP, Microsoft, Progress and Aurea) – we’ve had the opportunity to move past myths and provide experience-based decision support for our clients. The factors that determine the final choices can be very different in practice from those introduced in theory.
To build or buy?
One of my clients once told me how he decides whether to build or buy software. He said, “If you have a vision, go custom. If you just want something, go for product.” It makes a lot of sense, since the processes where one has a strongly articulated vision are usually the ones at the heart of the company’s competitiveness. Those are the processes under strong pressure to innovate. Other processes can easily get away with a standard approach without much influence on the overall business results.
Thus the principle is simple. If what you need is commodity, buy a product. If the DNA of your business process is unique and has specific complexity, develop custom software.
Considerations when buying
While most off-the-shelf products promise to fulfill your specific needs, you’ll actually only get the market average performance. Or with the best products on the market, you get slightly above that, since they reflect the industry best practices. Opt for products when you know you will not need a lot of customizing. Otherwise you’ll find yourself waiting for improvements for unreasonable lead times (6-12 months) and irrationally high costs.
Considerations when building: customize a platform or build from scratch?
Developing a system from scratch or based on a highly customizable platform is a good choice for innovative, unique solutions. Integration is paramount – the monolithic dream of “one system that does all” is a thing of the past. In today’s software landscapes, it is the norm that different systems work side by side. Tight intertwining with the systems of outside partners is part of the new standard, too.
In both cases, the critical thing to consider is the availability of the resource. My experience shows that the availability of a custom software team is slightly more probable than of experts of such platforms. However, in order to make sure the client gets the final solution in a desired way, we are eager to find the customizing experts to accompany our licensing solutions. By drawing on the international network of qualified experts we’ve worked with, we take the lead even if our own resource is tied up.
Considerations when building: the choice of technology
There are countless articles on the Internet concerning the choice of technology for custom software development. In theory, the typical considerations are based on the intrinsic qualities of technologies and their ability to ensure time-to-market, total cost of ownership and the estimates of how future-proof the technology. In reality, almost all three aspects are greatly influenced by the maturity and resourcefulness of the agile team, regardless of the technology they use. So I would say that one of the most important factors to consider when deciding over the technology is the availability of a strong and mature agile development team.
A strong team has a killer integration skill too. This can save a lot of development hours and make good use of existing systems and data. With smart integrations, what was once considered as obsolete and legacy can prove to be a crucial generator of business value. Regardless of technology. Helmes has expertise in all common languages and this supports our strong system integration competence.
Team maturity, time-to-market and total cost of ownership
The cost and development speed is determined by the resourcefulness of the team, both developers and infrastructure engineers. A mature agile team can cut costs and time-to-market in half, by delivering value early and being highly responsive. Most technology-related gains come from optimal infrastructure, substituting expensive licenses with just-enough custom development and smart integration. Optimizing for the TCO requires the collaboration of software developers and infrastructure engineers. In Helmes that is programmed into our process
by engaging the infra engineers in solution design and by planning the aftercare needs in the beginning of the project.
The technological choices of a mature team are, well .. mature! Technologies proven to work by multiple trusted experts are the way to go. An experienced team can see past the hype around bleeding-edge technologies. Playing with new tech is super-interesting, but the actual learning curve can extend to as long as six months. This makes development super inefficient, costly and stretch the deadlines and time-to-market.
The impact of technology on project success
The choice of technology is so often debated by geeks and fanatics that it seems like the most important consideration when initiating a project. In reality, the technology isn’t even in the top 3 factors influencing the software project success. The more important factors include solving the real problem, having a project champion and working with an experienced, mature development team. Most of the technical issues will not arise when an experienced team is on board since they will not opt for rigid products or immature technologies or generate excess complexity.