Tips on how to change the engine while still flying the plane.
Cover image via Anna Vaczi.
For coders and programmers, one of the best things about the SXSW Conference (besides the music, films, and tacos) is the abundance of other folks dealing with the same issues. From businesses big to small, issues with app development, data science, and blockchains seem to be on everyone’s minds.
Luckily, there’s a jam-packed schedule of sessions for those who want to share their own experiences, difficulties, and triumphs for the greater tech good. Shutterstock Director of Engineering, Rashi Khurana, gave one such talk on transforming a decade of code and how to future-proof your business while you do it. Here are 7 tips from Rashi for those considering a tech transformation.
Evaluate the Situation
Image via Min C. Chiu.
“First step is always to evaluate the situation and understand the behavior of your teams and technical systems. Are they demotivated? We are not merely painting the walls of our home and moving furniture; we are building a new home.”
Migrations can be boring — they’re often treated as “lift and shift” as Khurana puts it. The term “migration” undermines the complexity of what is happening. The real goal is to “break down a monolithic structure and to re-imagine a new architecture,” Khurana explains. “It’s a Transformation!”
Solve Skill Gaps
Image via Jane Rix.
“It’s not the programming language that does not scale; it’s the architecture and design patterns that were used in building an application that causes scalability issues.”
The old saying “ignorance is bliss,” Khurana argues, “is certainly not the case for code migration.” For engineering teams to be successful, the gaps in the skill sets at different levels need accounting. As Khurana says, “You’ll need architects, leads, and architecture reviewers to build solid architectures.”
Build a Process Around Collaboration
Image via SFIO CRACHO.
“A project that’s kicked off at the scale of an organization needs collaboration, open communication, and transparency to see where the blockers are so, together, we can remove them and move ahead faster.”
As is the case for any large-scale migration or transformation, collaboration is key. Khurana stresses an “open process” that focuses on “open communication and transparency” to move quickly and sidestep any roadblocks.
Define Your Tracker (and Celebrate!)
Image via Piotr Zajda.
“Success lies in celebrating the small milestones with a tracker that keeps us honest to our achievements and our journey. If there is no tracking, there is no feeling of accomplishment, because it comes with that moment of striking something off as done.”
When you embark on a long road trip, it’s always best to plan ahead for your journey. Code migration is no different, Khurana argues: “We use maps to define the route we will take and use mile markers to know how far we have come and reward ourselves at coffee shops and restaurants when we are tired. Same applies for any such tech journey that we embark. We use maps to define the route we will take and use mile markers to know how far we have come and reward ourselves at coffee shops and restaurants when we are tired. Same applies for any such tech journey that we embark. First take an inventory of all pages you need to transform, next pick a strategy for each page. Strategies can range from killing a page to fully redesigning it. Once you have the strategy, cluster pages into projects and lastly map all the dependencies. Then start tracking.”
Less Lift and Shift — More Redesign
Image via Ondrej Prosicky.
“Our biggest opportunity is to give our customers something to be excited about. It’s a decade of code, and in that decade, technology, designs, and usage patterns have come a long way.”
For anyone who’s been there before, the “lift and shift” can be quite laborious and difficult for limited gain. The focus, Khurana reiterates, should be on “transforming” and “redesigning” as much as possible. Challenge your team, Khurana advises: “Giving your designers, your product owners and our engineering teams new innovative projects to be excited about is very critical.”
Remember to Tidy Up
Image via HelloRF Zcool.
“Second biggest opportunity is to clean up what’s not being used and not getting the traffic pattern that it was intended for.”
Finally, when finishing a major code migration, the “tidying up” phase may be the most important to ensure a successful transformation. As Khurana calls it, “the life changing magic of tidying-up,” as made popular by author Marie Kondo, is the second largest opportunity to transform, redesign and “tidy-up” the traffic pattern.
Business as Usual
Image via Matej Kastelic.
“To manage the demands of the business while you are moving everything and still continuing to innovate becomes our biggest challenge. It’s, in effect, being able to ‘change the engine while still flying the plane.'”
For Khurana, there simply is never the option to bring down a site serving 1.8 million customers 24 hours a day. So how do you do it? Khurana knows that code migration is a challenge, but it is still achievable while keeping the plane in the air.
It entails planning for disruptions and distractions, keeping your engineers supported and motivated, having “honest conversations and negotiations with stakeholders and product owners,” and “always watching how the operational and business numbers are trending.”