InsightMedi’s Evolution

Two years of evolution for InsightMedi

Growing as a company along with our product

I’ve written in the past about our team story, and how we became a company working around the idea of a better approach to sharing medical images.

We’re about to turn two and so does our iOS application. This post is all about it. If you’re interested in knowing more about the process and evolution of our product, this time specifically for the Apple platform, please read on.

Getting ready to start

It’s early April 2013, our team is ready to start working, and we are: one physician, two engineers, and a contractor in charge of design. Neither of us have ever done this, at least not at this scale. If I let myself linger in the memory long enough, I can still remember the excitement and focus we had back then.

The way we approached the next following day’s work was a little bit old school. We spent the majority of our time planning for a long-term development cycle, and we really wanted to have a full-featured first version — certainly against the advice of everyone in the Lean movement — to ship. We were not Lean back then, we didn’t even know that was a thing.

- Version 1.0 -

The plan

Our full Gantt chart estimated a total of 675 hours of work. Since we were all employed elsewhere at the time, these hours would have to be distributed among nights and weekends, with the exception of a couple of vacation weeks over the summer, where we could work full time on the project. At that rate, we would have a version 1.0 by the fall. We did it all in 630 hours.

Our initial plan included help from a third developer, novice programmer Alejandro Romeo. His contribution to the comments view is still being used by a big part of InsightMedi users.

The prototype

Our first non-functional prototype had around 100 screens reflecting all major UI elements of the app. We used OmniGraffle to create those screens, and produced a Specifications Document with over 145 pages describing everything, from use cases to the data model.

Looking back at the original prototype, two things are pretty obvious: 1) we were too focused on Instagram, and 2) we were overpopulating those tool/nav bars like there was no tomorrow

We spent several hours refining the prototype, deciding what would make it to the final version, and how it should behave. It is obvious to me now that this version of the app was too crowded with buttons. They were all over the place. Following iterations of the product were focused on decluttering the UI and providing a better experience for the user.


From the prototype to the real thing

One of the key initial decisions we made was to use Apple Storyboards for the development of this application. This was a very debated decision and to this day, when dealing with our current version of the app, we keep revisiting the same question again and again: was the use of Storyboards the right choice?

There’s no doubt that Apple has improved their development tools over time, and the Storyboards has been always an important part of that improvement process. We knew that at the time none of the “big guys” used it, and we also knew that changing our minds later on would be really difficult.

However, we could not afford to keep postponing this issue and we finally decided to bet on Storyboard. It’d significantly reduce our implementation time. In the next following months, technologies like Autolayout and the enhancements to its XML format — a blessing when it comes to GIT management — , made us feel better about our decision. Nevertheless, our current Storyboard would make the most powerful machine wet its digital pants.

This is the initial Storyboard layout for v1.0. Our current version of this file would need a movie theater screen to be fully displayed.

Once the initial Storyboard was set up and ready to go we started building the application using some test images and rudimentary icons. A lot of changes came later on to this initial Storyboard design. Time showed us that we not always made the best decisions when it came to Segues, and Navigation Controllers. Some things were obvious at designing time, but some other just became obvious when trying them out on the iPhone simulator. We made the necessary adjustments and continued working.

Our first approach to building the Explore screen where users could browse the whole images library.

We took the idea for the filters in the Explore module from an app called Houzz, which we thought was one of the better designed ones out there (it still is).

We had just started but the app already looked a lot like the prototypes we had put together. We were not focused on the look so much as on the feel. Getting things to work properly was our main concern. We knew that polishing UI aspects of the product will come in a later stage.

Since we decided to avoid using real medical images as much as possible, we encountered an important problem early on. There was no way to know if the images we were getting from searching, and filtering, were the correct ones.

We decided to use a bunch on similar images — all variations of the Pixelmator icon — without realizing that by doing this we would not be able to know for sure if the database queries were returning correct results. We had to come up with a quick fix, so we decided to put letters to the thumbnails corresponding to their Specialty, System, and Anatomical Regions. Under this approach, if we filtered by Abdomen + Cardio + Radiology, and we got an image with the letters combination ACR, we were good to go.

We really did everything we could to delay the use of explicit medical images. An effort time would end up proving futile.


Looking for help within the community

We went through a lot of issues when developing the first version of the app. Some of our questions ended up posted in the usual places all over the internet. I found it to be extremely helpful to go StackOverflow, and RayWenderlich’s forums. Both communities proved to be amazing when it came to sharing our findings:

Parse recently released their own CollectionView class, which makes your life extremely easy. Back in 2013 this is how I dealt with it on my own.

And helping us troubleshoot development roadblocks:

Some big, some small, a lot of my issues usually ended up in a forum. I found it to be useful, not only for me, but for new developers who eventually faced similar problems.

There are developers who will avoid posting their issues on public forums. Some other would go through a great deal of trouble to mask every aspect of their questions, so no one is able to identify what they’re working on.

