Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

This question already has an answer here:

I have gone through

What I understand from the article:

  1. develop a hacker attitude.
  2. learn programming language (eg. python)
  3. solve interesting problems

Point 3) is where I'm stuck. Where do I find these interesting problems? Sure, I can go to UVA Online and other sites which have good set of programming problems. But solving these problem I just like an exercise from which I can polish my python skills and learn how to go about solving a problem.

I want to do something real/fun problems which the above programming problems lack. I need a bit of guidance on the issue.

share|improve this question

marked as duplicate by ChrisF Mar 26 '13 at 21:37

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

IMO part 1 is where you're stuck. Part of the "hacker" attitude is to see something and say "that's an interesting problem." Or even, "I wish that worked differently, might be interesting to make it do what I want." You're right, however, that "exercises" are generally not interesting. – parsifal Mar 26 '13 at 13:46
see something ..that something i'm looking for – user2211729 Mar 26 '13 at 13:50
You'll know it when you see it. And if you never see something that you want to change, then you're not a "hacker" by ESR's definition. But really, that's OK. And what's interesting to me may not be interesting to you (or vice-versa). – parsifal Mar 26 '13 at 13:52
I sure hope people don't close this. Where else but here can a newbie get an answer to a question like this? – Bryan Oakley Mar 26 '13 at 14:06
@BryanOakley maybe... in another question at Programmers, Where can I find programming puzzles and challenges? as well as in 20+ questions linked to that one, like "looking for algorithmic challenges", "Good programming sites to improve skills?", "Good collection of short code samples in different languages to solve programming problems?" etc etc – gnat Mar 26 '13 at 21:38
up vote 8 down vote accepted

As has been (IMO correctly) stated in the comments, part of the so-called "hacker attitude" is to find problems in everything. Not problems in the sense that you're criticising - here, the word "problem" is almost interchangeable with "challenge" or "puzzle". The article you linked actually gives some good advice on how to find these problems. Look at step one, the part about the hacker attitude; it gives five points.

1. The world is full of fascinating problems waiting to be solved.

If you can't see problems, then you need to work on the attitude. Where are these problems? Well, look at point 3:

3. Boredom and drudgery are evil.

Are there any tasks that you're bored of? I once wrote an app to keep Word documents tidy while I wrote a book, sorting them into folders by draft version and chapter, updating the filenames so that I could send individual versions to people and know which one they got, that sort of thing. I'm currently working on a program that automates a portion of some paperwork my Dad does, to give him more free time. Look for jobs that a computer could probably do for you, then work out how it could do the job, then write a program to do it. Remember this graph. You'll need to be motivated during that hump where it's taking you longer to write the program than do the job; part of the hacker attitude is that the point where your graph suddenly flattens out is enough of a reward to you that you don't mind the hump.

Point 4 is worth remembering too:

4. Freedom is good.

Is there something you want to do that you can't do for free? Some software you want, but can't afford? Do some research, work out how hard it would be to write your own. Sure, there are complex programs out there that you probably won't be able to replicate, but some things are easily reproducible. Freedom doesn't have to refer to the price, either - perhaps you find a program too restrictive. A lot of open-source software was built because people wanted to do things their way - look at Firefox, with its extensions and customisability, especially in the early days when customising IE meant adding more smiley toolbars.

If you can't find anything in that lot to work on, then maybe look at making games. Games are always fun, and building them is fun too - if you want the game to have a certain feature, you can build it. Many games have things in them that make you think "ooh, that's cool". Trust me, that moment is even better when you can follow it up with "that's cool... and I built it". That goes for anything, actually.

Edit to add:

On the subject of making software better, it's also worth mentioning that you don't have to start from scratch. That article says this:

2. No problem should ever have to be solved twice.

A good way to get into programming is to join in with an open-source project. Sometimes they're quite large and complex, but if you can find either a program or a small area of a program whose code you can understand, you can really make a contribution - and often, the community will help you out, so you may well learn something along the way.

share|improve this answer
great advice, thanks. now i got what i was missing, perhaps i should look at things(software) with different view like how can i make it better or something like "cool and fun" stuff – user2211729 Mar 26 '13 at 14:26

Something fun is something that motivates you. Do you like science? Video games? Website design?

The first thing to do is to be excited about stuff. Do you really like some board game? Try to implement it on the platform you wish to learn.

Programming without purpose is dull and you will quickly lose interest in any pet project if you do not feel that you are working on something awesome.

share|improve this answer
Exactly. One program I should write is one that corrects the incorrect use of "loose" with "lose". – Rob Mar 26 '13 at 13:55
There. It took me only one minute to write it :) . But seriously folks, it took me a long time to figure that out. Just because you SHOULD write problem solving code, it's hard to make yourself do it if you aren't interested, but that's true of most anything. – Rob Mar 26 '13 at 13:57
corrected. I don't write enough english :-( – Simon Mar 26 '13 at 13:58
yes that is my point. – user2211729 Mar 26 '13 at 13:59
You should also choose a project that is actually possible at your current skill level. – Mar 26 '13 at 14:46

Not the answer you're looking for? Browse other questions tagged or ask your own question.