Donovan Mikrot

Software Craftsman

I have experience with a wide variety of full-stack technologies with a focus on the front-end of complex web applications. My front-end skills and full-stack perspective have been invaluable as I gained additional experience as team lead and mentor. Web technologies have changed by leaps and bounds in the past few years, so I have dedicated time to learning new skills, languages, tools, and libraries.

Experience

Senior Software Engineer
NextEra Analytics
November, 2022 to April, 2024

I made significant contributions on multiple Vue applications to add features while also implementing best practices and improving code quality and developer productivity. Most teams had a single engineer that was full-stack or focused on front-end with little opportunity for knowledge transfer, so I started a guild for front-end engineers to share expertise, recommend adoption of best practices, avoid anti-patterns, and discuss root causes of common front-end bugs.


Aside from work on existing applications, I was involved building a new application with complex charts, data visualization, and maps. Compared to other existing applications, this greenfield project required higher standards for quality, performance, usability, accessibility, and security. I determined the front-end architecture, scaffolding, tooling, patterns, reusable components, test automation, and implemented a vast majority of the functionality. The application was highly regarded for it's speed and ease of use. The code quickly became a reference that other teams forked when starting their own greenfield front-end projects.

Staff Software Engineer
Automox
June, 2021 to November, 2022

I was responsible for updating and scaling best practices used in a complex Vue application. I created foundational architectural patterns to modularize the front-end codebase and enable multiple cross-functional teams to work independently in a front-end monorepo. Proof of concept implementations, performance data, and developer UX were all considered.


I worked on several complex projects to deliver significant product enhancements that improve the customer and user experience. These projects required quickly understanding the existing functionality of the system to design and implement the new functionality without introducing breaking changes to existing user workflows. These projects included necessary refactoring of existing systems to unblock the new functionality without compounding the tech debt.

Staff Software Engineer
Comfy
May, 2016 - June, 2021

I served as a team lead, scrum master, and mentor for a cross-functional team of engineers. I lead a variety of large scale projects to significantly overhaul the UI of the Comfy web and mobile hybrid app with a responsive design, SPA routing, new features, and service integrations. I introduced new approaches and patterns for incrementally migrating the legacy AngularJS codebase to a modular architecture using ES6, Webpack, and Vue/Vuex. I regularly collaborated with stakeholders to give technical feedback on scope, UX designs, accessibility, system design, performance, code quality, QA test planning, and bug prioritization.


I took proactive steps to resolve anything blocking my team from efficiently building and deploying new features. For example: troubleshooting Cordova build issues, keeping Jira up-to-date, and pairing on difficult problems, submitting builds to App Store, and fixing critical bugs.

Senior Technical Consultant
Perficient
May, 2011 - May, 2016

As a consultant, my roles and responsibilities varied from one project to the next. I have served as a customer support technician, web developer, mentor, project lead and liaison. I was able to deliver significant value to Perficient clients and my skills were indispensable for the success of each project. My colleagues and junior developers would often rely on me for advice and guidance, even before I was formally promoted to a senior or lead role. When one of my projects decided to use remote resources from our India office, I was a chosen to spend two weeks in India to assist them with project on-boarding.


I also took on several internal initiatives to encourage best-practices within our company. For example, these initiatives included: using Git instead of SVN, and writing modular JavaScript instead of jQuery spaghetti. With the support of the company, I obtained Scrum Developer certification and attended several technology conferences.

Software Developer
Medioh
June, 2009 - April, 2011

Worked on an Agile/Scrum team to design and develop an App Platform running on various Internet connected cable set-top boxes using XML, HTML, CSS, and Javascript. The apps were written using XML and then compiled using Ruby. Apps used AJAX to connect to a Ruby on Rails server to load data and play videos. The platform was deployed for a French cable company, Numericable.


Ported apps written on our platform to run on the Samsung Internet@TV with necessary modifications to conform to Samsung's UI guidelines. Wrote an App to list, sell, and play videos with a free version of the App has been downloaded by over 25,000 users. Prepared demos for trade shows such as CES, IBC, and NAB. Demos were either installed on a laptop due to Internet availability at the booths or were run from a demo servers on Amazon EC2. Personally transported demo equipment and setup demos at booths and troubleshooted any problems. Occasionally gave demo sales pitches when the sales person was busy.

Web Development Intern - TILT
Colorado State University
March, 2007 - November, 2007

Performed content and semantic updates for several writing guides provided on the Writing@CSU website using ColdFusion and HTML.

Linux Integrity Server Testing Intern
Hewlett-Packard
May, 2008 - August, 2008

Configured Linux Integrity class servers in a lab environment by swapping CPUs, memory, and backplanes, installing SAN cards, and cabling JBODs. Installed various Linux distributions with varying RAID configurations for testing. Used a automated test suite to test beta versions of SAN card firmware under normal and high loads. The automated test suite used YAML files for configuration that were manually edited by the test team in a time-consuming way. I proposed, designed, and implemented a tool to automatically generate the YAML files after test parameters were input in a Java Swing GUI.

Education

Bachelor of Science: Major in Computer Science
Colorado State University
August, 2005 - May, 2009
  • Academic Honors program
  • Shorin-Ryu Karate
  • Theatrical Lighting Technician
  • Elective credits in Theater History and Design









Projects

Static portfolio website built using Brunch, Riot.js and hosted on GitLab pages. I built this to experiment with ES6, static SPAs, component architectures, and the Canvas API in a lightweight package.

Static web app for designing combat encounters for D&D 5th Edition. Helps with quickly adjusting combat difficulty when a player misses a session. Assists with tracking combat turn order and monster stats while revealing a subset of the combat information to players. It uses VuexORM and localForage to persist all application state on the device, and works offline as a PWA using the Service Worker APIs. The player-specific view uses WebRTC to share application state with the dungeon master app acting as a host.

Publications

Featured writer for "Chapter 10: Writing to Convince or Persuade" with essay "Download This: Why Digital Rights Management Is a Bad Idea."

Skills
Front-end Development

JavaScript, TypeScript, Vue, Vuex, Nuxt, HTML5, CSS3, NPM, PNPM, Yarn, Vite, Webpack, Babel, ESLint, Tailwind, Vuetify, Bootstrap, AJAX, JSON, GraphQL, AngularJS, Backbone, MarionetteJS, jQuery, Cordova, Gulp, Grunt, Cypress, Protractor, Selenium, Jest, Jasmine, Storybook, Front-end Monorepos, NX, Single-SPA

General Development

REST APIs, UML, XML, YAML, Shell Scripting, NodeJS

Domains and Sectors

Authentication and Authorization, Auth0, RBAC, ReBAC (Zanzibar), Maps and Wayfinding, Leaflet, Mapbox, GeoJSON, PostGIS, IoT, Banking, Energy

DevOps

AWS: EC2, Lambda, S3, CloudFront, Cognito, CDK, Serverless, Ansible, Heroku, Linux, Docker, Continuous Integration and Deployment, GitLab Pipelines, GitHub Actions

Back-end Development

Python, Django, Java, Spring MVC, Spring Boot, Ruby, Ruby on Rails, SQL, MySQL, Postgres

Project Methodologies

Scrum, Agile Methodologies, Kanban, Jira

Version Control

Git, GitLab, GitHub, Subversion