Snap has many business problems, including the poor rollout of Snap Kit SDK
I’m an iOS Hobbyist developer using Swift 4 and iOS 12 and have been working with Snap Kit now for many months. With over 10 Medium posts, I have been chronicling my struggles and victories with the SDK. I have run into a number of problems.
Snapchat Snap Kit SDK Primer
Snap Kit is Snap’s attempt to go beyond its primary app offering. To grow and stay relevant, Snap login must be as prevalent as Facebook, Twitter, or Google’s authentication on Apps. GIFY has inserted itself into many other apps and Snap has the opportunity to do the same thing with AR content, Stories, Lenses, and Filters.
Snap Kit SDK is Snap’s attempt to become sticky.
The bugs described are purposefully written in “Bug Style” with the hope that each will actually get filed against Snap Kit SDK for Snapchat App
Some of the bugs documented below are nit-picky, however, Snap is in no position to allow even the slightest developer friction to occur. Snap’s future is partly riding on the success of Snap Kit, and the business has very little wiggle room to get things wrong. Winning over the developer community is paramount to Snap Kit SDK adoption.
Also, some of these could be considered feature requests, documentation requests or things that are “not bugs”. As someone with 20 years of software industry experience, I say these are “FAILURES” that need to be addressed (aka Bugs).
Business Lessons
For each of the bugs, I have added advice on improving the business approach to software release
Bugs
1 — Single Point Of Support
Steps To Reproduce
- Go to https://docs.snapchat.com/docs/
- Note the text > Feedback? We regularly update our documentation to give you everything you need for creative, easy integrations. If something’s not working for you, please report it to snapkit-support@snap.com.
Automated response text says:
Hi there!” Learn more about Snap Kit by visiting support.snapchat.com/news/snapkit. If you have further questions please reach out to us at support.snapchat.com/i-need-help. Thanks!
There are a few issues with the automated response:
- Tells the customer who is seeking customer support to look at the news blog. The news blog is not designed as a customer support tool.
- Tells the customer if they need further assistance to go to “I need help”. This part of the Snapchat website is not designed to deliver developer nor customer facing support for Snap Kit. A look at that URL will show that there is no way to report a specific Snap Kit SDK issue and the user will feel like anything they report there will end up in a black hole.
- The automated response does not say that anyone will actually read the email the customer sent nor help. It only talks about where to go and what to read. It is far from customer friendly.
Suggested Mitigation
Reword the automated response:
Thank you for contacting Snap Kit Support. This automated response is to let you know we received your request and will be reaching out to you shortly
Business Lesson
When introducing a product that is outside current offerings, review all customer engagement vectors. Staff appropriately. Involve Quality Assurance and Technical Support from the start (involve all stakeholders)
2 — Add Snap Kit SDK Support Options To ‘I Need Help’
Steps To Reproduce
Result
Note the available options:
What can we help you with?
My account login
Report a safety concern
My Snapchat isn’t working
My Snapstreaks disappeared . . .
None of these provide a clear option for someone seeking Snap Kit SDK assistance
Suggested Mitigation
Add an option for Snap Kit SDK Support
Business Lesson
Same as bug #1. A release of any product is more than just the product. It is
much more than just an announcement. A product launch team must be holistic and
represent every part of the company that has customer touchpoints or is
otherwise a stakeholder
3 — Snapchat Support On Twitter Not Providing SDK Support
Steps to Reproduce
- Go to https://twitter.com/snapchatsupport
- Ask a Snap Kit question such as “Do we ask this account for help with Snap Kit?”
Result
A number of problematic results occur. However, the key is that the team
delivering support through twitter is clearly not staffed to handle Snap Kit SDK
questions.
The initial response after step #2 above was a bot with a link to
https://kit.snapchat.com/. Clearly not a helpful
response to the question. Also, see the image directly above this bug writeup
The next response also seemed canned and perhaps a bot
We’ll need to look further into this. Head over to spr.ly/help and select the
options that match your issue . . .
That URL leads to the ‘I Need Help’ page and yields bug #2 above and is somewhat
related to bug #1 as well.
Suggested Mitigation
Modify the bots/automated response on Snapchat Support Twitter account such that
it handles Snap Kit queries appropriately.
Business Lesson
Think like your target customer. Follow the workflow of your target and test,
test, test. The website experience, the licensing experience, the onboarding,
test everything that could be an interaction with a customer — especially when
delivering a product whose likeness is brand new to your product line.
Stakeholders should have sign off authority on every customer touch point prior
to release
4 — Code Sample Error in Creative Kit Documentation
Steps To Reproduce
- Go to https://docs.snapchat.com/docs/creative-kit/
- Scroll down to this
Result
This line is not correct
It should be SCSDKPhotoSnapContent rather than SCSDKSnapPhotoContent (see
also bug #5 below)
Suggested Mitigation
Please correct the documentation.
There is a larger issue with the SDK itself. The naming is inconsistent — see
bug #5
Business Lesson
All documentation should be tested by professional Quality Assurance Engineers.
Documentation is a product. Documentation is just as much a part of the product
as any other piece.
Also, eat your own dogfood!
5 — Naming Inconsistencies with Creative Kit
In Creative Kit there is a method with the name ‘SCSDKSnapPhoto’
Carefully notice the pattern of the name. The first word is Snap and second
the word Photo
Creative Kit also has the method ‘SCSDKPhotoSnapContent’
Notice the naming method is not consistent. The word Snap comes before
Photo, but in this case, the word Photo comes before the word Snap
SCSDK*SnapPhoto*
SCSDK*PhotoSnap*Content
This same issue is repeated with these pairs of methods from Creative Kit:
‘SCSDKSnapVideo’ and ‘SCSDKVideoSnapContent’
In ‘SCSDKSnapVideo’ the word Snap comes before Video, however here
‘SCSDKVideoSnapContent’ the word Video comes before the word Snap
Suggested Mitigation
- Scan all documentation and sample code for accuracy
- Consider renaming such that the pairs are consistent
- Provide multiple paths for developers to learn about the change and conduct a comprehensive documentation review
Business Lesson
Have multiple code reviews and involve people in the organization with fresh
eyes and perspectives
6 — Login Scopes Information Misplaced
Steps To Reproduce
Result
The entire section titled Understanding Scopes seems misplaced. The section
is the first section for Login Kit.
Further, the section provides code for iOS Info.plist yet this page is a
generic page contains both iOS and Android instruction. So starting the document
off with strictly iOS information is odd at best.
Suggested Mitigation
Move this text to the Getting Started section on this page to a more logical
location.
Business Lesson
Test the documentation. Run “eat your own dogfood” testing sessions.
7 — Embedded Binaries Documentation Can Be Replaced Or Augmented To Include
Cocoapod
Steps To Reproduce
- Go to https://docs.snapchat.com/docs/login-kit/
- Inspect the Getting Started section
Result
In your app project in Xcode, add SCSDKCoreKit.framework and
SCSDKLoginKit.framework into General — Embedded Binaries.
The above text is correct, yet incomplete. Snap Kit now offers a Cocoapod
install solution.
Suggested Mitigation
Add information about how to use the Cocoapod option for installing Snap Kit
Business Lesson
Put in place checklists, sign-offs, and workflows such that when a change occurs
(such as releasing a cocoapod) others who have customer reach can act and review
customer-facing assets.
8 — Snap Kit SDK Naming
Steps To Reproduce
Result
The name of this well-established code line is SnapKit, which can cause
confusion with Snap Kit.
Suggested Mitigation
Although it is late, it is important to note this issue. SnapKit has existed for
at least 4 years and is fairly popular with iOS developers. A google search
prior to choosing the name of Snap Kit would have been wise. Further, if Snap is
not using an outside name search service, it would be helpful to consider doing
that for future naming
Business Lesson
Run naming searches
9 — UI of Developer Portal Confusing
- With a user id and password login at http://kit.snapchat.com
This UI does not lend itself to a clear understanding that there are two
distinct areas. The above image explains the problem best. It is not very clear
that there are two sections here. There is no line between them and the title
App Info on the right side does not clearly denote the left side as applying
to production (rather than development on the right side).
Suggested Mitigation
At a minimum, place a vertical line between the two areas App Info and
Development App Info.
Also, change the titles of the OAUTH2 CLIENT ID fields so that they read
**PRODUCTION **OAUTH2 CLIENT ID and **DEVELOPMENT **OAUTH2 CLIENT ID
Business Lesson
Don’t assume anything. Involve professional Quality Engineers in all aspects
of the product launch. Hire UX/UI designers when a UX/UI is part of the product.
And yes, consider anything customer facing — such as a dev portal — to be part
of the product!
10 — Unlink Sessions Methods Do Not Include Thrown Errors
- Go to https://docs.snapchat.com/docs/login-kit/
- Inspect the information on unlinking Sessions
Result
Neither of the two methods throws errors in the case of unlink
failure
- SCSDKLoginClient.unlinkCurrentSessionWithCompletion
- SCSDKLoginClient.unlinkAllSessionsWithCompletion
Suggested Mitigation
Include code to throw errors
Business Lesson
Think through the use cases for the product. Think through the possible failure
points.
11— Snap Kit Twitter Account Not Active Nor Informative For Devs
Steps To Reproduce
- Go to https://docs.snapchat.com/docs/
- Note the text
To stay up to date with our SDKs, see what’s new and follow @snapkit on Twitter.
- Review the tweets from @snapkit on Twitter
Although the twitter account @snapkit was established on May 2018, and it is now
September 2018, there are 4 total tweets. None are directed to software
developers
Suggested Mitigation
The marketing team who owns this account needs to start producing and posting
more content and the account should also post with information that reflects the
“see what’s new” statement in the documentation.
Business Lesson
As with bug #7 and others, there must be a cohesive release strategy that
includes all aspects of the product and its delivery to market. All departments
that could have customer facing assets should be consulted
12 — API Reference For iOS First Paragraph Seems Out Of Date
Steps To Reproduce
- Go to https://docs.snapchat.com/docs/api/ios/
- Note the text
Result
This documentation assumes you already made contact with us
I think this text was written when Snap Kit was in beta or had a small and
managed audience. And, the text is confusing. There are no instructions here
about how someone makes contact.
Suggested Mitigation
Remove the sentence or, if contact is required, explain how and why
Business Lesson
Test the documentation.
13— Snap Kit Support Boilerplate Not Helpful
Steps To Reproduce
- Send a support request to snapkit-support@snap.com
- After the initial automated response documented in bug #1 above and others, wait for and then read the “live human” support response
Result
Chuck (Snap Connect) Hello there, Thanks for reporting this! In order for us to
debug this better, could you please provide the following information- Username
- Client ID
- Specific URLs or assets used
- Info.plist (if there’s no sensitive information) Code sample if possible
Screen recording and or screenshots- IP address
Suggested Mitigation
I have sent a number of different requests to support and have seen this
boilerplate response from Chuck. Since every SDK engagement is different, this
text is not helpful. In face, I had asked a specific question about the
developer portal and then saw this text. It made me feel that my support issue
was not even read, and that the support tech did not bother to read or care
about my issue.
Either modify the text for inclusiveness, or change SOP such that support reps
no longer use the boilerplate (or use it with greater thought)
(IP Address .. really? For what? This isn’t an enterprise app.)
Business Lesson
Walk through mock customer experiences prior to release. Test the customer
workflows.
14 — Missing Example Code
Steps To Reproduce
Result
- No code samples for Android
- One sample exists for iOs, but only covers Bitmoji
Suggested Mitigation
Supply Example Code For All Kits and both iOS and Android
Business Lesson
Over-support your target customer, rather than under-support. This is even more
critical when the product is new and when the product is an important piece of
the wider company strategy. Clearly Snap Kit is a critical part of Snap’s
marketplace moves
15 — Snap Kit Support (more) Boilerplate Not Helpful
Steps To Reproduce
- Send a support request to snapkit-support@snap.com
- After the initial automated response documented in bug #1 above and others, wait for and then read the “live human” support response
Result
Our team is investigating and will follow up if we need more information.
Thanks, Chuck
This response does not include any information on timing for a response. The
customer has no idea what to expect.
Suggested Mitigation
Either do not use boilerplate or change the boilerplate text to include verbiage
for expectation setting
Business Lesson
See bug #13 and others. Technical Support and Quality Assurance should act as
the last line of defense for the customer prior to releasing any product
16 — Unexpected status code
Steps To Reproduce
I’m working with snap support now on this. I do not currently know how to
reproduce other than the fact that my code can reproduce this at will. The code
segment related is:
let api = SCSDKSnapAPI(content: snap)
api.startSnapping { error in
if let error = error {
print(error.localizedDescription)
}
Result
Snap Kit Server responded with an unexpected status code.
2018–09–14 15:22:22.249561–0700 FunSnap[7881:4578160] [SnapKit]
path=/v1/sdk/metrics/operational headers_subset={“X-Cloud-Trace-Context” = “D55DD084290C4941BB1149CE33521F98/0;o=1”;
Suggested Mitigation
- Errors need to be human readable and text should, as much as possible, assist in self-service troubleshooting
- Whatever the root cause is, there is a bug here
- Publish a Knowledge Base or other customer-facing self-service tool
TL;DR
Snap’s release of Snap Kit is faulty in almost every conceivable aspect
Business Lessons Include:
- Release management must bring all stakeholders to the table early in the release process. They must also consult with these stakeholders throughout the release cycle
- Stakeholders for a release include representatives from all customer-facing departments as well as Quality Assurance
- Documentation is a part of the product and must undergo the same rigorous review as any other part
- A web portal is part of the product and must undergo the same rigorous review as any other part
- Conduct “eat your own dogfood” prior to releases
- Test the end to end customer experience, which includes technical support engagement, website, social media platforms where you have an outlet, documentation, licensing and more
- Conduct a “blind corner” review to help root out incomplete, inaccurate or out of date documentation and announcements. For example, there may be code on GitHub that requires updating.
If You Liked This Post, Try One Of These
- Snapchat Snapkit Developer Support Sadly Sad
- Introducing Snapchat Snapkit DIY Docs
- The Very Broken Silicon Valley Hiring Process And How To Fix It
Contact
- Twitter: @brucebookman
- Mastodon: @brucebookman@mastodon.technology
- GitHub
From a quick cheer to a standing ovation, clap to show how much you enjoyed this
story.
Bruce Bookman
[Adventures in iOS mobile app
development](https://medium.com/adventures-in-ios-mobile-app-development?source=footer_card)
One iOS Swift developer's journey. Problems, solutions, opinion and more
Top comments (0)