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 to 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.
Building projects can sound scary for newbies.
It means no safety net and working with a language/framework you might not feel 100% ready to use on your own. This is how I felt with JavaScript for the longest time. I don't have many JavaScript projects in my portfolio because I never felt confident using it.
So I avoided using it as much as possible. These feelings were amplified even further when ES6 was released and what these changes meant for writing JavaScript in projects. 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 to spend 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 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 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 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.
Thanks to the coding challenges, I'm getting better at stepping outside of my comfort zone and confronting my fears with specific languages/frameworks.
It gets much easier each time I use JavaScript and I can tell my confidence grows every time I use it. It isn't easy, but facing my fears is helping me learn new things and get one step closer to being the developer I want to be. Tackling my coding fears has inspired me to create my 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 with 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. 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.
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 learning 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 it owned quite a lot which meant it still stayed within the theme but gave developers enough freedom to code what they liked.
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 could start the challenge and see what changes could be made. Initially, I hesitated to create 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 who 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 and 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 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 the Disney Codes Challenge, please reach out to me on Twitter at @theoriginalbpc so I can support you and see the projects you make.
==> Click here to learn more about the Disney Codes Challenge