This document summarizes an internship project involving two interns, Person 1 and Vivekanand Rajasekar, and their manager Winston Milling on a team called One-Paint. The interns developed a feature flagging tool called Flagster to toggle features for specific stores. It allows easily enabling/disabling UI features, piloting features before full deployment, mitigating risk, and catering to different markets. The document describes the team, tool, architecture, development process, future plans, and lessons learned from using agile practices.
9. Before and After
Open Flagster
UI
Input Store
Number
Toggle
Feature for
that store
Developer
changes code to
switch on a
feature
Update and Test
locally
Update and Test
in acceptance
Update in
Production for all
stores
10. Value
• Easily enable/disable a UI feature for a specific store
• Piloting features before full deployment
• Mitigate risk
• Cater to different markets more aptly
Developer
Saving time for Developers
Mitigate Risk
14. The Future of our Application
• Varied criteria for feature flags
• Role-specific
• Geography-based
• Expansion to other departments
15. What We Learned
• AGILE
• Extreme Programming
• Pair Programming
• Test-Driven Development
• IPM
• Retro
• Stand-up
• Version Control
• Balanced Team
J: Hey, I’m Jay…
V: …and I’m Vivek. We’ve been working on Flagster, a feature flagging application for the One-Paint team this summer.
J: I attend UCF (go Knights) and will be graduating in 3 semesters.
V: I attend GT (go Jackets) and will be graduating in 2 years.
V: Before delving into the specifics, what are feature flags in the context of UI’s?
J: Features are independent components in a user interface. Say devs write new feature and it needs to be added, like so. When this feature is added to the production software, it is pushed to all of the stores at once. What are some of the complications with this approach?
J: Features are independent components in a user interface. Say devs write new feature and it needs to be added, like so. When this feature is added to the production software, it is pushed to all of the stores at once. What are some of the complications with this approach?
J: Features are independent components in a user interface. Say devs write new feature and it needs to be added, like so. When this feature is added to the production software, it is pushed to all of the stores at once. What are some of the complications with this approach?
V: This approach allows a single version of the application, pushed from the technology centers to the cloud, to run on every single store in the country. However, we do not have the ability to roll out different features to different stores. That would allow us to pilot features to a subset of the stores and test their feasibility quickly.
V: How does having Flagster compare to a single version throughout the country?
V: This approach allows a single version of the application, pushed from the technology centers to the cloud, to run on every single store in the country. However, we do not have the ability to roll out different features to different stores. That would allow us to pilot features to a subset of the stores and test their feasibility quickly.
V: How does having Flagster compare to a single version throughout the country?
V: This approach allows a single version of the application, pushed from the technology centers to the cloud, to run on every single store in the country. However, we do not have the ability to roll out different features to different stores. That would allow us to pilot features to a subset of the stores and test their feasibility quickly.
V: How does having Flagster compare to a single version throughout the country?
J: Currently, the devs must delve into the codebase and change the feature flag if they want to enable or disable it, then go through the arduous process of deployment. With our application, the feature flags can be managed simply in a user interface and can be enabled or disabled, by store, in seconds.
J: What direct value does this application add?
V: The UI allows anyone to enable features saving the developer’s time for other projects.
V: The ability to pilot to a subset of the stores allows us to rapidly test the feasibility of features without deployment to 2000 stores.
V: Paint accounts for 8 of Home Depot’s 100 Billion dollars of annual revenue. In mayday situations if a feature is experiencing problems, we can easily turn it off without any changes to the production level code.
V: The United States is a diverse country where different regions have different cultures and purchasing habits. Feature Flagging will allow us to cater features to certain regions.
V: What technologies were used to create Flagster?
J: We used several technologies to build our application, with the major ones being Node.js for our back-end as it is a very fast framework which was needed because we are running multiple queries. For our front-end, we used Vue.js, as it was one of the top frameworks and is very easy to learn, as we both had very little experience in front-end development prior to the internship.
J: Now the question is how do these varied technologies come together?
V: The DB stores what features contain what stores.
V: The Node server handles API calls from the UIs and communicates with the DB Server.
V: When an associate logs in to the UI, they get the features for their store.
V: The Flagster UI, created using VUE, sets the features for the stores.
V: What did the development of this app look like?
J: So up to now, we are in production and our app is ready to be iterated upon, to further improve it. And so, what’s planned for the future of our application?
V: Currently, our API is in production, we have integrated the UI to make calls to our UI, and we have a functional Flagster UI.
V: W could include role-specific feature flagging so that particular positions can see different Uis.
V: We can also include region-based flagging so that we can turn features on and off for entire features.
V: Feature Flagging is an app that is not distinct to the One-Paint team, but can be used with any feature-based UI.
V: What are some of the methodologies used during the creation of this project?
While we were working on our intern project most of the time, we were also able to enjoy several other experiences.