A Year of Platform Modernization: How to Choose the Best Cloud Provider

Cloud for Application Transformation

A major part of the modernization process for a legacy platform is moving to the cloud. It’s the cool thing to do and with reason.

Need a partner to help you navigate the modernization process or migrate to the cloud?

 

GET IN TOUCH WITH KMS

 

By migrating to the cloud, your platform can integrate with the latest and greatest cloud-based technologies. This makes for easier maintenance, better security, and cooler features. But how do you choose the best cloud provider? 

Who are the Best Cloud Providers? 

Let’s start with the major players. You might have heard of them: Amazon, Google, and Microsoft.

In the cloud computing world, they are better known as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure.

These heavy hitters invest a lot of time and money into advancing new technologies.

According to PwC’s 2018 Global Innovation 1000 Study, the providers’ annual research and development spend is:

  • Amazon – $22.6 Billion or 12.7% of revenue
  • Alphabet (parent company of Google) – $16.2B or 14.6% of revenue
  • Microsoft – $12.3B or 13.7% of revenue

Needless to say, the providers invest a lot to support emerging technology like yours.

Cloud Agnostic or a Single Cloud Platform

But, before you start thinking about which cloud provider you want to go with, you need to figure out how you want to work in the cloud. Do you want your platform to be cloud-agnostic or go all in and commit to a single cloud platform?

What’s the difference?

Cloud Agnostic

Cloud-agnostic applications are portable. They can move to any cloud provider or be multi-cloud…without impacting functionality. This gives organizations a lot of flexibility. You have the freedom to choose tools that are best for your product and company. So, you are not locked into what a single vendor can provide.

But, at what cost? Moving between providers can be costly. AND organizations must bear the burden of managing products and the infrastructure stack in-house. As a result, performance and troubleshooting can suffer.

Single Cloud Provider

For those not afraid of commitment, choosing a single cloud provider has its perks.

By landing on a single cloud provider, you can leverage the services and features the provider includes as part of their platform natively. This reduces the complexity of managing pieces of your infrastructure. It also means you are more likely to have tools that integrate and communicate well with each other.

That said if you decide to move to a different provider down the road…have fun rewriting your code base. And if the provider you chose makes changes affecting your platform…you are stuck adjusting to those updates.

Choosing the Best Cloud Provider

So how do you choose? There is no right answer. We know, worst reply ever. But the reality is the decision depends on your business goals and the maturity level of your modernization project.

Did you know that this post is part of a year-long platform modernization blog series? Check out the entire series!

So let’s say you have decided to go with a single provider, how do you choose the right cloud provider?

We are not here to try to sell you on any one provider. To be honest, we partner with all 3 and think they are all great options.

To start we recommend checking out this article by the Cloud Spectator. The article breaks down key factors to consider when choosing a provider:

  • Regions and countries that providers operate in
  • Data center locations
  • Size and business stability
  • Security and risk
  • Reliability and trustworthiness
  • Audit and compliance opacity
  • Pricing models and contract terms
  • Service-Level Agreements (SLA)
  • Ease of use, self-service, robust API

 

Keeping these factors in mind, let’s see who hosts the software you use every day?

It might sound silly–but think about it.

If Netflix trusts a provider to reliably deliver your (and 130 million others) binge-watching sessions, what does that tell you? The platform can scale quickly to meet high traffic volume and can store huge amounts of data with ease.

What about hosting PayPal? That platform has the security and bandwidth to process 10 billion annual transactions.

You get the idea.

So…which provider does Netflix and your other favorite streaming services trust?

  • Need some time to veg out and binge your favorite tv shows on Netflix or Hulu? Thank AWS.
  • Looking for a playlist on Spotify to get you through your run? Hosted on GCP.

 

What about your favorite social media platforms?

  • Wedding planners and weekend crafters rejoice! Pinterest is hosted on AWS.
  • Checking Twitter to see if your kid’s school closed for a snow day? All GCP.

 

Let’s say you need a last minute birthday or holiday gift. Who is hosting your favorite online retailers?

  • Lululemon, Under Armour: AWS
  • Target, eBay, Lush: GCP
  • Asos, Macy’s, Marc Jacobs: Azure

 

Who handles your hard-earned cash?

  • Does Paychex process your precious weekly payday? Azure.
  • Making a Paypal purchase or banking/investing with Charles Schwab? GCP.
  • What’s in your wallet? If it’s Capital One, AWS.

 

Just for fun, here are a few other things you might care about:

  • The FDA, CDC, NASA, and USDA all trust AWS.
  • If you spend your weekends playing Pokemon Go? Niantic is hosted on GCP. Or if you prefer to be old school and plug into your Nintendo, AWS is Player 1. More of an Xbox gamer? Azure.
  • Traveling sometime soon? Well, if you are flying with Alaska Airlines, Asiana Airlines, Malaysia Airlines, Spring Airlines, or Singapore Airlines…Azure.
  • Thanks to GCP for satisfying your pizza craving and hosting Pizza Hut AND Dominoes. Yum.
  • And next time you book an Airbnb or a Lyft, AWS has your back.

 

