Great advice from a top competitive programmer

I read this interview with competitive programmer Ahmed AlyWhy Renowned Googler Ahmed Aly Chose HackerRank and what really stood out to me was his advice:

Ahmed, what advice do you have for people who want to become great programmers like you?

Don’t try to solve harder problems unless you are really good at solving the easier ones. That means solve a lot of really easy problems (that could be hundreds), that will improve your coding skills, which should be the easiest skill to gain. Then go to little bit harder problems, and so on.

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…



On helping others

At work I was paired with the new intern. He asked about what the point of $ 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 😦