Common problems in IT projects
What Went Wrong with My Software, Website, ERP System?
Find out why your IT project may not meet your expectations and how to avoid the most common pitfalls.
Your new website is finally live! But then...
After months of patience, it's finally here: your new website is live. Although the project took three to six months longer than planned, you are proud of the end result. You are already dreaming of the many leads that will flow in.
But instead of getting more visitors, you soon notice that traffic is decreasing. As a layman, you don't know exactly what's to blame. The company that developed your Web site assures you that it will take a while for Google to index your new site. What they don't tell you, however, is that they forgot to set up redirects from the old structure to the new one.
Six months later...
After six months and countless SEO updates, you decide to update the structure of your website. You have a new service and realize the content needs to be different. When you contact the company, they are willing to help, but they warn that it will be a big job. Where you thought the changes would be done in a few hours, it suddenly turns out to be a multi-day job for two people. The bill starts to add up quickly.
What goes wrong here?
When I take over a project from another firm, I sometimes come across remarkable things that reveal why it is so difficult to customize the website.
Over-engineering and unnecessary complexity
Some projects are simply over-engineered. They involve multiple people and cutting-edge technologies that contribute nothing to the end result, but conform to the latest hype in the software world. Consider, for example, the unnecessary use of frameworks such as React, Vue or Svelte. We also participated in this hype for a while, until we realized that customers do not need complex frontend frameworks with APIs at all. In 99% of cases, HTMX suffices with a bit of vanilla JS or AlpineJS. The remaining 1% is reserved for special projects where budget is not an issue.
Repetition and ignoring the DRY principle
In other projects, I often see code constantly repeating itself, indicating a disregard for the DRY (Don't Repeat Yourself) principle. Instead of writing a function once and reusing it, the same function is explicitly copied and pasted everywhere. If you then want to change something, you have to do it in 50 places. If you forget one, it creates a bug or worse.
Smart but opaque code
Still other projects are so cleverly put together that you can hardly understand where anything comes from. Everything is so ingeniously structured that you don't know what will happen if you modify one function. You have to double-check everything and are left with a nagging feeling, especially if no tests have been written.
Dependency on plugins
Some projects rely on a dozen plugins, with no thought given to the maintenance and future-proofing of these open-source solutions. If a plugin does not grow with the project, it can incur significant costs for the client to replace it.
Lack of mastery of CSS
In the frontend area, I sometimes see that CSS is not well mastered. CSS describes the formatting and layout of your website. Often people lean too much on a framework like Tailwind to create the layout. In most cases, however, an external framework is not necessary. For example, I recently had an applicant who, as a test, had to create a page without a framework. Despite a valiant effort, this person failed.
As a customer, how can you assess code quality?
As a client, it is difficult to assess code quality, because you are not a specialist. But how can you address this anyway? Try to pierce through the buzzwords and marketing talk by asking about the vision for software development. Then when people start using buzzwords and incomprehensible terms, you know what time it is.
Our philosophy in software development
With us, everything is about simplicity. We avoid unnecessary plugins and stick to the core of the software we work with. We'd rather write an effective solution ourselves than use a plugin that can do everything but nothing well. We don't repeat ourselves in the code; if something does the same thing in different places, we refactor it. We provide useful comments with our code, so that everyone (including ourselves) can easily understand it later. Our code has a natural flow, without unnecessary imports or excessive engineering. We constantly improve our code, give functions and classes clear names, and make sure the project can be installed in the development environment with a single command. In the frontend, we also think about disabled people, who also surf the Internet. We apply methodologies such as BEM and CUBE-CSS and structure our code logically.
If you follow these methods, in the long run your website, application or ERP system will be easier and more cost-effective to maintain, have fewer bugs and simply run smoother. And who doesn't want that?