Reflecting on my time at Vonage
Published: 2023-01-19 17:40:55

---
title: Reflecting on my time at Vonage
published: true
date: 2022-04-01 16:09:29 UTC
tags: 
canonical_url: https://kellyjandrews.dev/reflecting-on-my-time-at-vonage
---

It's my last day at Vonage today - no joke. While hard to completely grasp everything that's happened over the last couple of years, I wanted to try and take a moment and sum up everything since starting in August 2018.

## Firebase

One of the more forward-looking platforms used during my tenure was Firebase. I was able to spend a ton of time here learning how to use as much of the functionality that Firebase had to offer. Whether it was [SMS translation](https://kellyjandrews.hashnode.dev/real-time-sms-demo-with-react-node-and-google-translate), or [adding two-factor authentication](https://kellyjandrews.hashnode.dev/adding-2fa-to-a-react-app-using-firebase-function), the tool kit that Firebase gives you is extremely powerful, and always a consideration when I create new projects.

## Sentiment Analysis

While easy to implement, Sentiment analysis is hard to get right and is far from perfect. However, as a general guide for intervention, it can do a good job of finding customers that may be more upset and can make that actionable. For call centers, it's a great tool.

[Read my comparison - although it's a bit dusty now](https://developer.vonage.com/blog/19/10/17/sentiment-api-analysis-comparison-dr)

## Chatbots

Chatbots can be super fun, or really frustrating. While they can provide easy solutions to simple problems, covering all cases can be tricky, and it's easy to miss flows. Couple that with also trying to use speech transcription to match nouns and verbs programmatically, and now it's a disaster.

With the right amount of effort and planning, however, they can be extremely powerful and handle quite a lot of typical use cases. You can always push the call to a human when the script isn't working as a last resort.

You can read the tutorial for that [here](https://kellyjandrews.hashnode.dev/using-dialogflow-with-firebase-and-the-vonage-messages-sandbox).

## Transcription

I feel like transcription is really well solved in most cases. Listening to audio and transcribing it word for word is the main function of these APIs, and they all do it efficiently and accurately. Don't be afraid to use them.

[Read another outdated comparison] (https://developer.vonage.com/blog/19/09/10/extending-nexmo-streaming-transcription-dr)

## Translation

Translation, much like transcription, has been fairly well solved. Every translation API has some kind of lexicon customization to cover industry-specific terms and can cost a lot more than the base service, however, the basic level of translation is really good in general. I plan on using these more in the future as well.

[One more ancient review](https://developer.vonage.com/blog/19/12/10/text-translation-api-comparison-dr)

## XState

One of my favorite tools in JavaScript these days is XState. The ability to define how an application should work as a state machine, and use that in any front or back end to control the flow of states - _chef's kiss_. I found it extremely useful with things like video, as I could create states that matched exactly what was happening with the SDK and API.

It's really a lot of fun to use - I recommend you [try it out](https://kellyjandrews.hashnode.dev/learn-and-apply-xstate-with-vonage-video).

## Oclif and CLI Design

I built the Vonage CLI using Oclif, and I've really learned to love using oclif, CLI best practices, CLI history, and the command line itself.

Building a CLI isn't always the easiest thing to do, as it can run in so many environments, but solving these types of problems are fun for me.

<iframe width="560" height="315" src="https://www.youtube.com/embed/5MotpuSPURw"></iframe>
## Lerna/Monrepo

While building the CLI and an updated SDK, I decided to work in a monorepo structure, using Lerna to manage the publication of the modules. I plan on writing more on how that is used in the future as well. It's a great resource, easy to understand, but hard to get started.

## Typescript (sorta)

Last, and well, least, Typescript. I have an appreciation for types now, and while I still feel like I have a long way to go, learning Typescript has been rewarding, if not frustrating. This was one of the harder things to learn for me, but I really am better off for doing it.

## Conclusion

Overall - it was a great learning experience. Being able to learn new things as a developer advocate is one of my favorite aspects of the job.

I'm thankful for the opportunities I've had here, and look forward to the future.