On gaining coding experience…

I think life and coding comes oftentimes comes down to my simple formula:

  • Try
  • Fail
  • Learn
  • Improve
  • Repeat

So does this mean that the working developer has gone through more trial and error than the aspiring developer, that the senior developer has gained more experience and learned from them than the junior developer?

Also how much experience can be gained indirectly vs. must be gained directly?

I don’t know the answer to any of these questions so I just focus on 2 things with coding–right action and fun:

  1. Doing the right actions that bring me closer to my goals, that improve my coding knowledge and skills
  2. Having fun as much as I can with my coding journey ūüôā

I will never “arrive” as a coder, so I can only enjoy programming as much as possible and as often as possible. So far so good ūüôā

On reading…

I have actually only read a few coding books, most notably a few of the awesome Head First books, the detailed Rails Tutorial, and a couple of books on data structures and algorithms.

After a couple of articles on how beneficial reading can be to my growth and career, I have decided to start reading coding books regularly.

In no particular order, here is a list of books I want to get through. There is no guarantee that I will get through these, and this list will shrink, expand, and change, but I think this will keep me busy for awhile…

 

 

Data structures and algorithms practice resources II

Here are some additional resources for data structures and algorithms practice:

  • Firecode.io¬†I have only used this for a few days but it is amazing! It has a very user-friendly interface and it is also designed to provide spaced-repetition of problems to enhance learning¬†and memorization.
  • Pramp¬†was introduced to me by¬†Infinitely Finite¬†and is also highly recommended in Mohsin Ali’s guide. Pramp¬†provides free interview practice with other developers.¬†Pramp has helped me improve at solving problems, explaining my thinking process, and teaching and helping others improve their algorithmic coding.
  • Geeks for Geeks Practice¬†is great because problems can be sorted by company, topic, and difficulty. There are countless¬†problems and there are plenty of explanations as well.¬†I¬†have¬†fun solving problems here and improving my ranking ūüôā
  • Tushar Roy‘s video¬†explanations¬†are very organized and easy to understand. He breaks down concepts step-by-step and also draws¬†out every¬†step, and then shows how to implement the concepts as code.
  • Hacker Rank¬†has problems from Cracking the Coding Interview along with superb¬†video explanations¬†by¬†author Gayle¬†Laakmann Mcdowell.
  • A2 Online Judge¬†has an endless supply of practice problems organized by category.

A recipe to improve your programming skills

Here is a post I found with some great suggestions to improve your coding skills: Improve your programming skills

I think this post has a great balance between code kata-like sessions and  time/thinking intensive sessions.  In other words, a nice balance between coding sprints and coding marathons. It also has some great ideas on how to slowly and surely expand your coding skills. Check it out: Improve your programming skills.

How she landed a Google internship in 6 months

Check out this great post by Joanna Chen: How I landed a Google internship in 6 months

She has has great advice on building, practicing coding problems (Pramp.com), meeting people, applying, etc.

Special thanks to Siddharth for being the first to introduce me to Pramp.com for free interview practice.

Data structures and algorithms practice resources

Here are the sites I have experience with and my thoughts

  • LeetCode is excellent because there are many problems and explanations. Furthermore the problems without explanations have answers and commented solutions in the discussion boards. It is the best online judge in my (limited) experience.
  • Code Wars¬†is fun and great for learning a specific language and its features, i.e. JavaScript. But I did not find it as valuable for algorithms.
  • Cracking the Coding Interview has many questions and detailed answers in Java.
  • Data Structures and Algorithms Made Easy in Java is excellent. Sure there are many, many, many typos. But it has so many code samples for each of the data structures, explanations from worse (brute force) to best (optimized) along with advantages and disadvantages of the many possible solutions.

An honorable mention goes to Free Code Camp. The first time I ever had fun solving code challenges was at Free Code Camp. They did an amazing job of starting off with relatively easy challenges, then they raised the bar. Before I knew it I was doing difficult challenges, yet the hours flew by.

On helping others

At work I was paired with the new intern. He asked about what the point of $scope.city or some AngularJS variable was.

I told him to set the breakpoints from the JavaScript to the controller to the business class (stored procedures) and all the way back to the JSON. He then saw how AngularJS uses 2-way binding to automatically update & show information.

It feels great that I understand the code base now and I can even explain how things work. A few months ago I would not have been able to understand the previous paragraph, much less write it or say it.
With the code base at work, I feel more like a lifeguard now :), where as before ¬†I felt like a drowning swimmer ūüė¶

Never quit

I first started learning programming in June 2012. It was fun and interesting. Coding made my time fly and just felt right to me.

However, I have definitely gone through all of these stages: Why Learning to Code is So Damn Hard.

Every step of my journey, from¬†learning, building, sharing, working, basically every single step has had its challenges and difficulties. I keep things in perspective by reminding myself that coding being challenging is a great thing, because the opposite would be a career or job where things are repetitive and boring. Still¬†I have gotten¬†discouraged when I have challenges with code, challenges with people, and challenges with code and people ūüôā

But I will never give up. As long as coding remains awesome, as long as it stays fun and interesting, I will keep going through the process of try, fail, learn, and improve. I will keep having fun and learning, I will keep going, I will never quit.