Is software extensibility a condition of survival for your startup?
Learnings from the near-death experience of Hockey Community
November 2018, Montreal, Canada.
My name is Alex, I just turned 30.
I think I just went through a startup midlife crisis. I can’t believe it took me eight difficult entrepreneurial years to understand what you are about to read.
August 2010, Vancouver, Canada.
I started Hockey Community (HC) with my roommates with one goal in mind: make hockey more accessible through technology.
I was 22, inexperienced, but ready to work hard.
So. Much. Work.
In true startup fashion, we spent eight relentless years designing, coding, and marketing our app.
Our front-end “team” of 1.5 developers went from jQuery mobile to the Intel app framework then our own 100% Vanilla JS app and then to AngularJS.
Today, we are migrating to Vue.js.
On the back-end, we have 89 Rails models, 81 API Controllers, and 10,000+ commits on Github over 17 repos.
That’s a lot of sweat!
To give you an example, here’s our most significant Rails model: User.rb.
Hardworking years after years.
League and tournament software, event payment collection, registration, content sharing, goalie finders, team finders, gear sale section, and data exploration tools.
It was a feature festival.
The long list of features were made for what appeared at the time to be excellent reasons:
- “X new feature has the potential to bring a lot of new users”
- “Y will be our money maker”
- “Z will increase our user retention”
- “F will be the WOW feature everyone talks about”
They were always new, exciting, and necessary.
We didn’t realize that we needed to specialize and focus. Even if we did realize, I don’t know if we would have stopped ourselves from leaving behind what we needed to. Why?
As my best friend, father of two, and HC’s co-founder, Ryan, would say:
Features are like children. We give them unconditional love. It doesn’t matter what they become. Removing them is unthinkable.
If you find removing features hard, it is because you love your “children.”
No doubt there is value in having lots of features. Ask WeChat and their 1 billion happy, active users. But apps with multiple features take a huge amount of capital, experience, and time. They aren’t for everyone.
How do you know if they aren’t for you?
- notice the product isn’t taking off?
- spend more time fixing bugs than improving anything?
- have multiple features in sleeping-state?
- need 10 different emails to explain what your product can do?
- find that the quality of your product doesn’t keep up with the rising expectations of your users?
Great! We are living on the same planet.
Our unconditionally-loved features need some rethinking.
But how did we get here?
Entrepreneurs like us tend to be extremely optimistic and ambitious. We love new features because we believe in them and we believe in ourselves.
This belief is critical to new projects and to long-term success. But we need to learn to constrain our optimism and focus our energy on fewer projects than ever. Why?
There is no place for “okay” features anymore.
The internet has neither borders nor distance. Competition is extreme. You are being compared every day with hundreds of other eager-to-conquer-the-world entrepreneurs.
Excellence is the only chance for survival.
If you have a recipe for excellence that isn’t:
- Extreme focus or
- Hundreds of millions of dollars
We haven’t heard it! Please let us know the comments.
For now, we are stuck with those two options. And getting focused is easier than gathering a truckload of money.
The risk of being too focused? Obscurity.
You can be excellent at one thing but people won’t pay attention to you. Your users will never get to know you because you solve such a tiny piece of their long list of frustrations.
If you believe your product is truly focused and great but you still aren’t being noticed, keep reading.
A different approach,
Enter the Ecosystem.
Looking back, we should have built ONE small, amazing feature so well that it became impossible for the ecosystem to evolve without us.
But we were too busy focusing on our own success and so many features that we didn’t ever develop the ecosystem around us.
We tried actually! Below a photo of a wonderful 2015 memory with Oxelo and HowToHockey.com during a pond hockey tournament in Invermere, BC.
Because we missed something,
« Software Extensibility ».
Extensibility enables developers to expand or add to the software’s capabilities and facilitates systematic reuse.
Software extensibility would have helped us stay focused.
With extensibility, we could have enjoyed being part of other networks and grow much faster without being tempted to explore new features.
It is a must if you want to position yourself within an ecosystem.
Then we kept exploring, and realized it will take a lot more.
1. Build your architecture to be fully extensible
- Build an event-driven architecture: webhooks, upstream & downstream data flows, etc.
- Follow as many standards as you can: Auth, JSONAPI, GeoJSON, REST, etc.
- Have impeccable API documentation ready to be open to the public or prime partners.
- Open source pieces of your code to let partners make suggestions on the data, APIs and features they need. Here’s a good article by my cowork Alex Faria on the topic.
- Study the legal implication of sharing data with potential partners or foreigners.
Want to test your architecture extensibility ?
— And make sure to share your extensible feature in the comments. —
2. Consistently ask yourself if your lines of code keep you singular & focused.
Here’s a good read about staying singular. To put it simply: are you the only one in the world who could write this line of code?
3. Treat your competitors as potential partners.
Your competitor can become your best asset at anytime. You share the same goals and values. Why not inviting for them for a beer?
4. Treat your partners as well as co-founders
Help each other grow. Tolerate mistakes. Celebrate the small victories. But let’s keep in mind:
Rule #1 when considering a co-founder: Can you see yourself having a beer with them every month? If not, it is a bad fit.
Rule number #2: They must embrace the ecosystem approach and welcome integrations. Send them this article and get their thoughts on it — do they envision the same future for their product?
5. Map out all the ideal user journeys, including your competitors and partners
You may find what’s missing in their journeys, the role you could play, and who you need to partner with.
What’s next for Hockey Community?
I just came back from Vancouver after spending a few days with HC trying to decide how to refocus our company without throwing away too much of the past eight years.
After two days of workshop and a lot of emotions, we are still undecided on what feature(s) we want to focus on. Follow us and we will keep you in the loop.
But we have learned something the hard way…
We will make sure to be focused, singular, and extensible.
How about you? Do you have experience in playing a role in an ecosystem. Let us know in the comments below!
🙏🏼 If you enjoy reading this article, please consider giving it a few 👏👏👏.
💌 Subscribe to our newsletter on http://developers.decathlon.com
👩💻? 👨💻? Interested in joining Decathlon Tech Team? Check out https://developers.decathlon.com/careers
Very warm thank you to
- My colleagues Caio Bianchi, Arnaud Esteve, Alexandre Faria who helped shape this article.
- Our tech advisor, Chris Saad, ex-Uber Head of Developers to help us understand how ecosystems work.
- Gill Sukhbarinder Singh and Amelia Vreeland for the copywriting suggestions.
- Amrit, Jack, Ryan and all the incredible people who are helping make Hockey Community possible.
About Hockey Community and Decathlon
HC was acquired by Decathlon in 2016. I’m now working for Décathlon Canada as a CTO. The rest of the HC Team and I help run the Decathlon Developers initiative and other exciting projects for the sport tech community. Hockey Community still operates from Vancouver with a team of six passionate and talented hockey entrepreneurs.