And so we have reached the end. After eight weeks of work - around seven of which were spent on the same project - I’ve learned much more about the software development process than I did in the Mobile App Development class I took last fall, in which I participated in creating some of the apps now under Disco Tray’s management. In that class, we only made five mobile apps, the first of which was the default Flutter “hello world” app and the last of which was our final project. Each student only dedicated around 30-40 hours to the final, since that was one of the requirements for the class’s Odyssey credit, meaning each student probably put in under 100 hours of work across the entire semester. This summer, I spent 282 hours on two projects, which is probably the reason I feel so much more confident in my understanding of the whole process.

Another helpful practice we employed this summer was the strict use of GitHub projects, milestones, pull requests, and issues to keep track of our work. Each of the repositories in which we worked were part of the “Summer 2023 Mobile Development” GitHub project, had the same set of issue labels and templates, displayed their issues on the project board, and received pull requests reviewed by multiple people. If I wanted to work on a particular project, I could find a relatively high-priority issue on its repo, assign it to myself and move it to “In Progress” on the project board, create a branch for it on my personal fork, fix the bug/add the feature, and submit a pull request from the feature branch to the main branch on the main repo. Once Ted, Olivia, or Dr. Goadrich approved the changes and merged the PR, the associated issue would automatically be moved to “Done” on the project board. This kind precise workflow felt leagues easier to work with than whatever we did in class, where students would make unprompted pushes to main or merge their own pull requests.

We also communicated a lot more thoroughly this summer than we did with our in-class groups. Our work was roughly organized into week-long sprints and we met in the Disco Tray Studios room twice a week, and there were Teams channels for each project. It definitely didn’t hurt that Ted and I lived in the same apartment and therefore each knew a lot about what the other was working on.

Of course, it should have been expected that we were more productive this summer as interns working on projects we helped create than we were as students using Flutter and/or GitKraken for the first time. I am still, however, very proud of both the work I have done and the skills I have developed this summer.

Although I feel confident in my understanding of mobile software development and front-end development in general, it wasn’t as enjoyable for me as other kinds of programming. Now that the job is over and I have two weeks of summer break remaining, I really want to finish the ray-tracing renderer I started writing in Rust this spring. I also want to learn more about compilers and interpreters by writing a Lua interpreter/compiler/scripting API in Rust, although that project may take considerably longer. Don’t tell Dr. Yorgey that I didn’t do any Kattis problems this summer, but that’s certainly something I’ll fix in the upcoming weeks given that I am enrolled in his Algorithms class this fall and a regular member of the programming team.

I won’t be getting away from industry-level software development that easily, though, because I’m also enrolled in Dr. Goadrich’s Databases and Web Systems class in which I’ll be learning wildly new technologies such as Jekyll blogs and static websites (so scary!!!). Regardless of how much I enjoy the class, I’ll be glad to take it, given the breadth of employment options made available by having such competencies in my toolbox. And who knows, maybe I can learn how to run a web server entirely in Rust compiled to WebAssembly!

I had a lot of struggles and a lot more fun this summer; while I may or may not continue this blog in the future, I’ll be sure to archive these posts and look back on this time when I inevitably end up with another full-time app development job sometime in the next ten years.