When you come to the end of your rope, tie a knot and hang on.
- Franklin D. Roosevelt
You can stop and take a break because sometime you just need one. You can slow down, take a break, take a nap, start doing something else. But you DO NOT give up. Hang on there. Success does not come to those who quit. Sounds like a cliche, right? But, unfortunately, this is the fact supported by tons of evidence, historic examples, personal research and experimentation. And, believe me, our ‘lizard’ brain would always try to talk over and defeat the prefrontal cortex (PFC), always. And, for the most part it succeeds… unless you take a control, hang on where you are at now before it defeats you and provides you with some lame excuse which would seem very justified at the moment, and keep going. Keep going. Seriously, keep going.
Perseverance is the key to success and high achievements in life. Sure, there are the exceptions: that arrogant yet a very articulate dude in your office said a couple of smart things a few times at the meetings - and started climbing the corporate ladder with the speed of sound, without even starting the execution of the ideas; that teenage-entrepreneur (or he may want to think he is one!) came up with that awesome idea for his startup, got a seed investment quick just because the idea would disrupt yada yada industry, his board equipped him with a rock star team and execuitves, and… in couple of years the guy cashed out his startup for a few hundred million bucks by selling to a Big Company. But these are the exceptions to the rule. And the rule is you gotta keep going and do not give up unless what you are doing does not matter to you anymore. Just keep going as Chris Guillebeau said. Seriously, keep going.
It’s super hard not to give up. Determination, not the born-with-a-gift is what differentiate the rock stars from ordinary folks. Learning to code is hard. Whoever tells you otherwise - tell them go and take a break. They probably forgot the sleepless nights, times of desperation and desire to punch the computer, walk away and never come back. Our brain has a tendency to wipe out the most negative moments in our lives and leave only positive memories, so it’s OK if they don’t remember. Soon, once you go through the hell you are going now, you won’t remember either.
I was in pain. My lizard brain was taking over, I was about to give up on my programming…again! However, I ran out of the excuses. I took a break, I hanged on there and now I keep going, keep on pushing. Pushing hard. It’s like training for an endurance event (what I am also doing now by training for my 2nd triathlon): you practice, you race, you go through the pain but you don’t quit. It is all about the attitude and mental strength. And make sure you surround yourself with a few inspiring folks - rock stars, those who made it and keep on pushing such as Natasha, who would check on you, shake you if needed so you won’t give up.
I am still taking the RubyLearning class which I was supposed to finish a week ago, but I took a break…though did not give up. I also started reading Agile Web Development with Rails to finally start ‘riding the rails’. I have a CodeSchool course waiting for me on HTML and CSS. I am here for a long run!
“Technology is so much fun but we can drown in our technology. The fog of information can drive out knowledge.” - Daniel J. Boorstin
The older I get the more I realize I know nothing. Nada. Zilch. It became even more obvious to me since I started learning programming almost 3 weeks ago. The more I read and dive into related documentation and lectures the less I understand what’s going on. Oscar Wilde was right.
Yup. This is me these past few days. Learning a new complex subject like programming requires constant information consumption, and unless one filters it and limits an intake at some point to make sure a proper digestion occurs an overload is inevitable. Being hungry for information and knowledge is a great thing: it supports constant growth and self-development, shapes current and creates new values, world views and prospective, trims the ‘fat’ and carves a personality. Michelangelo put it the right way:”Every block of stone has a statue inside it and it is the task of a sculptor to discover”. Acquiring new knowledge and skills, travelling to foreign countries, stepping out of a comfort zone, risking - all are tools of a sculptor, and your task is to use them in order to discover a statue inside yourself.
However, information consumption often leads to ‘over-eating’. Unless you are selective, there is a chance you’ll get overwhelmed and give up.
With this in mind I approached learning programming. Being discerning when choosing the resources is necessary, however, when embarking on a new subject you may not be able to express such a judgement and identify non-credible sources. This would results in reading everything. Literally. Everything you find out there on the net. And believe me.. its infinite.
Luckily enough I got to know Natasha Murashev who started to learn programming back in October 2011, hence had a hands-on experience and helped me to navigate through infinite resources, concentrate on the best ones and start digging into Programming Fundamentals first and Ruby.
So, this is what I am working on and do suggest to all the beginners:
- CS106A - prof. Sahami is brilliant. I wish I took this class in person. He elegantly yet in a very humorous and ‘daily life’ way describes technical concepts. I was supposed to listen to only 3 lectures and do the assignment #1, however, I fell in love with the course and the professor so I kept on navigating through the whole class. If you are coming from no-programming-whatsoever I suggest you listen to every lecture to pick up some basic but necessary terminology (variables, method, class, bug, errors, etc.)
- RubyLearning.org - my first week of Ruby learning. The course received numerous favorable reviews and was suggested by Natasha as well. Victor Goff and Satish Talim are super-dedicated teachers and make sure every question (even a basic one) gets answered. I am very excited about installing Ruby and running my few first programs including ’Hello, World!’. My first assignment and quiz are under way!
- Learn To Program - was suggested by Victor Goff and I am loving it! Very precise, clean and to-the-point tutorial written for those who like myself have no previous experience or knowledge, have no clue what they are doing and just keep on consuming new info. Strongly suggest!
- How To Think Like a Computer Scientist - accidentally stumbled upon this fantastic tutorial by Elizabeth Wiethoff. What can I say? - thumbs up! I love the simplicity, descriptive chapters and the fact it was written by the woman. Not that often you meet a technical book written so brilliantly using daily life examples and great analogy. Strongly suggest to newbies!
Yes, I do feel overwhelmed, however, it could have been so much worse if I did not have any guidance from people who went through the same path.
Yes, I do feel there is so much in programming there is no way I can learn it myself and excel…however, I do not give up and do not intend on. There are so many real-life examples of the folks who did it. They keep me going.
Yes, I do feel lost, but its OK. I am too determined to succeed so there is no way I am not “going to be found”. I have people who support me. You should have tou. If not — I will support you.
Yes, I have no idea what I am doing most of the time, however, this is a natural learnign curve. And if you think your leaning curve looks like that:
you are fooling yourself. This is the leaning curve…at least mine: full of crisis of faith, jumps, incremental growth and failures:
So, buckle up and enjoy the ride! With or without me.
“Ever tried, ever failed, no matter. Try again, fail again, fail better.” Samuel Beckett
Seeing my first lines of code going live and making my Karel the robot running around the “house” and going “outside” to pick up the “newspaper” was like seeing a baby making his/her first steps! It was one of those excitements you get when you achieve something of a significant value to you (even though it maybe very basic) and you yell: “Oh Yeah, baby, he is running!!!” at 6 am in the morning…
Last couple of years I spent in a startup environment. I thrive there, I feel like fish in the water when I deal with deadlines, lack of direction and constant experimentation. According to Wikipedia ”an experiment is a methodical trial and error procedure carried out with the goal of verifying, falsifying, or establishing the validity of a hypothesis”. You pretty much come up with an idea, a hypothesis, and then you try if it works - you test it. You fail, tweak your idea, try again, fail, tweak more, fail, try…and vuala, it works! I got a feeling the same applies to programming. There are numerous possible solutions but you happen to choose one and try it first, and if it does not work you don’t give up but rather try again until you get there.
You should fail. Without failing your learning curve turns into a straight downfall line. Watch out. However, failing over and over again and repeating the same mistakes is the first sign of not ‘failing better’ - you simply do not learn from your mistakes. Watch out for this too.
I fail few times today before I got Karel to do exactly what I want him to do. It took me an hour and a half (yea, I know, pathetic), however, I got him going, and this is what matters.
By the way, these are great resources I’ve been using while I am taking Stanford Programming Methodology Class CS106A:
- Setup Eclypse and import your first assignment
- Lecture #2 and the transcript
- Using Karel
- Assignment #1
I’ve learned my today’s lesson and looking forward to the next one! Are you?
Impossible is a word to be found in the dictionary of the fools
- Napoleon Bonaparte
I would not move by myself to New York City at the age of 18 from South Russia, would not switch my future career from Accounting to Marketing, would not move to magnificent New Zealand where pinguin and sheep co-exist on the same territory, would not join to an early stage Health IT startup (so early there was no web site for the company, heck, it was not even a company either!), would not fall in love with a startup community and meet bunch of amazing people full of ideas and energy, would not develop and shape my entrepreneurial spirit, would not move to a beautiful San Diego, would not get inspired and driven by an idea of making a world a better place at least in some way, would not get fascinated with technology and programming, and finally, would not be here writing this post as the triumph to a new exciting journey: becoming a programmer, if only I listened to an unfriendly voice in my head always repeating: “oh, no, that’s impossible!” Yeah, that’s right, I hear it, as we all do, however, the trick is not to listen. Hear, accept, but don’t listen.
Why programming? Well…
- I want to build new things I have in mind
- I want to help others executing their idea by building new things
- I want these things to create value for people and our planet
- I want these new things to help solve problems in a developing world
- I want to have my company based on these new things I will develop
- Heck! I want to be independent and employer-free
- I want to travel the world, share my knowledge and build more things that solve problems I will discover while travelling
It does take motivation, self-discipline, time (given I am full-time employed, consulting startups and currently training for my 1st triathlon!), patience and someone who inspires you. In my case this is Natasha.
An you know what?? I am so ready.
Yet, another challenge! Bring it on.