One Hundred Days of Code

Today I start the #100daysofcode challenge! In this post I outline my objectives and reasons for taking part.

What is 100 Days of Code?

One Hundred Days of Code is a popular challenge that web developers and programmers take part in. The idea is simple: for one hundred days you code for a minimum of 1 hour a day, sharing your progress on social media with #100daysofcode.

What you choose to code is entirely up to you. Some developers opt to learn an entirely new language or framework. Others focus on enriching and gaining a deeper understanding of a language they are already proficient in. Particularly brave participants choose to learn to code from scratch!

My motivation

As a self-employed front end developer I code mainly in JavaScript but also use Liquid and PHP to a lesser extent. WakaTime tells me that I'm coding for at least six straight hours everyday (excluding admin and client-liaison). Given this schedule and the ever-present need for all developers to stay abreast of new technologies in a constantly changing industry, why would I want to add to that workload?

Well, as much as I enjoy my job and take pleasure in the need to be constantly learning and improving, the reality is that even with the best intentions, you get stuck in ruts and bad habits, reusing techniques that you know could be better implemented or more refined simply because you are working to a tight deadline often with competing client demands.

I am hoping that taking part in this initiative will force me to learn new and better ways to execute routine tasks and deepen my understanding of the main web languages I already use. I am also excited to develop my portfolio with fun projects I can look back on with pride.

My focus

I have four main aims:

  • Consolidate and extend my existing vanilla JavaScript skills
  • Build a single-page Vue.js application
  • Develop small embedded instances of Vue.js widgets within broader non-Vue context
  • Improve my understanding of modern web development tools

Let my briefly elaborate on each aspect.

Vanilla JS

Obviously I know how to use JavaScript to achieve interactive outcomes on the front end but I am very much aware of my limitations. I would like to be able to code JS from scratch with greater facility and independence and become less reliant on help from external resources, component libraries and deprecated jQuery.

Vue.js

A proportion of my time will be spent consolidating my knowledge of the JavaScript UI framework, Vue.js. I am currently working on a start-up web application with a friend. I can't say more about it at this stage but I have built the front-end components using Vue.js. I want to codify this knowledge in the form of detailed notes and learning resources, so that my knowledge has a strong theoretical basis and not merely practical/procedural.

Staying with Vue, I would also like to gain experience of using it in a less monolithic context with functional components built with single instances without vue-cli and vue-router. One of my projects here will be to build a dashboard within the context of this site that displays my coding data in realtime, using the WakaTime API.

Modern web development tools

I have pages in my notebooks scrawled with the names of frameworks, services and programmes I know I should know about but which I don't have the time to learn and integrate through daily practice (Webpack, Hadoop, Babel, Vim, Netlify the list goes on...). I'm hoping that short forays into these areas within the course of the 100 days will furnish me with a more rounded knowledge base at the end of the challenge. So I'll be going broad with ancillary skills such as new command line programs,package managers and performance boosting techniques.

Sharing my progress

There is no doubt that taking part in 100 Days of Code takes discipline and effort, especially when you have a day job in code and are trying to support yourself without the safety net of waged employment and its associated benefits.

To keep myself on track I am going to be quite regimented when it comes to logging my progress, and aim for the following:

  • Daily short social media posts explaining what I'm working on. I'll use Instagram instead of Twitter as it is my preferred forum.
  • A daily GitHub log using the recommended 100 Days of Code repository.

The above two are recommended by the Challenge but I am going to go further than this and add:

  • Monthly blog-posts reflecting on the highs and the lows and detailing my progression.

See my progress on Instagram and GitHub and check back here for the monthly reports.

Wish me luck!