Mai Ngo's CPT Project 2019

From CSclasswiki
Revision as of 00:58, 12 December 2019 by Mtngo (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Internship Overview

In summer 2019, I interned at Bank of America in Charlotte, NC as a Summer Technology Analyst in the Move Money team under Online Banking. The team builds features for Bank of America's online banking page (which is what a Bank of America customer sees when they log in to their account on a web browser). When I joined the bank this summer, my team was working specifically to add features for external accounts.

My work

My roles were diverse as the internship was also meant to expose the intern to the various aspects of working in tech in the industry. I worked mostly on the back end, helping my team add some new features for managing a customer's external accounts (which are basically accounts that a customer may link with a Bank of America account, to pay off their credit card or loans, for example). I added the verify external accounts feature(when adding a new external account, Bank of America would send 2 small deposits to this customer's account, and verify external accounts would ask the user to enter the two amounts they received in order to verify that their account is active) and delete external accounts feature (which would remove an unverified external account from the system). I did so by writing the workflows for each feature using Groovy (a scripting language for the Java platform) and coding the features' logic using Java and Spring MVC (a popular Java framework used to build web applications). I tested my code using Postman (a popular API client that allows users to create and save simple and complex HTTP/s requests, as well as read their responses) by sending HTTP requests and verifying that the response is correct, and used Perforce for version control.

I was also tasked with building some modals for verifying external account, using Handlebars (a powerful templating language that allows developers to separate the business logic from the rest of the code by separating the generation of HTML from the rest of the JavaScript code), and Javascript. I followed the Bank of America website standards for text and button size, shape and position to make sure the modal conforms with the rest of the Online Banking page.

In addition, I helped with cross-browser testing using Sauce Labs (which is a platform that facilitates testing on different browsers and versions of browser, and offers web and mobile testing), and regression testing of some features on mobile.

I was part of an Agile team and took part in all Agile practices as part of the team. I attended daily (virtual) stand-ups (during which people would inform the team what they'd accomplished the day before and what they planned to do that day), "groomings" on Tuesdays and Thursdays (during which we would be on a call with our business analyst who works in the Bay Area, and we would refine user stories, give them points, and pick stories for the next sprint), and retros every two weeks (during which we would reflect on the past sprint, talk about what we'd accomplished, what we could have done better, and strategize for the next sprint).

Reflection

The internship is directly relevant to my major. 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. It was challenging at the beginning because I was not familiar with the code base and most of the tools I was using for my job, the learning curve was steep, but after spending time learning about Spring MVC and networks, reading through the code base, as well as asking my team many questions and shadowing them, the code I was working with started making more sense and I was able to deliver the features I was assigned. Being part of an Agile team and being given responsibilities also helped me learn more about the team's work. I learned how to organize, plan and write readable and modular code, as well as developed an understanding of Agile and Scrum, and all this knowledge came in handy when I took CSC 223 (Introduction to Software Engineering) this fall semester.