The reasons behind that behavior obeys to a diverse set of motivations and I’m sure they’re all valid. I tend to be pretty open about it. There’s no way I’d be successful at making others believe I don’t panic often and reach out for help. The developers community is one of the best ones out there. My approach is to take advantage of it as much as I can, and pay it forward every chance I get.


Third-party software policy

From the get-go, we decided that we’d use as many third-party libraries as we could. It didn’t make any sense to develop absolutely everything from scratch for this first version. It’d take an insane amount of time to do so, and the product would be at risk of never seeing the light.

We were aware of the risks that this decision brought. Marrying to other people’s software and their willingness to maintain it updated was not a small thing to consider. Our biggest dependency to this day continues to be Aviary’s photo editor, and I still recall the horrible days of iOS 7. Aviary was one of that last to upgrade their SDK, and we had to ship version 2.0 of InsightMedi with this iOS 6-based feature. Eventually they caught up and we’re extremely grateful for their hard work.

Adopting the Aviary Editor made sense for us, specially because it’s available for all major platforms, which will allow us to grow in the future.

To this day, InsightMedi keeps a “Credits” section with links to all of the third-party libraries we use. It has never been our goal to pretend we don’t benefit from our developers community. We love to use libraries like STweetLabel and TSMessages — among many other — and we always talk about them with other developers.


Adding the final UI elements

from day one we’ve been working with Rosa López, the contractor designer in charge of providing those UI elements every app needs. She was in charge of everything, from the main icon to the fonts we’d use. I remember the app icon being a huge struggle for us. We finally decided on one that not all of us loved. We were not able to pin it down, but we felt we had to come up with a decision soon and move on. That we did.

The icon debate hunted us up until earlier this year. Here you can see the original InsightMedi icon and its own struggle with the rest of the elements on the device screen.

All of the UI elements for the original version of the app can be checked in Rosa’s Behance page.


Releasing the Kraken — v1.0

The next following months were a crazy ride of long days and late nights of development. We had a purpose, a goal, a mission to deliver something. There were no vacations that summer, but we never missed them.

After a couple of weeks of beta testing and quick fixes, on September 18, the first version of the app formerly known as InstaMedi was sent to the App Store for review.

Releasing a new app is one of the best feelings in the world. The expectation of getting through to people all over the world with your product. Would they like it? Would they use it? Would they recommend it? It is truly intoxicating sensation.

I still get nervous today when releasing a new build. The anxiety and second guessing are always there. Did I use the right certificate to sign the app? Will my users get push notifications? Did I change all those development environment variables to production? It is nerve-wracking and it’s awesome.

If you are growing curious about how that first version looked like, here’s a glimpse of both, the UI and the main features:

InstaMedi v1.0.0 was the only build under that name. It was quickly changed to InsightMedi.

Now that the first version of the app was out, and people was starting to use it there was no time for resting. In fact, it was exactly the opposite. It was exactly at that moment when pressure grew exponentially to solve the issues we didn’t find in our tests, and catch up with the new features we needed (or wanted).

We were on track for a new version.

- Version 2.0 -

Four more releases went out since we first launched the original version of the app. They all included bug fixes and overall improvements.

I should say that version 1.5 was pretty awesome in itself. It deserves an honorary mention. It was not only a big change because of the arrival of iOS 7, but it also meant a new layout for our images.

We had a lot of fun developing the middle child between initial launch and big 2.0. Version 1.5 introduced a new layout inspired by the web design trends of the moment.

That being said, it was version 2.0 the one we’ve been waiting for. The main reason? Notifications.


Push Notifications

Up until now, InsightMedi users could follow other users, like their images, and comment on them with all types of questions and general remarks. The big problem was that we didn’t provide any mechanism for the other users to know when their images were getting any attention.

This was far from ideal and we knew it since day one, but this is a clear example of another compromise. We wanted to launch v1.0. We had a big presentation prepared for Medicine 2.0 World Congress, and we didn’t want to get caught in the never ending spiral of improvements that “should be included” before releasing.

We went back to work and started preparing the great new update we all wanted to ship to our users.

Initially notifications were designed to be triggered only for basic actions (likes, single comments, and follows). In later versions the notification system became more sophisticated.

Releasing the Kraken — v2.0

At this point we were still working on our full-time jobs, dedicating to InsightMedi every spared second we had left. Our community was roughly over 600 users at this point, most of them from Spain, and we were convinced that this new release was going to change things dramatically for everyone.

Finally, on March 2014 we were ready to invite everyone to try a better InsightMedi. This version was not only more stable and better looking, but it’d also let you know when your colleagues, and/or followers, interacted with your content in a more advanced and elegant way.

A couple of months after launching v2.0, the user base had doubled and everyone in the platform was more engaged than ever before in our short history.

User activity increased in the next couple of months, as well as our user base with no formal marketing effort behind it.

