This post is written by Oz Katz, Co-Founder of Product & Engineering at Summer.
Scaling is a word with many possible meanings, but however you see it - it’s always a difficult task.
A recent challenge Summer faced was when we decided to scale our existing Google Chrome extension out to other platforms - namely Firefox and Safari.
So why is scaling to more platforms such a challenge? The most obvious answer is that not all platforms are created equal.
The UI idioms are usually different, the target audience isn’t the same, and in some cases the underlying technological stack is completely different. So how can you make this process easier?
Here are a few tips from our experience:
1. Focus on the problem, not the solution.
Try to think about your product in more abstract terms. For each feature (where a “feature” is a small solution to a small subset of the problem you are solving) try and match it as closely as possible to the design philosophy of the platform you are targeting.
For example, in an iPhone app - you would generally use on/off sliders to change a true/false setting, while in Android this would normally be represented as a checkbox. This is not due to a technical difference; it is simply what the UI guidelines dictate.
2. Find the common denominator and try as hard as you can to keep it common.
Unless the platforms are completely different (as in the case of iOS and Android, where you have to write in completely different languages), try as hard as you can to keep the common parts in a centralized location, and only implement the differences when adding a new platform.
This is much harder than it sounds. It does sometimes mean emulating behaviors and jumping through hoops, but the benefit of a single code base that is simple and foolproof to maintain usually outweighs this initial cost.
3. Think hard about which platforms you should target.
Don’t make your decisions on which platforms to support simply by looking at their market share.
For us, it seemed obvious at first that Internet Explorer should be a high priority since it has such a massive market share. From talking with users and potential customers, we quickly learned that installing add-ons or extensions simply isn’t something the average Internet Explorer user does.
We also found in our research that IE users are not usually early adopters of technology. There might be millions of them, but they are not necessarily the appropriate target audience.
4. There is no magic bullet.
Have I mentioned that scaling platforms is hard? Some companies try to solve this problem, to various degrees of success, by providing a uniform development environment, which they magically transform to native code for all available platforms.
This can at times be a good idea, but think hard before you go down that road:
- What is the trade-off? Performance? Vendor lock-in? Ability to debug?
- Should your solution really be exactly the same on all platforms?
- Is there added cost? Will it really be cheaper down the road?
- If you decide to end this relationship, for any reason, can you make any use of the code you’ve already developed?
Don’t get me wrong, I’m not blindly opposed to this type of solution - I just think a lot of thought should go into such a decision. It could be a wonderful time-saver and a great way to reach larger audiences in some cases, but always try to weigh about the consequences.
I hope you found these tips useful; I did my best to keep them general and not to dive into specifics.
If you have any questions about our process or about Summer in general, we’d love for you to be in touch, either by commenting, or on Twitter at @getsummer.
You can also reach me personally on twitter at @ozkatz100 or on my personal blog.