The UpgradeJS Blog

Fixed-cost, Monthly Maintenance Services

When we started offering productized Node.js upgrade services opens a new window , we wanted to bring our technical debt expertise into the JavaScript opens a new window ecosystem, with the goal of helping as many people and companies as possible.

Unfortunately, in the past we’ve had to turn down companies who wanted to work with us but couldn’t secure the minimum monthly budget to work with our experts.

I’m pleased to announce that we’re now offering new opportunities for startups and small businesses to work alongside our team.

In this article, I will share a few new options to collaborate with our team of experts who specialize in technical debt opens a new window remediation.

Why

After connecting with a lot of SaaS founders at MicroConf opens a new window ‘23, I realized that there are many entrepreneurs, startups, and small businesses out there that want to pay off technical debt by investing a small amount of money per month.

While teams understand the need to remediate their technical debt, this very often loses priority to shipping features, releasing patches, and addressing other tasks prioritized in their product roadmaps.

Although everybody would like to upgrade their app as fast as possible, sometimes that’s just not within the budget. Instead, a good alternative can be to gradually work through your technical debt opens a new window with a slower-paced retainer model.

We started by launching a fixed-cost monthly maintenance service for Ruby on Rails applications opens a new window and, following the success of that service and feedback from companies looking to pay off their JavaScript technical debt we have engaged with in the past, we are bringing the fixed-cost monthly maintenance service to UpgradeJS opens a new window !

What's included in our monthly maintenance services

Our fixed-cost, monthly retainer will include services to gradually reduce the technical debt in your application. Our services will include:

Framework Upgrades

If your application could use an upgrade, be in Node opens a new window , React opens a new window , or Vue opens a new window , we will start by identifying the critical path for your upgrade. Often, the dependencies are where the complexity is hiding, and we’ll help you identify what you’re looking at in terms of what needs to be done to upgrade.

Depending on your needs and what framework you’re using, we might be able to go straight to the upgrade you want (for example, upgrade from Node 18 to Node 20 opens a new window ) or we might recommend intermediary steps.

For the Vue 2 to Vue 3 migration opens a new window , for example, it is recommended that you first upgrade your project to Vue 2.7, update any deprecated syntax then leverage the Vue migration build to gradually migrate to Vue 3.

Our team will evaluate the path that makes the most sense for you, and make a recommendation.

Whatever path we need to follow, we’ll start by shipping changes that will prepare you for the upgrade but are compatible with your current set up, and will gradually work towards your desired version. We’ll also note any other potential improvements we notice so they can be prioritized next and worked on along the course of the engagement.

Once we’ve completed all steps required for the upgrade and have fixed any errors in your test suite, we will make sure your application works in the staging environment using the next version.

Only after we are satisfied everything is working and issues have been found and patched will we recommend deploying the change to production.

Framework Migrations

There are a variety of different reasons that might lead you to decide that migrating is the best thing to do for your application. Maybe you’re running AngularJS, which reached end of life in 2022, and need to migrate to Angular or ReactJS. Maybe you are seeing the benefits of Next.js and would like to migrate to it. Maybe you want to introduce TypeScript into your codebase. Or maybe you have looked into some of these things and need some help deciding the best way to go.

Whatever you need, our team of experts will make an assessment into the pros and cons of a migration, provide alternative recommendations if we have any, and trace the critical path for you.

We will then gradually work towards your migration, with as little disruption to your flow as possible.

We will ship small PRs with the necessary changes, allowing you time to review and QA, and will address any issues that might arise. Once the migration is completed, we will make sure your application runs well in staging and patch any issues that might arise.

After we ensure everything looks good, you can deploy to production and we will support the rollout.

Dependency Management

While there are great tools out there that can quickly help you upgrade minor versions of your dependencies (e.g. Depfu opens a new window ), there seems to be a missing link between what we do (JS Upgrades opens a new window ) and what they do (shipping automated pull requests, upgrading one minor version at a time).

That’s where we come in. We will work on minor and major version upgrades (according to semver opens a new window ) for all of your dependencies.

Whenever applicable, we will also identify which ones of your dependencies do not support a target version of Node ahead of time and focus on upgrading those first. We even built a tool to help with Node compatibilities opens a new window , depngn opens a new window .

We will submit one PR at a time. This will give us the opportunity to properly test, deploy, and monitor any issues in production.

Performance Monitoring

Sample of a screenshot of NewRelic for a Node application

If your application is not currently using an Application Performance Monitoring (APM) service (e.g. New Relic opens a new window ), we will set one up for you. We’ll consider your needs and budget, to make the best recommendation.

Once your APM is up and running, we will keep track of low performance and high memory load issues. We will share a monthly report with the top issues we noticed together with our recommendations to improve your performance.

If you want a more in-depth analysis of your application’s performance, we can discuss a custom report that would meet your needs separately.

Tech Debt Management

Charts representing maintainability, difficulty and estimated errors

As a company specializing in paying off technical debt, we understand how important it is to keep track of your code complexity, churn, and code coverage opens a new window metrics.