It’s pretty clear, each of the big players are trusted by some pretty reputable companies.

Finally, the hard-hitting question…which CEO would you most like to grab coffee with?

Amazon – Jeff Bezos

Bezos is now the richest man in the world, leading Amazon to become the second US Company to pass the  $1 trillion threshold.

What does he do with all that money? Well, he is also a total space nerd…and even owns his own space-exploration company. He also donated $2.5M in 2012 to defend gay marriage in Washington.

Google – Sundar Pichai

Pichai joined Google the same day the company launched Gmail. Since he has led the launch of Google Chrome, Google Drive, and the Gmail app.

However, despite spearheading one of the world’s leading technology companies, his family did not have a phone until he was 12 years old. He later went on to run the mobile platform portfolio for Androids.

Microsoft – Satya Nadella

Many people credit Nadella with revitalizing Microsoft’s company culture. And the share value shows it, tripling since Nadella took over.

In addition to a more collaborative work environment, employees at Microsoft also get regular vlogs from Nadella about the books he is currently reading. Need something to chat with him about? Poetry, cricket, or running is a good place to start.

So, who would you most like to grab a latte with?

 

All said and done, there is a lot that goes into choosing a provider. Whether you decide based on who has the coolest CEO or which offers the best security features, we hope this gave you more insight into choosing the right cloud provider. Or you at least had a little fun in the search process.

Modernizing a legacy platform or moving to the cloud? We are experts at cloud migration and partner with all 3 major cloud providers. Let us know how we can help with your modernization project.

 

GET IN TOUCH WITH KMS

 

3 Strategic Goals for Every Maintenance and Support Team

Does anyone remember Atlanta’s infamous Snowmageddon? It happened in 2014 when 2.3 inches of snow essentially shut down the city for an entire week.

Atlanta had done little to prepare so business and schools did not shut down until snow began to fall. This meant everyone hit the roads to drive home…at the same time. A normally staggered rush hour turned into traffic so bad that some people abandoned their gridlocked cars because walking was faster.

Needless to say, quite a few lessons were learned that day, but one of the most poignant was the importance of preparation and a well-thought-out plan of attack.

So how is this all relevant to my maintenance and support team?

Let’s say you work for a major e-commerce retailer and it’s Black Friday. Now imagine getting simultaneously hit with your typical stream of tickets AND the influx of time-sensitive support requests.

If the thought makes you break into a nervous sweat…take a deep breath and stick with us. We will walk you through why setting team goals is a smart strategy to prepare for peak times AND what kind of goals will prove most effective in preventing maintenance gridlock.

Looking for a maintenance and support partner that can offer round-the-clock coverage and top quality work? 

SEND US A NOTE
 

Working Regular Goals Setting into Your Maintenance and Support Strategy

 

Setting team goals and implementing a plan to achieve those goals benefits your team two-fold.

First, regularly measuring progress prevents complacency and provides tangible data to prove the value of your team.

Secondly, these objectives give you the opportunity to strategically prepare for anticipated spikes in support requests or dips in team bandwidth.

So let’s look back at the snowmageddon example, consider how traffic would have been impacted if schools had been preemptively closed or 20% of employees opted to work from home that day.

Similarly, by setting a goal to clear ticket backlog in preparation for peak season, the influx of requests will become much more manageable.

 

Ok, so we have made the case for setting goals as a service team, what kind of goals will be the most beneficial?

Let’s think about the key objectives of a maintenance and support team. An effective team will resolve tickets to 1. Ensure the application is running smoothly AND 2. Keep customers happy.

Finding ways to resolve tickets effectively and quickly is a critical step in achieving those goals.

 

Reducing Ticket Backlog

As we mentioned before, reducing ticket backlog is a great way to prepare for an increase in support requests or a decrease in staff.

To implement this goal, start a few weeks or months prior to peak season. Identify how many backlogged tickets are currently in the queue and set a realistic number you want to be resolved prior to peak season

By giving your team a measurable goal, you can evenly distribute work to clear the backlog. Doing so will free up your teams’ bandwidth to handle the influx of pressing issues during peak season or fill in any gaps when you are short staffed.

 

 

Reduce Time to Resolve Tickets

Reducing ticket resolution time should be an ongoing goal for your service team. More efficiently resolving requests increases your team’s capacity and makes it easier to handle additional tickets when they arise.

There are a few strategies you can put in place to improve efficiency. The first is to implement a well-defined training protocol for routine maintenance requests. The second is to track workflows and identify support bottlenecks. Knowing where your team can improve gives you the insight you need to do so, ultimately improving the velocity at which you can address maintenance issues.

 

 

Reduce the Number of Touchpoints Prior to Resolution

A bad customer support experience can make or break an application’s reputation. An important aspect of maintaining this reputation is resolving tickets efficiently with as little impact to the customer as possible.

