Skip to content

Software Migrations

Welcome to the This Dot Labs podcast, today we'll be talking about Software Migrations.

As a consulting firm, we regularly field requests from companies looking to revise elements of their products. These changes often take the form of migrations, through which we might change:

  • Frontend Frameworks
  • Cloud Providers
  • Third-Party Integrations
  • Defence Platforms
  • State Management Systems

When discussing migrations, a lot of people find it hard to differentiate between migrations, refactoring, and adding new features. It's important to remember that when we refactor, a team’s developers usually understand the content already. In these instances, our goal is just trying to optimize how things work. With a migration, we not only have to move some code to a new framework, platform, etc., but the team has to be brought up-to-speed on the new concepts that are being implemented through this change prior to its implementation.

When simply introducing a new feature, a team expends effort, developers, time, or money to add new behaviors. The same goes for refactoring; we invest to get a more optimized system. Migrations require teams to invest just as much as refactors and new features, but give them the same system (essentially). Therefore, pitching migrations is difficult, because when you approach a business with a time and labor intensive plan, it is hard to convince them of the value in migrating when there will be no overtly apparent changes to the system functionality.

It raises a lot of questions around why we people migrate from one technology to another. Lately, lots of companies want to migrate to attract talent. As technologies fall out of date, it becomes harder and more expensive to find talent. Besides broadening the talent pool, migrating to new technologies also helps retain tech talent. Many developers like to feel like they're working with the latest technologies because it gives them a sense of career security. Sometimes, you see high-level architects join a team, and believe it's optimal to move to something else completely. Obviously pushing technology forward is great, but at the same time, that can financially burden their employer, and that's not always the ideal way to look at approaching the problem. Companies also migrate to keep their applications protected from security vulnerabilities.

Migrating frameworks doesn't come without it's fair share of problems. Proving that a migration offers enough value to justify the cost can be hard for developers since most times, it's impossible to measure that value. It can also be hard to keep track of new framework versions, and knowing which versions are worth migrating to can be difficult. Additionally, lots of people advocate for the use of lock files to control dependencies, rather than grabbing an entirely new set of dependencies that can instantly tank builds. However, migrations are definitely worth the costs when you consider benefits like higher talent retention, more secure applications, and technological longevity.

Most times, when carrying out migrations, the process is made much easier if there is a guide to walk developers through new versions. Many frameworks do this, and offer developers support during migrations. Angular, for example, does a great job with helping developers migrate to new versions. They have a CLI that can even update code to make sure the updates work properly. That being said, transition guides, and defined or automated processes, make it easier to update. Be it scripts, utilities, guides, or CLI, many frameworks make migrations easier.

We've talked about the arguments for and against migrations. I'm sure you're curious to know what the best way to carry out migrations is. Most people go with what we call the “Big Bang”, where the development team goes “dark” for a while, and implements the migration. Although the approach can be extremely tricky, it is the most time efficient way to do a migration. Some find it better to cut up migrations into milestones, and produce something deliverable, so that they can show their iterative progress, and can also stop working at some point in order to work on something that might be of a higher priority. Most also find it useful to have a good game plan that takes into account what pieces they're breaking up, how they are targeting them, and what they can expect to see, before they begin a migration. Something like this goes a long way towards both it being more efficient, and having better accountability to the people that are ultimately paying the bills.

Adding to that, you can introduce the concept of a Minimum Viable migration. Through this, you establish the minimum number of changes needed to do all new development in the migrated platform. This means running two different systems, and slowly porting things from one system to another.

Something worth bringing up, related to migrations, is that a lot of teams either don't have migration requirements, or the application was built bug-by-bug, or bug-fix-by-bug-fix, over a period of time. When this happens, most don't actually know where they are relative to where they started. Testing is such an integral part of all migrations. You need to know what you’re working with so you know when you've finished. When migrating the infrastructure of frameworks, it's important to have unit tests that aren't framework dependant, otherwise unit testing won’t work on the new system, which might be much more difficult for developers. It's much safer, and smarter, to rely on manual testing, end-to-end testing, integration testing, and other like processes. Sometimes such approaches might seem a bit non-traditional, but you want to make sure that you have the full suite of tests when migrating, because this is the best way to ensure that nothing has fallen through the cracks during the process.

