The Mistake of Rewriting Products
12 February, 2018
Director at Wayfair
Problem
I joined Venmo as Manager of the iOS team, and the team really wanted to rewrite the iOS app in Swift. I was wanting to build credibility with the team, so I went to bat for them and convinced Product that we should do the Swift app.
Actions taken
We had a few challenges in rewriting the app. We had to maintain two codebases, there was still pressure from Product to continue releasing new features, and there were bug fixes to make in production. With a small team of six to seven people, it was difficult to manage all of these issues. Around a year into the project, we were working with Apple towards their SiriKit and iMessage extension release that was part of iOS 10. We were at a decision point of whether to use our old codebase or new codebase to build it. The team was sure that they'd get the new app out with Swift and with the extensions in a couple of months, and felt that they were really close to the end. However, I had to go back to the team and say that we couldn't do it. The team was really disappointed and frustrated by this. However, we got the extensions done on our old codebase and got a little bit of PR along with that, working with Apple. While the team was frustrated, they did come to recognize that there was no way the new app would have been ready, as the release of the new Swift app didn't happen until six months after.
Lessons learned
Rewrites are really difficult projects, and where possible you should instead make incremental changes. What we thought would take three to six months of development ended up taking about two years. It took too long and it caused enough frustration with various team members that by the end of it, there was only one engineer from the original team left. There's a quote "You do one rewrite in your career and then never again." This was it, this was my rewrite. I agreed to do this project as I really wanted to support the team, but it was a terrible decision. I also learned that you have to go back on your own decisions sometimes. It was tough to deliver the message to the team that we wouldn't be using the new app for the Apple extension release, but it resulted in a much better outcome.
Discover Plato
Scale your coaching effort for your engineering and product teams
Develop yourself to become a stronger engineering / product leader
Related stories
26 January
Passing for promotion happens to everyone in their career lifespan. If someone does not had to go through the situation, consider them they are unique and blessed. Managing disappointment and handling situations in professional setting when things don’t pan out, is an important life skill.

Praveen Cheruvu
Senior Software Engineering Manager at Anaplan
20 January
Happiness is a choice. Our upbringing and the surroundings have made it conditional. The first step is to get over the hump is self-awareness. Self-awareness is a journey by itself. The ability to identify what we can control, and we can’t is important.

Praveen Cheruvu
Senior Software Engineering Manager at Anaplan
6 December
There is a life philosophy in Jiu-Jitsu that resonates with me as a software engineer; Jiu-Jitsu is all about solving problems - the ultimate goal is learning.

Sanjin Celeski
Engineering Manager at Banque Saudi Fransi
13 October
A high performance team refers to “ a group of goal-focused individuals with specialized expertise and complementary skills who collaborate, innovate and produce consistently superior results.”

Praveen Cheruvu
Senior Software Engineering Manager at Anaplan
12 October
Why companies should invest in early career programs ?

Praveen Cheruvu
Senior Software Engineering Manager at Anaplan