To reduce the number of necessary touchpoints, you want to gather as much information as possible in that initial contact. By effectively gathering information, you increase your chances of resolving the ticket quickly or if the ticket does need to be escalated, you will provide adequate background information for the next stage of resolution.

 

So there you have it, a few handy goals that will help your team prepare for the next maintenance blizzard. If your team sets regular goals, let us know which metrics have you found most helpful.

 

Looking for more resources to get through peak season? Check out our post on how to prepare your application!

GET IN TOUCH WITH KMS

A Year of Platform Modernization: Don’t Forget About Your Data!

For this month’s installment of our Year of Platform Modernization blog series, we are exploring the importance of keeping data at the forefront of your mind during the modernization process.

SEND US A NOTE
 

Not caught up on the series? Check out the first post, Kicking off A Year of Platform Modernization to see what you’ve missed.

With all the formalities out of the way, let’s dive right in.

It’s no secret that data is a driving force in today’s market. Not to be punny, but look at the numbers.

Take McKinsey & Company’s latest survey on trends in customer analytics, for example. Compared to companies with no extensive use of customer analytics, they found that those extensively using analytics yield:

  • 126% higher profits
  • 132% higher return on investment
  • 131% higher sales

Needless to say, working effective data strategies into your platform is a no-brainer.

By maximizing the value of data captured, companies gain insightful analytics. These insights help predict, inform, and influence business decisions.

So what does this all boil down to? How should data influence my modernization strategy?

As you begin to design and build your new platform, consider how you store, process, and leverage your data. Think about the implications and opportunities of these decisions.

Before we get into the nitty-gritty of how, we want to sweeten the deal and explain the benefits of thinking data-first for platform modernization.

Reduce Overall Costs by Rooting Out Redundancies

Chances are there are redundancies in your current data storage processes. Simplify these processes to prevent duplication and save money on unnecessary data storage.

Ensure the Quality of Your Data is High

Rethinking your data layer creates an opportunity to assess the quality of current data. From there, you can think through processes to capture the highest quality information available.

Improve Operational Performance of Applications and Reports

By building separate operational and analytical processing, or aligning your data to microservices, you can improve operational efficiency. Segmenting in this way allows you to choose the right hardware, infrastructure, and cloud service to support the needs of your specific data.

Optimize Your Data Storage Strategy

Whether your concern is budget, efficiency, storage timelines, etc., cloud providers offer different solutions to meet a variety of needs. Think about which provider’s solution is the best buy to store your data. Want more on how to choose the right cloud provider? Tune in next month!

How to Implement a Data-First Mindset

Hopefully, we have shown you the value of thinking about data when modernizing your platform. So what steps should you consider to make this a reality?

  1. Locate or Create a Data Inventory – Build a centralized view of all data repositories, the types of data stored, as well as all associated inputs and outputs.
  2. Assess the Current and Potential Business Needs for the Data – What data do you depend on today? What data may have value in the future? Are there new opportunities to capture data about your customer and further guide your business?
  3. Decide Your Data Storage Strategy (Database, Data Lake, Data Warehouse, Archival Storage, etc.) – Optimize resources for the best performance and lowest cost (for both synchronous and asynchronous transactions)
  4. Design New Data Stores and Your ETL (extract, transform, load) Process – Consider buy vs. build options along the way
  5. Integrate Your New Data Strategy into Your Modernization Roadmap

Maximize the ROI of the modernization process by prioritizing data in your approach. By doing so, your organization can glean insights from your application’s vast pool of data. This means future business decisions can be made thoughtfully and backed by the numbers.

Ready to begin the modernization process? Head over to our platform modernization page to find out how our experts at KMS can guide you through the process.

GET IN TOUCH WITH KMS
 

A Year of Platform Modernization: Assess Your Current State and Determine Your Approach

In case you missed it, earlier this year we kicked off A Year of Platform Modernization — a 12 part blog series covering everything you need to know to undergo a successful modernization project.

Last month you prepared your team for the task with our 6 Tips to Modernize Your Team.

This month we will take a look at your current platform and give you the tools you need to determine your modernization approach. Think of it like making the decision to move or not, you need to know what you love or hate about your current home before deciding what to do next.

Need a partner to help guide the process?

GET IN TOUCH WITH KMS
 

What Does Your Dream Application Look Like?

Before we dive into your current platform, let’s take a moment to think about the features of your desired application…your dream home, if you will.

Consider the infrastructure, user experience, and expected outcomes. A good understanding of what you hope to gain from this modernization project will help you best determine what steps you need to take to modernize.

A couple of episodes of House Hunters will show you the basic idea, but in this step, you need to:

  1. Establish your goals
  2. Prioritize those goals
  3. Establish Your Timeline
  4. Understand Budget Constraints

 

Assess Your Current State

With wishlist in hand, let’s work our way through the checklist to assess your current state. Think of this step like a homeowner’s inspection.