That’s all we have on migrations today. It was great, as are all our conversations on performance and architecture. The conversation will not stop here. There's a lot more that we can cover, so you know we'll come back and have a chance to explore some of those at a later time. Till then.

This Dot Labs is a development consultancy that is trusted by top industry companies, including Stripe, Xero, Wikimedia, Docusign, and Twilio. This Dot takes a hands-on approach by providing tailored development strategies to help you approach your most pressing challenges with clarity and confidence. Whether it's bridging the gap between business and technology or modernizing legacy systems, you’ll find a breadth of experience and knowledge you need. Check out how This Dot Labs can empower your tech journey.

You might also like

FinTech Transformation for 2020: Tapping the Millennial and Gen Z Markets to Drive the Direction of Your Digital Transformation Journey cover image

FinTech Transformation for 2020: Tapping the Millennial and Gen Z Markets to Drive the Direction of Your Digital Transformation Journey

The era of regional and national banks securing geographic areas to ensure a healthy customer base is coming to an end. Small and growth level fintech businesses are attracting Millennial and Gen Z users who are less likely than their parents to identify a single financial institution as their primary bank, and who use a greater diversity of platforms to engage in financial transactions, deposit paychecks, and save their money. Surveys suggest that Millenials are choosing banks based on perks including low interest rates, zero fees, and the ability to access the full range of their banks services through mobile banking. Gallup polls have further shown that this group is 2.5x more likely to switch their banks than their parents are, so the pressure not only to attract new account holders, but actually retain them, has never been higher. It is difficult for historic leaders in the banking sector to ignore the meteoric growth of mobile financial platforms such as Ally, which reported a 23% YoY increase in the number of retail users in its 2019 3rd quarter report. Even applications with functionality limited to single services are seeing considerable growth. PayPal’s part-payment-part-social media app Venmo reported a 73% YoY increase in payment volume at the end of 2019’s first quarter, and at this time last year, robo-investment app Acorns reported a valuation that had tripled in just two years. So what are the reasons these new fintech platforms are so popular among Millennial and Gen Z users, and what can long established financial institutions, looking to improve their web based technologies, learn from their successes? Is it all about providing the most advanced, seamless technologies, or are these technologies simply a conduit for providing services that meet evolving user needs? Are there steps that banking enterprises can take to lay a groundwork for advanced technologies while providing the sort of features, perks, and experiences that your current and emergent customers are demanding? What Inspires Young Account Holders? Traditionally, financial institutions have relied on geographic strategy and brand identity to secure account holders from particular areas and within entire families. However, market research is proving that a bank’s relationship to a customer’s community or family is no longer driving the majority of young adult (18-34) customers’ choices. Instead, Millenial and Gen Z markets are looking for features and perks. They want high interest rate checking accounts, fewer fees, and cash back options. “Millennials struggle with the transition from savings to investing and making money work for long-term goals,” say Fidelity’s Director of Young Investors, Kelly Lannan, “That difficult transition is what sets us apart from previous generations where life stages were mapped out for you.” In an interview with Next Gen Personal Finance , Lannan discusses the disconnect between Millenials and financial institutions, citing metrics reporting that, despite 60% of Millennials having investment accounts, only 10% consider themselves to be investors. And she feels that this is due, in part, to disconnects among financial institutions, their processes, and young adult users. While Millennials may not always be interested in the nuts and bolts of banking processes, they are interested in growing their wealth and securing their financial futures. Some fintech platforms have already tapped into this. Remember Acorns, the mobile-based robo-investor that gives users the option to invest pennies every time they make a purchase with their credit card? Their promotional material and in app experience repeatedly invoke the concept of users planting seeds now to watch “mighty oaks” grow. Robinhood, the 6 year old, $7 billion mobile stock trading app’s very title conjures images of young individualists seizing riches from the very financial institutions and big businesses that they resent. While 71% of Millennials would rather “go to the dentist than listen to what banks are saying”, these companies, which both report that their average users are 32 years old, are carving out space for themselves within the market. This is likely due to two reasons: Perks: Many emergent FinTech apps offer new users perks like free trials to premium versions of the app, small cash deposits to start their savings account, or free shares of stock. Gamified Experiences: These platforms offer features that facilitate fast, daily use. Users see their accounts’ performances displayed in attractive and interactive layouts, read news updates, reference general information about the activity of other users, and learn about investing and financial literacy. Forward-thinking companies will look at this era of scrambling to compete for shares of the young adult market not only as an opportunity to expand their mobile banking services, but to more importantly look at how mobile banking can be a better tool of meeting new customer needs, as well as monitoring how those needs are changing. The Big Data Trade-off In order to secure the current Millennial and Gen Z market, financial institutions need to introduce and refine digital technologies in order to create customer-centric experiences. By procuring data from account holders, companies are able to better track, identify, and meet specific user needs. Research shows that Millennials are 3x more likely to share their information with preferred brands than Baby Boomers. And when we look more specifically at the parameters under which data trading occurs between companies and users, we see that 81% of the total market is willing to share passive data (location, preferred language, device used) with companies, and 75% will share active data (name, demographic information, personal preferences), in exchange for personalized experiences. Of course, fintech applications have an advantage over other platforms in the sense that users are required to provide a baseline of active information to secure their accounts and ensure their identities. However, some platforms have discovered novel ways of increasing the volume and diversity of insights that they are able to glean beyond what’s necessary to set up an account through: Cashback Incentives Discounts on 3rd Party Products Premium Functionality Of course, offering all of these monetary perks will likely increase a financial institution’s cost of maintaining its users’ accounts. And with the average bank already shouldering a $250-$400 annual cost of maintaining a checking account, it is imperative that financial institutions are able to best leverage insights that they will receive through data exchanged for cash and asset incentives. Making The Most Of Your Investment In 2019, corporate banking giant JP Morgan allotted a $11.4 billion budget to developing their technology program, with Bank of America, Wells Fargo, and Citigroup trailing not far behind. However, mid-size and emergent fintech companies do not need to look at these numbers as goal posts, or mold their technical programs to resemble those of some of the largest financial institutions. In this age of rapid advanced integration, it is no surprise that fintech companies are eager to introduce tools that are more flashy, boast higher metrics, and reflect the most advanced technologies currently available to the market. However, an overwhelming majority of companies will most benefit from first understanding real-time customer behavior, and having well organized, performant systems to represent and utilize customer data. The journey to advanced digital transformation is one of small steps, not overwhelming leaps. Fintech companies need to look at transformation as a holistic process. This process includes identifying unique customer needs, introducing novel features to both meet those needs and procure data, and then developing systems that best prime that data for application towards advanced analytics technologies as those technologies become necessary to their services or operations. At This Dot Labs, we understand the important intersection between strategic business development and industry leading technologies. Our trusted web development and creative brand consulting services have been leveraged by some of the world’s leading financial enterprises, including ING, American Express, Bank of Mexico, and Veterans United, in order to improve existing technologies, and pave the way for future digital achievement. Advanced analytics technologies will be the strongest tools for fintech companies as we enter the new decade. However, these technologies are wholly dependent on the quality and relevance of the foundations from which they’re built. Let us help you understand where your technology and data assets fall along the spectrum of advanced integration, and set you up for technological success, no matter what that might mean for your company now, and in the future. If you are ready to take that first step with us, or simply want to learn more about how This Dot Labs can help your project gain new energy and direction, contact us at hi@thisdot.co....

