Post by Michael Smolyak

 

Working at Next Century afforded me a unique opportunity to interact with the Computer Science students studying Software Engineering at the University of Maryland, Baltimore County (UMBC). For a number of years my company has sponsored a 400-level class at UMBC giving its employees a chance to mentor the students. The goal of the partnership is to infuse students’ academic experience with the sense of a real-life software engineering project with its risks, uncertainties, deadlines, technology choices, demanding customers, stubborn bugs, crashing servers and other joys all too familiar to those of us in the trenches.

This semester, just like in the years past, three of Next Century employees worked closely with 16 students taking CMSC-447 (Software Engineering I) wearing the hats of customers and mentors. In addition, several Next Century engineers delivered presentations to the class on subjects of their respective expertise, which included Agile Development, Web Development, User Experience, Testing and Security.

My role ( as well as that of my colleague Josh Williams) was to interact with two teams of 4 students each presenting the students with the software project to be completed in the course of the semester, approving intermediate deliverables dealing with product requirements, design and implementation, providing them with the feedback along the way, while at the same time trying to share with the students some of the experience and knowledge of web application development, risk mitigation, performance tuning, UI design and customer interaction strategies. In addition, Laurian Vega (a Senior User Experience Engineer), served as a UX mentor for all the teams.

The Open Baltimore Data visualizing crimes from 2014

The class project Josh and I have chosen for the CMSC-447 students was to use open-source Baltimore Crime Dataset to implement a Web application capable of assisting the police in visualizing and analyzing the crime data. As proxy customers, we asked for three views of crime data: Map View overlaying the crime information with the map of Baltimore, Table View with pagination, filters and sortable columns and Chart View displaying pie, bar and line charts for analyzing Baltimore crime statistics. Shown to the left are different visualizations that Open Baltimore already provides. The students had to review what was there and build their own implementation.


In mid-January, John McBeth (the President and CEO of Next Century), Josh Williams and I introduced ourselves and Next Century to the group of 16 UMBC juniors and seniors taking CMSC-447 and their professor Dr. Karuna Joshi. John told the students about the company, its mission, its people and its services, while Josh and I described our concept for the application intended to help Baltimore police visualize crime statistics. By that time the students divided themselves into groups of four. Josh and I randomly pick two groups each.

The groups I supervised named themselves Next Millennium (apparently, a play on our company name) and Big Bytes (likely emphasizing their appetite for knowledge). We interacted on a weekly basis. After the first introductory session through Google Hangouts where we talked about the application they had to build, we spent several weeks exchanging documents. The students were tasked with producing a requirement and a design documents. During the early weeks of the class, the teams would send me their drafts and I would respond in a day or two with my critique of the structure or content of the documents. The student’s corrections would follow until the “customer” was satisfied with the requirements and design.

The culmination of the students’ design effort was the midterm team presentation of their application designs to Next Century and our headquarters. Josh, Laurian Vega (who added a UX voice missing from our team of mentors in prior years) travelled to UMBC a week before the class to answer students’ questions about application features and user interfaces. On the day of the presentation 16 students dressed in business attire (many of them in suits) filed into Next Century lobby led by Dr. Joshi. The 90-minute presentation featured four distinct designs for the Baltimore crime data visualizer with names like Baltimore Crimalyzer, Klystron-911 (in reference to Klystron9 weather visualizer) and CRAB (Crime Rate Analysis in Baltimore). Every team received feedback from their professor and the Next Century mentors.

A group presenting their final project.

The weeks that followed the midterm presentation were dedicated to the implementation of the respective systems by the four teams. Each team chose technologies for their applications (JavaScript front end and back-ends using MongoDB and MySQL databases and a variety of server-side technologies including Node.js, Python, PHP and Java). I had weekly interactions with my two teams over Google Hangouts advising them on the use of technologies, UI features and performance considerations of their systems.

A week before the final presentation, Laurian, Josh and I again attended Dr. Joshi’s class in person to answer students’ final questions regarding their projects. Josh and I worked with our respective teams, while Laurian advised all 4 groups of students helping them improve user experience of their programs.

May 3rd was chosen as the date for the class to present their final projects to their professor and Next Century management and mentors. The presentation was also attended by Deputy Chief of UMBC police Paul Dillon. One of the team contacted officer Dillon to solicit his feedback of their project and upon learning about it I invited him to the final presentation to see the fruits of the students’ efforts.

All four team made good impressions on their “customer”. The projects, different in visual design and overall feature set, all had core functionality implemented according to the customer specifications. The apps loaded the Baltimore crime data from their online source into the local database server and created user interface allowing the customer to perform sophisticated data filtering by date range, crime type, crime weapon or location of the crime. The three views presenting the filtered data — as a heat map, as a data table and as a series of charts were also implemented. At the midterm presentation John McBeth threw the teams a curve ball asking them to implement date filtering using a histogram slider based on a custom component created on one of Next Century projects. All the teams came through and created some version of a date slider accompanied by a histogram showing the total number of crimes for every day of the selected period.

A group presenting their final project

Deputy Chief Dillon commented during one of the presentations that many of the products done by software development companies for the police department’s that he had seen in the past cost millions of dollars and did not have many of the features present in students’ Web sites.

Klystron-911, one of the final projects, demonstrates it’s top filters, a time-based histogram, and a heatmap with clusters of all crime data
Baltimore Crimalizer, one of the final projects, demonstrates its first tab of data showing a heatmap and histogram.
Baltimore Crimalizer, one of the final projects, demonstrates its last tab showing a charge of crime type by time.

At the end of each team’s presentation, Marco DePalma (Next Century’s Chief Operating Officer) asked the team members what they learned in the course of their Software Engineering class. Among the common themes of what the students learned were

  • How to handle a situation where the technology stack for the assignment is not preselected by the professor, but has to be chosen by the team out of a large number of options
  • How to work as part of a team of developers, where each member works on a small part of the application and to integrate individual contributions in a single code repository.
  • How to interact with a customer and incorporate customer feedback into the product being developed
  • How to trust a UX expert even if her advice contradicts one’s gut instinct

I enjoyed the experience of working with the college students. The best part of it was seeing the transformation of a group of strangers into a cohesive team of software developers and that of a mere idea of an application into a quartet of well-conceived and well-implemented web sites serving as a testament to students’ competence, creativity and perseverance.