100 Days of Code

I write this having just finished the 100 Days of Code challenge and would like to share my takeaways from the last few months. I'll break my thoughts down into a few categories. The aim for this post is to help others plan out their 100 days.

This post is under construction and will be updated. I'm dealing with a wrist injury and plan on pecking away at this in free time.

What I Wanted to Do

My intention in starting 100 Days of Code was to grow as an engineer. I wanted to learn some new technologies, practice writing (and technical writing), and originally I wanted to create a blog site from scratch.

For someone just starting out, this may be different. It's important to define your goal at the start so you can make sure to stay on topic.

What I Did

  • coded or did something code related every day
  • Jumped around on topics
  • Shallow but not deep

I started by building the blog site. I used a Gatsby template then wrote and styled everything myself. Understandably, that is slow. And ugly. I got self-conscious about sharing a site that lacked design and styling. I realized that there was no need to write every single part of the site myself. If I made a site for work I wouldn't write every piece of CSS myself. So I decided to add Tailwind to make the building go faster.

From there, my lack of goals got to me. The blog was 'good enough,' but it wasn't the only thing I planned to work on, so I wandered. That's how you end up with a site like the current iteration of this blog. It's basic and it works, but you can tell I haven't gone much farther with it. If I had plannd more concrete goals or features with the blog, I may have spent more time focused on it.

Don't get me wrong, I learned a lot over the 100 days and am happy I did it, but I definitely should have been more focused and have clear goals. Next time.

What I Learned

  • TypeScript
  • Go
  • TDD
  • Gatsby
  • GraphQL
  • Tailwind
  • More CSS
  • More internals on JS/React

I was able to get my feet wet with GraphQL thanks to Gatsby and get comfortable using Tailwind to style. I also gained a little bit of experience with Golang while continuing to learn in the TypeScript/React world. I also learned some things about hosting a website, it had been a while since I configured one from scratch. I also was able to do a good amount of algorithm studying and practice with leetcode style questions.

What I Wish I Did

  • Read more, especially other people's code
  • More open source (pick one, don't try to do a little bit for a lot of projects)
  • More productivity tricks (IDE stuff)
  • watch coding livestreams
  • Deploy personal projects to the cloud (aws probably), especially serverless
  • Building from the ground up is fun and educational, but start with a template or at least css framework to make dev go faster. So much time tweaking the blog when frameworks are available, will look better, and I could have time focus on more features
  • Made a pretty landing page, blog is functional but I'd like something more polished
  • avoided wrist issue

A list of a few general things I wish I had done or done more of. Learning how others work is a big component of this, whether it's reading their code or watching livestreams of them coding in action.

As for practice coding, specific goals to focus on would be helpful. I'd also like to have focused more on the cloud, whether it be deployment or taking advantage of some AWS services and technologies.

It was unavoidable but I have to say I wish I avoided my wrist issue. It definitely put a damper on the extracurricular coding.

If I Were Starting Today, I Would... (summary)

  • Not 100 contiguous days, probably 60 days of coding in 90 days or something. Some days you don't want to and that's OK, but phoning it in one day can lower the bar going forward
  • Go deep! Pick or start a project that includes the tools you would like to use and have that be what you work on for the 100 days
  • make sure you can complete it (or an MVP) in the 100 days and extend to it later
  • break out really small tasks, have something doable in a day and direction, multi-day tasks are tough when it's only an hour or two a day
  • Have a schedule/curriculum or one specific project to work on
  • Set a concrete goal/commitment for each day (60 minutes or one task)
  • Tough to do when your day job is also coding. Don't count that in the 100 days but know that some days you will be over it

The Biggest Takeaway

Tech is deep. You can't learn it all, especially on an hour a day. Deliberate practice is very important so have quality time to focus. Take breaks, no need for consecutive days. Forcing it some days makes it easier to be more lenient on days you do have the time and energy. A goal like 60 days of code in a 90 day period is more optimal for me.

The End
I'm alive!