DEV Community

bbookman
bbookman

Posted on

16 Ugly Bugs Snap Didn’t Bother To Fix For Snap Kit And Lessons They Teach

Original appears on Medium

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

  1. Go to https://docs.snapchat.com/docs/
  2. 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

  1. Go to http://support.snapchat.com/i-need-help

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

  1. Go to https://twitter.com/snapchatsupport
  2. 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

  1. Go to https://docs.snapchat.com/docs/creative-kit/
  2. 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*Photo
Snap*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

  1. Scan all documentation and sample code for accuracy
  2. Consider renaming such that the pairs are consistent
  3. 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

  1. Go to https://docs.snapchat.com/docs/login-kit/

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

  1. Go to https://docs.snapchat.com/docs/login-kit/
  2. 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

  1. Go to https://github.com/SnapKit/SnapKit or http://snapkit.io/

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

  1. 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

  1. Go to https://docs.snapchat.com/docs/login-kit/
  2. 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

  1. Go to https://docs.snapchat.com/docs/
  2. Note the text

To stay up to date with our SDKs, see what’s new and follow @snapkit on Twitter.

  1. 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

  1. Go to https://docs.snapchat.com/docs/api/ios/
  2. 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

  1. Send a support request to snapkit-support@snap.com
  2. 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

  1. Go to https://github.com/Snap-Kit

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

  1. Send a support request to snapkit-support@snap.com
  2. 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

  1. Errors need to be human readable and text should, as much as possible, assist in self-service troubleshooting
  2. Whatever the root cause is, there is a bug here
  3. 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

Contact


Previous

| Next

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)