Amazon Alexa Skills

Learning a Thing or Two Along The Way

August 2017

Before I dive into my Amazon Alexa skills and the entire development process behind them, I actually have a little story to share. This story may be similar to those that even I heard while starting in college, but repeating these stories always serve as reminders for other members of the computing community to always create your own opportunities even when it seems unlikely.

Story Time!

During my freshman year in college, as I started the semester taking introductory computing classes, I always felt the pressure of trying to reach the proficiency levels of my peers or just trying to get the "right" answer. And indeed, when you are starting out, its incredibly important to be testing and reinforcing your understanding. However, I always knew that if I really wanted to challenge myself and even take risks where I could very much fail while trying and learning, my classes were not the platform to do so. The spring semester of my freshman year, I realized that a platform to freely explore and tinker did exist: hackathons.

Prior to my first hackathon, I had no team, no project, and not even a slight idea of what to expect. During the event, a couple of representatives from Amazon AWS came to lead a workshop on how to start building a skill for Alexa. Never had I thought I'd work on a VOI project. But also neither did I have a project idea. I decided to attend the hour long session and little did I know that my perception would change within that one hour.

Through the workshop, I was able to learn about AWS's product offerings and how to build and test a simple Alexa skill. Quite frankly, I still didn't have a good project idea after the workshop and ultimately didn't submit anything for the demo presentations. However, I did leave the hackathon event with new skills that added so much value to my summer experience.

During the summer, while I was taking courses at my state university, I decided to invest time in developing side projects. One of the side projects, in fact, included ramping up my personal website. However, two key projects I completed during those summer months was developing the Area Calculator and Dice Roller skills. Though these skills themselves were not technically challenging to develop, they did show that I could make the most of my time and skills. Even if you don't have a summer job or an internship, side projects are still a critical component in showcasing your skills but also having some experience with real world applications of those skills.

The Dice Roller

My first published application was the Dice Roller. Yes, Alexa can already roll a dice and honestly rolling a dice is just like picking a random number- what's so great about that? Yes, the logic behind it is not at all challenging, but my focus was to take time to learn about the AWS platform and what services it offered. By having a simple starter project, I could invest more time and energy understanding documentation. This was my first application that I had published to a live app market place and through it I was able to learn a lot about what running your application on the cloud is like.



The Dice Roller

The Area Calculator was my second published application that was focused on building upon the features that other area calculation skills already had. At the time, there were formula skills that would provide the area formula for a stated shape. However, there were no skills that would allow the user to state arguments with a request to calculate the formula (i.e. "What is the area of a triangle with a base of 10 and height of 3?"). This would be a bit of a challenge as it would require the application to not only apply the correct formula but also store quantities.

Though I had published the skill just as a side project, it was interesting to find that someone had reviewed the skill a few years later and provided some great feedback on how to further improve the application. Through this experience, I learned the impact sometimes code can have. Sure my project would be less likely to have negative implications on people, but nonetheless whatever products we put out, we must keep in mind that there will always be users who try it and will want to see it improved. As developers, it is our responsibility to keep in mind what customers may need from our product. Though updates to the application are not of critical importance, I do plan to add more of the suggested functionalities to the skills.

Conclusion and Reflection

Prior to deciding to start developing these two projects, I was struggling with an intense case of imposter's syndrome. Even though it wasn't typical for rising sophomores to have summer internship, I couldn't help but compare myself to my peers who did have internships lined up. Now, I realize even that comparison was normal. What mattered then was how one could make their own opportunities. I'm glad I took on those two projects, which taught me both technical skills but also an incredible and well needed lesson on making your own opportunities.