Finally Conquering #100DaysOfCode

I just completed #100DaysOfCode challenge. This was my third and only complete attempt at coding. Even before that, I have picked up coding on and off so I want to break down what clicked this time, why I think I stumbled in the past and what my hopes and goals are for my coding future.

Your story may be completely different than mine but I hope it let's you know you can fail repeatedly and still get back on track. We could go back even further than 2017 but I think this part of my journey is the most interesting because by that time I knew I wanted to actually land a role in software development.

100FailsOfCode_medium.png

A Strong Start

I was forecasting sales(for supply chain people I was a Demand Planner). It was a great role for me because I needed presentation skills. It also made me take small observations I made about data and weave them into an overall story. Both of these skills will help me in any role I come across, but this is where I discovered that I could do something practical with code(I knew other people could but I was not sure I could do something beyond a homework assignment). We calculated forecast accuracy in a monstrous Excel spreadsheet that involved 30+ minutes of copy paste action.

My boss approached me about making some improvements, the biggest one was she wanted to see a month over month trend. With the size of the workbook I knew that Excel was not going to be the best tool for the job. At that time I had taken Google's free python course and thought I could use Python to make forecast accuracy better. I thought my boss might not go for it and I wasn't 100% sure I could pull it off so I didn't really explain the details but took on the project.

I learned a lot along the way and produced what was probably subpar yet functional code. The end product was a GUI where you could drag and drop the input files that we used to copy and paste and then in about 10 minutes you got csv output with the result. The final part was pasting the data into an Excel spreadsheet for the department to look at(I'm not completely down on Excel! Right tool, right job).

What Didn't Work(for Me)

In addition to the win of getting a working product it really set off a light bulb that this was something that I really enjoyed and would like to do as a career. After that spark my awesome shiny progress felt like a slog. I found someone at work that I could bounce ideas off of but it was ABAP(SAP programming language) so I had to set up and maintain an SAP test environment on my laptop and it didn't really resonate with me. So it didn't really take off.

I also took CS courses using my work's tuition reimbursement. I did take a few fundamental courses and found them valuable. At the same time, with 2 kids and a full-time job I felt I could only fit in one course per semester. It just felt like I was not moving fast enough and was taking too much time away from my family. Now, let's get into the 100 Days of Code attempts. I had a little more luck here and actually started to learn a lot. For this leg of my journey I started learning web dev and I was using Mozilla's course. Here I learned basic html, and even filed a trivial GitHub issue related to a course exercise. I didn't really have a firm idea of what I expected the outcome to be(getting a job, freelancing, etc.). As a result, it was too easy to take a long break or lull myself into complacency.

Why It Didn't Work

Before I get into how excited I was about finishing #100DaysOfCode I want to summarize what didn't work for me. Hopefully you can spot these warning signs in case they apply to your situation. With that said, some of this may be just the quirks of my personality and situation so just because I'm listing something doesn't mean it's a red flag in your case!

  1. I didn't have a reason to code. Did I want to be an indie game dev, be a web freelancer, full time dev working on machine learning, you get the point. I could not have told you because I had no vision beyond I wanted to switch careers. Money definitely can be and is a reason to want to code, but you still have to define the path for what niche you will learn to get that money!

  2. This is similar to #1 but I didn't have a time frame. How long you should give yourself is another question because I definitely don't think you can start from scratch and get interviews in a month. However, knowing myself I need to have a rough plan so I can keep myself on track.

  3. I put myself in tutorial hell. Even starting out my most recent attempt I initially just planned on earning a certificate and then flinging out applications. Each time I made a new push to learn how to code I was filling my head with all of this information which is a good start. I didn't follow that up with practice outside of the coursework/tutorials. A project using the stack your learning will make you feel more confident and make you research how to code in your language even more. It also will give you something to show off to your dev friends and potential employers.

Running Across the Finish Line

This time I addressed all of the things that set me back in previous attempts. I 1) picked my niche - Android development, 2) set a time frame - get an entry level dev job by the end of 2022, and 3) included side projects outside of my coursework. I was initially attracted to Android although I liked web dev from Twitter it seemed like it was less of a focus for new developers. This is pretty unscientific but my thought is that with less people publicly displaying interest I might have less competition(even though there are less overall open Android dev roles). Please correct me if I'm wrong, though!

Another thing that attracted me to mobile development is that like front end web development you have a visual result that you can go back to. I love Python but purely doing back end work or learning data science wasn't as exciting of a proposition for me starting out. I may branch out in the future but at least I decided on one small slice of dev that can pave the way for finding a job.

My initial goal/time frame is finding a job about 1.5 years after I started to learn Android/Kotlin(end of 2022). I might get a job sooner or depending on a number of factors it might be later, but at least I can look at what my progress is as I'm going. This is huge for me in combating complacency. Every time I get a thought of "my current situation isn't that bad so what's the rush" I have the commitment I made repeatedly on twitter, now in this post and to myself to keep me straight.

At the time I'm writing this post I completed one small project and am working on another. The completed one is a unit converter. The outcome may be a simple app but for me I learned so much about Kotlin and designing/coding an Android app. The in progress app is a calculator which is also helping me Google new concepts and really cement topics I've covered through coursework.

I will say though that you need to strike a balance here. If you are not following any type of tutorial for fundamental concepts and then trying to build a Facebook clone or reimplement the Linux kernel you won't get very far. At the other extreme is following a course or tutorial and not thinking about how you could apply the knowledge you gain in a real world product, app, or website. When you learn new material, think of how you could make a small demo project and when you get stuck you can always look for a section of your course that could potentially get you unstuck.

Get Social

A major benefit of learning and sharing your experience is the friends and connections you will make along the way. I can only speak for Twitter here. If you are not already active on a platform it will take at least weeks of posting into the void. Through a combination of sharing your own posts and commenting on others’ posts you enjoy you will start to build connections.

It was extremely awkward at first but if you want to talk to someone and ask a question, sending them a direct message is a great idea. Just remember to have a specific ask or topic in mind(don't just say "hi"), be polite and remember they don't owe you a response. Most people are super friendly and you don't have anything to lose!

You will be surprised at how willing to help people are. Since reaching out I have had a 30 minute conversation with a senior developer about how to land my first job in tech. I also had another developer spend 45 minutes doing a mock interview and giving me feedback on how to improve. I put the numbers in there because I think it's amazing these people were kind enough to help someone they had only met online.

If you are going to start coding, please do not skimp on this. I would say that even the most disciplined person(I am not that person) has a better chance of success when they have others they can lean on.

Is #100DaysOfCode Right for Me?

Maybe after reading this you are wondering if learning how to code may be in your future. If you are at all curious I suggest you give it a try. There is absolutely no cost to failing. I have seen many amazing people decide it's not right for them, but at least they know that software development isn't for them or they don't like a particular stack.

Also, you don't have to have a goal to land a full time job or change careers. Maybe you want to make a game on Steam as a side endeavor, freelance or do something else entirely. Everyone's journey is different!

Thank you for reading and I wish many hundreds of days learning how to code and helping others do the same!