Keep in mind that this process should be metrics-driven. Numbers allow you to objectively understand your platform’s shortcomings and determine the success of the project once it is completed.

  • What is Your Application’s Infrastructure?
    • Is your platform currently hosted on premises, in the cloud, or hybrid? What are the challenges your platform faces because of this infrastructure?

 

  • Review the Code in Your Tech Stack
    • For this step you will want to perform a thorough code review. Look at your data layer, mid layer, and user interface (UI). Is the code language outdated or cloud compatible? Are any aspects particularly fragile? Knowing the stability of your current code will allow you to determine what, if anything, is worth keeping.

 

  • Calculate Operational Costs
    • What are the current costs to run your platform? Dive deep and think of costs involved in infrastructure, data centers, hosting servers, routine maintenance, adding new features, specialized engineers, etc. How might modernization reduce these costs?

 

  • Understand Production Experiences
    • Once again, turn to the numbers. Look at quantitative and qualitative data on platform downtime, meantime to recover, performance, platform availability, customer feedback, application security, and more. Review anything and everything that might affect application experience.

 

  • Assess Your Organizational Readiness
    • Is your organization ready to undergo a major application change?

 

Determine Your Approach

With a good understanding of your current platform, we can now strategically determine the best approach for you. For a modernization project, there are typically 4 approaches:

1. Complete Application Rewrite – Building Your Dream Home

Take your wishlist and your assessment. If your current state not even close to your desired state, a complete application rebuild might be the best option.

While this does seem like a daunting task, it actually opens up a lot of possibilities for your company. By completely refactoring the application, you can dive into and explore different features, change the organizational framework, and even leverage existing technologies, saving your team additional work.

6 kids, 2 adults, and a puppy crammed into a 2 bed, 1 bath ranch style, with a crumbling foundation? Yeah, it might be time to build something new.

2. Incremental Improvement – Remodel, One Room at a Time

If aspects of your platform work and the code is not fragile, you might consider an incremental approach.  In this approach, you take your priority list and begin to refactor your platform, layer by layer.

Say your house is outdated but functional. You might start with the rooms you use most, kitchen, bathroom, etc., and work room by room to remodel it into your perfect home.

This gives you the flexibility in your budget to take on the project more slowly and re-architect your biggest pain points first.

3. Patch and Replace – A Few Simple Repairs Should do the Trick

Let’s say your application works well for the most part, but there are one or two particularly frustrating features. For example, some simple UX updates, or refactoring some application code to make it more performant or resilient, may free up critical resources spending time on operational issues. In these cases, an entire re-architect is probably not worth the money or effort.

I mean, you would not build a new house because of a broken window, would you?

4. No Change — The House is Fine and Besides, it has Character

So why might you stick with your current platform? Well, look at the longevity of the application. If the platform will not be an essential part of your business for much longer, modernizing might not be worth the investment in time and resources.

For a couple planning to retire to the Bahamas in a few years, it does not make sense to tear down their house and build-a-new.

The reality is, while there are many benefits to modernization, it is not right for every application.

Want to know more about the benefits and challenges to platform modernization? Take a look at our whitepaper, Platform Modernization in Action.

 

Needless to say, however you decide to go about obtaining the home of your dreams, the right contractor makes all the difference. The same goes for platform modernization. KMS has the expertise and tools to help you assess your current platform, determine your approach, and guide you through the whole modernization process. Let us know how we can help!

GET IN TOUCH WITH KMS

A Year of Platform Modernization: 6 Tips to Modernize Your Team

Prepare Your Team for Platform Modernization

As you begin the platform modernization process, there are some important first steps you must take to ensure that your team is ready and able to make the jump to microservices

Need a partner to guide you through application transformation? 

 

GET IN TOUCH WITH KMS

 

Think of it this way, your team is the backbone of your application and as anyone with a bad back can tell you…without proper alignment you won’t be doing much jumping! Similarly, a poorly prepared team can throw off the balance of your whole application. 

Your goal in moving to microservices should be to empower your team to create work that they are proud to claim as their own. If they are proud of their work, chances are you will be too, and your customers (and profit margins) will reap the benefits. 

Offering access to the right tools and education programs as well as building a collaborative and constructive work environment are the first steps. Set your team up for success by identifying and communicating team expectations early and develop a communication loop that encompasses fast and frequent feedback. 

So roll out those yoga mats team, it is time to get that spine limber and ready to jump into modernization! 

Did you know, we are doing an entire platform modernization blog series covering everything you need to know to modernize your legacy application? 

 

Our Tips for Platform Modernization

 

1. Make Sure Your Platform Modernization Team is Cloud Proficient 

In microservices, you actually want your team’s heads in the clouds. Bad pun? Ok, that’s fair–but on a serious note, one of the primary benefits of platform modernization is the ability to leverage and integrate with cloud-based tools.

