I think life and coding comes oftentimes comes down to my simple formula:
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:
- Doing the right actions that bring me closer to my goals, that improve my coding knowledge and skills
- 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 🙂
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…
Here’s a great article on how to apply for jobs effectively and efficiently, improve at interviews, and get a great job:
I spent 3 months applying to jobs after a coding bootcamp. Here’s what I learned.
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.
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.
Here’s a great article on learning: Learn Smart, Not Hard: Applying Learning Research to Learning Programming
Nice explanations on how to learn actively and effectively.
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.
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.
- 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.
At work I was paired with the new intern. He asked about what the point of $scope.city or some AngularJS variable was.
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 😦
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.