I am a marketing manager in technology. Over ten years ago I programmed a little (scripts, C) and really liked doing small programs. Today I do not get to program at all for work. I do write blogs and use all kind of applications beyond the casual user. But I do not get a chance to do programming.

  1. What would be a good place to start writing short programs? (resources, tools, examples)
  2. Is there a place for casual programmers to gather and exchange code and knowledge?
  3. What techniques or methods should I adopt? (write for my own use? join an Open Source Project?)
  4. Any other suggestions or examples of how others are doing it?
+2  A: 

I find the best way to get some practice is to create a program you'd like to have and use. Scratching a personal itch tends to provide more motivation than writing some code for the sake of doing it.

As for what you'd like, that's a question you'd have to ask and answer yourself.

+1  A: 

Choose to start the programming language or technology with which you would like to work in the future. Then find its appropriate literature to the nearest bookstore.

Then learn this language \ technology in conjunction with practice. You can think of for this is not a large project to study. Or as you have said will join the already existing open source project. As well the programmer is the ability to read and understand other people's code. Best resources to find the code on my mind:

For all questions can be directed to stackoverflow here always help you


If you want to draw quick and useful satisfaction from coding anything from small scripts to complex applications, I suggest adopting Python, reading the official tutorial, and tackling scripting problems that appear in your work or home.

The advantage of the approach I suggest is that, in my opinion, Python frees you from the boilerplate of compiling and linking, which can be demotivating to a "born again programmer".

Try it, sharpen the saw, and once you feel comfortable again go and hit C, the best language created by intelligent species.

As for the "gather and exhange knowledge", you found it buddy: StackOverflow.

Good luck.

+1  A: 
  1. Depends on what you want to use it for and how much you've programmed before. C# (for Windows apps) and Java may be a lot of fun, but have notoriously steep learning curves. Programming Python or Ruby may be a good start since they're easier but still powerful. Community-wise, you'll probably get the most support with PHP and Javascript.

  2. StackOverflow baby! Or just have a'll settle somewhere that fits your style and personality.

  3. Definitely "own use". For example, I work with architects, and I started out Ruby by writing a custom tool for Google Sketchup. Or, you could make yourself a custom address book. There's plenty of programming tutes out there that offer good ideas - maybe it's not the language you're learning, but they'll give you an interesting idea. Prime number generator? Hex decoder? Baccarat?

  4. My personal recommendation is definitely "don't be scared to erase everything and start again." Seriously. You'll make the same app twice as good and three times faster with all the skillz you learned while screwing it up the first time.


It really depends on your areas of interest. There are so many different subfields in programming these days that it's hard to say where one should start. Some questions to ask yourself are:

  • Is your interest purely academic, hobbyist, or do you think you might want to leave marketing/management for a programming career?
  • Do you have more interest in desktop applications, mobile applications, web applications, or other platforms, e.g. HPC?
  • Similarly, do you have an interest in developing games, writing desktop utilities, creating business apps, developing social web apps, or some other type of application?

I would suggest answering these questions first, and then using that to pick some Open Source projects to get involved in.

Even for casual programmers, there are a lot of options these days. Off the top of my head:

  • Web apps offer a lot of flexibility with the convenience of high level languages that are easy to jump into.
  • If you're a gamer, you might consider writing (or helping to write) a game mod.
  • Similarly, you could try your hand at developing your own indie games. With Xbox Live Marketplace, Steam, and similar distribution platforms, there's never been a better time to be an indie game developer.
  • Likewise, indie developers in general now have easy access to mobile software markets through the App Store and similar offerings.
  • Or, if you're not interested in making money, you could always try your hand at homebrew development. There are a lot of active hombrew communities full of hobbyist/casual programmers and might be what you're looking for. Popular platforms include:
    • Sony PSP
    • OpenPandora
    • Nintendo DS
  • With your C experience, you could even get involved in open source firmware projects like Tomato or DD-WRT.

And just to throw it out there: for those who just want to have a little fun, nothing too serious, AT-Robots is a great introduction to programming and also a really fun game where you program your own robots in a subset of ASM and battle them against other robots.

Lèse majesté

The best way to learn programming is by writing programs for your own business use first. That will take care of the motivation aspect, right off the bat. Without sufficient motivation, you'll never get enough practice to make steady progress. Given your experience level and current role, I'd say there are two obvious options that could fit:

  1. Start writing Excel formulas and macros using VBScript, or
  2. Start writing utility scripts (e.g., parsing text files, automatic reporting, etc) as needed in a powerful scripting language like Perl or Python.

For your first programming book, you'll want to choose something that teaches all the basics of programming (the O'Reilly "Learning..." series has a good reputation). After becoming proficient in one language, getting a job done in a new language will probably be quickest by picking up a book that teaches by example. You'll need the foundation laid by the first, more comprehensive book in order to readily absorb a language "by example". Good luck.

Mike M. Lin

How do I learn programming the second time?

You need to pick a goal (i.e. project that is VERY interesting for you, and that you REALLY want to write). Once you have a goal, you'll get a motivation, which will be enough to find new information and tutorials. I.e. when you have a goal, start writing code. When you bump into problem, start researching this problem using books, internet, google, etc. Eventually you'll find a solution and you'll learn something. Repeat until the project is done.

I do not know more efficient way to learn. People forget information that wasn't fun to discover, and you forget things that weren't interesting. Books, languages, availability of learning resources and tutorials, communities - all this doesn't matter when you aren't interested in your project, and aren't trying to use new technologies. Even if you have tons of resources, mountains of books written by genius, community full of gurus - If your project isn't fun, you'll forget 99% of info you learned, and will waste your time. For same reason if I tell you everything I know (which will take quite a while), you'll forget everything because you didn't use those techniques, didn't discover them yourself, it wasn't fun for you, and you can't get "intuitive" understanding from only explanations.

You need a project you're VERY interested in. Once you have it, pick ANY book, ANY language, and start writing code. If it isn't fun, try another book and another language. Repeat until done. It doesn't matter where you start, just start somewhere.

What techniques or methods should I adopt? (write for my own use? join an Open Source Project?)

Joining Open Source Project isn't exactly easy - some developers are extremely picky about quality of patches and code you submit, and you already need some experience. It isn't a good place to start.