Lucky for you, all of the major cloud providers offer comprehensive online training programs and certification courses, so no matter which provider you choose, your team will have education options. These resources cover high-level information about the cloud platform and its services and offer more in-depth courses at the architect and developer levels. The breadth and depth of these programs will ensure that everyone on your team is well equipped to work within these new platforms.

Cloud Platform Training Programs:

 

2. Modernize Your Team’s Skills  

Modernizing a legacy application is an ideal opportunity for your team to expand their skill set. Specifically, we recommend your team members invest their time and training in two key areas:

1. Learning new coding languages

2. Taking advantage of new DevOps tools.

My developers can already code…why do they need to learn new languages?

Well, when you are operating in a microservices environment, each service could be written in a unique coding language depending on which language best supports the feature of that service. Isolated knowledge can hinder progress and delay problem resolution. Developers with a multi-stack knowledge base will prove more versatile and invaluable as you roll out your new application.

Pro-tip: Be sure to leverage free online MOOC courses!

It is also important that you train your team on the latest tools in the DevOps toolchain. Knowing when and how to leverage these tools will enable your team to prevent issues or resolve them quickly.

 

3. Establish Coding Patterns Across Services and Automated Testing for Easier Maintenance

So we know that microservices tend to be written in multiple languages. How does this not devolve into complete chaos?

As your architect begins to think about the design of your systems, it is important to consider what capabilities should be centralized.

You know the old saying, “don’t reinvent the wheel?” That is kind of what we are getting at. Rather than having each of your developers create different versions of the same capability, utilize a framework of reusable code that can be distributed across the multiple services within your system.

This tip also applies to test automation scripts. Don’t forget to make sure your testing efforts are also supported by standard, centralized coding patterns.

These patterns minimize the amount of code your team will need to create from scratch and reduces maintenance efforts down the road. 

 

4. Understand Containerization and The Tools to Support It

A contractor who does not understand what their tools are or how to use them won’t be very successful in building a house. Similarly, without an understanding of containerization and the open-source tools to manage these containers, your team won’t be nearly as successful in platform modernization.

So we have two key recommendations here. First, educate your team on what containerization is and why it is beneficial.

Leveraging tools like Docker will provide your developers with everything they need to build, package, and deploy their applications, regardless of the platform they are using.

Second, ensure your teams understand how to manage their containers effectively in the cloud. Tools like Kubernetes enable your team to flexibly deploy, manage, and scale your containerized applications.

Containerization enables efficient testing by allowing testers and developers to share defect observations easily, apply fixes and retest from where testers left off. Your team will be all the more prepared with a thorough understanding of containers and how to manage and leverage them.

 

5. Incorporate Performance and Secure Coding Practices

Now, I’m sure you don’t want to go through the trouble of building out your new platform only to find it cannot handle traffic or poses potential security risks. Moving from one issue to another defeats the whole purpose of modernizing.

That said, ensure your team is successful in microservices by following coding practices that encourage extensibility, maintainability, and reusability.

Build performance-focused coding practices into your design pattern. This practice includes educating your team on performance scalability, security concerns, and potential performance problems.

Why? Well, security, performance, and scalability behave differently in cloud-based platforms than in legacy applications. Designing a system with security and performance in mind will help prevent problems. That coupled with proper training will help your team resolve problems quickly if they do arise.

 

6. Leverage Team Communication Tools and Build Good Communication Habits

If you were to Google “how to build a successful team,” you will find countless articles and self-help blogs relaying the importance of communication.

It’s age-old advice, but that’s because it works.

At a team level, you need to build a culture of transparency and constant communication. Integrate your development and testing teams throughout the process and ensure communication is seamless.

Work moves very fast in this type of environment and the sooner a concern is identified, the sooner it can be addressed, and the less rework that will have to be done later. Encouraging regular communication helps prevent team members from feeling like they need to hide mistakes or problems. Bad news only gets worse over time, so address it now and move on.

With the right communication tools, developing a culture of transparency is much easier. Make sure your team knows the full range of these tool’s capabilities and use them to their maximum potential. Leveraging tools like Jira or Slack allows your team to document workflows and quickly pull in team members who might need to help resolve a ticket.

Get Started with Platform Modernization

By implementing those steps…or stretches if we want to continue with the backbone analogy…your team will be nimble and ready to move to microservices.

Want to learn more about moving to microservices? Check out our blog Going From Monolithic to Microservices: How to Get Started.

Want to learn more about moving to microservices? Check out our blog Going From Monolithic to Microservices: How to Get Started.

Ready to begin transforming your legacy application?

 

SEND US A NOTE

 

Kicking Off A Year of Platform Modernization

Download our White Paper and discover the journey through platform modernization from the perspective of your peers.

So, chances are if you are here…you might be looking to modernize your legacy platform. Well, you have come to the right place! Over the next 12 months, this blog series will cover everything you need to know about platform modernization.

What is Platform Modernization, you ask? How will modernizing your platforms impact your business and improve your bottom line? We’ve got you covered! Check out our White Paper on Platform Modernization and hear the perspective of over 150 industry leaders.