On top of that, we know how difficult it is to communicate the problems with consistently increasing technical debt:

  • Reduced development velocity
  • Constant regressions
  • Undesired side effects when deploying small changes

We can help with that! Every month you will get a report on your technical debt, not just on the codebase, but also in your development workflow, infrastructure, and best practices.

In this report we will include any changes that were made to simplify complex code structures, enhance your development workflow, or anything else that was shipped to make your codebase easier to maintain.

Our goal is to gradually improve code quality without disrupting your development team’s operations. To ensure you and your team know what to expect, we will also work on a strategy to pay off your technical debt. After all, as outlined in our investigation of the Express code base with ES6-Plato opens a new window , we understand that each case requires its own tailored strategy.

If you don’t have a shared understanding of what “code quality” really is, we can help you define one that works for your team. After that we can help you “codify” your code quality definition with tools like eslint, jsLint, and jsHint.

Security Patches

Picture this: On day one of our engagement our team will perform a quick security assessment of your codebase. This will give us an idea of the work to be done to secure your application from known exploits and potential attack vectors.

Every month we will make security patches that will level up the security standards for your application. Depending on the severity of the issues we find, we might prioritize this topic on day one.

Pricing

Are you ready to make your application more maintainable?

Considering our 10+ years of experience upgrading applications, and more than 20,000 developer hours paying off technical debt opens a new window , we believe we can offer meaningful updates to your codebase starting at $2,000 per month:

  1. Shohin: $2,000 per month
  2. Komono: $3,000 per month
  3. Dai: $6,000 per month

Each package includes a maximum number of hours per month that we can invest in your application. When naming these packages, we decided to go with Bonsai types because we see a lot of similarities between pruning Bonsai trees and gradually paying off technical debt. 🌳

Shohin

This is a great package for organizations and companies that either don’t have a lot of technical debt or want to go slow.

Their test suite might be well-written, their JavaScript application might be small, or their development team would be overwhelmed with more than 2 pull requests per month.

Komono

This is a great package for organizations and companies that have some technical debt, know they need to fix it, and are ready to review from 2 to 4 pull requests per month.

Their test suite might need some attention, their application might be more on the medium size, or they have several outdated dependencies or are a lot of versions behind with their framework of choice.

Dai

This is a great package for organizations and companies that are ready to ship 3x more than if they had chosen the Shohin package.

Usually their application is rather large, their main dependencies are a few versions behind, or they might even need a migration, their test suite is flaky, or they need to move fast and upgrade things.

Depending on the plan that you pick, we will invest from 10 to 30 hours per month remediating technical debt in your application/s.

Strategic Projects

We know that every now and then our clients will have one-off, strategic projects they will want to ship as soon as possible and we want to be able to help.

When that happens, we can offer our services on an hourly basis to ship value in the form of features, infrastructure upgrades, bug fixes, or anything that will make a difference in our clients’ businesses.

Rescue Services

Our monthly packages don’t include rescue services. If your application needs to be rescued, we can certainly help! We’ve done this many times in the past and we are happy to get you out of a thorny situation.

For these projects, we need to start with a short, one-week retainer to kickstart the rescue project. This will give us time to assess the situation, come up with a rescue plan, and start executing it.

How does it work?

We are used to working with teams of all sizes. From engineering teams of one to teams of 50+ software engineers, we see every engagement as a successful collaboration between our team and your team.

We thrive when we collaborate with our clients’ engineering team on a daily basis, so we will have a channel to communicate asynchronously. If you need to get on a call, we can do that too!

Any of the changes that we submit will be open for review and discussion. We will clearly explain why they are necessary, what the changes will do, and what impact they will have in your tech debt scorecard.

Communication is key to us! We provide you with a monthly report on your technical debt, including codebase, development workflow, infrastructure, and best practices. We are always open to hearing your thoughts and needs and answering your questions.

Summary

Our commitment to helping people and businesses overcome their technical debt is stronger than ever.

We are excited to launch our new monthly maintenance packages tailored for non-profit organizations, startups and small businesses. We are certain we will gradually reduce technical debt in their applications.

Our technical debt remediation services, provided by a team of experts, include dependency management, framework upgrades, framework migration, performance monitoring, tech debt management, and security patches.

These three affordable plans starting at $2,000 per month are cashflow-friendly, consistently add value to your codebase, and give you access to our team of legacy code experts.

You can expect to see gradual improvements in your code quality opens a new window and overall decreasing technical debt while keeping your development team’s velocity uninterrupted.

“The typical development organization can increase their feature delivery efficiency by at least 25% by managing technical debt. That’s the equivalent of having 25% more developers without additional staffing costs or coordination needs.”

 

(Source: CodeScene Whitepaper opens a new window )

What would you do if you had 25% more development efficiency? How much more could your development team deliver in a month?

Let us be your trusted partner in making your application more maintainable, secure, and efficient.

Ready to pay off technical debt? Send us a message! opens a new window