Asmita Gautam's CPT Project 2019

From CSclasswiki
Jump to: navigation, search

Internship Overview

In summer 2019, I interned at BNP Paribas in New York City as a Summer Technology/Engineering Analyst in the IT Production Team. The team works on building internal tools for BNP's IT teams.

My work

I was assigned an individual project to build a software that would allow one of the other IT teams to monitor all their server data using a single web app. The server data at BNP, at that point, was monitored using three different web apps, that could not be connected internally since the software was either owned by a third-party company or by another IT team in Europe, which the US teams are not permitted to modify. Therefore, BNP Paribas US decided to build their own, cohesive, interactive software to make it easy to collect and monitor data for their next audit.

For the data flow in my software, I followed a pipes and filters pattern. This design pattern is used to combine various data sources by having one main data flow that is transformed continuously by using the other data streams to produce the final processed data. My data sources were data extract files, so I also wrote a scheduler script to read the daily new data extract at 8 am every day and run the software on those files to update the web app where the combined data source could be viewed, updated and queried.

My project can mainly be divided into three sections: building the data processing program, building a mssql database to monitor users and user roles for security, and building the frontend of the web app. I used the Spring Framework using Java for my backend, SQL for the database, and the Qooxdoo Framework using Javascript for my frontend. In Spring, I used the Spring Boot Starter Web package to build my app, and Spring Security for user authentication.

Reflection

My knowledge of Java and data structures from CSC 212 came in handy, as I worked mostly with Java on the backend. My knowledge of HTML, CSS and Javascript from CSC 220 was helpful as well in creating the frontend. My project was challenging in the beginning because I was not familiar with any design patterns or frameworks, and the learning curve was steep for me in designing the architecture for my software on my own. I spent the first several weeks of my internship learning the basics of the pipes and filter design pattern and the basics of Spring Framework including its benefits and implementation. By the end of the summer I had written more code in those three months than I had in my entire time at Smith, which was a very valuable experience. I felt my knowledge of writing clean, concise code as well as implementing software architectures and design patterns grow tremendously with all the code reviews I had with my manager throughout the summer. My manager was extremely impressed by me for completing the entire software over the summer, which really boosted my confidence in coding. This experience was also extremely valuable for me while doing interviews in the fall for other full time positions, both in terms of talking about a project as well as for coding interviews.