A Summer with the Registrar

I want to start by expressing my thanks and appreciation to Professor Diament for seeking out internships in every nook and cranny and giving me the opportunity to work as part of a team of technology interns in YU’s registrar office this past summer (2020).

Their problem was simple. As it was, the registrars’ workflow was far from up to date. For instance, a student who needs to declare their major would be required to fill out a physical piece of paper and, in-person, hand it into the registrar. From there, the piece of paper would need to be physically “dragged” to each relevant dean or program director for approval. Finally, the form would (hopefully) make it back to the registrar and be entered into their system manually. A similar process would commence for the myriad of other forms available.

Our job was to design a more modern system and put an end to this grueling process of manual form submissions and approvals. Over the course of the summer, our team developed a java-based web app using a java framework (Spring Boot) to allow for online form submission (goodbye paper!), automation of approval workflows, and form status tracking. You can view the project here: https://github.com/jcrane613/YUWorkflow

Although we developed a fully functional (and, in my opinion, pretty cool) web app, the registrar decided not to use it due to integration issues on their end. Despite the fact that building this app was a big part of my summer experience, looking back, the nitty gritty details of coding this application are not the most valuable lessons I will take away most from this internship. Instead, I wanted to share three broader takeaways that I think were much more impactful:

1. Collaborative engineering is just as difficult as it is rewarding

Not only did I have to understand my own code – but for the first time – I had to really understand someone else’s. After becoming more comfortable with understanding other team members’ code (and writing substantial pieces of the project on my own), I ran into another challenge: having to argue my position. This is something that we take for granted when working on assignments or our own hobby projects, but now that I was working on code that affected how others were going to do their parts, I was forced (in a good way) to justify my design to my team members. Sometimes I won, other times I lost. Overall, the exposure to this type of environment was something incredibly beneficial for my skills as a programmer and communicator. This aspect of the project had an additional side-effect of forcing me to use tools like Git/Github for code collaboration instead of just version control. The above, coupled with other project management tools I familiarized myself with during the course of this project, are already proving to be invaluable skills and experiences that I will certainly be using down the line.

2. Planning and communication are key

I was very used to jumping right into my coding assignments from Intro and Data Structures without very much planning. If it worked, hooray! But, when it comes to bigger, real world, projects, time and thought must be put in before even a character is typed on the screen.

Over the course of my internship, a surprisingly large amount of my time was spent in meetings–probably even more than actual coding! For the first few weeks, we barely opened the text editor. We planned and came up with the most relevant tools to suit our needs and learned how to use them properly. Once we actually began coding, we didn’t just go off on our own paths, but were in constant communication through daily meetings and frequent troubleshooting sessions. For better or for worse, the stereotype just doesn’t hold true: software engineers don’t just lock themselves in a closet and code away.

3. Coding from scratch is not always the solution

It makes sense that in our CS courses we are asked to build almost everything from scratch. After all, the best way to learn the fundamentals is through starting from the bottom up. But, it’s equally as important to understand that when we begin to work in the industry, coding from scratch is not always the most efficient way to go. As I’ve discovered over this summer internship, we are truly standing on the shoulders of giants. In the minute research that I did for this project, I came across numerous technologies that made my job as a programmer much more pleasant and saved me loads of time. In sum, it would be foolish not to take advantage of what’s out there!

Leave a comment

Your email address will not be published.