Software Engineer II

My career as a Software Engineer started through a partnership with the Baskin School of Engineering and Renewable Resilent Electrical Energy Systems (RREES) Lab at the University of California - Santa Cruz. I worked as software engineer and scrum master for two years and built Smart Energy Aggregation Devices and Systems (SEADS) for power distribution companies.

Our team’s primary function was to develop software that supports the RREES Lab’s hardware that captures the electrical current of an outlet. We were shown a proof of concept and had to improve on the prior project’s pitfalls due to handling big data storage and locks.

Roles and Responsibilities

As a Software Engineer, I had to

  1. Research new technologies to fufill user stories and sponsor requests.
  2. Create scalable tools for future projects to quickly access the big data in less than a second.
  3. Set up automated outage notifications via email or text to subscribed users.
  4. Design infrastructure from the ground up that flows quickly and securely from a user’s device and company database, to our webpage.
  5. Create automated Unit Tests using Docker, Postman, and Github Actions.
  6. Draft API endpoints, Database Schemas/UML Diagrams, and Mockup design of the webpage.

As a Scrum Master, my duties were to

  1. Manage our Scrum/Kanban Board and Release Plan.
  2. Lead Sprint Planning, Reports, and Retrospectives stored in our Team Drive.
  3. Develop schedules that worked with the team and send reminders to ensure attendence.
  4. Schedule vital meetings with sponsors, stakeholders, and various third party users outside of the RREES Lab.
  5. Discover how to unblock team members by searching for an expert’s opinion or attempting the task.

Deliverables for Acceptance

  1. Software that detects power outages faster than the competitor’s “Smart Meters”. 10s versus 15 mins.
  2. Created a User Friendly Service that transforms the data to be more transparent with work on visualization.
  3. Deployed a website that allows a quick and easy setup, from login to push notifcations.
  4. Developed tools for accessing and analyzing the big data of vrms (Voltage Root Mean Squared).
  5. Pitched product to UCSC Faculty and Industry Sponsors at Partner’s Day.

Takeaways

  1. Be prepared for the unexpected: COVID-19, UCSC Striking, Housing Relocation.
  2. Scheduling is not as easy as it seems, it’s important to always be flexible for special cases.
  3. The more people there are the harder it is to know when to write code and when to have meetings
  4. Documentation is the weakest link in the chain, so make sure it’s up to date and ready to pick up a year later.

Next Steps

  1. I was invited to join the next phase of the project for Outage Prevention over the Summer.
  2. A sponsor reached out to me to work as an researcher for Skyhook. An Open Source Database Management Software for big data storage across clusters, such as Kubernetes, used for quick read/write access and scaling vertically. I will be working on implementing a row based paritioning system for their Python API.

A Year Later (2021)

  • I took a bigger role and got promoted to a R&D Software Engineer II.
  • I’m a mentor for new members of the lab, teaching them about design principles and how our product works.
  • My tasks became spread out across the stack delving into Firmware and how Rasberry Pi Systems work.
  • I manage our Postgres database and on premise server to ensure deployment matches production and keep our services running.
  • I implemented new charts for our website using Recharts and D3.js and went deeper into Mapbox’s API.
  • Optimize decompressing files into bytecode with LZMA, transforming into JSON and parsing them back to display in Recharts.
  • I write scripts for automated firmware updates on the SEADS devices and maintained the Gitlab repository for each device type.
  • Experimented with other time management styles, but finding out Scrum is the most productive for our remote team.