Spinning My Wheels

For as much time as I spent working on my Python chops, I didn’t feel like I was getting a deeper understanding of OOP and its principles. I’ve since switched to Ruby, and it’s much better–I think? We’ll see. When I did preliminary research prior to the language change, the creator of Ruby indicated that he wanted OOP to be built-in, unlike Python, where it feels like an afterthought. I’m not going to pretend like I know what I’m talking about, but I do see more emphasis on objects and how they can be used all day, e’eryday.

I’m still working on various things related to JavaScript. JavaScript and I still aren’t friends, because it feels like it’s the “Beyond” section of Bed, Bath, and Beyond–it’s not strictly typed, but there are types, and things change from out beneath me, and you can do everything, but you can’t really outside these given rules, and goodness, it’s still taking me a lot of time to understand things that I’ve been working on for what feels like a long time. In addition to basic JavaScript, I’ve been working a bunch on Angular.js and jQuery. Free Code Camp is also going to cover Node.js and Express.js, so those are on the horizon.

Am I getting better at anything at all? It honestly doesn’t feel like it, and I’m glad that FCC makes you do projects, otherwise I would really have nothing at all to show for the work I’ve put in over the past year and a half or so. I began this development journey back in spring 2014, and wow, it’s been a lot longer than I thought and I’m still not where I want to be. Will I ever get there? I don’t know. I got a Skillcrush handout, and the advice was to start before you’re ready.

So I will. I hope to land two jobs, however small, by the end of the year. More would be better, but I just need to begin somewhere, and like the Irish say, well-begun is half done.

A Quick Update

I’m enjoying Free Code Camp. Due to my prior work in (attempting) to learn web dev, I completed 111 Waypoints (in keeping with the camp theme, exercises are called Waypoints) before slowing down. The Waypoints are now challenging me, and though I think my code could use some work, I am being challenged and am learning many new things. Yesterday, I completed five Waypoints, which covered objects and their properties and arrays.

I have yet to touch The Odin Project, and it remains to be seen if I ever will. I might extract the Ruby portions and complete those, but I’d really rather spend my time on Python.

Progress!

I was getting to the point where I wasn’t sure where to go next. I surveyed the vast landscape called “learning to program,” and the amount of knowledge that I didn’t have was absolutely daunting.

Enter Free Code Camp and The Odin Project. These are full FREE programs for learning.

Free Code Camp is modeled after the various dev bootcamps that are springing up everywhere. You spend about 800 hours learning and 800 hours working on projects that benefit nonprofit organizations. At the end, you’ll have learned, created a portfolio to show future employers, and done good in the world.

That is pretty nifty.

The Odin Project is an open-source curriculum that claims to be a “proven path to successfully learn web development so you don’t have to wonder if you’re doing the right stuff or wasting your time” [emphasis mine].

The fact that I haven’t found either until now makes me question my ability to use Google.

BUT! It doesn’t matter now, because I have found them, and that is exciting to me, especially given how I was feeling as I wrote my last blog post.

Yes, I realize I wrote about a specific incident, but I would be lying if I said a good part of that uncertainty was because I put my own curriculum together (the blind leading the blind, anyone?). I wasn’t sure if I was learning the right thing at the right time.

I’ve been working through Free Code Camp for the past two days due to its emphasis on JavaScript. I’ve heard good things about The Odin Project, and the emphasis of that program is on Ruby. I don’t know if I should even start it, since I think it’s better to do one thing well, rather than doing two things haphazardly. I may give it a shot in the next couple of days.

I’m really excited.

When you have no idea where to start

I just completed the Object-Oriented JavaScript course at Udacity, and I decided to start the final project this afternoon. At first, I had no idea how to start, so I just dove in, because that usually works. I write a few lines, Google my questions, write some more, lather, rinse, and repeat, and after some time, I have something that works.

This time around, I just had no clue and no amount of Googling was helping me. It turns out I need to take the HTML5 Canvas course to be able to complete the project.

Oh. That explains why I can’t even ask the questions I need to do what I need to do.

Tired.

I’m so, so, so tired, and yet, I’m trying to show up every day.

To make a long story short, I’m deepening my skills in JavaScript using How to Learn JavaScript Properly, I’m working through the final few sections of Think Python, and I do projects in Codecademy to keep my syntax knowledge fresh. I’ve written one correct program for Project Euler, and I wrote another one that brought my computer to its knees, memory-wise. Udacity has taken a backseat, but I need to keep plugging along. Though the classes aren’t the best, I find that the exposure I get to various topics is invaluable.

Things got a bit hard; the time I have to study is short, the urgent-but-not-import distractions pop up ever more frequently, the things I’m learning are stretching my mind to the point where it is painful, and I just want to quit and be content with where I am now, but I’m still going to show up every day anyway.

I hope this works out.

What I Did, Volume 6

What I Did is a series that documents software development-related work I’ve done the previous week. As the old adage goes, that which is measured gets done, and there’s nothing like broadcasting to the world that you’ve done nothing to motivate the self, right?

This week felt weird. I don’t know how to describe it, but it felt like I did a lot of work with not a lot to show for it.

  • I spent a lot of time reading and taking notes on Think Python, not because I can’t write Python at all, but because of the theory behind the Python. I thought I would be working through this faster than I actually am, and at the end of the week, I had only made it through chapter 3.
  • I finished Udacity’s Responsive Web Design Fundamentals, which was a whirlwind tour of all things responsive (obviously). It was nice to see all the things that exist for making sites pretty and responsive, but I don’t feel like I got much out of the class that I could use (ten miles wide, less than an inch deep), but…
  • I began Udacity’s Responsive Images course, which is making me feel better about my inability to *do* anything after the overview course mentioned above. I’ve begun working with Grunt to automate image alterations, and I’ve installed RIOT and ImageMagick (which I will be learning how to use soon enough).

