In this post only the first point will be cover: solve programming problems. In my opinion it's better to advance in small steps every single day. You can watch a short "funny" video on this topic here:

Mathematical problems and Project Euler

Project Euler contains many interesting mathematical and computer programming problems that will require good knowledge of math and programming. Solving problems from this project will improve you computer and programming skills. The other benefit of solving problems is training your brain on variety of challenging questions.

This project offers you really good problems, progress tracking, difficulty rating and how many people solved this problem. This will help you to measure your programming level and where are you in the ocean of programmers.

So we can assume that this question is easy one and solve by many people.

I'll post my steps in solving this problem. If you have different solution or improvement on the solving process please do share it. You can check the also the thread related to each question and check for solutions in many different languages(this requires registration):

My way of solving problems

Be sure that you understand the problem - read the problem description several times. Analyze what is given and what should be solved.

Solve the problem as meta code or algorithm - I prefer to use meta code and list of paper in order to list all needed steps. For easier problems like the first one you can skip this step because you can do it naturally. But it's a good practice and you can work on improving this skill.

Write code example based on the example problem - Before solving the problem I prefer to play a bit with the given example. I'll check what operations and methods can be used. Can I use something from functional programming or any other area of programming? If there is an example like this one:

natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

I'll write a small code snippet which is doing exactly what is described. This is a small code snippet in Groovy which is doing what is described in this problem:

Once I'm sure in my beta code - I'll continue to the real solution. I'll write the solution and test the answer against the one in the web site. If the solution is correct I'll move on the next step.

Trying to optimize and search for alternative solutions - as a final step I'll try to optimize the solution. For example in case of Fibonacci problem you can speed up the solution by using memoization( from functional programming - example in python - Python Fibonacci and memoization ).

I'll try to find alternative solutions. Maybe there is some tricky way of solving the problem? This will help you to think out ouf the box. This is an interesting problem: