{"version":3,"sources":["webpack:///./src/components/casestudylayout.js","webpack:///./src/pages/smi.js","webpack:///./src/components/nav.js","webpack:///./src/images/smihomepage.png"],"names":["Layout","children","className","src","smiimg","alt","href","Nav","props","role","hidden","onClick","onclick","onKeyUp","e","onkey","aria-hidden","target","rel","to","module","exports"],"mappings":"4KAceA,EAVA,SAAC,GAAD,IAAGC,EAAH,EAAGA,SAAH,OACb,6BACE,kBAAC,IAAD,MACA,yBAAKC,UAAU,uBACZD,EACD,kBAAC,IAAD,S,iCCJS,4BACb,kBAAC,EAAD,KACE,gCACE,kBAAC,IAAD,MACA,oEAEF,8BACE,yBAAKC,UAAU,oBACb,8KAKA,yBACEC,IAAKC,IACLC,IAAI,oFAIR,wCACA,6sBAYA,4RAIkD,IAChD,uBAAGC,KAAK,mCAAR,uBALF,KAOA,yCACA,udASA,qCACA,4BACE,8KAKA,uIAKF,uCACA,kJAIA,4BACE,0DACA,yDACA,6DAEF,0QAMA,ohBAUA,wCACA,wDACA,gTAMA,4BACE,uCACA,sCACA,sCACA,8DAEF,gPAGyE,IACvE,4CAJF,QAI8B,yCAJ9B,qGAQA,uCACA,odASA,giB,kCC5HN,+CA8BeC,IA1BH,SAAAC,GACV,OACE,yBAAKC,KAAK,UACR,yBACEP,UAAWM,EAAME,OAAS,cAC1BC,QAASH,EAAMI,QACfC,QAAS,SAAAC,GAAC,OAAIN,EAAMO,MAAMD,IAC1BE,cAA8B,WAAjBR,EAAME,OAAsB,OAAS,MAElD,uBAAGJ,KAAK,UAAR,SACA,uBAAGA,KAAK,aAAR,YACA,uBAAGA,KAAK,YAAR,WACA,uBAAGA,KAAK,aAAR,YACA,uBACEA,KAAK,uBACLW,OAAO,SACPC,IAAI,uBAHN,QAOA,kBAAC,IAAD,CAAMC,GAAG,UAAT,sB,qBCxBRC,EAAOC,QAAU,IAA0B","file":"component---src-pages-smi-js-e37b9f28d438650dca23.js","sourcesContent":["import React from \"react\"\nimport MyHelmet from \"./helmet\"\nimport Footer from \"./footer\"\n\nconst Layout = ({ children }) => (\n
\n \n
\n {children}\n
\n
\n)\n\nexport default Layout\n","import React from \"react\"\nimport Layout from \"../components/casestudylayout\"\nimport smiimg from \"../images/smihomepage.png\"\nimport Nav from \"../components/nav\"\n\nexport default () => (\n \n
\n
\n
\n
\n

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

\n \n
\n\n

Overview

\n

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

\n

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

\n

Challenge

\n

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

\n

Goals

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

Process

\n

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

\n \n

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

\n

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

\n

Solution

\n

An Unfamiliar Tech Stack

\n

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

\n \n

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

\n

Results

\n

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

\n

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

\n
\n
\n)\n","import React from \"react\"\nimport { Link } from \"gatsby\"\nimport \"../styles/nav.scss\"\n\nconst Nav = props => {\n return (\n
\n props.onkey(e)}\n aria-hidden={props.hidden === \"closed\" ? \"true\" : null}\n >\n About\n Speaking\n Writing\n Projects\n \n Blog\n \n External Links\n \n
\n )\n}\n\nexport default Nav\n","module.exports = __webpack_public_path__ + \"static/smihomepage-3cf7a8b27b59bc3608f8243e2c4e4d9d.png\";"],"sourceRoot":""}