Programming Thoughts from a Newbie

Since I moved to Code-mania (CA) to start my graduate education, I was shocked and also amazed by how many people can code and program in CA. For a person who came from a business background and is not tech savvy, this transfer can be hard at the starting point. Though I have experienced some formal education from university, most of the basic programming skills were self-taught through online tutorials. So here I want to introduce some useful concepts and resource for those beginners.

Programming Concepts

I have learnt Python mainly by myself through online tutorials. Sometimes learning from online tutorials always give you the same stuff: data type, indexing, and using libraries. Most of the time when you need to write your own functions or methods, understanding some useful libraries will get you some help but you still need to understand the big picture. Per my experience, I think programming language, in general, have 3 major components you need to understand: Value assignment, Logic, and Loops(or sometime called iterations).

Value assignment can be useful to avoid redundant calculation process in your script. If you found yourself writing the similar code over and over again, you need to think of assign this calculation, or this value, to a variable that can be called later. This will make your code much clearer for future references.

Logic is how programming language make test to return True/False. Understanding logic is essential because it is often used to differentiate cases. In python, the logic test is represented as the if statement. Most programming language enable us to write complicated nested logic tests structure in order to get the end result. It is always important to assess the entire case to make sure nothing is left out—-which is when most errors happen.

Loops or iterations, are the fundamental piece why people use computers to calculate instead of human brain(or hands). Human can perform complex calculation tasks, for sure. But performing simple calculations over and over again is somewhat counter-intuitive to do (and boring). As the calculation load increases, human start to make errors. Computers, on the other hand, cannot think themselves but calculate very accurately. Some may argue that computers these days are “smart”. We make computers smart by telling them what to do and how to do. Loops are how we make computers doing things repetitively, and often the places evaluation of programming efficiency is evaluated based upon.

Libraries/packages that were pre-built by others can be helpful too. But nothing should be built upon a pile of sand. Knowing the most fundamental will also help you understand libraries and packages faster.

Learning Resources

Online Courses

Three main online courses I have experienced with are: Coursera, Edx, Udacity. They often offer some free content and some paid features. For Coursera, most classes are free but if you want access to quiz and assignment, you will need to pay class by class, or a bundle of classes. Udacity uses subscription model, meaning you will continue to pay a monthly fee until you finish what you want to finish. Coursera and Edx content are curricular-focused. You will see multiple universities and colleges name on their pages, whereas Udacity is industry focused. Partners on Udacity are often companies.

Personally I started with Coursera, based on my friends’ recommendations. However, I soon found out it is not the optimal learning mode for me. Curricular-based learning is more time-consuming than I thought. And being a full-time student and part-time intern already, I could not find time to finish the content. In addition, some classes, especially programming ones, are designed for computer science major students. Therefore, the classes sometimes assume you know basics of computer science or engineer to move forward. This could be hard for some of the newbies just trying to figure out how to write python script.

Then I switched to Udacity, which is more industry-focused and newbie friendly. Most of its courses are filled with small quiz and test to make sure you actually understand the concept to move forward. The class did not give you much in-depth thinking (or it is because I have not taken some more advanced classes yet) but prepare you just enough to be able to start working.

Choosing the right learning mode is essential. When you decided to take an online class, you need to think how much time you can contribute on a daily basis. Set up a calendar with some flexibility and start working on it!

Learning Materials

Practices make perfections. This is the golden rule for almost any fields in life, same with programming. As for python programming for beginners, I recommend Learn Python the Hard Way. This book has many quiz to practice with so you can get familiar with writing in python. Some exercises are available online.

Moving forward when you need helpful thinking in terms of problem solving, I recommend Programming Pearls. It was written many years ago (when it first came out), but many thoughts in this book will guide you to the right direction, prevent you from over-thinking and over-coding.


I wish I have gave useful tips on how to start learning programming.


4 thoughts on “Programming Thoughts from a Newbie

  1. Thanks for the recommendation to read “Programming Pearls” – it looks like it will be a really helpful addition to my growing library of resources for programming πŸ˜€


  2. I like that your recommendations in Python. I was always a Java programmer but truthfully, once I learned Python, I almost always program with Python now. I can get just as much done in Python that I can in Java with usally a lot less effort.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s