Version 2.0 is to this date a great release for our iOS product. We worked pretty hard to improve on what we had done before, and we felt proud of the results:

InsightMedi 2.0 was the biggest change we’ve implemented so far in the short history of the app.

A few weeks after the activity spiked we noticed that engagement started to decrease. We really didn’t know why at the time.

Our users feedback was pretty good and the app ratings were over 4.5 stars, except in Canada, where for some reason they’ve always felt pretty displeased at InsightMedi.

An extract of what we call The “Canada Love”

Canada, of all countries, is the one that doesn’t like our product, or at least they didn’t like it at some point. This is such a strange event for us that we even have a name for this at the company. We call it “The Canada Love”.

This is not a trend that continues today though. Perhaps they grew over us or they just don’t think we still are a crappy, broken, sloppy, unprofessional, and illegal application anymore.

Jokes aside, user feedback is something we’ve always taken into consideration and today even more than ever before.

It was at this point when we started to include event tracking instructions to better understand what was happening. We had many theories but no real data to support them. At this stage we started to look out for a methodology that could help us find the answers to drive the next set of steps.


The Lean InsightMedi

Not knowing about this movement at this point — March 2014 — was not something that made me feel proud. Once I looked up and started to pay attention, I noticed that there were thousands of other teams going through the same things we were going through. The difference is that they already had an approach to solve their problems and I was just waking up to this reality.

As someone who gets late to the party and tries to make up for the wasted time, eating and drinking at an accelerated pace (at least that’s how I do it), I started to consume all the content I could find on Lean, data-driven decisions, A/B testing, MVPs, and so on. The more I read, the more I felt we had all the tools we needed to improve our product right there. That was a positive feeling and a promising discovery.

As soon as I found out about it, I devoted myself to learning as much as possible about Lean, Metrics, KPIs, and everything that would give us a strategy to improve our game.

To be honest, learning and buying into these ideas — and other similar — wasn’t the real challenge. Getting the rest of my team on board with a completely new way to do things seemed far more difficult. We were all so busy, we already had all these plans, and here I was with a proposal to put that aside, asking everyone to catch up with a lot of new reading material and this novelty way of doing things.

My team, being the awesome crew that they are, opened their minds to this new approach and we all did our best to apply what we were just recently learning. I can’t say that we’ve been doing it perfectly ever since, but we definitely improved many of our internal processes. Today we’re a stronger company and most of our decisions come from informed analysis.

- Version 2.7 -

Eleven (11) builds, an Android version, a winter acceleration program in Baltimore, and twenty thousand (20,000) registered users later, version 2.7 of InsightMedi for iOS hit the shelves on August 2015.

This is the third major release of our app for the Apple platform. I guess it would’ve been more convenient to call it v3.0, but we have a system for this sequence. I don’t just come up with the numbers as I please (ok, I didn’t think about this post format before setting the app version).

Anyway, this version of InsightMedi is not only the best we’ve ever shipped, but it also initiates a month of celebration for our company. This next September we’ll turn two years old, and we are excited to present the product of our learning, maturing, and discovery.


Releasing the Kraken — v2.7

After another vacationless summer, this time working at full speed in the project, we were able to develop, test, and release yet another big update for our iPhone user base.

Version 2.7 stands out for what you can see and also for what you can’t. This was an optimization build. The obvious change in the new look and feel of the app. Specially in the main view with a fully re-designed UI. This new layout pretends to show a lot more information about the images and the social interaction around them. The user will have a better look of the content before deciding if he/she wants to go into the details.

Another big change is the revamped detail view, with a better distribution of the action buttons, and a better preview of the image — following the actual aspect ratio of the full-sized picture. The comments section has also been built from scratch, allowing users not only to have a more reliable experience when commenting, but also editing their previously created messages.

Version 2.7 also improves the social aspects of a conversation with advanced notifications, the possibilities to open images/profiles from an email, and the capacity to share interesting images with everyone in a safe manner.

InsightMedi 2.7 is all about refinements and optimizations.

It’s been only a couple of years. Two years in which we have had to focus also in tasks such as marketing our product, setting business and financial models, seeking investment, overall business administration, and every other activity that everyone in our shoes needs to handle. It’s been only a couple of years but it feels like a life time of learning. That being said, far from tired we’re excited about what’s next.

Finally, I’d like to share something important with those of you who have made it this far into the article:

  • We’re extremely happy to be a part a community where healthcare and technology meet on daily basis
  • We know there’s a long way to go and a lot of work to do, but we plan to keep on going
  • We’re thankful to all of you who have helped us in one way or another
  • There are a lot of cool stuff we can’t wait to show you!

Together we’ll make a difference.

Thanks for reading,

Juan.


If you want to know more about InsightMedi, you can always visit our website, watch me pitch InsightMedi at DreamIt’s Demo Day, or go by our social media accounts at Facebook, Twitter, and Instagram to stay up to date with our latest news.