rapid reps (2 Part Series)
This is part two in a series about a strategy I use to learn new skills every week, something I call Rapid Reps. You should read the first article if you haven't already, it lays out exactly what Rapid Reps are and why they're effective.
In this article, I lay out my top ten tips for how to get the most out of your daily Rapid Reps!
The beauty of Rapid Reps is you can set them up to work with your schedule. If you’re currently unemployed trying to learn new skills to impress potential employers, you can choose longer tasks that take an hour or more. If you work from 8 to 6 and just want a small way to keep you on your game, you can choose small tasks that you can finish in 30 minutes or less when you get home from work.
Me personally? I like to keep mine to 45 minutes or less and do them with my morning cup of coffee.
Be realistic. If you only have 30 minutes every day to complete a rapid rep, don’t pick a task with eight different new technologies you’ve never worked with before (eg: build a React/Redux app with a Express GraphQL API and deploy it to Google's Kubernetes Engine with Travis CI). Find one technology you want to learn, hone in on that every day for a week, and move on to the next one the following week.
Sometimes we as developers overestimate our capabilities, or underestimate the difficulty of a task. I've found myself on more than a few occasions breaking the last tip and overextending myself. A task that I thought would take 45 minutes ends up taking over two hours.
In cases like these, never be afraid to change course in the middle of the week. Try breaking the large task up in to two or three smaller tasks that you can complete in the following weeks. Rapid Reps aren't meant to take all day, and you should do everything you can to contain them to a set amount of time.
Personally, I try my best to take full day off from any form of coding each week. It gives me a chance to clear my head a little and refresh my mind, which in turn helps me to get back into the coding grind the next day with more focus and energy. This means you should ideally aim to do six reps per week, with a designated day off.
Each day you should strive to do as much from memory as possible instead of copying and pasting code you wrote during your previous rep. Even though the goal of this isn’t to memorize the line-by-line syntax needed to solve a specific problem, it never hurts to force yourself to practice it a little!
Rapid Reps help you repeat a process enough times that the core concepts and workflow gets embedded in your memory, but you might want to consider walking through the process once beforehand so you know what you're doing!
Whenever I try to tackle a new task, I like to take an hour or so on the Saturday beforehand to walk through a tutorial and really figure out the process. That way on Monday, when I do my first rep, I already have some idea of what I need to do and don't spend an extra two hours just trying to learn.
At first, just completing the task will be hard enough, but usually by about day 3 or 4 you’ll be zipping through the rep in half the time it took on day one. At this point, I like to look for one small additional task I can add to the process each day!
Here’s some examples of how I've put this into practice:
Example 1 -> When I did a week of reps focused on learning how to implement OAuth in a Phoenix application, I started by just setting up OAuth with one provider, Github. Around day three I added Facebook, then Google, and by the last day I had an app you could log into with Github, Facebook, Google, or Twitter, and I even built a pretty cool system for easily adding new OAuth links in a DRY manner
Example 2 -> When I did a week focused on setting up Multi-container deployments to Elastic Beanstalk with Travis CI, I started with a super basic workflow that deployed to a single environment, and by the end of the week I had fully autonomous system for building docker images and deploying to two separate environments based on git branch, one for production and one for staging.
This one is kind of similar to the last one, but instead of focusing on additions made to one task over the course of a week, this is about creating a continuous flow between the nature of the task you complete from one week to the next.
So if you have a certain skillset you’re really interested in learning, break it down into one really simple ‘starter’ task, complete that task every day for one week, and then build on that with each new week of Rapid Reps.
As an example, one of the skills I was interested in learning a couple months ago was how to setup a CI/CD workflow that allowed me to easily deploy multi-container apps. Rather than trying to do it all at once, I decided to start small by focusing one week on building a single Docker image that ran locally and building from there. Here’s the basic flow I followed:
Week 1 -> Build a single working docker container from a docker image.
Week 2 -> Build a dual container environment and use docker-compose to connect the two together on my local environment.
Week 3 -> Build a single container application and push it to Elastic Beanstalk with Travis CI.
Week 4 -> Build a dual container application and push it to Elastic Beanstalk with Travis CI.
Week 5 -> Build a multi container application, push it to Elastic Beanstalk with Travis CI, and setup RDS as the database layer.
Keep in mind that at the start I barely knew what Docker was, had never used a CI tool in my life, and hadn’t used AWS for anything more than simple S3 bucket storage. I’d say I’ve come a long way since then.
This is especially important if you’re using pay-by-the-second cloud services like AWS and want to pay as little as possible (ideally nothing if you're on the free trial.)
I like to start each rep by making a checklist of all the steps I need to do to finish whatever task I’m working on, and the last item on the checklist is always clean up! This means going through every online service and cleaning up whatever I made during the rep, whether that’s deleting a Github Repo, shutting down an Elastic beanstalk environment, or removing images on Docker hub, I like to clear out everything except for the code on my computer.
The last thing you want is a hundred useless images and repositories cluttering your online work environment, and, if you’re not careful, they'll add up pretty quickly when you start doing Rapid Reps every day.
When I finish my last rep of the week, I try to spend an extra thirty minutes or so afterwards going through the code and cleaning it up. I also remove any "vulnerable" information that might have slipped in (environment variables, api keys, etc.)
Once I'm done, I copy the code over to a separate git repository and push it up to GitHub. This serves two main purposes:
- It ensures you never lose the 'example code' you wrote during that week Rapid Reps, in case you ever want to look back at it for reference.
- It gives you a nice repository of code that you can use in the future to showcase your skills to a potential employer!
I am in no way affiliated with the Streaks app, I just think it's a useful tool that works well with Rapid Reps
Streaks is an iPhone app that lets you set a number of habits you'd like to implement into your daily routine. Everyday when you complete that task, you can open up the Streaks app and mark it complete, and Streaks will show you the number of days in a row you've finished that task, otherwise known as your 'streak.'
I have one of my tasks set to Rapid Reps, and as of Feb 5, 2019, I'm on day 80! I find that using the streaks app gives me a little bit of motivation everyday to complete my rep, since I don't want to break the streak!
Streaks is only available on the iPhone, let me know in the comments if there's a good alternative for Android.
I hope you enjoyed this article! Feel free to ask any questions or leave your feedback in the comments below!