Take the 2-minute tour ×

This question already has an answer here:

Do you think that only the programming pratice will help you to improve your logical programming skill or do you train your brain with puzzle games, trying imagine how universe works, playing instruments and so on?

Devoting more time with programming, will do you get logical programming skills more fast?

share|improve this question

marked as duplicate by gnat, thorsten müller, Martijn Pieters, Jalayn, Kilian Foth Apr 13 '13 at 18:22


If you like this, please vote it up. It's important for the community! –  Tom Wijsman Oct 5 '10 at 18:36
@Mark: I don't think it's not the same as the other question. This question concerns more with the problem solving skill. Maybe killown should rephrase the question? –  D. L. Oct 6 '10 at 10:27
@Mark - I agree with @Dai Le. This is a different, but related question. –  ChrisF Oct 6 '10 at 10:41
How about just read large amounts of code as quickly as possible. –  tp1 Apr 15 '12 at 18:20

7 Answers 7

up vote 19 down vote accepted

I think full-time programming practices my logical skills quite enough, and they need rest after work. Doing something else such as practicing motoric skills by playing musical instruments is good to the brain.

share|improve this answer
I like to go home and rest my brain too! –  Chris Oct 5 '10 at 14:20

Yes programming will help, but any sort of logic/problem solving will help improve your programming skills. For example taking a formal course in logic, or solving Sudoku puzzles. There are some great websites out there with programming puzzles to try, look for project Euler for starters

share|improve this answer
Logic-based games are a good one, and if you have an opponent, Chess and Go are also good. –  Izkata Apr 16 '12 at 1:58

Like @Joonas said doing other activities helps you concentrate better when you have to...

I run every other morning and read books whenver I can

share|improve this answer

General problem solving, whether this be puzzles, watching House, reading a mystery novel or helping a neighbor with her car, any of these can be helpful in gaining ideas for how to build solutions. Ideas like being greedy, divide and conquer, dynamic programming, and creating data structures just a few examples as there are probably dozens of these kinds of ideas. How well they work is of course another story but sometimes just getting these kinds of ideas can be a great challenge.

share|improve this answer

If you want to improve your "logical programming skills" in a more profound way, it's important to have at least one or two courses on... logic. Something like the lecture notes by Stephen Cook is nice for starting learning proposition and first order logic. The textbook Logic in Computer Science: Modelling and Reasoning about Systems by Huth and Ryan is also loved by many.

Also developing an algorithmic way of thinking is also extremely important. Cook told me that the ability to think algorithmically is the key difference between a computer scientist and a mathematician. There are many good books on algorithms. You just have to choose the one that suits you most!

share|improve this answer

I read this: What is the single most effective thing you did to improve your programming skills?

More seriously, I guess you can try:

  • to train your brain and solve puzzles and other games (as suggested by others),
  • to learn logic theory, and get back to the hard-core maths that comes with it.

But mostly, i think you should:

  1. have a look at an algorithm bank and hand-pick a few,
  2. try to implement solutions for the problems they address,
  3. then look at the reference implementations,
  4. publish a paper if you beat them :)

The NIST Dictionary of Algorithms and Data Structures should keep you busy for a while...

Then find a pet project that involves solving something.

share|improve this answer

I've found that, through learning about programming and software development (not necessarily formally), I've learned to break down problems in to smaller and smaller chunks more effectively.

I think you can improve that particular skill by using it outside of the software development field; by trying to break down problems you come across in everyday life. Trying to understand how something new works (like an engine or a piece of electronics) using this technique is particularly good.

share|improve this answer