Reading this while you wait for your latte at Starbucks? The short of it is: Platform Modernization is the process of taking an antiquated (and often high-maintenance) legacy platform and updating the application using modern programming languages. Modernization streamlines product maintenance, allows for integration with cloud-based technologies, and ultimately improves time-to-market. Read: If done right, platform modernization means less headache and more revenue.

Ok, this all sounds great, but what exactly will we be covering in this series? We are so glad you asked! By the end of this blog series, you will have a blueprint on how to effectively modernize your platform, all while taking into consideration how to prepare your team and simultaneously modernize your testing strategy.

 

Protip! Be sure to check back throughout the year as we will be updating this
directory with links as soon as the posts go live!

 

Want more details? Here is the timeline of topics we will cover:

February: Modernizing Your Team While Modernizing Your Platform

Our blog series kicks off with developing a team training plan to use during modernization and once the project wraps up. We’ll also show you how to identify and implement your ideal testing workflows. This post will help set your team up with the tools and skills they need for a smooth transition to a new platform. We’re positive they will thank you for it!

March: Assess Your Current State

Are you planning to renovate your house without first determining what needs to be updated? No? Good. Use that same commonsense approach for your legacy platform!

Our March blog will discuss how to effectively assess your platform’s strengths and weaknesses and create a targeted plan of action so you’ll know exactly where to begin.

April: Adopting a Data-First Mindset

Show me the numbers! Data is a foundational component to all products. In April, we will show you how to adopt a data-first mindset. We’ll walk you through how to develop strategies and identify tools that will help you build your new application and effectively manage (and test with) your test data.

May: How to Choose Your Cloud Provider

Moving to the cloud? In our May blog, we’ll walk you through key factors to consider when choosing a cloud provider. We’ll also talk about how this partner impacts your testing workflows and speed of delivery.

June: CI/CD Pipeline

Do you find yourself asking, “What is a CI/CD pipeline?” If so, then this blog is for you. In June, we’ll discuss what the CI/CD pipeline is and why you should care. We’ll go over the latest CI/CD pipeline tools that enable your developers to quickly and confidently deliver product changes. Want more? We’ll also talk about how to leverage the pipeline for effective and fast testing. Speed AND quality? What’s not to love?

July: Modernizing Your User Interface

Alright, you are modernizing your platform. That’s great! But, if your User Interface (UI) experience is awful, what’s the point? In July, we’ll discuss how to not only improve your customer experience but how to effectively test it to make sure it’s market ready.

August: Strategies for Modernizing Your Integration Layer AND Performance Testing

August is a double whammy! This month we’ll explore different ways to improve how you manage test integrations and data movement within your product. We’ll also show you the best practices for performance testing, so you can ensure your platform is quick, responsive, and stable.

September: Building an Effective API Strategy

Scratching your head wondering what an API is? No need to worry, we’ve got you covered. In our September blog, we’ll discuss what an API is and how to build an effective API strategy. Plus, we’ll offer tips and tricks for successful API testing.

October: Pulling The Plug On Your Legacy Application? Will it Come Back to Haunt You?

It may be a weird way to celebrate Halloween…but, in October, we’ll let you know how to lay your legacy application to rest. This post will include tips on developing end-of-life strategies for your old platforms. We’ll also recommend how to transition your testing model from your legacy application to ensure quality monitoring of your old platform and pre-emptive test coverage for the new one.

November: Everyone is Coming to the Table – Is Your Turkey Ready?

You’ve done it! Your platform is modernized….but now what? Well, this is the fun part. In November, we’ll tell you how to make sure you’re market ready with your new, modernized product! Make sure to give thanks to your team and get a bigger turkey (maybe a few extra)! You’ll have a lot of new faces to feed.

December: You Made a List, Did You Check it Twice?

In December, we’ll look back at the series and try to answer any questions we may have missed throughout the year. Of course, we cannot let the year end without a look forward. In this blog, we will discuss where to focus next once you have successfully modernized your application.

On the edge of your seat and simply cannot wait to learn more? We thought that might be the case. In the meantime, be sure to head over to our blog to read about how to leverage Test Automation for Platform Modernization and check our infographic on the Top Factors to Consider when modernizing your platform.

Smart Strategies to Deliver Quality Code: Part 2 Collaboration

What is collaboration? Merriam-Webster states it is “to work jointly with others or together especially in an intellectual endeavor.” We agree — coding is definitely an intellectual endeavor! Collaborating with others helps to reduce the stress of working independently. Cue the song: All by myself! Don’t wanna be all by myself anymore! Sorry, couldn’t resist getting that stuck in your head.

In part 1 of this blog serieswe discussed how properly maintaining code is an essential part of delivering a quality product. Now, we’re going to discuss how effective team collaboration can boost code quality.

GET IN TOUCH WITH KMS
 

Be a Team Player!

