Heroku is among the best cloud application platforms on the web and lets app developers spend their time on their application code, not managing servers, deployment, ongoing operations, or scaling. It allows for agile deployment for Ruby, Node.js, Clojure, Java, Python, and Scala – up and running in minutes. Of course, a full git support is included. No hassling around with servers, instances, or VMs again.
Plus, Heroku is not only a cloud platform but maintains and curates an avid ecosystem of Add-Ons. Usersnap was recently added to this Add-on ecosystem: Usersnap add-on for Heroku. Rather than using Usersnap as a separate service to make your life as a developer a whole lot easier you can now simply add it as Heroku Add-on. You will get screenshots during your development process to fix bugs faster and have more time working on new features!
Adding the Usersnap add-on for Heroku
It’s easy to attach Usersnap to a Heroku application via the command line interface:
$ heroku addons:add usersnap
When you’re developing a product, you’re constantly surrounded by questions like, “How can I improve my product?”, and consequently, “What’s the next step to take?”. There are 2 ways to answer these questions:
- Ask your customers
- Decide yourself
Ask your customers
Asking your customers appears like the better solution: You’re building the product for your customers, so they should know what they need. Unfortunately, they don’t. Henry Ford, the founder of the Ford Motor Company, once said:
If I had asked people what they wanted, they would have said faster horses.
Your customers are biased with current solutions for their problems, that’s why you can’t expect true innovation from them.
It’s your task to innovate, not your customers’. The problem is that you don’t understand your customers’ problems entirely in advance. Your most important task as product developer is to learn to understand your customers better than they understand themselves. Make a hypothesis about what your customers need and then try to prove (or even better: refute) this hypothesis. A hypothesis is always a guess, but you will become better and better at guessing the more you validate.
Continuous Integration and Continuous Deployment are strong concepts in modern software development and specifically useful and necessary for cloud applications. Delivering code continuously keeps the product development agile and allows for fast iterations. Specifically when it comes to SaaS products or services, the way to ship software has to follow the continuous track, delivering new “releases” several times a day. For example, at Quora every commit is submitted to the production system, unless this process is actively suppressed.
Ever decreasing software release cycles also require to rethink the way feedback from real users is gathered. Bimonthly user experience reviews with a selected set of customers are not suitable if new features of a product are published daily. Tools to suggest improvements and to report bugs need to be actively integrated in the product development process, addressing not only a selected group of testers but also includes real users.
This blog post is essentially an extended tutorial, explaining how to set up a 3C software production chain:- Continuous Integration, Continuous Deployment and Continuous Feedback.
We will use Microsoft Visual Studio and deploy directly to Windows Azure (Section 1). After that we connect Microsoft Team Foundation Server Online to our tool chain (Section 2) and subsequently connecting TFS with Windows Azure to establish Continuous Deployment directly from Visual Studio (Section 3). Finally we will add Usersnap to introduce Continuous Feedback to our setup (Section 4).
Since a standard “Hello-World” approach is always disappointing, we decided to create a tweet-wall which displays tweets containing the hashtag #usersnap. Lots of screenshots should provide a step-by-step tutorial to get you started with Visual Studio 2012, Team Foundation Service and Azure and finally Usersnap. There is no need to write code while walking through this tutorial.