CNC 2018 Pre-Mission1742 words. Time to Read: About 17 minutes.
As part of the Code Newbie Challenge 2018 (Code More Track), our first pre-mission is to reflect on what we’ve done in the past — what worked, what didn’t, and why.
1. What Has Worked
Think about the times you’ve been happy with what you’ve coded and jot down three things that went well. Were you happy with how the project turned out? How consistently you worked on it? How much you learned? Next, jot down three reasons why that was a happy coding session. Was it your passion for the idea that got you through? Was it having a support system that helped you make time to code? Was it figuring out your learning style and finding great resources? - Saron
a) Advent of Code 2017
Advent of Code was a great coding experience for a few reasons. I was able to code sustainably and continuously over about a month period. I kept coming back (mostly) every day to knock that day’s challenge out. I didn’t get bored, I didn’t forget what I was supposed to be doing, I didn’t get discouraged, and I didn’t lose interest. I think this challenge went well for a few reasons.
First, there was a deadline for each day, so I had something driving me to stay on track. The days that I didn’t keep up and had to finish two challenges the next day were tough. This pushed me to make sure I was in the zone each day.
Second, the challenges were really interesting. I feel like some code challenges are kind of a pain. Personally, I believe that the Roman Numerals and 99 Bottles of Beer challenges can blow it out their heiney. The Advent of Code challenges didn’t feel like that.
Lastly, I think it helped that there were really clear milestones and goals. Some projects begin to drag or I lose interest because I never feel like I’ve completed something or reached a “stopping point”. With Advent of Code’s 25 distinct challenges and crystal clear December 25th deadline, I was able to grit up and push through when things were hard or slow because I knew the end was coming.
Going through Harvard’s online CS50 was one my my favorite learning experiences. I also begin to see some similarities with Advent of Code in terms of the things that kept me going.
First, there were clear assignments and deadlines. Get these tests passing by this date. This helped me stay focused.
Second, the instructor and staff kept the content extremely interesting and fresh. Catering to a bunch of different learning styles really helped shake things up and keep them from stagnating.
Finally, the subject matter changed pretty frequently. We never spent more than a couple of weeks on a single topic before moving on. I’m not somebody who can work on the same project for years at a time, so that helped a lot.
c) The Nature of Code
I really enjoyed working through Dan Shiffman’s The Nature of Code, doing the code examples, watching the videos, and working on the projects. This time, the subject material really interested me. It also helped that I was consistently learning something new. Learning is really fun for me! Also, Dan Shiffman is a great teacher and very entertaining to read and watch.
2. What Has Not Worked
What’s a coding moment in the past that didn’t turn out the way you hoped? Write down three things that you were unhappy about. Was what you built not as functional as you’d hoped? Did you not spend as much time on it as you wanted? Next, write down three reasons why those unhappy things happened. Was it the wrong idea? Was the project too big? Were you missing the tools and resources you needed to make it work? - Saron
a) Every Time I Build a Django/Rails Project
I love Python. I love Ruby. I think Django and Rails are neat! That being said, it seems like every time I try to start a new web project (and those are my go-to technologies for that), I get into it, get part of the way through, get bogged down before I get to see my idea come to fruition,
git push and never come back to the idea after. I have some suspicions for why this is.
I tend to get bogged down in the front end. I get the app set up, but then I get stuck typing page after page of HTML and CSS, trying to get it to look not dumb. Then I get tired of typing HTML and CSS. Then I get distracted trying to see if there’s an easier way to have it just build the
******* form for me because I hate typing
input type=text over and over. Then I get sucked down rabbit hole after rabbit hole of distraction. Then I forget what I was doing. Then I never come back to the project. Can you detect the hints of frustration?
I also forget what I was doing for other reasons. There’s so much to do that I keep thinking of more things, so I write them down on paper so I don’t forget. I lose the paper and forget what I needed to do, and I’ve got so much code that I’m intimidated by my own codebase. I don’t care enough about a side project like that to put in the work to try to figure out what mind state I was in when I last left the project originally, so I never come back and finish it.
b) Contributing to Open Source
Again, I’ll start by saying the positives: open source software is awesome and my life is so much better for it. That being said, most times I try to contribute to open source, it seems like it goes poorly. I get all psyched that I finally found a repo that I can contribute to without feeling intimidated, and I do the work (or at least, comment on the issue to get started). But it seems like about half of the time, we get bogged down in details, or people get busy and the progress halts, or worse, nothing happens at all.
Some notes: getting bogged down in the details is probably a Good Thing™. I know that software projects have to be picky on their pull requests to make sure the project grows in a healthy way. I totally get it and I appreciate the maintainers doing that. That doesn’t mean it’s not frustrating. See above about me and my relationship with long-running projects. Also, I understand that people get busy. They have lives outside of open source. This is also a Good Thing™. It prevents burnout, and they’re often doing it for free, so why should they have to be on call for these projects. Again, that doesn’t mean that it’s not frustrating.
c) 100 Days of Code
This one is 100% on me. (Let’s be real — they’re all 100% on me). I failed so hard at 100 Days of Code. I actually want to try it again to redeem myself. I think I failed because I didn’t set myself up for success. I didn’t prioritize coding over other things. I didn’t put an hour of code into my calendar every day. I didn’t have an accountability buddy. And the goal was So. Far. Away. 100 days? That’s more than a month! (Joking. I know there are 40 days in a month.) Also, I didn’t set myself up with a plan/schedule. I left myself too open-ended, so when I went to do my code for the day, I didn’t have an assignment I knew I was supposed to do.
3. What Are Your Long Term Goals?
Your goal is to code more, but what does that look like for you? Write down what you hope to accomplish in 6-12 months (we’ll call that long-term for our purposes). - Saron
My goals for the next 6-12 months are to learn a new language, and to learn it more than just a little bit.
In the second half of 2017, I told myself that if I was going to learn Ruby, I was going to do it 100%. I told myself that I was only allowed to code in Ruby unless forced to do otherwise at gunpoint. (I had a few days where I pretended to be at gunpoint and dove deep into Bash, but I did pretty well for the most part at sticking to that requirement). It totally paid off! I now feel a lot more confident in Ruby, and it’s currently the language I would reach for on a new problem right now. I was able to do more than just scratch the surface.
I’m still waffling on which language it’s going to be next, but I’ve got it narrowed down to Ruby (some more), Go, or Crystal. I want to limit myself to one of those languages again for at least 6 months, if not the whole of 2018.
4. What Are Your Short Term Goals?
Since this challenge is 5 weeks long, let’s focus on goals you can achieve in that timeframe. What do you hope to accomplish by the end of this challenge? How does it relate to your long-term goals in Question 4? - Saron
I’d like to pick one (or two… or three, tops, I promise!) side projects to work on and get to a reasonable milestone over the next five weeks. They would be written in one of the languages mentioned above. After answering all of the other questions above, it’s pretty clear that in order to meet this goal, I’ll have to do the following:
- Choose a project with a hard, clear milestone in view
- Break that milestone up into smaller, achieveable assignments. It’s not a five-week goal — it’s 10 three-day goals! Bonus points if I use a Gantt chart.
- Schedule my other time accordingly.
- Do all of this planning up front.
- Be disciplined about documenting my process along the way so I remember where I am and what I need to do next. This will also help me (and everybody else!) keep me accountable.
Wish me luck!
Cover Image Credit: Lisa LalamaAuthor: Ryan Palo | Tags: codenewbie reflection | Buy me a coffee