Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

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

I am a recent graduate so I understand a lot of the theory, object-oriented languages, and various data structures. I am competent in languages such as C++, Java, PHP, just to name the ones I'm strong at. Since graduation I bite the bullet and accepted a job outside of my field for now. So obviously I don't want to lose my edge and want to stay current.

Most of my programming has been for academic reasons and a 3-month web programming (back-end) internship. I really want to program something to use my skills I've learned. I always hear program a game is great practice. However one problem with the Internet is it's robust volume of information and find myself reading one site then jumping to another & on & on. Where would you suggest is a good foothold to begin? It's always harder to start from scratch and that is where I am. I figure start with some 2D game and go from there, but then comes the question of which SDK to use, if any. I'm currently using Linux but I wouldn't mind developing in Windows either. I'm always thinking maybe I should try to develop a simple app for an Android phone as well. As you can tell I'm all over and just need a little direction.

Any advice/website is greatly appreciated!


migration rejected from Jul 19 '14 at 13:38

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by MichaelT, Eric King, Martijn Pieters, Doval, GlenH7 Jul 19 '14 at 13:38

This question appears to be off-topic. The users who voted to close gave these specific reasons:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – Community, GlenH7
  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Eric King, Doval
If this question can be reworded to fit the rules in the help center, please edit the question.

questio probably more suited to programmers stack site – Mitch Wheat May 29 '11 at 2:12
I'd like to add to all the answers: Don't be afraid of failing. Every beginner produces crap, and every programmer will make smaller and bigger mistakes while working. It's how you learn. Make something small, and then incrementally make something bigger / more complicated. – SBI Jul 18 '14 at 8:59

I'm no college graduate (I'm actually going in the Fall) but I've been programming for years now. As it were, I'm self taught and thus I've done a lot of practice programming (and still do). My best advice for what to do is to pick something you're interested in.

Now I will admit game programming takes a lot of time and coding but its not necessarily the best thing. If you are trying to become a game developer than I retract the prior sentence, it is the best.

A really interesting thing to do is to write your own compiler and/or programming language. It doesn't have to be the next C++/Java/Python etc. but you should be able to write fully working programs with it. It will teach you a lot about what makes things spin and is damn fun to do.

If you're an assembly nut another fun project is writing an OS which like the compiler/language teaches you a lot more about what makes things spin for the computer itself which is priceless knowledge to me.

Basically the key things to remember are:

  1. Choose something you're interested - You won't get much out of it if you truly hate it
  2. Don't go overboard - That is don't think you're going to make Halo (Remember major projects have lots of developers and lots of time spent)
  3. Experiment - Don't just figure out how to do something, but why it works the way it does
I am taking in the current answers so far and it does help. I do want to create something simple such as...for an example Pong. I've never really dealt with moving objects on screen before or object collision, let alone a GUI. I've always operated with web programming and console programming only for C++/Java. That is one of my interests, curious to understand how that works. Not trying to be a game developer just want to understand moving objects, collisions, and use GNU/Windows API. – Chris May 30 '11 at 3:30
@Chris Don't get me wrong, it is a good experience to program games. I was just more gearing my answer towards practicality and overall knowledge. YMMV here I guess. – Glenn Nelson May 30 '11 at 3:33

Instead of---or in addition to---picking some big monolithic project to undertake, consider what tasks in your own life you could make simpler by writing little programs, whether it's in your non-CS job or your hobbies.

In my spare time, I'm a photographer, so I've written several little scripts to manage my work. Some of them accomplish roughly the same ends as GUI programs or web front-ends, but my little scripts are better suited to my needs.

I frequently visit a website that doesn't provide a certain kind of backward link... solving that problem for myself involved learning enough javascript to write a greasemonkey script for that page, writing a little local web servlet, fetching and parsing HTML, designing a little local SQL database, and a few other things to tie the pieces together.

I've always considered writing something to help with my current job. I guess it really comes down to if I want a GUI program or a web-site. Actually it could be interesting constructing both since it would require the use of various languages too. – Chris May 30 '11 at 3:34

I suggest solving all the problems on with all the languages you want. I even added an interface to some of the problems.

I have found throughout my career that the things that are valuable to learn and practice are the pieces currently called the business layer in many development practices. You can always change the UI and the data store but the business layer must perform and follow good coding practices. Please don't optimize to soon.

The craft really does require practice every week, if not every day. I also think you should find something you're interested in and develop some tooling around that.

Another thing to consider is helping out with Open Source, that way you should get feedback from the other developers.

Good coding!


For C++ or Java project, I think it would help you a great deal to write applications like a Mail reader (with GUI) or a Network monitoring program (network management system). Not only you will have the chance to learn about protocols but help you put your programming skills into practice and build practical and useful apps.

An ERP or CRM project for Java/J2EE would be interesting too.

For PHP or even Java project, what I can think of is creating a simple web application framework like a stripped-down version Joomla, CakePHP, Drupal, etc. You will have the opportunity to learn and discover popular design patterns like MVC, front controller, etc.

Your comments hit a little closer to home in what I'm looking for. I know we can program anything but interested in constructing something that would be beneficial in learning and hone my programming skill. As a student usually solve problems within a piece of the overall program. Another thing is starting from scratch – Chris May 30 '11 at 3:38
Another thing is starting from scratch is difficult on where to begin and get started. I'll definitely just simple look into just creating a GUI possible with (GNU || Windows API) and hoping take it from there. I'm also a little intrigued about the web app framework too. Soo much I want to try! =) – Chris May 30 '11 at 3:57
Ha, I know your feelings. One step at a time. Just pick what really pique your interest, do you picture yourself mainly as a system programmer or application developer, 3 years from now? both are equally challenging and rewarding. I think you can start with a good open source or commercial app first, play around with it, then find a smaller/simpler open source one and start from there (learn the code, modify it, add features you like, and so on). – UUlum May 31 '11 at 3:46
As I picture myself a few years from now I would mainly be an application developer. I'll might purse that mail reader with GUI you mentioned, I really am curious just using GUI and using network protocols as well. Maybe before I dive in on that I'll go play around with the code of smaller/simpler open source one and modify it. Thanks for the tip! – Chris May 31 '11 at 4:57

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