Throughout the summer I have had the privilege of interning at Xerris where I have learned more information than I learned in a full school year. I was given the opportunity to work with clients from both the developer and scrum master point of view providing a deeper understanding of how a team functions and what each person's role is. Additionally, there was a section on being a solution architect but that was not working with a client, although I am almost glad, because I got to learn so much by being able to try out different things. During the latter half of the internship, I began building a website with the skills that I acquired. In this blog, I am going to go over what skills I learned that directly helped me create and publish a website.


Front end

During my first month working here, I joined one of Xerris’ ongoing projects as a front-end developer where I was taught a plethora of skills that I could use in my project. In this section, I am going to explain how I used some of these technologies to build my website.

Javascript

Javascript is nearly essential to building any sustainable website that has functionality within its interface, without javascript, there would have been no way for me to build my website. However, there are some major limitations with using raw javascript for creating websites, it requires you to create a lot of redundant code that can break very easily. While being very powerful it has the trade-off of being very unsustainable, most newer websites use a framework that solves many of the issues with raw javascript.

Javascript React framework

Javascript alone is not very programmer-friendly, it requires a lot of tedious work to use pure javascript when adding functionality to a website. Frameworks provide a structure that developers can easily follow, allowing them to create and reuse code with far more conventional methods. React is a javascript framework that is used often at Xerris, it allows you to create Components that you can use very similar to an HTML element. Building the project in Reactjs allowed for far easier testing with the added benefit of reusing components to speed up development time. This framework was very easy to learn and doesn’t have a huge learning curve to use, learning how to create basic components could be done within a few hours. However, I must confess that I have not tried any other javascript frameworks to date, but react is so powerful I don’t feel the need to use anything else.

MaterialUI

One of the most useful parts of the React framework is its incredible reusability, components designed for one project could be used for another project without any changes necessary, just as simple as adding a new HTML element to a page. MaterialUI is an open-source library that is being developed by the community to simplify the development of react projects even further. This library is filled with premade components that allow incredible flexibility by creating all of the complicated functionality for you and providing methods to style them however you want. In the theme of reusability, MaterialUI developed a system that allows you to create a theme for your website that contains styling which can easily be passed around the site. After being shown this library, I can’t imagine any reason not to use it, production time is sped up by an incredible amount by using these amazing components.

Git/Github

Something that I had never taken full advantage of before was the power of GitHub, its ability to allow people to work from multiple machines and version manage their code so it can be rolled back to fix any serious mistakes. When working as part of a team using branches allows people to be working on different pieces of the project simultaneously without any risk of overlapping or breaking anyone else's code, any changes can be merged and overlaps are dealt with easily. Github will be even more important for me going back to school, allowing me to develop code at school on a laptop and then continue working on my code at home by simply pulling in any of the changes that I made onto my desktop. This tool is a necessity to any team and a potential lifesaver to any individuals creating projects.



Solution architecture/backend:

For these 2 weeks, I was immersed in the backend world of development, while the primary goal was to become a solution architect and create a diagram showing all of the services that are required to create a complex web application. The other intern and I had other interests as well which prompted the company to add on a section for machine learning where we got to see how a machine learning model was developed and used for a production-level product. Despite all of this being the primary focus, more of what I am going to talk about I learned via request by my mentor, he and I spent a lot of time where he taught me how to develop and use some of the systems in AWS to create and host my website.

AWS:

Xerris is partnered with AWS and thus all of the services we looked at were through them, however, there are many advantages to using AWS that prompted me to continue using it. As a personal developer, their policy of only paying for what you use with serverless technology is extremely useful for smaller developers who have smaller budgets, although much of this can be bypassed with Amazon's free options that allow you to use many services for an entire year for free. Lastly, it is incredibly advantageous to have all of the tools you need available in the same place avoiding the need to require additional authentication and security.

S3 Buckets:

One of the most widely used services on AWS is S3, it can be used for an immense amount of different things, all related to file storage. For my project I am using S3 for Website hosting, backing up files, and storing code to be run serverless. To host my page, S3 is perfect, it allows me to point a domain to an HTML file so that people can see my webpage. Additionally, I have backups of databases stored in S3 designed so that if something goes wrong, I can easily repopulate my database very easily with little effort. The last thing that I use S3 for is to store the code for my lambda functions that will run serverless when they are called. This service is essential to my project, learning how to use its versatility will allow me the flexibility to create many different things that I may have struggled with a lot beforehand.

FastAPI/Lambda

For this project I use an API to get data from a server about each of the upcoming movies and shows, to handle the processing of data and accessing the database, I use an AWS service called Lambda. Lambda allows any API call to run serverless, only running when it is called, saving a lot of money by not being charged for a server's constant runtime. I created the code that runs for the lambda in python with a library called FastAPI that allows me to code the API itself in just a few lines of code. Both of these services in combination have given me the power to create more complex backend systems that communicate with multiple services and can run a computation on data before returning it to the front end. Knowing these tools is incredibly useful for me as a personal developer without the ability to pay for more in-depth learning, had I not been taught by an industry professional, creating an API could have easily taken me over 20 times longer to create.

API Gateway:

This AWS Service acts as the middleman between the front end and the backend information, it only can receive a call and pass information back, but this is still a very necessary service. The gateway can require an API and use credentials to help authenticate users to ensure that only certain people can access the data, this helps keep my information secure from prying eyes.


Scrum Master:

As someone who always wanted to be a developer, I never really considered all of the roles other people on the team might have, and how much time they spend on the project without even building anything for the project. With my final 2 weeks getting to act as a scrum master was incredibly valuable, it developed my leadership abilities and help planning in the future if I need to. For my projects, the planning tools that we used at Xerris like JIRA will be incredibly useful to both understand how large a project of mine is, and to hold me accountable for how much work I should get done in a set period. Even without becoming a scrum master, I think having this experience is valuable for anyone who will be working on a development team, to better understand this side of a project.