Announcing September JavaScript Marathon - Free, online training! cover image

Announcing September JavaScript Marathon - Free, online training!

Join us September 23rd, 2020 for our next JavaScript Marathon!__ JavaScript Marathon is a full day of free, online courses on Angular, React, Vue, RxJS, Web Performance, and more. Come learn about some of the leading web development technologies, and concepts! Stay for one training, or stick around for the whole day! No two sessions will be the same! --- React Native in 60 Minutes - Introduction to Creating Your First Hybrid Native Application__ Featuring Rob Ocel @ 11:00am - 12:00pm EDT* So, you know React, and you want to build a mobile application - how do you get started? In this training, we'll discuss the architecture of React Native and how it differs from competing approaches such as Progressive Web Applications, Ionic Capacitor, and Apache Cordova. Then, we'll make a basic application from scratch that uses data from remote APIs and device sensors, and we'll show how to test and debug the application on your device and in simulators. --- Using Angular Libraries in an Nx Monorepo__ Featuring Patricio Vargas @ 12:30pm - 1:30pm EDT* Learn how to use Angular libraries and share code between multiple enterprise applications in your current or your future monorepo project using Nx by the Nrwl team. --- JavaScript Animations with GreenSock__ Featuring Christina Gorton @ 2:00pm - 3:00pm EDT* Have you ever been to a website and wondered "Whoa, how did they do that?" In this session you will learn how to get started creating fun, interesting, and complex animations that delight users with the GreenSock animation library. --- Type-Safe Databases with Prisma__ Featuring Ryan Chenkie @ 3:30pm - 4:30pm EDT* TypeScript is seeing huge adoption in all kinds of settings, from enterprises to open source projects to indie side projects. The promise of type safety via TypeScript is compelling: it allows you to catch a whole class of bugs before you even deploy your code. While there's a lot of focus on making your front-end and backend code type-safe, not as much focus is put on applying the same to your database access. That's where Prisma comes in. Prisma is a database toolkit that allows you to build type-safe databases with ease. It gives you a fully typed database client which means you get type hints, autocompletion, and you are prevented from accessing your database in an invalid way. In this session, we'll build a TypeScript node API that uses Prisma for database access. We'll see how Prisma can be used to give you confidence in how you access your data and how you can be more productive by using features such as the Prisma Schema Language, migrations, and more. --- Javascript-free Websites with .NET Blazor WebAssembly__ Featuring Heather Downing @ 5:00pm - 6:00pm EDT* Curious about the development experience of building front-end with C#? Blazor WebAssembly makes it possible to replace all of your Javascript completely - even in the front end! Join us as we build a secure SPA in .NET and discover the tricks of debugging and the trade-offs of the server-side version of Blazor....

