Working with old software systems and coming up with ideas about what to do with them is a nice challenge. Here are 17 actions you can think about when you’re trying to move your software system into a (sometimes better) future. 🧵1/ A list of the actions you c...
🙈Ignore! A simple yet powerful "action" is to go along with what you have. Maybe your system is not so bad at all and just does the job good enough. These circumstances might be a reason for doing nothing at all. 2/
🌇Sunset! Discontinue the work on and support for the system. Maybe a change in your business model is so significant that you also have to change your product portfolio and leave old systems behind you. 3/
🧟‍♂️Keep alive! Maybe you have a system that relies on archaic hardware or software platforms. You could buy supplies for this system to live as long as possible if there is no need for fundamental change. 4/
💰Sell! You may not see any future with the software you’re developing. But maybe others do! Maybe they would be happy to buy the system from you for their promising future and to keep their business alive. 5/
📝Outsource! Make your problems to problems of others by letting them develop the system for you and provide it to you via a library, service, or software product. 6/
🎉Free! You don’t need the software system anymore, but a community out there is desperate to use it or depends on it? Do them a favor by transferring the code ownership to them. Even making the software open-source might be a good action here. 7/
💵Repurchase! Your self-developed software does what other software systems out there do as well (and/or they do it even better for less money?). Why waste money on development activities? Buying software from others that do the job for you could be a better alternative. 8/
🥫Preserve! Maybe you’re 99.99% sure that you don’t need the software system anymore, but you would sleep way better if you were able to look at it again just in case? Put it into an environment (emulators, virtual machines) where you can run it again if needed. 9/
♻️Repurpose! Some added functionality over years of development might attract an entirely new group of customers than the initial idea of your system. Make this functionality to the new core of your system and offer it as another product name but with the same code base. 10/
🔧Salvage! If almost all system features aren’t needed anymore but cost a lot of maintenance time, you could identify those rare features that are still worth it. Get those out of the old system, “transplant” them into a newer system, and delete the mess left behind. 11/
✂️Trim! There may be other systems misusing your system like for storing their data directly into your database or accessing external services via your system. Get rid of this added functionality and data that hasn't anything to do with the scope and purpose of your system. 12/
🌯Wrap! If your system’s technology stack isn’t compatible with the fancy technology out there, you could place an adapter in between both worlds. In this way, you teach your old software system new tricks (or integrations) by wrapping it up. 13/
✨Replace! Enough is sometimes enough, and your system deserves an end of life in dignity. Albeit risky, there are still valid reasons to rewrite a software system entirely in some cases. Free yourself from the chains of the past! 14/
💬Convert! If you’re struggling with finding people who know a specific programming language or platform, you can think about translating the system’s source code from an old language into a newer one. 15/
📈Improve! A poorly structured and low-performing system is not always a reason to completely abandon it. There are many techniques out there that help you to modernize your system in parallel to feature development. Steadily evolving systems get not so quickly out of date. 16/
🏗️Replatform! It’s not always bad code that holds us back. Archaic and no longer supported platforms like closed environments or expensive database management systems can hold us back, too. Consider putting your system on a new foundation to make it ready for the future. 17/
💨Rehost! Suppose you face limiting hardware and infrastructure in your local data center or an operations team that can’t meet your demands. In that case, you can think about hosting your system in another environment that gets rid of such limitations. 18/
Sources where I took many ideas from:

Nine Things You Can Do with Old Software by Grady Booch
computer.org/publications/t…

6 Strategies for Migrating Applications to the Cloud from the AWS Cloud Enterprise Strategy Blog
aws.amazon.com/de/blogs/enter…

+ discussions in my workshops 19/
Recommended resources:

M. Scott Ford’s Keynote Presentation from MenderCon 2020


Michael Feathers: Strategic Code Deletion
https://t.co/epLxHBm1pr

Eric Evans: Strategic Design
vimeo.com/12674642

My TOP 5 resources
feststelltaste.de/top5-legacysys…

20/

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Markus Harrer

Markus Harrer Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(