From Apprentice to Mentor
At Maryville, we are 3 weeks into our new Co-op program where I am working directly with college interns with different backgrounds and skill sets. I went through a similar program 16 months ago as a LaunchCode apprentice. To get the interns up to speed as a team I pitched a “ramp up” project, a massively meta “Skill Directory” REST API with a React front end.
I had 3 goals for the “ramp up” Dev Center project:
1. It had to be open source – Use open source tools, show off our work to the development community in real time, and offer examples to developers trying to solve similar problems
2. We had to set some best practices and stick to them – Code review, unit test coverage, documentation, etc… These are things that have been left behind in my previous projects, that I consider essential.
3. Choose tools that will push our skill set – We chose a database like Cassandra because it is trending forward and is designed for cloud deployment. I was looking for something that we had to research and debate the design
This project has expanded my skill set and allowed me to wear a new hat in the development cycle. I made some early architecture and code structure designs, and then handed over the execution to the co-op team. At this point I’m active in code review, while relying heavily on the team to make decisions and critique each other’s work.
Ok, I lied. I had one more goal:
4. Implement a CI toolchain with automatic deployments to a dev environment – I had to understand how all the pieces worked
In my (short) career I have been working with teams that took the DevOps CI/CD pipeline very seriously, but I had only had limited impact on the design and execution. For this to be a true learning experience I wanted to take the reins and implement a deployment pattern for the project. Using CircleCI, Docker, and AWS I’ve designed a system that can create and deploy artifacts consistently, and be easily run on a cloud server or a developer’s machine.
The tech stack includes:
- Cassandra (HA and designed to scale in the cloud)
- Golang (for the REST API, using the Go http router and GoCQL Cassandra library)
- React (for the UI, bootstrapped with React-Create-App)
- Docker (for easy artifact creation and deployment)
- CircleCI (running unit tests on all branch builds and building/deploying docker images on master branch)
The best thing this project has offered me: it’s a good reminder that I don’t need to have all the answers, but I’ve come a long way from a self-taught apprentice to full time developer and mentor.
You can check out our project at https://github.com/maryvilledev/skilldirectory.