logoThread · house

If you are just starting to learn programming

By Dave
December 10, 2019

Hey Chris.

I wanted to talk a little bit about learning to program and what my path has been like up to this point.

So we only recently started this blog, but I have been dabbling with programming for years now. I’ve worked hard, but I have never really committed to it. I am about to start a bootcamp with Tech Elevator, and I am already taking this a lot more seriously as my end date at my current job gets closer.

I hope that these observations can help someone else who is just starting to learn to program. I know writing them down will help me keep them in mind as I move forward.

I have been trying to learn programming, but It’s never been a full time endevor for me, which is fine, but the way I spend my time while I am actively working on learning is what I really want to address.

Like many, I started by familiarizing myself with HTML and CSS, eventually moving into some Javascript. After that I picked up more JS, including some Node and React, some Ruby, some Python, some C#, some Java, a bit of SQL, I even played with Unity briefly, and used some Scratch for work. I’ve also watched a ton of videos about related topics, and I’ve used a lot of online tools to learn more, both tutorials and sights with exercises.

I have been all over the place. I kept coming back to JS, but I kept changing languages. I’ve learned a lot, but I would have learnt more if I got really deep into JS first. In short: I would have made more headway if I had been more focused. Instead of learning the differences between these languages, I mostly struggled with syntax, because I hadn’t gotten deep enough to understand the differences yet when I changed. I still have to refresh my memory on the syntax when I switch languages, but now that I am just abut ready to learn more complex topics in JS, I am finally getting to the level where the differences make sense.

  1. So take-away #1: Starting with HTML and CSS and going straight into JS while you get familiar with the landscape is a good plan. If I could do it over, I would have barely touched other languages, and would have achieved more depth with JS and moved into related frameworks, libraries, and plugins for JS like Node and React.

I have also bounced around and used a bunch of different tools. I have been on udacity, udemy, freecodecamp, code dot org, learn-js dot org, youtube, team tree house, stack skills, Pluralsight, the Firehose Project (just their free pre-bootcamp), and who knows where else. I have started a dozen free open courseware courses through various universities, watched the first few videos of a bunch of lecture series, and listened to random podcasts. It’s hard to say which tool is the best, they all had some pros and cons, and honestly they were all pretty good, but by being switching around I spent more time lerning and relearning basic topics and took much longer to achieve depth.

  1. Similar to number one: If you want depth, get all the way through a big chunk on one tool before starting a bunch of other tools. Material is often presented in small enough units that it won’t take forever, but if you just take the first half of a dozen courses you end up going over the same material repetedly. Don’t sacrafie advancing to more challenging material. It is very rewarding.

On these sites, I have done a lot of exercises and tutorial based projects. These have been very useful, and I am glad I did exercises and some tutorials, but:

  1. the most useful thing I could have been doing is building my own projects, and reaching out for help, or digging through message boards, or the documentation when I get stuck. I felt like it was too early, because I hadn’t learned the set up steps very well as much as I had learned to construct loops and work with arrays. But I learned those things from exercises, and I should have been learning how to set up projects by doing it. There are tons of resources out there. As a beginner you don’t have to hide in an online classroom with a stream of ready made exercises.

Speaking of documentation:

  1. I should have spent more time learning to read documentation and find answers myself. Watching a video where they tell you everything you need to know and then doing an excersize that only involves what you just discussed is more comfortable, but if your goal is to grow you have to learn how to use the resources you’ll actually use in your craft, and if you are making something really good, and you want it to be yours, you don’t have to reinvent everything, but it’s not practical to be dependent on tutorials.
  2. In addition to learning more, making your own projects has a second less obvious benefit: You get to show off to yourself and whoever else, what you have built. You get a collection of your own code that you understand, because you have gone through it step by step or written it yourself. After all of the time I have spent on this endevor, I am proud of the understanding, insight, and skills I have gained, but it would be nice if I had more to show for it, like a portfolio of my own work.
  3. I would have spent more time using the kinds of tools people in the industry use, and being more social in productive ways. I have used e-mail, google docs, chrome developer tools, and Brackets, Sublime, Atom, VSStudio, etc. I wish I had used git before this project. I don’t even know what tools I’m not aware of yet. I still have never really used discord or slack.
  4. I also haven’t asked or answered questions on forums. Many sites I have spent a bunch of time using, like Team Tree House, have built in community forums and work hard to create a learning environment. I haven’t taken advantage. I haven’t spent a lot of time reaching out to people. It’s one thing to watch tutorials, but approaching real people when you don’t feel like you know enough yet is intimidating. But there really are places that are made for you to do this! I have been lucky to have good friends who were willing to mentor me as I learned, but I should be reaching out into the community more.

Less of a takeaway, but in closing, I am excited about this Blog. It’s great to have a collaborative project that uses tools I need to learn, like git. It’s great to collaborate with someone really knowledgable like Chris. It’s great to be working on a project to learn parts of programming where I can also coincidentally write about those experiences. And it’s nice to have something to show for all my work.

If you are just starting out, I wish you good luck. Find mentors, find a community, make projects, and focus on something (consider Javascript, for real) until you get some good depth. It’s a pretty rewarding endevor. I think joining a bootcamp is a good option, but I’ll be able to tell you more about that once I’ve started and finished mine.