HYLA Blog

TechTalks: Inside Out Transformation

Posted by Krishnan Viswanath on Jan 16, 2019 9:00:00 AM
Find me on:

shutterstock_485403379 (1)Software goes through an evolutionary process as dictated by Conway’s Law; with mutations occurring over time just as it does with various Italian flavors such as Spaghetti,  Ravioli, and Lasagna. Unlike the healthy Italian diet, this is not as good for software organizations. This evolution builds up constraints to the value creation process. A dynamic business landscape requires rapid changes to software to support the evolving business process. However, the expected pace is not met by the software organizations. Questions like “why does it take so long to make such a simple change” and “why is it so expensive” are not uncommon.  

So not only are there challenges regarding the time taken to develop new features but also with the increasing marginal cost of adding new features. With pressure to add features faster, teams often end up prioritizing short term convenience over long term correctness, resulting in more accumulations of technical debts. Over time this becomes time consuming and expensive; a vicious catch-22 cycle. Breaking this cycle is the “holy grail” of many software engineering organizations. Breaking the cycle, or better yet, not even getting in to the cycle requires conscious efforts to (1) simplify the architecture or keeping it simple (2) eliminate hobby initiatives and (3) carve out slivers of investment (time) to keep the architecture current and technical debts in check.

Transformation

Software code becomes legacy as soon as it's in production. Changes become harder and more expensive. Additionally, risk to changes need to be factored in, which then means bold changes are no longer possible. Over time, without conscious or concerted effort to keep things clean the code base becomes unwieldy and gets the organization to a place where some change is required. With two viable choices arising- either to scrap the code and rewrite it from the ground up (Greenfield) or to institute a major overhaul to the existing code (Brownfield). As one can see by the choices present, Greenfield method seems to be the most tempting. Making this decision often gets influenced by outcome bias (an excellent HBR read here) and confirmation bias. In a Greenfield project, the challenges to achieving the outcome are many.

Two key ones that cause even the most experienced folks to trip up are (a) accounting for non-happy path flows which are made harder due to the pervasiveness and tribal nature of a knowledge capital (and remember there is no such thing as centralized or current documentation) and (b) keeping the Greenfield code current with functionality of the production application in parallel (since the project could span months or even years). Of course, besides these reasons there are others like talent, skills, budget etc. Many who go through the Greenfield experience live to tell the tale of many iterations to wrap up the long tail, while the last 5% come down as being the last nail in the coffin.Read Blog: "TechTalks: Machine Learning Algorithm in Product Catalog Mapping."

This leaves us with the best option, which is “inside out” transformation. With this approach the software is refactored overtime to comply with the key architectural principles of the organization; achieving the goal of simplicity without compromising on security, scale, reliability etc. However, to pivot from what we have to something “better” is hard and is akin to changing wheels on a running car. Also, this is not as exciting as Greenfield,  but then doing it this way has better chances of success with reasonably fewer risks (risk exists but can be mitigated by taking appropriate steps). This activity requires stamina and unwavering commitment to keep at it. Multiple challenges exist and some of those are loss of focus, loss of budget, vague outcomes, technical challenges, limited immediate business value, and an activity spanning possibly years. As a result keeping at it requires good old-fashioned grit. This type of transformative work, when done right will yield not only benefits of better architecture but also set the tone for a culture that helps to keep things current and clean.

At HYLA, we started the “inside out” modernization two years ago. This pivot was centered on three core areas (1) people (2) process and (3) technology.  On the people side, some of the work involved better balancing talent across three geographies where we have technical talent, focusing on building up the knowledge capital and hiring the right people who can help “find the true north”. On the process side, we continue to fine tune our modified agile process so that it best aligns with our business strategy. Lastly on the technology side, which is the focus of this article, the work being done falls under these three broad themes

  1. Incremental and ongoing clean up

  2. Cloud pivot

  3. Simplification

Incremental and Ongoing Cleanup

This involves going deeper than what is typically done as part of feature development. The focus areas span development, quality assurance, and production. The top areas that we are focused on are:  

  1. Basics: Better logging, exception handling, and code documentation. Some developers are better than others in this regard. Our ongoing focus here is to keep pushing towards adequate logging that helps to quickly triangulate production issues, better exception handling, and documenting tricky parts of the code. The holy grail we are after is to make this activity part of the cultural fabric of the development team across all geos which will enable keeping the software entropy in check.

  2. Reducing bogus alerts: Constant fine tuning of the alerts and underlying code to either ignore bogus alerts or to eliminate bogus alerts and  to work harder to transition from an alarm fatigue state to “actionable alerts” state.

  3. Code refactoring and kill dead code: Active focus on refactoring code by leveraging newer styles of programming paradigms (functional languages bits) and eliminating dead code every opportune moment.

  4. More and more test automation: Continued focus on unit testing and automated functional testing; ensuring that focus and investment stays in place to keep the automation suites current.

  5. Environment consistency and infrastructure automation:  Consciously make an effort to reduce Snowflake effects. Also putting efforts into automating infrastructure areas while at the same time closing security gaps in the environment aggressively.

Cloud Pivot

  1. Move the entire application stack to cloud (AWS): Use this opportunity to re engineer (simplify) by taking advantage of the services available in the cloud environment.

Simplification

  1. Standardize on a few key technologies:  Having many “framework” components that provide similar functionality increases complexity and opportunity for errors. We believe sticking to fewer frameworks help to keep things simple, easy and manageable.

  2. Kill hobby projects: Often, a new technology is introduced in a whim to solve an immediate and current problem substantiated by claims of “future” benefits. However, if not followed through this becomes yet another technology that needs babysitting. Keeping these impulses in check and weeding out the loners, helps with keeping things clean and simple.

  3. Data needs: Data needs are typically fulfilled through batch or application integration. One type does not fit all the needs, all the time.  Nevertheless, minimizing batch and keeping the focus on application integrations (through API) is the path we are moving forward with.

  4. Decomposing the monolith:  As HYLA grows, some of the issues with monolithic architecture are starting to become a concern. We are cautiously optimistic that microservices will help solve some of the growing pains and dipping our toes in a careful, controlled manner will increase our success.

In next series of articles, we will explore in depth on some of the key initiatives starting with cloud pivot and other exciting work.

New call-to-action

Topics: TechTalk

About This Blog

The HYLA Mobile blog is a place for thoughtful dialogue that will ultimately change the perception of “used” phones around the world. Visit the HYLA website to learn more.

Recent Posts

Subscribe to Email Updates

Interested in Learning More About the Mobile Trade-In Industry?

Visit Our Resources Library Here

Mobile Trade-in Program