Being a CTO at Any Level: A Discussion with Kathy Keating, Co-Founder of CTO Levels cover image

Being a CTO at Any Level: A Discussion with Kathy Keating, Co-Founder of CTO Levels

In this episode of the engineering leadership series, Kathy Keating, co-founder of CTO Levels and CTO Advisor, shares her insights on the role of a CTO and the challenges they face. She begins by discussing her own journey as a technologist and her experience in technology leadership roles, including founding companies and having a recent exit. According to Kathy, the primary responsibility of a CTO is to deliver the technology that aligns with the company's business needs. However, she highlights a concerning statistic that 50% of CTOs have a tenure of less than two years, often due to a lack of understanding and mismatched expectations. She emphasizes the importance of building trust quickly in order to succeed in this role. One of the main challenges CTOs face is transitioning from being a technologist to a leader. Kathy stresses the significance of developing effective communication habits to bridge this gap. She suggests that CTOs create a playbook of best practices to enhance their communication skills and join communities of other CTOs to learn from their experiences. Matching the right CTO to the stage of a company is another crucial aspect discussed in the episode. Kathy explains that different stages of a company require different types of CTOs, and it is essential to find the right fit. To navigate these challenges, Kathy advises CTOs to build a support system of advisors and coaches who can provide guidance and help them overcome obstacles. Additionally, she encourages CTOs to be aware of their own preferences and strengths, as self-awareness can greatly contribute to their success. In conclusion, this podcast episode sheds light on the technical aspects of being a CTO and the challenges they face. Kathy Keating's insights provide valuable guidance for CTOs to build trust, develop effective communication habits, match their skills to the company's stage, and create a support system for their professional growth. By understanding these key technical aspects, CTOs can enhance their leadership skills and contribute to the success of their organizations....