Software Management Interface (SMI)

An internal University of Michigan College of Engineering workflow tool used to develop and deploy a world-class student computing environment.

Screenshot of a new UI mockup for the public interface of the SMI application.

Overview

This Flask application provides an interface to facilitate the U-M College of Engineering Student Computing Environment team's process for software evaluation, licensing, and deployment, as well as populating a public software listing webpage. As the lead developer of this ongoing project, I collaborated with business analysts, project managers, and project owners to gather functional and business requirements. I continue to work with project owners and a team of part-time student employees to develop features in annual development cycles of about four months. As the application ages, I am also focused on incrementally refactoring the code to better align with modern practices.

Because this application is primarily an internal tool serving privileged data that is only available to logged-in users, I am unable to provide extensive details or views of the admin interface. However, I am happy to further discuss this project if you contact me directly.

Challenge

The Student Computing Environment (SCE) team is tasked with developing and deploying a world class computing environment for Michigan Engineering students. For years, the team has completed this incredibly involved annual process through a tangled network of spreadsheets, relying on institutional knowledge with no documented workflow. I was asked to lead the development of a web application the team could use to facilitate this process.

Goals

  1. Document the team's workflow and build the application in such a way that knowledge of the workflow is not lost when employees leave the team.
  2. Replace brittle, confusing spreadsheets with a single database and a UI for interacting with the data.

Process

As lead developer on this project, I worked with a cross-functional team of highly talented professionals, such as:

  • Internal business analysts
  • Internal project managers
  • External database architects

The business analysts worked with the SCE team to develop a process map, which took several months. Once the process map was complete, I was brought onto the team to participate in database design and to begin to build the application.

This project was and continues to be run with an "Agile-like" project management methodology. I work with the SCE team to prioritize features, identify the effort level required for each feature, choose a set of features to work on during the four-month development cycle, and deploy new features to our QA server every two weeks for stakeholder review by the SCE team. For the first three years, our team worked with a dedicated project manager, but I now serve as both the PM and the lead developer.

Solution

An Unfamiliar Tech Stack

Up until the point of this project's genesis in 2016, my primary role had been as my team's WordPress developer, which meant I worked in PHP, HTML, CSS, MySQL, and JavaScript. Since I was fairly junior at the time, the tech stack was chosen for me. I would be working with:

  • Python,
  • Flask,
  • MySQL,
  • and the familiar HTML/CSS/JS.

I learn best by doing and, while apprehensive at first, I quickly got up to speed on the tech necessary. I looked into and evaluated Python libraries independently to use in the Flask application and settled on SQLAlchemy and WTForms. I was able to develop a usable MVP (minimum viable product) during the first development cycle.

Results

In 2020, I am now in my fourth annual four-month development cycle for this project. Each year since its inception, the SCE team has been able to use SMI to facilitate their workflow. Every year, I work with my team of student developers to add additional features to bring it closer to meeting all the SCE team's needs. There are still some spreadsheets kicking around, but the majority of their work is now done in the SMI application.

Four years is a long time in the life of a web app, so this year I am also leading an effort to refactor the code to better align with modern tech. My focus is on making it more sustainable, easier to maintain, and easier to build on in the future. Some of my goals are to replace all instances of JQuery with vanilla JavaScript ES6, to improve accessibility, to improve performance, and to create a more attractive UI. To this end, my team now includes UX/UI design students from U-M's School of Information.