With Orbitz Worldwide and Tata Consultancy in her CV, Rashi Khurana is currently leading the technical teams for the eCommerce platform and the Contributor experience at Shutterstock, New York City.
Prior to UXDX 2019 where she will be discussing Emergent Design, she shared with us how she manages successful cross-functional teams, maintains alignment and balances delivery with upskilling.
Hi Rashi, we're so excited to have you as one of our speakers at UXDX2019. Tell us about your career journey so far. Have you always dreamed to be an engineer?
I actually dreamt of being a politician as a child. I thought it was a powerful role to play and in a country like India, there was nothing more I wanted to cure than corruption. I became interested in technology in the early 90s when my dad sent us to a programming class where we learned BASIC (Beginner's All-Purpose Symbolic Instruction Code) and how to make flow charts for simple algorithmic questions. It was so much fun! I was in love with the GOTO statement, a statement found in many computer programming languages that performs a one-way transfer of control to another line of code. In college, I began interning at different companies to gain real experience programming in XML, Visual Basic and Tcl/Tk toolkit and Perl. These internships exposed me to the concept of office set-ups and building software that gets used in the real world, it was exciting!
How are teams structured at Shutterstock? Are you changing this structure in any way?
Teams are structured as sufficiently as possible within the domain of their expertise. For example, there's a licensing team, a subscription team, a commerce team and so on. We break these teams into smaller groups where necessary. For instance, a checkout flow slices through the front-end, orchestration APIs, back-end and commerce services. For a single team to own and maintain the expertise on this is a lot to ask, so we break them down into front-end cart/checkout teams and back-end API and commerce teams. This allows for building reusable back-end functionality that can be consumed by front-ends, admin systems and partner API's. This allows us to be more nimble and move faster as a company.
I also believe in ensuring that every engineer is constantly growing, learning, and being challenged. I go to great lengths to ensure the right people are assigned to projects that will benefit from their expertise. This means I rotate team members, especially the Senior Engineers, between teams and projects where their knowledge and leadership is needed most. This gives them an opportunity to innovate while solving big architecture problems and work on new challenges often, ultimately keeping them engaged.
Are they cross-functional (including UX and product) or technical teams?
Each of these teams has product owners, software development managers, testers, designers and engineers to support them. They are also associated with a strategist or an analyst that can help the feedback loop on customer performance in relation to the features that are built.
How do teams limit the risk of changes to your architecture?
In software, best practices include iteration, agile functioning, releasing smaller changes and releasing more often. To achieve this, our CI/CD pipeline, which has built-in quality gates, ensures things like test coverage don’t fall short or automation tests are running through critical flows. We also have code-owners where subject matter experts are assigned to certain areas of the code base to offer peer reviews. Lastly, the key is collaboration. If teams are talking to each other, planning, and going through architecture reviews it results in the mitigation of any danger associated with extremely risky changes through the change advisory board.
As VP Engineering are you more people management than technical delivery these days? How do you feel about being less hands-on? Do you miss your coding days?
In my current role, I am focused primarily on people management and tech delivery, not as much hands-on coding. I like this aspect of my job. I have coded for a long time and now I love having the ability to create solutions outside of a project or a feature, thinking at a much larger level of an organization. Managing projects and deliveries, ensuring quality by ensuring the teams are set right, bringing the best out in people and cheering them to their victories. Maintaining harmony and transparency seems easy, but is very hard. People matter the most in any company and if we can embrace the people, we can deliver anything. I am very proud of and connected to the teams I manage, and that enables me to do a better job at work. The small wins every day on my team make me smile.
How do you stay up to speed with the changes in tech? And is it important for you to be up to speed or that you enable your team to be?
With tech disruptions happening a mile a minute, there is always something that pops up as a surprise. When I go to conferences to speak, I try to absorb all of the good things happening in the industry. There are also the giant companies innovating in areas that directly impact our work, like Akamai which has been releasing a lot of cool functionalities for global Content Delivery Networks, edge caching and image processing. For my teams, it is essential that they are up to date on cutting edge technologies in the industry so we implement regular trainings for all basic technologies like React, Amazon Web Services, Kubernetes.
How do you balance delivery with upskilling / trying out something new?
Delivery to me is providing value to the business and our customers. Sometimes that value comes from extending our existing technology solutions and building features on top of it, and sometimes the value is out of scope for the current stack and we start to look outside. This comes in the form of innovative solutions to a hard problem or finding better ways of doing something. In the end, it should add value. Whether it’s in developer workflow and efficiency, new support of features, speed of rendering the site, cost savings, innovation, less tech debt maintenance, or a number of other things, the delivery should always add value.
How do you keep the teams aligned on architecture?
There are many things we do at Shutterstock to maintain that alignment. Firstly, we have a weekly architecture meeting lead by our Senior Engineers. The purpose of this meeting is to achieve alignment on architecture before projects are built out. Teams bring proposals to the new architectures that they want to build and collect feedback or iterate on it before the implementation can begin. Secondly, we have company demos. These are my favorite. Agile ceremonies have sprint demos where teams share what was done in the last two weeks. At Shutterstock, we present those demos to the whole company. Every team presents what they have worked on for the past two weeks, and without going into actual architectures of the projects, teams are aligned and informed. We also have weekly tech talks open to anyone where engineers from across the company are able to share knowledge around new technologies, architectures or process. Lastly, for big projects, we have a recurring forum and check-in meeting with a smaller subset of teams that are working on a big project that needs consistent alignment. Once such meeting is our front end platform’s architecture forum and governance meeting where technical challenges and best practices for front end teams are discussed.
What are the biggest challenges you face in your role?
We’re constantly working on so many projects at once, but probably the most challenging part is making sure that, while we execute all of these initiatives, we’re not losing sight of the bigger picture. We need to continue to operate in two streams; stream one focuses on maintenance and operations of our current business, while stream two focuses on strategic goals to innovate for future business needs. It's a balancing act of being involved in the day-to-day activities and still keeping an eye on the end goal. It's like driving a car: your eyes have to be on the road, but you also have to watch your GPS and make sure you get where you need to be on time. All this, while focusing on the people - to foster collaboration, a spirit of trust, a growth mindset and a culture where everyone feels respected and finds a place of their own to thrive.
What do you enjoy most about your job or the industry?
The best part of my job is that I’m offering a platform where people can earn income on the images, video, and music they create, and in turn, we are inspiring creativity for our customers around the world. It is very rewarding. I also love that my job offers a lot of face-to-face interactions. Whether it is working on a tech project, dealing with a current tech challenge, leading daily scrum protocols with the teams, presenting discovery and work to a wider group of stakeholders, or checking in with my team members individually, I’m always collaborating with my team. The time in between these conversations is what I use to plan the projects, strategize on execution, and catch up on everything that requires my attention.
We are at the center of a disruptive tech industry defining the future of Planet 2.0.
If you want to hear more from Rashi, join us in October for UXDX 2019 where she'll be discussing how teams limit the risk of changes to their architecture while building large and on-going applications. Agenda and tickets here.