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