How many times did you hear that while growing up? Being a team player was important in our youth and is still important as adults. Teams that work together can use their collective talents to improve quality and produce high-performing products.

Here are just a few benefits a development team can enjoy if everyone is a team player:

  • Boost knowledge sharing
  • Ensure smooth integration and testing
  • Encourage peer reviews to compensate others’ weaknesses
  • Raise awareness of progress/problems to move forward
  • Achieve higher confidence in code quality

All of these points would be moot if you resist becoming a team player. A team is only as weak as its most ineffective member. (Psst … don’t be that guy — or gal! You know, the one who gets the sideways glances or aggravated sighs from the team due to unanswered emails.)

 

Take Off Those Blinders

When you encounter problems during development, the quickest fix is not always the best solution long term. Collaborating with your team can help you validate the solution and does not cause new problems in other areas of the product. You may be inspired to create elegant and effective solutions that would be more than just a short-term fix.

Quick and workaround solutions save time initially but are usually short-lived and costly long-term. Always search for the most effective solution. Collaboration plays a big part in this pursuit.

Our recommendation? Talk to other developers working up or downstream from your code. If you only worry about your own code, the solution you find may solve your issue but to the detriment of the system as a whole. Also, if you discuss the issue with another developer, they may have an “ah ha!” moment. Something they can do on their side may fix the problem for you. And who doesn’t like having to do less work for the same result?

Thinking long-term means the code should integrate and play well with the existing system. Effective solutions also involve using best practices. Make sure to be flexible, pay attention to, and understand/follow these practices and standards. After all, soldiers who don’t follow orders and decide their own way of behaving eliminate the whole unit and lose the war. (Hint: Communication + Using Best Practices = Winning)

 

Be open to new ideas.

Forward-thinking developers are a hot commodity! Imagining how the code will be maintained after it’s been created, offering valuable ideas and solutions to a problem, and creating a more efficient approach to building code. Compound these skills with a collaborative mindset? You’ll be worth your weight in gold (real gold, not the weight of a Bitcoin).

What does it mean to be open to new ideas? Well, for starters, take what we’re about to tell you and be receptive to the concept.

While researching this blog, we came across SmartBear’s 2018 State of Code Review and found it to be an eye-opening survey. Did you know that “55% of respondents choose ‘Workload’ as the top obstacle to conducting code reviews, followed by ‘Deadline/Time Constraints’ at 42%”? At last, we have the reassurance that we are not alone in our deadline pressures!

As we were so impressed with this survey, we set up a call with Patrick Londa, a Marketing Manager at SmartBear, to discuss the results. The key takeaway? The importance of using code review tools to effectively manage your workflow.

“When we ask developers about their code review process, we often get laughs or grimaces initially. It seems like an abstract thing to them, like they know they need to do it but it’s kind of a chore and gets in the way of the things they want to do otherwise, whether that’s building a new feature, etc. The more that teams can standardize and make it a seamless part of their process, the more willing they are to participate in reviews on a regular basis.”

– Patrick Londa, SmartBear Marketing Manager

Have you ever thought of code review as similar to doing the dishes or taking out the trash? Trust us, we’ve all been there. As luck would have it, “chores” and “work” do not have to be synonymous. Using code review tools, such as SmartBear’s Collaborator or Atlassian’s Crucible, can make the time spent conducting those reviews more productive than merely sending an email.

According to the survey, “For the third straight year [2016 – 2018], respondents identified code review as the #1 way to improve code quality.” Take that statistic and look at your own practices. When you actually take the time to do reviews, how do you track progress and results? Do you … just send emails? We certainly hope not!

 

Effective developers are great communicators.

In the end, effective collaboration is key to building amazing products. Be a team player who contributes to everyone’s success, search for the best solutions and not just the one that first comes to mind, and be open to new ideas your team members suggest.

Communication is the very foundation of collaboration. But it’s also about how you communicate that matters. Working to improve code quality takes more than just sending an email and hoping you receive a timely response.

We get it. Finding time to communicate in an already packed schedule can be a daunting task. So don’t waste time searching through emails to respond to work-related tasks! Take advantage of technology to help you … well, to help you build more technology! There are multiple collaboration tools available that can help optimize the number of hours in the day you spend working.

We’ll say it again. Teams that collaborate effectively will always produce more code in a shorter timespan and with higher quality. Think about this too: tools can help collaboration, but behaviors should also change. Reach out for assistance when you’re stuck, regularly share your code with others to get help during peer reviews, and be receptive to feedback from others.

After all, teams are all on the same ship. Every part of a team contributes to making it across the sea or sinking to the bottom. Don’t allow your product to sink to a watery graveyard! Keep it floating through team collaboration and, with hard work and a dash of luck, the ship will make it across the sea faster than others. We wish you fair winds and following seas!

Looking for a new software development partner?

GET IN TOUCH WITH KMS
 

Smart Strategies to Deliver Quality Code: Part 1 Maintainability