What’s next?

What I Did, Volume 4

What I Did is a series that documents software development-related work I’ve done the previous week. As the old adage goes, that which is measured gets done, and there’s nothing like broadcasting to the world that you’ve done nothing to motivate the self, right?

I am beyond thankful that this is a three-day weekend.

  • You know that SQL-to-RTF script I was doing and how I said I was done last week? I lied. It spilled over into the weekend, and it is currently in QA. I hope there will be no more changes and moves forward in the QA and delivery process.
  • On Udacity, I started Programming Foundations with Python. It’s a lower-level course, but it isn’t for complete beginners. I know my syntax, but I don’t feel comfortable with my grasp (or lack thereof) of object-oriented programming. This class focuses on that.

I meant to look up design ideas for this blog and the webpage that will serve as my portfolio, but I didn’t get around to that. That’s going on this week’s to-do list, along with my OOP course.

What I Did, Volume 3

What I Did is a series that documents software development-related work I’ve done the previous week. As the old adage goes, that which is measured gets done, and there’s nothing like broadcasting to the world that you’ve done nothing to motivate the self, right?

So, I’ve already broken my commitment for twice-weekly updates, so this WID post will count for both of my posts this week. My blog, my rules, right?

Anyway, what have I done since I last wrote to y’all?

  • I finished the SQL-to-RTF coding for a work project. This assignment is one that never ends, but the hard part is done. Some day, it will stop coming back from QA for design-related elements that I have little control over due to a third-party widget we use.
  • I did a bunch of stuff on Udacity!
    • I finished How to Use Git and GitHub. Then, I promptly forgot about version control and regretted it immediately when I wanted to roll back some a lot of changes I’d made for an assignment for…
    • Intro to HTML and CSS. I started and finished this course, and in addition to learning the basics of boxification, HTML, CSS, and Bootstrap, I produced my first ever page from a provided mock-up (and according to the bots, I’m only off from the original by 0.75%):

orange-udacity-mug

What’s next? Python, Python, and more Python.

Why I love MOOCs for Learning How to Program

I consider the beginning of my software development education to be Harvard’s CS50, which I took via the edX platform. Since then, I’ve tried many other ways of learning, but this post is about why I love MOOCs.

1. They are free.
Sure, you could pay for verification certificates, proof of specialization, and whatnot, but in the end, everything you need is available for free. You get access to the lectures, the assignments, the grading, and the community message boards, which are helpful when you are stuck. Now, free isn’t always good, but this is one of those areas where it is almost unbelievable how good the quality is for how much you are(n’t) paying.

2. You don’t have to decide what you need to learn.
This is great, because, if you’re like me, you probably don’t know enough to know what you need to know (try saying that five times fast). The hardest part of doing something is starting; the second hardest part is to keep going. Having a set schedule and a previously-set list of topics to cover/things to do eliminates any possible decision paralysis (and therefore one fewer thing that gets in the way of completion).

3. You get tools that help you pace yourself.
If you take the course live, you get a schedule that helps you keep on keeping on. If you’re not, you still get a schedule that can easily be tailored based on whenever you started the course. Again, this eliminates a decision you have to make and makes it more likely that you’ll keep going.

4. You get automatic grading.
This isn’t perfect. The automatic graders can only check for correctness, and there are times when the grader can’t figure out why your code did what it did–it only knows that you did something terrible (infinite loop, anyone?). Regardless, the feedback is still helpful, even if it can’t tell you that, really, did you need ten lines of code when two will do?

5. You’re part of a community if you choose.
Because everyone participating in the forum/message board/group is working through the same material you are, you have an easy place to go for questions, comments, and concerns. I’ve found my interactions in these places to be pleasant and helpful.

6. There are MOOCs on so many topics that you’re bound to find one that fits your needs and desires.
From the absolute beginner to the seasoned professional looking for continuing education, there are classes taught be experts on almost any topic you can think of. It seems that the major providers of MOOCs (edX, Coursera, etc.) are STEM heavy, but many are expanding into the humanities and the social sciences.

With all that said, MOOCs aren’t the end all/be all of education. I think the number one pitfall for many people is that they require a great deal of self-discipline. I’ve heard from many around me that they don’t have the discipline for online courses (as opposed to the traditional classroom learning model). If that’s the case for you, MOOCs are even worse, since you don’t even have the accountability of a professor who you see a couple of times over the course of the semester. These are definitely for people who are capable of self-managing their own education.

What I Did, Volume 2

What I Did is a series that documents software development-related work I’ve done the previous week. As the old adage goes, that which is measured gets done, and there’s nothing like broadcasting to the world that you’ve done nothing to motivate the self, right?

  • I’m working on creating an interface that allows users to generate customized letters populated with a specific patient’s plan of care information. I need to return the relevant data from the SQL database, convert the output table to RTF, and populate it into our software’s documents editor. Last week, I converted a legacy SQL-to-RTF script from VBA to VB.NET, so this week, I focused on writing the SQL query that returns the necessary data.
  • I made some progress on Udacity’s How to Use Git and GitHub course. At the beginning of the week, I was just under halfway through lesson 3. At the end of the week, I am just over halfway through said lesson. 😦

Because of the time I spent on my SQL-to-RTF scripts and related queries (oh, and the go-live for a pilot program that I found out about an hour and forty minutes before it occurred) resulted in three days where I worked overtime, I didn’t make as much progress as I had hoped. I didn’t finish the course on version control, I didn’t even touch the intro on HTML/CSS, let alone make it through the whole course, and I haven’t seen Python in about a week and a half.

Here’s hoping this week treats my self-education plans well. The plans: