I started working with The Graide Network in July, and since day one, we've had a seemingly endless list of tasks to tackle. That's a good thing for a startup though, and thanks to the team's ability to organize and prioritize tasks, we were able to accomplish a lot in the last half of 2016. Here's a rundown:
1. Moved our marketing pages to Squarespace
One of the biggest time sucks for devs is updating marketing copy, especially when a company is young and marketing copy changes often. We had a lot on our plates, so the first thing I wanted to do was remove the obstacle for team members to make updates to our home page. Squarespace was great for this as we were able to bring on a designer to do the initial setup work so that now anyone on our team can easily make new pages or site updates.
2. Automated deployments and log reports
With only two of us to write code, handle deployments, fix bugs, and make technical specs, my colleague Zach Garwood and I have to wear a lot of hats. This means the key to staying sane is automation. When things fail, we want to know about them before customers even notice and when we make a fix we want it to go live in seconds, not hours. So we set up a continuous integration and deployment flow with Codeship, Forge, and Bitbucket, then integrated Papertrail with Slack for alerts when errors start piling up (I wrote a bit more about this setup in detail for Codeship's blog).
3. Introduced testing
We have implemented several layers of testing now, but we started simple. From our humble beginnings of manual regression tests to automated acceptance tests to comprehensive unit and end-to-end tests, bringing this practice to the tech platform has saved us a lot of pain and countless bugs. While there's still room for improvement in how we seed our test data for end-to-end tests across multiple services, we've found a lot of value in making tests a priority.
4. Migrated to microservices
We now access data for our assignments, rubrics, courses, and users via a suite of Laravel PHP APIs connected by what little remains of our legacy CodeIgniter app. This has allowed us to make isolated changes to smaller code bases and scale each service independently as well as chip away at our legacy app without losing functionality. The plan is to eventually replace the legacy app completely with these services and an Angular 2 frontend application.
5. Standardizing our styleguide
We made our first attempt at a standardized styleguide this year as well. While admittedly not as robust as those you see written about at larger companies like AirBnb or Mailchimp, it's a huge burden off developers' backs to have a standard for how things should be displayed on the site. I expect this document to mature and grow as the Graide Network's product team does, especially when we're able to bring on a designer to help refine it.
6. Eliminating legacy debt/risk
There was a ton of unnecessary and unknown code when we first looked at the Graide Network's codebase. We've removed over 250,000 lines of code since August while adding functionality and tests. We also eliminated several security risks and moved file storage out of the application to allow for scalability. We also added automatic daily backups to ensure that data isn't lost if something catastrophic does happen.
7. New features
Finally, we were able to release a lot of new features both behind the scenes and for our users. Graiders got new profiles, the Graider matching algorithm was rebuilt, notifications and messages were implemented, and rubrics can now be added by our team in preparation for in-app grading.
In case you're wondering what's left to do in 2017, we've got a full roadmap for the first few months, and don't plan on slowing down after that. Some of the projects coming soon include:
Fully implementing our distributed microservice architecture with an Angular2 frontend.
In-app grading for rubric-based essay assignments with advanced reporting for teachers.
A more robust oauth flow to handle user logins and permissions.
Administrator dashboards to help school leaders manage and track assignment results.
I'm very excited for 2017 because I am lucky to have a great business and engineering team here at the Graide Network. If you're interested in learning more about the Graide Network or our tech team, feel free to reach out to our team on Twitter or email.
This blog post was written by Karl Hughes, the Chief Technology Officer at The Graide Network.