I have a dev confession. I'm terrible when it comes to building projects.
The advice experienced developers most often give newbies when it comes to learning how to code is build projects. Projects aren't just great additions to your portfolio and serve as proof to potential employers that you can do specific skills. They help you become a better developer and practice your new skills without a tutorial guiding you throughout the entire process.
This advice is easier said than done.
Confidence wasn't the only reason why I avoided projects. I avoided building projects at the beginning of my coding journey because I never knew what to build with the skills I was learning. I often felt like I was getting writer's block every time I thought about starting a project without a tutorial. I figured it was better to do a little bit of coding with tutorials instead of staring at boilerplate code trying to figure out what to do with it.
Then there is time. Learning how to code requires lots of time management. This means setting aside time to keep up to date with what is happening in tech, looking for jobs, networking and learning a new framework/language while trying not spending all my time sitting in front of my computer. When I consider everything happening in my life and what I want to accomplish, it was hard setting aside any time to just sit down and work on projects for a couple of hours without feeling guilty I was cutting back on other things I needed to do.
So how does one build projects under these circumstances?
First, schedule your coding time. Coding is often compared to working out because it needs to be done regularly in order to get the benefits from it. I do lots of workout DVDs and workout trainer Chalene Johnson always encourages people in her videos to schedule their workouts. Once they schedule these workouts, they need to treat this time as non-negotiable as they can.
This is what I started to do during my coding journey. When I tried to make time for building projects, I'd completely forget about it and never do it. As soon as I started scheduling a little bit of time each day for projects, I was holding myself accountable and making sure I did it. So if you want to build projects, schedule time during your day and treat it as you would any important event in your life.
The other thing you should do is participate in a coding challenge. I started seeing coding challenges such as 100 Days of Code and 301 Days of Code in 2016. These challenges encouraged developers to start building projects and sharing the progress they made on social media. Some challenges such as Daily CSS Images and 30 Days, 30 Sites gave developers prompts on what they should build each day yet kept the prompts open enough for developers to create their own versions of the daily prompts.
I did 301 Days of Code and round one of 100 Days of Code in 2017.
Before I started 100 Days of Code, I signed up for a bunch of coding challenges and set up a filter in Gmail so they would all go into the same folder. Then I just started working on the prompts each day during 100 Days of Code. Many times I would mix-match the prompts depending on my mood and what I wanted to build.
These challenges do what they promise and you do start building projects. They also help you learn about what you are like as a developer and what you do when you are faced with specific challenges. I learned a lot about my strengths and weaknesses as a developer during the first round of 100 Days of Code. When I decided to do a second round this year, I used what I learned to set goals on what I could work on and what languages/frameworks I wanted to focus on.
Tackling my coding fears has inspired me to create my own coding challenge.
If you are on Twitter, you'll often see me mentioning Disney during some of the CodeNewbie chats. I have talked about creating Disney coding guides or how my dream hackathon would be Disney themed. After many of these chats, I still think about many of these ideas and wonder how to bring some of them to life.
One day, I was sharing an idea to my mastermind group involving The Little Mermaid and Git when they encouraged me to take one of my ideas and turn it into a real project. This got me thinking and I began brainstorming how to combine Disney and coding together. I had quite a few ideas from a Disney themed online course to creating a coding e-book where Disney characters teach programming concepts.
During my first round of 100 Days of Code, the projects I had fun building were ones where I imagined I was a web developer in the fictional town of Storybrooke, Maine from the Disney TV show Once Upon a Time. Throughout the first round of the challenge, many of the websites I enjoyed making were ones using Storybrooke as inspiration. I made several websites from a tourist attraction website for the town to an event invitation for Hook and Emma.
These feelings and memories were still on my mind as I was brainstorming ideas on what I could create. I wanted to create a resource that gave developers the same feelings I had when I was making the Storybrooke inspired projects during 100 Days of Code. As I got ready to start round two of 100 Days of Code, I realized I should create a Disney inspired coding challenge.
I didn't want my challenge just to be an excuse for mixing programming and Disney together.
As I created an outline for the challenge, I wrote down several objectives I wanted my challenge to accomplish. Most importantly I wanted to accomplish the following goals.
- empower developers at different stages of their coding journey to build projects. It had to be something that an experienced developer could do and be challenged. Yet it had to be something a newbie learn how to write HTML & CSS could also do.
- be short enough that the busiest developers could schedule for but long enough for developers to feel like they were able to get some goals accomplished for the day.
- Help developers build projects.
- Kept the challenge to a specific theme but was open enough so developers could create whatever they wanted. Disney was perfect since they own quite a lot which meant it still stayed within the theme but gave developers enough freedom to code what they like.
One night I easily filled up an entire piece of paper with ideas for my coding challenge, goals the challenge needed to fulfill and notes on what I needed to include in the repo. Many of these ideas didn't make it into the official repo. I initially tried putting as many ideas as I could into the challenge as possible, but I cut back on a lot of them since these ideas could be added later in future updates. I instead focused on getting the essentials ready to go so I can start the challenge and see what changes could be made.
Initially, I hesitated at creating a coding challenge.
One, I was afraid Robert Iger would sue me for creating something without Disney's permission. Even though the challenge isn't associated or affiliated with Disney, I worried I'd be getting an e-mail from a Disney executive telling me to take the challenge off Github. Although I did put a notice in the challenge, I still had those fears that notice might not be enough so I mentally prepared a response just in case Disney did decide to reach out.
Two, I had impostor syndrome. I felt like I was a fraud creating a coding challenge. I don't work for Disney and I've only been coding for 3 years. I felt I probably was the last person that should try creating a coding challenge.
Finally, I was worried about what the tech community would think. Would anyone want to build Disney themed projects? I constantly was thinking about how other developers might act during my challenge that I felt what I was writing down in the files wasn't good enough. All these reasons made me consider not publishing the challenge at all.
I shared some of my worries during the July 2nd Dev Discuss chat. A few of the members encouraged me to write the challenge and publish it. Reading these comments helped me fight off these doubts and continue writing text files for the challenge. On July 4, I finished writing the last file and published the Disney Codes Challenge on Github. I created a separate repo I could use myself for the challenge in order to imitate the experience a developer might have doing Disney Codes.
How can I join the challenge?
If you would like to learn more about the Disney Codes Challenge or want to know how to get started, the repo link is below. I've completed the first 5 days of Disney Codes as of this post. You can see my progress using the #DisneyCodesChallenge hashtag. If you do Disney Codes, please reach out to me on Twitter at @theoriginalbpc so I can support you and see the projects you make.