As a new programmer who don’t have any programming background, I have a little hard time to follow-up sometime. However, as I go to class, reading books, doing homework, watching video…working on so many things in study. I start finding some study tips for myself.
>Why I write this blog to share?
I find it helpful for myself to keep moving on, and I hope it can help some other people who have the same problems I run into.
>What is programming?
As Chris Pine said in the book <<Learn to Program>>, programming is telling you computer how to do something.
>How to start programming when we are a beginner?
Chris Pine said “Large task must be broken up into smaller tasks, which must be broken up into still smaller tasks, down until you get to the most basic tasks that you don’t have to describe–the task your computer already knows how to do.” Such as we feel sick, we go see the doctor, and the doctor need to find out what symptoms we have to be able to find out what type of sickness, which type of medicine we should take, and how should we treat them to get better. You can not just go to the doctor say “I’m sick, give me some medicine to feel better.” with no explanation what is going on of your body. Just as programming, you need to tell the computer step by step what do you want it to do like holding a babe’s hand teach him/her how to walk slowly.
>So, a program is like a child/babe?
Yes, “A program is not built; it is grown” from Chris Pine. For me, learn to programming is like raising a child/babe. We need to be patient, spading time to understand their language, step by step teaching what you have, and see what is coming out from them.
>What is the best way to study programming?
Everybody have their different way, you need to find out which is the best way for you to study. Here’s my way to study: to understand is better than just follow along and doing the same thing everybody’s doing without understand what is going on. To tell your computer how to do something, you must use a programming language (Chris Pine). However, if you don’t even understand this language, how can your computer understand what output do you want?
>What if I don’t understand what to do, but I’m trying my best to following in class?
Use your resources, there are may resources around you!
>What resources do we have?
1. Really popular one– Google! Google know everything, and it’s on-line for everybody. (PS, here’s a funny video for you “If Google was a Guy: http://www.youtube.com/watch?v=YuOBzWF0Aws)
2. If you are in school, don’t ever forget your professor! They are here to help us, and most of them are happy when we go to them. We can always email them, asking questions in class, even make appointment with them to help us out one-on-one.
3. A really regular chat for programming field, HipChat.
4. A hot spot for gits and blogs, GitHup.
5. A professional web source, StackOverflow.
6. Of cause it would be super useful if you keep posting solution on your own blog, such as my professor Jason Noble can always find it on his own blog. If you don’t have enough on your own blog, I’ll suggest you to go find it from my professor Jason Noble’s blog jasonnoble.org
There are more resources out there, but these are the resources I found useful for me so far. Hope this will help 😉
>Is it cheating when we using resource?
I don’t think so. In my understand, programming is like an open book exam. As long as you know how to use your resource, you are the smart one here.
>What attitude should we have when we feel smart?
Don’t be like “I feel that I am a genius, so I’m going to be a jerk.” As my professor Jason Noble said Google will not forget! Please remember, You are not the only one matter in this world! If you want to be a jerk, not a team player…no one want to be around you, no matter how smart you are. You will get isolate, you will have bad repetition to find a job, even those who love you will get hurt by your jerk action and don’t want to be around you anymore.
>How to be a good team player?
Pair programming consists of two programmers working at the same computer on a problem. ~ Such as ballroom dance, we should have led and follow. In programming will be driver (writes the code, logic, etc) and the other is the navigator (focused on overall goals, what’s next, etc). Once a while we should switch sits to understand what the other person need to duel with and become more understand of what to do; also, we will become more capable to program on our own while we need. Every body are a unit individual, pair with different programmer will help us to learn more, and learn faster. We share our knowledge and grow together. Here’s some funny video from my professor Jason Noble’s presentation, enjoy it 😉 http://www.youtube.com/watch?v=rG_U12uqRhE & http://www.youtube.com/watch?v=dYBjVTMUQY0
>What to do when I’m overarm?
Take a deep breath, and remind yourself what is your gold? Write down your gold, how many steps you’ve already done, and what problems you have been solve. Then take a look of that, asking yourself “Is it worth it for me to keep go on?”. If your answer is yes, just take a little break, get some fresh air for your brain, get back and find the solution. If your answer is no, and don’t even waste you time anymore.
>What if I cannot find the solution (even use up all my resource)?
Just like lrthw (learn ruby the hard way) said, ignore it and go back later. Sometime we just need to keep go on because the answer might be coming up soon. There’s no rush to get it right away. We don’t want to waste time to stuck on one problems and forget everything else in life. Put it on the side and do another project. It might be your brain just get tired; sometime after a small break you will find the solution so easy that you cannot believe yourself stuck on this at all.
>I mess up all my homework, what can I do?
For me, I’ll try to re-organize them, and delete those I cannot re-organize, then re-do them. I find out this week in class that all my founders are in wrong directories, and I didn’t create different directories for different sections of my homework. Instead, I just delete all my codes and work on the new homework in the same file. I fall behind class in a big way, feeling so stress that I cannot catch up with home works and class. However, in the bright side, not only I learn from my mistake, but also it’s a chance to do my homework again from the beginning. I feel like I should be happy, cause practice make things perfect. Just like my favor quote “Life isn’t about waiting for the storm to pass. It’s about learn to dance in the rain.”
>What is more important?
Pivot Tracker is a really good software for developer to help us track the process of our work. The following are the function in Pivot Tracker. Ice box is a place for stories which not yet have been assign yet. Backlog is a place for stories that are priority. Current is a place for stories someone is working on. And there are some more details I might just open another blog to cover later.
How about outside of homework and works? What is important in life for you? I believe if we have a dream, we should fight for our dream. Don’t put our dream into Ice box. I use to spend a lot of time to missing the pass, lives in my memory. However, past is past, I should just leave it what it is. No matter what, times are not going to wait for us. As Jason said in class, change is what it is. Don’t be afraid to change! We are all going to be change. As my friend Laura Niss said “I’ll be afraid that I didn’t change ten years from now.” A really true indeed statement, isn’t it? Ten years ago, we are still kids don’t know enough to live. Now, most of my friends have been graduated, get into their career, got married, got divorce, have children etc. No matter what, we are not the same person as ten years ago. We should just all move forward even we have our fear. I believe most of us have different background, and we all run into different problems in programming, but we should all believe in ourselves that we will be good at programming some day in the future. Maybe ten years later, we will run into each other, go grab a coffee and talking about talking about the joy in class today.
>How do we find a balance point in life?
It take me a long way, and I’m still learning to balance my life. As I said before, when I stuck on something I cannot solve, I put them on side and gonna come back later. I’m running out of time to study, so I try to study in a smart way…try to understand and re-organize my notes. It talk me a while, but it make me catch up in class a lot more easy. It’s important that you organize your priority list. For example, in my life, friendship and future is more important than love cause people change, feelings change, things change, but knowledge I’ve learned will always be mind. That is why you will see me spend 45% of my time to work, 45% of time to study, 8% of time with my friends which I learn a lot of different knowledge from them, and only 2% for my family. We are all adults, we should all know what is our priority list and schedule our time. I understand even we plans something are always not work out, but we should at least have plans to follow, to keep us organize. We should play a little game of plans and resource: make a plan and write down our gold for which homework we going to do for how long, and check on WakaTime see the difference in between plans and resource.
>How to write a blog?
I saw some of my classmate have super awesome blog, some of them have super professional blog, some of them have really stylish blog. I have one suggestion: Be Yourself! Write something from your understanding, from your mistake become solve problem, something you think it might help others, even something that you think you will enjoy reading back 2 years later ( You will be surprise how much you yourself change 2 years from now on ). I always tell myself: Remember no matter how smart you are, there are some others out there more smart then you. However, don’t be so negative, some others out there is dueling with more issue than us and still fighting. We all choose our own path, and this is my blog, this is my path. What is your path? What do you want your path become?