04/03/2023
It's always disappointing to come onto a project that a client hires us for and see a path of over-engineered solutions that feel like resume-building projects left in the wake of past developers.
Everyone has programming languages they prefer, default choices when it comes to choosing a database, and deployment methods they like. However, the decision of what technologies to use should depend on the job and the person or organization paying for it. Moreover, tool choice should be made in consideration of the eventual hand off and who will have to maintain the system long after the initial project is over.
At Foxhound Systems, we have consistently gotten outstanding results using the Haskell programming language, but we won't even think about suggesting Haskell if our client doesn't have the team to support it and isn't prepared to commit to ongoing support from us. Maintenance and ongoing development in Haskell is easier than most languages, but only if you have access to staff with a solid knowledge of Haskell. In such situations, we use a different language that we think is a better fit for the project and the client.
Beyond language selection—and arguably even more costly—it's far too often that we see what resembles a bespoke framework or all encompassing library that has poor or zero documentation and introduces nearly incomprehensible complexity while also being more rigid than off-the-shelf options. I say this is more costly because, for example, an experienced developer can quickly come up to speed with Django (a Python framework) even if they have only limited experience with Python/Django. This is because there's excellent documentation available for both the language and the framework. Unfortunately, the same cannot be said for an over-engineered and undocumented custom framework, even if the developer has used the language before.
If you're hiring developers, whether it be contractors, freelancers, or employees, you should be thinking and asking questions about maintainability and what will come after a project ends. Unfortunately, for non-technical leaders, it's hard to know if you're wasting money on over-engineered solutions being built on your dime. In such a situation, it's a good idea to hire a third party to act as a consultant, evaluate your project, and advise you.
If you find yourself in this position, we can help. Read more about how and when we can provide technical guidance. Questions? Post below or reach out to us directly: [email protected]