The last entry ended by looking at typical motivations for writing custom code in-house instead of using a commercial package. It is characteristic of these motivations that they are responses to the deficiencies of the commercial offering. Or a tendency to develop in-house code is born from assuming commercial tools do not exist or could not cover all the particular needs you have. Due diligence before committing resources is definitely recommended.
Your goal is to turn feelings into facts with supporting evidence for your own peace of mind.
It would be a pity go and grow some code that you already own or could graft on cheaply from your software supplier.
My conclusion is that staying within a vendor provided Application Programming Interface (API) is better. You get consistency of user interface and a greater good for a greater number. Even if you have existing capabilities in different programming languages or scripting, it is worth the effort to retrain a small number of experts, sometimes just one, in order to preserve the comfort of a larger number.
A case study a single custom report.
An example of the type of work benefitting the community is custom reports. Let’s say you want a report about Multicores in your designs. Making these can go deep quickly. There is intrinsic subtlety and difficulty in some of the report design tasks - so modeling this reality is sometimes going to catapult you if you are something of an amateur into the realm of expert user.
It’s reasonable to ask, what exactly do you want? Grouping, subtotals, page throws based on … shielded/twisted/twisted and Shielded/blunt one end/different cut lengths for the wires in the multicore/ different wire sizes/different materials of insulation and jacket covers/different twist specifications/headers and footers
Be under no illusions that an end user is interested at all in writing a specification so you can get it right first time. Retain no misapprehension any one will be interested in how many views or dimensions, iterations, loops, index accesses or doodads are needed for these ten alternatives. You’re going to be doing it yourself.
Such requests are deceptively simple, by which I mean there can be a lurking complexity in there.
We’re into the money.
And, I will freely admit it, finance is important. So how I am going to conclude this multi-part look at the preference for commercial over grow-your-own software in the realm of electrical systems interconnect by making reference to the money.
It is normal to address choices like between a Vendor’s commercial market-wide comprehensive package or self-resourced and funded software development by looking at the Total Cost of Ownership (TCO) figures. I’m not going to dwell exhaustively on this issue, because you will know for yourself if you are facing the in-source or outsource decision for software how the economics and the numbers are constructed. And if you don’t you should find out, or else your budget application might fail.
Example TCO items for Integrated Electrical Systems Software development.
Time & Cost of Research/Specification.
Gathering and writing up needs, writing requirements, architecting and mapping data elements, polling and meeting with stakeholders, securing executive & management sponsorship, project planning, reviewing technologies, assessing vendor capabilities.
Time & Cost of Development and QA
Assembling team, reviewing specifications and modifying, planning and executing purchase of IT development environment, developing unit test and QA processes, supervision. What skills and how numerous ought these people be.
Time & Cost of Adoption
Acceptance testing, review, documentation and methods development, end user training and support. In terms of skilled people and for how long this project will last is going to be the biggest commitment you have to make. You plan, you test, you adjust, migrate and go live and review. If your internally developed and highly-custom system is known only within the walls of your own company, when your business expands, you aren’t going to be able to recruit people well versed in it. You’re going to need to train them.
Time & Cost of maintenance, fixes, improvements, upgrades and future-proofing
Review and prioritiziation of functional effectiveness of initial solution, ongoing support and capture of enhancement requests, decide actionable preferences. The hardware and infrastructure levy you have to pay for storage, architecting,
Time & Cost of de-commissioning
Transition to replacement system, insuring the requirements met by the old system are no longer relevant or met by the features of the new system. Migration of the data, visiting all stakeholders and making sure that benefits from using the retiring system are understood and covered or will not be needed.
If costs are important to you, then you want to compare objectively between your alternatives. The danger is to incur more expense than necessary. When your boss, the boss’s boss, or the shareholders get involved the chat seems always to turn to money. It comes down to the finance.
Sharing the load.
Choosing commercial solutions means that you are getting benefit from all your vendor’s other customers - they are in a sense contributing to reducing your costs. Your software supplier has contributed the speculative development, quality assurance work, staffing costs leading up to a commercially available, and if you are seriously looking at adopting it, an already successful tool as well.
Choosing a non-commercial and specific-to-you-only path means there is no hiding place from bearing all the responsibility and risk and head count to make the solution. A sometimes cited potential advantage in pursuing this path is that excellence in the resulting solution gives unique competitive advantage. That could be true, but my advice is to be careful here.
Some systems, Capital foremost and best amongst them are configurable and extensible. The concert hall grand piano has to be tuned. In localizing and customizing within the package you can encapsulate the same specifics, the know-how and the intellectual property of your design and business processes without going to a full custom solution. Is the crucial commercial value of your organization truly in filling gaps in a software system, incrementally expanding functionality? Perhaps your competitive advantage lies in the leadership given by your human resource, the value-add of your streamlined process, the flexibility of your workforce, the partnership fostered between you and your customers.