Troy Crosby, Author at The Contactually Blog | For Relationship-Based Businesses

5 Aspects of Rapid Feature Validation & Iteration

When Eric Ries published The Lean Startup in 2011, he outlined foundational principles of rapidly testing business hypothesis through product experiments. Startups like Contactually know they should split-test, be data-driven, and “Move fast and break things”, but actually applying these principles is another story. Rapidly validating and iterating on product features requires your team to establish tooling and methodology for doing so, which requires explicit effort and commitment. Contactually product development process has evolved into a fairly effective but simple pattern for running experiments that involves 5 different areas of methodology. These 5 aspects of experiment execution have allowed us to drive powerful business outcomes like improving our onboarding’s user activation rate by 20% Additionally, these 5 areas serve to reasonable balance several types of assessments: Subjective and objective quality of changes Qualitative and quantitative effects of changes Short and long term effects of changes 1. A/B Testing Tools Key to any controlled experiment is tooling that enables you to apply the new functionality to an experimental group of users, while maintaining a control group to compare against. While many A/B testing tools exist for swapping out HTML or front-end components, Contactually wanted the ability to control deeper backend behavior (Ruby on Rails) based on experiment groupings. Things like changing scoring algorithms, triggering alternative background jobs, exposing or not exposing certain ActiveRecord relationships. This led us to write our own Rails service to control A/B experiments. Contactually’s “Feature Flipper” Service Our custom-rolled Feature Flipper service allows us to create and manipulate experiment “Features” via a Rails console, or an internal admin panel for our non-technical employees, and is backed by Redis. Our FeatureFlipper service give us the following...

Empowering Developers with Consistent, Safe, and Simple Deploy Scripts

Deploying software is a notoriously risky portion of the software development lifecycle. Our industry is littered with stories of ill-conceived deployments that caused huge headaches to deal with and correct. As developers who enjoy the creative output of programming, it’s easy to neglect the operational details of deployments despite the fact that it’s widely believed that simple deployment processes make for happier developers. At Contactually, investing even a small amount of time to develop fairly simple deployment scripts has paid off huge dividends. Let’s look at what we wanted to accomplish with our deploy scripts, how our scripts do this, and what benefits this has provided our development team with. The Goal of our Deployment Scripts We want to have deployment scripts for all major components of our application/infrastructure. In our case: A ReactJS frontend hosted on Amazon S3 A Ruby on Rails backend deployed on Heroku We want to handle deployments of our components to all possible environments. In our case: Staging Production We want to use minimal setup on behalf of the developer, and use existing credentials and permissions to perform deployment actions. What our Deployment Scripts Do We have one deploy script for each of our main repos: our Rails backend and our React frontend. These two scripts have minor variations, but roughly execute the same steps. Some of the steps executed by the scripts are contained in their own bash scripts or rake files. Pre-deployment CLI checks & confirmations First, our scripts run through a series of automatic checks, or forced developer confirmations to help prevent against ill-advised deployments. Confirm which branch you are deploying to which environment Confirm continuous integration specs are passing...