Starting My 100 Days!
Tags: 100daysofcode, code
Published: 2020-03-11 01:34:19

What's the hardest thing for an new developer to do? For me it's simply coding. Not the logic. Not the syntax. Not debugging. Those things are difficult to be sure, but the hardest part is simply finding something to build and sticking with it. 

When I code for myself I often find myself tinkering with new frameworks and tools rather than actually building a project. I start building then discover something new, find myself distracted, and forget about the original project.

Nobody:
Not a single soul:
Me:

"I wonder if I can use GraphQl for this..."

"Gatsby seems cool..."

"This looks looks perfect for what I want to build!"

⬆ This... Is not useful. Tinkering can be fun, it can also be unhelpful and demotivating. When you tinker shallowly you don't tend to encounter the challenges that make you a better developer. You don't really gain much skill in the tools you're trying to learn. When you're not producing "finished" products you lose interest in coding itself.

# 100 Days
That's why I'm starting the 100 days of code challenge. For the next hundred days I will code for at least one hour each day. The goal of my coding will be building projects for my portfolio from start to finish. In order to stay focused and avoid procrastiswitching (switching technologies mid-development to procrastinate), I'm making some rules for myself.

## Rules

1. I must code for at least an hour each day. Code during work hours, or as work product does not count.

2. Once coding has begun, the stack is set in stone. If I start a full-stack Express app that's what I'll make. If I start a Apollo backend with a React front-end, I have to see it to completion. I can't change the base technologies of the project halfway through.

3. No switching between projects. The hour only counts for time spent on the current project. I can spend time above the hour anyway I want. I can't work on one project one day and a different one the next.

4. I have to write a post everyday describing what I did for the day, what I learned, etc.

## The First Project

The First project will be an app to keep D&D character sheets.

### Stack

I'll be using Node.js and building a full-stack Express app with MongoDB.
### Requirements
#### Minimum Viable 
- [ ] Present a D&D Character Sheet
    - [ ] The sheet should display all the same info as the first page of the 5e Official sheet.
- [ ] Users should be able to log in and create player-characters.
- [ ] Users should be able to edit character sheets.
- [ ] Users should be able to organize character sheets into groups (parties/tables)
- [ ] Sheets should auto calculate basic stats like ability modifiers.
    - [ ] Support Proficiency Bonuses 

#### Cake
- [ ] Extend character creation to allow the user to use any of the three common stat gen methods.
    - [ ] Point Buy
    - [ ] Standard Array
    - [ ] Roll
- [ ] Extend the character sheet to all the info in the 5e official sheet.
- [ ] Allow for image uploads for character portraits.
- [ ] Allow for extended descriptions/backstories.
    - [ ] Characters should have nice full page backstories.
    - [ ] Preferably use a markdown editor.