Monday, February 10, 2014

My Journey to Learn How to Code - Part 1

by Teri Charles

I’ve set a big goal for myself this year. This is the year I’m going to learn how to code.

You see, I’m always looking for ways to be a better Software Tester. That can be through reading books on testing, trainings, participating in Weekend Testing groups, running the local Boulder QA Meetup, reading other Tester’s blogs, writing about testing in my own blog, belonging to different testing organizations, going to testing conferences, mentoring, and practicing testing.

But I want to take the learning of my craft to an entirely different level. I want to go deeper. And for me, that’s learning how to code. The more I know about the code I’m testing, the better Tester I will be. I can ask better questions, I can understand more deeply what’s going on with the code, it will help with test automation, help with API testing, and many other things. And it will open my mind to more possibilities of where my testing can go.

We all have different gifts and coding has never been one of mine, but it’s not for the lack of trying. For years, I’ve tried many times, but it’s usually resulted in throwing the programming book across the room!

But something happened to me this past year. I realized I was tired at failing at this endeavor. But most importantly, I was tired of ‘wishing’ I knew how to code. Just wishing for it was bringing me no where closer to doing it. And I made a big decision that I either needed have a breakthrough in learning how to code this year…or just stop thinking about it and move on.

So after all of my other failed attempts, I needed to come up with a plan. I’m a Tester! Of course I had to come up with a plan!

The first thing I decided was I needed to have a specific project. It needed to be something I cared about that would help me learn and that as I was learning, I could continue to build off of. Every other time I attempted to learn how to code, I didn’t use it right away, so of course I would lose it. I also knew it needed to be more than "I'm going to learn a programming language". That feels very daunting, very big, and very ambiguous to me. I've tried this before and it wasn't working. So I thought about what I mostly test, and that's web applications. So what better to focus on than have it be something I was already familiar with and worked on everyday.

I also wanted to make it a small enough project that I knew it was realistic that I would be able to accomplish it sooner rather than later. So, here’s what I came up with.

My master plan is to learn how to build my own website. And not just any website, but a website on Software Testing resources to help other Testers, something near and dear to my heart that you'll find in a lot of posts in my blog.
-I will first learn HTML/CSS to create the website.
-I will then learn JavaScript to add something (that can be a small ‘something’) to the website. I don’t know what that is yet, but I will.
-I will then begin to learn Python to add something else to the website (again, it can be a little ‘something’).
-Bonus: I want to also learn how to use things like Git/GitHub and Bootstrap during this process.

1. HTML/CSS:
-I’m doing this through a local group, GDIBoulder. How lucky am I that a group such as this is in my own backyard! Their mission is to help people learn how to code. Perfect for me! So far I’ve taken their Beginning HTML/CSS class and their Intermediate HTML/CSS class. GDI Boulder also has monthly Code and Coffee's where I can ask for help on things I'm learning and help on my website. I can't say enough good things about this group. They've changed my life!
-I am also doing this through a group called Skillcrush. Another wonderful group that I was lucky enough to hear about. I am currently taking their 6 week online class on HTML/CSS. More to come on this in a future post.

2. JavaScript:
-I’ve taken GDIBoulder’s JavaScript class. I’ll be honest, I struggled in this class. So, my plan is to take it again the next time GDIBoulder offers it. And if I have to, I’ll take it again.
-I will also be taking Skillcrush’s next 3 week JavaScript and API online class as soon as it's offered.

3. Python:
-Okay, this is a big one for me. I actually love learning HTML/CSS. Maybe because I like the ‘artistry’ of it. But Python scares me a bit. Heck, programming scares me a lot! But I’ve talked to different people I trust and respect, and Python seems to be a language that they feel I can learn. Plus, it’s something I will be able to use for test automation in the future.
-I’ve taken GDIBoulder’s Python class. And yes, it was tough for me. But the good news is, I didn’t throw anything across the room! I stuck with the class and learned some things. But I know me, and I have to learn something like this by actually using it. So as soon as I’m in a more solid place with my HTML, CSS, and JavaScript, I will tackle Python more thoroughly and slay that dragon sometime this year! Then I will figure out a way to incorporate it into my website. But I do have bigger plans for Python other than my website, such as test automation. But more on that in the future as it’s actually happening!

So, that’s it in a very high-level and simplistic nutshell. I don’t know where this will take me, but I am determined I’m not going to give up. I can’t explain it, but I know this is something I must do for me. I won’t lie, it’s a big challenge for me. I think it’s pretty obvious in this post, but coding doesn’t come easy for me (like for a lot of people!). What I’m planning to do won’t be easy, but as I said before…it won’t be for the lack of trying! And if you read a bit of yourself through this post, I hope my journey inspires you! Wish me luck because I sure wish you luck as well!