The quality of your code can make or break a product. The question is … who is responsible for testing? Conventional thought creates distinct, separate roles for a developer and a tester. Developers … well, they write code. And testers are responsible for quality assurance. Right?

Sure. Developers write the code that testers verify works correctly. But is anything ever simply black-and-white? In this regard, responsibility for testing has been relegated to the grey zone.

Now, we’ll tell you how to break out of that grey zone by suggesting code maintainability techniques developers can use to enhance quality.

GET IN TOUCH WITH KMS
 

I can read my code, why can’t you?

Have you ever said this to another developer? What about to a tester who comments on your coding ability?

Simple code is always better because it is easier for someone else to understand right away. Even if you don’t work in a team, build your code with the perspective that you’re not the only one who will touch the code. Other people may need to read, understand and support it down the road.

Readable code saves a lot of time and effort to provide support, fix bugs, handle change requests, and implement new enhancements. Bad code is expensive!  A task that needs only one line of change (which can be done quickly) could end up taking hours or even days to read through and figure out.

Software with poorly written code is difficult to maintain and extend, shortening the lifespan of the product. Do you really want your hard work to be scrapped so new code can be built? No? We didn’t think so.

Suggestions:

  • Use descriptive naming
  • Keep style and structure consistent
  • Separation of Concerns principle keeps code cohesive with a single responsibility
  • Be clear, direct and to-the-point with transparent intention

 

Keep It Simple, Sam

Have you heard the phrase “Keep It Simple, Sam?” This design principle urges products be made as simple as possible so that even someone with limited knowledge can operate or repair the product. If your code is not maintained properly, how will that affect the application as a whole?

Create code that is self-explanatory so that someone without your knowledge of the code can read it easily. If you think extra documentation is necessary to explain what the code is doing, then the code is too complex.

Avoid using inline comments and separate documentation as they are expensive to update in the business where requirements are constantly changing. For example, if you made comments in the code to explain something but the code is then changed, you must also make sure to change the comment to reflect the new code. This can be time-consuming and, if the comments are not updated, confusing.

Quality > quantity! Keep code and relevant documentation simple to save a lot of time and effort on support and integration of various sub-systems.

Suggestions:

  • Use straightforward logic to minimize need for extra in-code documentation
  • Keep sections modular to reduce complexity and maximize reusability
  • Ensure all team members understand the best practices and standards that apply to your code base

 

Consider Future Growth

To succeed in a competitive marketplace, software products must continually add new features without introducing bugs. Quality code takes future growth and extensibility into consideration.

As a developer, you know that your code will need to be refactored and enhanced over time. But did you know that the best way to protect your code quality and enable you to refactor confidently is to ensure that your core functionality is continuously tested at the unit and integration level?

Let’s put it this way. If you fail to continuously test working functionality, hidden bugs can crawl into your code while it is being refactored. This can cause serious problems down the road and can lead to costly changes in core product quality. We shudder at that thought.

Use automated unit and integration tests to catch bugs before they can eat away at the structure. These tests provide the first line of quality assurance for delivered outputs. More importantly, they can be executed automatically in build cycles to quickly make sure bugs haven’t taken residence. Turn on that No Vacancy sign!

Suggestions:

  • Ensure your automated tests cover all documented acceptance criteria, as well as common sense scenarios, that may not be fully documented.
  • Run a full suite of unit and integration tests on your local build before you commit your code to the common repository.
  • You must use Continuous Integration Pipeline tools (like Jenkins and GitLab) to run your unit and integration tests for each build.

 

Take Pride in Your Work!

Do you like showing off your code to other developers? Do you have confidence that your code will stand up to rigorous testing?

We challenge you to have pride in your work by spending a little more time finding bugs before sending it to a tester. In turn, you can challenge the tester to find problems with your code. After all, quality is not only a tester’s job. Developers are responsible for the quality of the code they deliver.

The World Quality Report 2018-19 backs up our claim that quality is not only a tester’s responsibility but also other departments:

“Today, the way QA and testing activities are executed has changed. On the one hand, the adoption of new frameworks and technologies has broadened the number of skills required for testing, while on the other, testing activities too have spilled over to other domains and functions such as Development and Business Analysis. Thus, today, everyone has a role to play when it comes to QA and testing.”

Experience has taught us that using these practices help developers build better code. It also improves relationships between developers and testers. Ultimately, if the developer thinks of the potential issues to begin with, the whole process can run smoother and the product can be released to market much faster.

Are you still not convinced you would be able to fit quality checks into your schedule? We have a solution for that too! Stay tuned for the next part of the series when we discuss the topic of team collaboration to improve quality. In particular, we will draw references from SmartBear’s 2018 State of Code Review and an interview with Marketing Manager Patrick Londa. Collaboration has never been easier with today’s technology advances!

Looking for a software development or testing partner?

SEND US A NOTE
 

Reference:

World Quality Report – https://www.capgemini.com/service/world-quality-report-2018-19/