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.

-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!


  1. Good luck... but I hate to be 'that guy' who says that HTML/CSS is not 'code' and is a markup language

    I do understand the problem though - coding a 'hello world' app or trying to do a Roman Numerals kata is not that interesting. Are there things in your job - or life - that you wish you could automate and that you could use as a basis for learning to code?

    Can you explain why you found the javascript and python courses that you did hard? Do you need to take a step back and start with the first principles of programming?

    I'll be following along to see how you get on and hope I didn't dampen your enthusiasm

  2. Hi Phil,

    Thanks for your comment and you did not dampen my enthusiasm one bit! I agree with what you're saying about HTML/CSS. I'm seeing this as a journey. And knowing how hard coding has always been for me, my journey is to start with something I actually have found that I enjoy, which is HTML/CSS. It's my "baby step" to work my way to JavaScript and Python. It's my building blocks, so to speak. And funny you mention "principles of programming". That too is going to be part of this journey of mine, which you can look forward to reading about in one of my future posts! :-)



  3. A bit similar to what I'm going through. I tried all three and left in the middle. Finally i switched to security testing so that i can fall in love with what is happening inside the box. Hope i too will reach to the finishing line and keep my enthusiasm up. My best wishes for your journey. - jayshree

    1. Thanks, Jayshree. I really appreciate your wishes. It's not always easy to reach that finish line so I send you encouragement as well!


  4. For the purposes of learning web development, does it matter if HTML/CSS is a markup language or statically compiled or interpreted? No, it doesn't. It only matters that you stick with learning and develop that patience mechanism so important for building software. (It makes me sad that the first comment on your beautiful post was such a nitpick!)

    Having done both python and may want to look around at your community and at who will be mentoring you before you make a final decision on ruby or python. In San Francisco, I've found more of a community around ruby and rails. As a bonus for rails, it's always nice to go back to that railsbridge curriculum in a pinch! However, there might be more python/django folks surrounding you who are ready to help and I always hear pretty awesome things about Pyladies.

    Good luck with your journey. It sounds like there are fun challenges ahead!

    1. I can't thank you enough for your kind words, Marlena. This is a journey I've been on off and on for years, but never succeeding at. But something feels different this time. I really feel that I'll have a breakthrough this time. And it's funny you mention Ruby. It's also something I'm interested in learning at some point. I do have a nice support system about Python locally, which is nice.

      Thanks again. All that you said helps a lot!


  5. Good for you Teri. As you know this is a very similar struggle for me. I always start... then stop. Like you I think I'm lacking the 'project'.

    I decided very recently to build a new site for myself, and so HTML/CSS is also on the agenda for me. I like that I can make a very simple and quick change to it and have an amazing result on the website. I know this would also be the case for coding languages, but for whatever reason it's been easier for me to grasp.

    Code Academy HTML course has been pretty good so far, so perhaps check that out also.

    Hey, as long as you're learning and the passion is there!

    You go girl!

    1. Hi David! Yes, we have had very similar journeys around this, haven't we? And same for me, so much starting/stopping. Maybe we can do it this time! :-) And I'm sending encouragement right back at you!



  6. hey,

    if you get round to doing some python, check out my website

    it should (hopefully) help. :)

    1. Hi Steven,

      Thank you so much for sending me your link because just taking a quick look...I'm liking what I see! I will be sure to go back to it!