Originally published here
This is about my journey of learning how to code while also maintaining typical 8 to 5. Spoiler, its hard as hell and the burn-out is super easy. Though I'm here to hopefully shed some light on what's worked for me and how I maintain my sanity...
1. Make coding your hobby
I've talked a bit about this in my previous posts but I think it's worth reiterating. I haven't had success in the past attempting to balance work, social activities, hobbies and learning code. There's just not enough time in the day to do everything I wanted so I had to prioritize. I used to come home after work and get online with friends to play games. As hard as it was, I've had to cut that out of my life temporarily. Anyone who's ever played online games knows that its a sinkhole for time. One moment you've promised to just play one 20 min game of Overwatch and the next thing you know it 3 hours have passed by. So it was imperative that I put a halt to this if I wanted to progress in any sort of fashion. I've also been cooking less than I used to. That's something I didn't want to see diminish but cooking can take me a whole evening of preparation, so I usually just opt for the simple sandwich or omelet lately (my girlfriend is upset by this side-effect). The point is, if the majority of your day is taken up by your day job then you're going to need to make major sacrifices. Its just the nature of the beast but a necessary step if you're wanting to progress.
Update: Just to clarify, I'm not suggesting to totally rid yourself of everything that makes you happy. My suggestion is to take a hard look at what you're doing before/after work and ask yourself "Is this worth my time? Can I utilize this time to learn code?". Assuming you're learning code to one day land a dev position, this is something I've found to work the best for me. Adjust your time constraints on leisure activities according to what fits your life balance.
2. Have a long-term outlook
This isn't going to come to you overnight. With the influx of these coding 'bootcamps' that promise to get you job ready in 3-6 months, the realistic expectation for people has been massively skewed. This is a bit like weight training, your muscles can only strengthen so much in a given period of time. If you're bench-pressing 95lbs today and some guy promises to train you up to 225lbs in 6 months, it's just not physically possible for most people to achieve this. Your brain is like a muscle, you can only train it to absorb so much in a given day before you just burn out. So I've adopted the slow and steady approach. I don't cram 5-6 hours of coding in after work because that is a recipe for disaster. In fact, I recently spent the weekend trying to cram as much coding as I could in to get this weather app built and quite frankly, I was miserable afterward. I find an hour or two of coding each and every day to be much healthier than just doing these cram sessions. Plus it gives your mind time to process what you've learned in much more manageable chunks. If you haven't been to my Daily Coding Log then you might not have seen this quote:
“Continuous improvement is better than delayed perfection.” – Mark Twain
Just keep at it each and every day no matter how little you do or learn. Just keep chugging.
3. Start a Coding Log
With the long-term approach, it's sometimes hard to remember where you started and just how much you've progressed. Even though I've only had my coding log for a few months, I have gone back a few times and looked at my notes on Git and Javascript basics and it makes me feel really good to know how far I've come. I've also named it "Daily Coding Log" for a reason, so I commit to myself to code daily. It basically doubles as an accountability tool when there's no one else there to make sure you're keeping up.
4. Code in the mornings before work
This was probably the hardest one for me to adapt to because I have always been a night owl. I started off coding after work but found my attention span to be much less and often found myself getting distracted often since I was usually at home. I just didn't have the energy after work because I'm mentally exhausted by the evening so pushing more information into my head just didn't pan out. One day I forced myself out of bed at 6am and got to work just before 7am so I could get 1 hour of coding in before 8am rolled around. Turns out, my head was much clearer without the clutter of the day fogging up my mind and I was able to focus a lot easier (this could also be because of the coffee). This is now my go-to time of day for coding since the distractions are minimal and I'm able to start the day coding with a clear mind.
5. Make friends with smart people
This one might sound kind of weird to you, you might be thinking "what do my friends have to do with this?". There have been a bunch of times where I've hit a brick wall and there wasn't a single Stack Overflow document on the entire web that could have helped me. This is where having a friend whose very well versed in programming comes in. I'm very lucky to be friends with multiple programmers all of whom are very good at what they do. I've reached out to a few of them on occasion when I was losing all hope and just getting 10-30minutes of their time can be immensely helpful. Having someone right there to show you the process and how to go about doing even the littlest of things has been one of the most helpful learning resources for me in my coding journey.
6. Go to local coding meetups
So you just read tip #5 and are thinking, "Wow cool Bennett, you've got smarty pants friends, great freakin' job. But I don't know anyone who programs. What do I do?". Well, you could go online and ask random internet people for help, which is useful OR you can go to your local coding group's meetups. This place is great for getting to know other local programmers and networking for when you're job-ready. Having trouble finding a coding meetup?
Try here: www.meetup.com/topics/computer-programming/
If that doesn't work then do a little searching around on Facebook. My local coding group, Acadiana Software Group, isn't on meetup.com but they have a Facebook page so give that a shot.
Conclusion
Those are my 6 tips for all my fellow aspiring developers who are struggling with the 8-5 grind. These tips are just what have worked for me so if you're stuck in a rut, give them a try and let me know how they worked. If you have any of your own tips you'd like to share, please leave me a comment! Happy coding.
Top comments (29)
Number 4 works for me one thousand percent.
I wake up at 5AM every weekday and devote a minimum of 1 hour to coding. I have my sweet iced coffee already prepared in my fridge the night before so I can jump right in and not waste time.
There's something beautiful about being awake while the world is asleep. It's nice and quiet, tranquil, and allows me to focus better. Post-work evening coding is strenuous when physical and mental energy levels are depleted.
That's part of what I don't get about advice to wake up early and code... I get that feeling at midnight. Or 2am. Because staying up to code works better than me dragging in the morning trying to pretend to be productive.
Yeah mornings aren't meant for everyone. I've listened to quite a bit of Tim Ferris on his podcast and he's also a night owl who finds himself most productive between 2am and 4am. Although he has the luxury to work during those times, most of us do not.
Great article!
Of course, everyone is swamped with work, but you still can find ways to learn to code on the job.
Here's my story.
I used to work as a support engineer at a small company and we had a problem - our clients kept calling and asking the same questions over and over again. They didn't like to read pdf documentation because you could easily lose hours of your time browsing countless pages of complex specialized technical text. So, I decided to deal with this in a way that will fix the problem and at the same time allow me to learn something new.
With the help of some tutorial online, I spent one hour a day building a little help-desk app using Vue and CSS Grid. It looked really simple but straightforward and provided clear step-by-step answers to common questions.
Being good friends with sysadmin we put my little creation online and sent an email for people to check it out. Then things got busy, and we kind of forgot about it for a while.
After some time, my boss called me and said that our clients really liked this new website that we have. They were able to easily find what they need in a matter of minutes right from their mobile phones. He asked me to work on this website full-time, adding new features and various other improvements.
Things like that show your initiative to make things better and also the ability for you to learn some new stuff. And also I got paid for the thing I was building. Isn’t it cool?
So, I'd say find a little side project at work and hone your skills there. You need to build something that is fun to build and solves a real problem that people have. It really doesn’t matter whether your boss knows about it or not.
What matters is the end result of your work. The amount of time that this is going to take is not super extreme but it will push you forward.
This is such a great story, thanks so much for sharing! I've actually had some similar situations at my job where I created some simple Adwords scripts (written in vanilla JS) that made reporting a lot easier for me at the time.
Awesome! Very motivating. IMO it’s a good idea to let your boss know what you’re doing - even if it’s for the purpose of accounting for the time.
This is great!
I also learned to code while still keeping my previous 9-5 job, so a year of staying up to 2 am and coding through the weekends.
1 tip that helped me was to set aside one day a week to take a break from coding. For me it was Saturday, I would stay away from the computer and reserved the day for family/personal time.
I also tried to get to bed early at least one night a week (usually Tue-Wed). That broke the pattern of all-nighters and let me "catch my breath."
Can't stress enough your point about surrounding yourself with a community of others who code. I couldn't really get out to meetups as much as I would have liked, but I did find a few supportive online communities, such as dev.to, CodeNewbie on Twitter, and the Flatiron School's Slack channel (the bootcamp I took).
Speaking of taking a break from coding, I actually did that this weekend. Its definitely necessary to take some time off from code altogether every so often
Great tips. I especially agree with your points of making small amounts of progress everyday and coding the first part of your day rather than the last part. Someone once described our brains like a flower vase. We can hold a large amount of knowledge (water) but can only allow so much in at one time, or over a period of time. (Like the narrow neck of a vase)
One other encouraging point I would make is that it's okay if you get burnt out, we all do. Missing a day or a week even is okay, but get back into it afterwards. Don't let missing a day be an excuse to give up. If you fell down a stair you wouldn't throw yourself down the rest of the stairs, you'd get back up and keep going.
To anyone struggling, hang in there. Remind yourself daily that the goal is progress not perfection, and progress is a marathon not a sprint.
Yes you're totally correct, burn-out is inevitable in many people's cases. I think there are strategies on minimizing it by taking the long/slow approach though. Even with that, there will be times that you just need a breather from coding all together.
Great story.
Keep up the good work.
And you can be assured that it is only the beginning. Because when you start coding, as new frameworks, languages, technologies comes out every month (ok, year is more appropriate ^^), you are going to train yourself everyday.
But it is so fun to learn new things.
And then (as I experienced recently) share it on dev.to even if you are an absolute beginner (as this beautiful post encouraged me to do)
How to make the most of dev.to
Arik ・ Jul 19 '18 ・ 3 min read
Yeah learning code is something we as developers will do till the day we retire. I really enjoyed your article that you linked btw, dev.to is a great community.
I really like the coding log idea. I'm super fortunate because I only have to work a tiny bit while learning - so learning is my full-time job, but it's still hard to see where I've been, how I've progressed, and what exactly has brought me to my current place.
I have been maintaining a spreadsheet that high-level tracks what courses, projects, etc. I've done (with start and end dates). But, it's not really doing it for me. As an example, this week I went back to a little crash course on Ruby that I had tried to start about five weeks ago - I had stopped doing it because it was so challenging that I was getting really frustrated. But, the last two days working on it again - suddenly I am able to successfully write each part of the exercises usually on the first or second attempt. And each time I run the code I'm SO surprised that it works! And, for the life of me, I can't understand why it's suddenly so much less challenging. (I've mostly worked on front end learning over the last five weeks...) I think a daily log would help me to understand how my learning is progressing.
I like your idea about the spreadsheet to record what courses you've taken. I've gone through quite a few tutorials and having a dedicated spreadsheet to kinda pair with my coding log might not be a bad idea.
Tip #4 on "coding before you go to work" is SPOT ON!
I did that for a while a few months ago when I was interviewing for my current role, and I can honestly say that setting aside that morning time worked better. It was the only realistic time I wasn't mentally exhausted from work yet... haha
Go you! =]
This is brilliant advice.
Great post. I do try and sneak in some learning by firing up codepen to give myself a sense of purpose that I can still do front end dev. It’s freedom to enjoy rather than being boxed in to a project. I think I’ll try 4) soon.
Awesome article and great tips. I try to sleep early so I can wake up between 3 - 4am everyday to study before I go to my 8 - 5 job. I also try jog in the morning, but I am thinking of using a bicycle to work.