Lessons from Learning and Working Remotely
The coding bootcamp I attended, the Flatiron School, was a remote online-based version of their immersive in-person program. All the resources of (and actually more curriculum materials than) the in-person program, but without the daily commute. I found it immensely valuable, and fit seamlessly with my learning style. But there are a few unique challenges to learning and working remotely: How do you stay focused? How do you keep on track without an instructor leaning over your shoulder? And how do you untangle yourself when you’re stuck on a tough problem?
The best method I found to avoid distractions (snuggling the cat, taking naps, baking elaborate pastries) was to maintain a strict routine. Staying focused becomes infinitely easier when you’ve formed a habit. Sure, you have the freedom to sleep in extra if you’ve pulled a late night, or to run errands in the middle of the day, but it’s not the best for productivity.
I kept to a schedule: wake up a reasonable hour at the same time as my office-bound partner. Check email and social media during breakfast, and then begin work immediately thereafter. Take a break midday to exercise and eat lunch, then resume work. Finish around 6pm when my partner returned. Any remaining research or side projects would be reserved for later in the evening. I treated it much like a normal office job.
At first this requires a great deal of discipline, but with enough repition, breaking the habit you’ve established becomes more difficult than simply following your routine.
Momentum and Progress
Measuring your progress to ensure you’re moving forward instead of stagnating is another crucial element to working remotely, especially if your work is self-paced in any way. With the Flatiron School curriculum, each concept I learned was broken up into lessons and labwork. Completing each one not only gave me a satisfying “green light” in the UI, but also allowed me to keep track of my progress in a distinctly measurable timeline.
Sometimes it’s hard to see how far you’ve come – e.g. when I was in the middle of a month-long unit about Rails – unless you break it into bite-size chunks. For a long project without handy lesson or lab components, I’d keep track of each feature implemented, or each bug stamped out, or even measure progress by git commits.
The goal is to keep moving forward a little at a time. Don’t get bogged down working on one problem, or spend hours reading only-slightly-related documentation, or get distracted implementing an unnecessary feature. Have a clear roadmap of where you’re going and where you’ve been.
But what happens when you get stuck?
It’s inevitable, of course. And, I think, one of the most important skills to learn is how to get unstuck on your own.
If I’ve been learning a new concept, my first stop is re-reading the tutorial or lesson I’m working on. The official documentation for the language or library I’m working with is another great resource. Debuggers like Pry are essential. Or I might look over some code I’ve written previously. Sometimes even just explaining the problem out loud to my cat helps me find the solution.
If none of that yields results, then it’s off to Google for answers on Stack Overflow or blog posts. (Refining your search terms is an art unto itself.) Reading about what other programmers have done and solved always teaches me a lot – provided, of course, I’m not just copy-pasting a code a snippet without understanding it.
As a last resort, I would turn to other students or my course instructors. And even then, I wouldn’t simply be given the answer to my problem: students would commiserate and share resources they found helpful, and instructors would ask pointed questions to get to the heart of the issue, Socratic-style, until I figured it out myself.
To succeed at working or learning remotely requires discipline, forward momentum, and a certain amount of confidence in your problem-solving skills. Not incidentally, you also need all of those qualities to be a great developer.