Not so long ago I celebrated five years of working as an independent consultant for my own company MavenThought Inc..
As a quality expert I had the chance to work with multiple companies and teams to help them “get better at what they do”. Inspired by all the successful results, I decided to reach this further and build a product to help teams work more efficiently.
Becoming an owner wasn’t easy. How did it come about? Well, it all started around 20 years ago…
Once upon a time
When I started my career more than 20 years ago, I discovered quickly enough, probably like many of you, that I wanted to excel at my job. During my first few years of university, I was really lucky because I managed to meet many fascinating people—people who inspired me and from whom I learned a lot.
Realizing how beneficial mentoring and training was for me fueled my desire to do that for others and give as much as I could back to the community.
While still working on my master’s degree in computer science at the University of Buenos Aires, I started working as a teaching assistant in Algorithms and data structures I & II and then in the Compilers lab.
It was that great experience that led me to keep working in universities and colleges teaching Object Oriented Programming and Object Oriented Analysis, and for a very short period of time I was even a kindergarten music teacher!
With great power comes lots of bills, so it is quite common in Argentina to work in the field by day and teach at night. Teaching combined with working in the field is a great way to keep up to date with current technologies and work on new methodologies at the same time.
I have always been passionate about coding, and when sharing code became widely available I jumped on the bandwagon writing my own libraries, blogging, etc.
However, I was a tad late—my years of free time working on projects were behind me because I had to focus on my family. Don’t get me wrong, I still participated in and supported many user groups, but it was hard for me to find as much time as I wanted to collaborate on projects.
So the question was this: How could I share what I had learned so far with others, not only just about coding practices and methodologies, but also about capturing requirements, planning, estimating and delivering successful products without burning my team out in the process?
I wanted to take the tools, processes and metrics that I was using successfully for my own clients and projects and explain why I find them so useful and how easy it would be for others to use them too.
First I wanted to develop a Kanban board to manage flow and capacity. For planning, I wanted a Story Map to help clients plan releases and manage the backlog to avoid cluttering the input to the board with stories/cards. However, I was hoping to find a way to make them work together without having to manually sync them.
Metrics were a big component as well because I wanted to show how fast the release could be built and what the problematic areas were in the flow. Finding out if the WIP limits were set correctly for a client’s capacity was also important.
My initial attempt was to try to model all these expectations with existing software and integrate it using APIs, but it was quite a bit of work and there were too many dependencies and unknown factors. I did some experiments and left it at that.
I decided I wanted full control to implement all the features I find useful plus all the others that are missing in existing tools. Also, I wanted to do it while implementing all the high quality processes that I preach about (dogfooding), making sure that our release cycle is short and sweet.
And overnight SmartView was born and I became an owner.
Que sera, sera
Of course as an owner I wanted it all! Deliver it fast, deliver it soon, make it pretty, include mobile apps, API and virtual reality and integrate it with Angry Birds!
Wow, I was really excited, anxious, happy and concerned, all at the same time. I needed to slow down, organize my thoughts and decide on a course of action.
I also wanted to quell my fear of never actually releasing anything, so I decided on the following:
Stick to a methodology that you believe in and let it drive you: We used the Story Map for releases, used the Kanban board and wrote scenarios to drive our acceptances testing and TDD all the way.
Find the smartest team of developers you can find: All the members of my team are seniors in their field, and I have worked with them in the past so I was really confident in their abilities.
Be an owner: I didn’t want to be just a developer or just an architect. I set the guidelines, set goals, made myself available and helped out as much as I could. It’s important to aim high and keep the vision going.
Keep release cycles short: As soon as the features are ready, we can deploy them.
We started using a Story Map on a wall and one of the popular electronic Kanban boards.
Our first minimal release happened after a couple of months and was aimed to let us start using the app. So after that we ditched the other tools and switched completely to using SmartView to build SmartView.
Building the app while using it at the same time is an excellent way to make sure it is always in a working state.
And the rest is history! We are almost ready to open the public beta, we have an iOS app in the App Store and we are positive that we can help many teams become more productive!
Giving back to the community and helping others is a wonderful, infectious feeling.
As Lope de Vega used to say: Quien lo probo, lo sabe (Those who taste it, know).