Some of the disagreements I’ve had with non-engineers in my career stem from an assumption that because someone else is doing it, we can do it too. While this sounds logical, it is not always realistic. Why not?
As discussed in my last post about APIs, companies have proprietary data that they control completely. They may have an API that allows you to access some of this information, but only what the company wants you to access. Facebook’s friend graph is incredibly valuable for their company, but they only expose part of it through their API.
For example, Facebook’s allows you to obtain a list of a user’s friends if the friends are also your users. You cannot access the friends who have never used your app. This allows Spotify, for example, to show you the music your friends are listening to, but Spotify does not know who your non-Spotify-using friends are. This prohibits you from implementing some features that Facebook would be able to implement on their own.
If your product operates within another company’s environment, such as Google’s Android operating system, Apple’s iWatch, or Amazon’s Alexa, then you can only do what they let you do.
I recently built an Alexa app (check out Dream Catcher!) to learn about their new platform. I found that it boxed developers in pretty tightly, not giving us access to a lot of Alexa’s powerful features that it uses for its own built-in skills. For example, users must invoke your app by saying, “Alexa, ask [your app name] to ….” rather than just telling it what you want. I can ask “Alexa, what is the weather today?” because the weather is something that Amazon built in-house and they own the platform, but if I were building a similar app, users would have to invoke it by saying “Alexa, ask Adam’s Awesomest Weather App what is the weather today?”
Some companies get creative. Snapchat does not own iOS or Android, and those platforms do not allow app developers to prevent users from taking screenshots. Seems like a fundamental problem for an app whose whole claim to fame is that posts are temporary. Since their Plan A (I’m guessing) wasn’t possible, they used one of the mechanisms that the platforms DID expose: the ability to know when a user takes a screenshot. So they built a mechanism that alerts the sender if the recipient takes a screenshot, since they’re not able to block screenshots entirely. (Disclaimer: I’m a little too old to really understand Snapchat).
Okay, maybe it is technically possible, but your scrappy team of 3 engineers can’t compete. In a lot of ways, small teams are more flexible and can move faster than huge companies; that’s why I love working for startups. But for some large scale engineering challenges, you really do need a large team to complete large-scale projects. You’re not going to be able to build your own in-house version of Google Maps unless you have a huge development team.
Computing resources have become pretty cheap, and cloud services like AWS have made it very easy to rent large amounts of hardware. Still, some tasks — especially big data processing tasks — may be prohibitively expensive for your small company. In these cases, your engineer should be able to crunch the numbers to come up with an estimated cost so you can decide together whether to proceed.
I haven’t come across this very much in my career yet, but in some cases, your engineers may technically able to do something, but are legally barred from doing so due to a patent. Software patents are a touchy subject, with many software professionals thinking that they are granted too liberally. Even many large companies, including those that have valuable patent arsenals, agree, and some have promised to only use their parents defensively (eg. the other guy picks the fight). Since some patents can be interpreted very loosely, a lot of companies are infringing on patents they don’t even know about. It’s a good idea to research whether you might be exposed should your scrappy little app become a formidable competitor of one of the big guys which happens to own a relevant patent.
Hope you found this post useful! Don’t forget to follow me here on Medium, my blog WTF Is My Engineer Talking About, Facebook, Twitter, or LinkedIn. And please send feedback and topic suggestions via e-mail.