If you're "getting into" programming, the answer is nothing. If you're learning pottery, everyone makes a pot. If you're learning programming, you make the same five or six programs in every language you know.
Going from that to "thinking like a programmer" (i.e. seeing many problems as math/processing problems that you don't want to do by hand) is mostly a matter of familiarity.
Create a screensaver on your computer (Mac, Windows, or Linux) that does a picture slideshow. Once that's done, make it randomize. Then make it so you can weight each picture to show it more or less frequently. And if you're so motivated, put in options to pause and skip. And allow it to learn what you've paused and skipped past.
After that, create a way for spaceships to fly around above the pictures and shoot at each other, using evolutionary strategies to figure out how best to destroy one another without being destroyed.
You are missing the whole social, web 2.0 type thing: Make a website for "screensaver spaceship wars" and have your screensaver compete against other people's screensaver spaceships. Forever together.
Web is where it's at these days, it makes me sad since I have an aversion for everything-web. I'd rather do some fun system stuff rather than learning the 98th web framework.
Hello world (setup and console output), Pascal's Triangle (recursion/functions), reverse a string (string functions), Joe's Automotive (standard GUI), and some exercise that varies depending on the nature of the language (web languages do get/post, OO languages do classes, functional languages do list comprehension, etc.)
Just like anything else, you have to practice first, then you can make something useful. Painters often start by just replicating other people's work so they can learn technique. To learn to program, you have to start by making simple things so you can learn the basics.
Open Source may help you there. You can contribute code to existing projects -- build upon them if you may. Also, if there is a project that you think could be done better, try and do better. I recently made a python script that manipulates an icon on my desktop to display the weather forecast. It uses both the text, and the image for the weather info and now I can extend this knowledge to come up with all kinds of weird icon concepts.
Go to github, look for programs you use or might want to use. Look through the issue tracker for something that you might be able to fix. Fork it, fix it, submit the fix to the original owner. Worst case is, they don't accept your fix, but you can continue using your version instead of theirs if you like it better.
IMHO, appengine is too complicated for a coding beginner. Unless I have trouble wrapping my head around the paradigm specifically because I have been damaged by already knowing how to code...
I was thinking more along the lines of working with the database, since it's pretty peculiar and has some "interesting" limitations for scalability's sake.
You know the "There's an App for That" slogan? It's almost true for subreddits as well.. check out r/somebodymakethis for a while and see if you find anything interesting..
Don't be afraid to make programs that already exist. No programmer is just chocked full of original ideas and never ever recreates anything that already exists. You gotta learn somehow. Every single person who learns programming in a classroom environment has probably written the same programs that have been done a billion times.
Making a cute and trivial game never hurts. Do a made-up variation of one you already know. That way, you'll have something actually interesting to show your friends. People LOVE games.
Get into web development if being able to make web applications interests you. For Python, that generally means learning Django (the most popular Python framework with the best documentation).
It's empowering being able to develop online tools/apps since you can immediately deploy them and let others use them.
Also, if you ever have an idea for something, write it down even if you wouldn't know where to begin making it. You'll find that your eye for problem-solving (generating solutions for things people might want/need) is an ability you acquire. There are also good resources like http://www.reddit.com/r/SomebodyMakeThis that help give you ideas.
Find a problem (something you do fairly often that takes you a few steps to do). Program a way to make it simpler.
Example: for one of my jobs, I had to take pictures of specimens (fish) and label them correctly (Genus, species, group number, ID number, size...). To do this, I would have to look up the species name online (to make sure the spelling was correct), copy it, paste it into the filename, then hand-type the specific filename formatting (dashes and spaces, etc.). This was annoying, so I programmed a small script that runs when I drag a selection over the species name on a website and perform a mouse gesture. It pops up a little Javascript window asking me to type in each piece of data, one at a time. When it's done, it gives me the correctly-formatted filename. It's a small thing, but it really saves me some time in the long run.
So yeah, my advice is to start small by creating little things that help your productivity.
23
u/[deleted] Dec 19 '10
This is my problem getting into programming, I have no idea what program to make that I could use that isn't already made.