I like to consider Intelligent Education my first real CS job, as it was the first job where I really applied what I learned from school and personal projects. It was a contract role where I would work part-time in between classes with a small team of 4 developers. I serviced live deployments for 5 different local colleges with hundreds of students per deployment, so it was also my first experience with working on projects at scale!
I definitely learned a lot while working at IE because I touched every part of the product. I used React and Bootstrap for the frontend, and Node, TypeScript, Google Cloud Platform (GCP), and MongoDB/Datastore for the backend. While I did a lot of work on optimizations and small bug fixes throughout the platform, greatly improving customer satisfaction across the board, there were two contributions I considered the most impactful. The first was fixing cloning courses, and the second was reorganizing the entire GCP hierarchy.
A couple of months into my time at IE, I accidentally discovered serious bugs in the logic used for cloning courses within and between colleges. I was going over system logs and rows in the Datastore DB after noticing severe corruption following a cloning operation that was done frequently. We had received reports from students and professors that they were missing homework or quizzes but were unable to find them, so I began investigating the issue in my free time. All signs pointed to a flaw in the cloning logic, and after taking a closer look at the code, I found it was a ton of spaghetti code that didn't properly set up relations between DB objects during the cloning process and even skipped some entirely. It was also poisoning the DB with random data that was either unpacked incorrectly or truncated and producing invalid data. This data was then added to the DB without checks and validation, leading to an absolute mess for students and professors to deal with when they tried accessing their courses. This was critical functionality that needed to work as we and our customers used it almost every day, but it would be a huge undertaking as multiple API endpoints and DB queries needed to be completely rewritten. Working with my team lead and the CEO, I reassigned my less critical tasking and took a couple of weeks to refactor the cloning operation, adding proper data validation and testing, and summarily pushing it to production after code reviews. The changes I made greatly reduced the technical debt we were incurring from continuing to use the broken cloning functionality and poisoning the DB as well as sped up the cloning itself.
A few months later, after becoming more familiar with working in the cloud, I also noticed discrepancies among the many sandboxes containing customers' courses. While done with security and partitioning in mind, the sandboxes weren't properly managed, and I noticed issues ranging from inconsistent billing to old IAM user accounts from previous developers with full admin privileges on personal accounts, a huge security risk! While it was possible to manually screen each sandbox, we already had our hands full with other tasking. I took it upon myself to dive deeper into the GCP docs as I was sure there must be a better way to do it. Sure enough, I learned it was possible to set up a global organization with projects inheriting IAM permissions, service workers, and billing from a single place, thus greatly streamlining and simplifying any updates or revisions that needed to be made organization-wide.
With this knowledge in hand, I talked with the CEO to see if I could convince him to let me migrate all our services to a global org. He told me this is how things have been done and it was fine to leave it as is. Fair enough, and I didn't bring it up again until a few weeks later. Except this time, I had made a short PowerPoint presentation detailing the time and cost savings, the exact steps I would need to take, what was required of him, and expected downtime (none!). This time he was much more receptive, and we agreed on a course of action. In addition to my current tasking, I took a couple of days to prep all the services for the migration, created a global org using the company domain name, had the boss man add his billing, then migrated everything over. It went flawlessly! As a result of the migration, we eliminated ghost permissions in one fell swoop, reduced IAM assignment time by orders of magnitude, removed unused service workers, and reduced the monthly cloud bill by 20%!
There were a lot of other smaller fixes I made, but one that stood out to me was optimizing database requests for pagination and admin panels. I was very new to databases at the time, and this was my first time writing raw SQL queries. Previous developers were requesting all page data to the frontend for every page, then splicing the data to the required page. I learned about pagination in SQL, and this simple optimization of only requesting the exact amount of data that was needed for each page reduced load times from a few seconds to milliseconds. It also reduced monthly costs by lowering the amount of egress fees from extraneous DB calls.
All in all, I learned a lot working at Intelligent Education, and it set me up for success in my career and in my classes as I began to start my project classes. Unfortunately, the company lost funding, and the entire dev team was laid off, but the CEO and I got along really well, and he was happy to provide a reference for all my future roles!
