Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Is there a way I can 'ease in' to programming. Like learning to use/modify CGI scripts to add some functions to a basic html site? Even if it's the only thing I learn it's still useful, right?. Unlike starting on page one of an O'reilly Python book, it might be a year before I'm useful or I find out it's not for me.

I'm a designer by trade (not a programmer) but more and more I build sites on php driven apps like wordpress and joomla. Or sometimes I have a basic html site and I want to add a form or some small app.

I've simultaneously become more and more interested in interactive functions and the 'gears' of processing so I am considering dabbling in some scripting languages (php, javascript, cgi) or even some high-level languages like perl, python or ruby. But there is part of me that's saying "what the hell are you doing here? There is a world of programmers in a universe of syntax. You'll get lost before you are useful so just hire a programmer and go learn piano, do some volunteer work or something else useful." But there is another side of me that say's "hey wouldn't it be great if I could just plug in a simple process here an get this little job done."

Can anyone recommend an insightful approach or should turn back now and just pretend programming never existed?

Is Python a suitable starting point?


migration rejected from stackoverflow.com 2 days ago

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.

put on hold as off-topic by durron597, MichaelT, Ampt, gnat, Snowman 2 days ago

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

  • "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." – durron597, MichaelT, Ampt, gnat, Snowman
If this question can be reworded to fit the rules in the help center, please edit the question.

Just to nit-pick, Java's not normally considered a "scripting language" (maybe it is in an abnormal way... somewhere...), it's pretty "high-level" like Ruby and Python (Python and Ruby usually are considered scripting languages). –  FrustratedWithFormsDesigner Jul 14 '11 at 20:22
By that definition, Python and Perl and Ruby (in many implementations, though not in all) and Lua aren't scripting languages either ;) –  delnan Jul 14 '11 at 20:29
Sorry, it is impossible for information to escape from a black hole unless of course that crazy Holographic Universe theory has any merit. –  JohnFx Jul 14 '11 at 21:24
I started learning PHP for the exact same reasons as you and it was definitely worthwhile. I spent a month reading a book from cover to cover (not entirely understanding all of it upon first reading). You are lucky. I think having 'a need to get things done' is the best way to learn programming. By the end of the first reading of the book I was buzzing with ideas on how to solve all those labourous tasks and work-arounds that I'd been doing before. I then read the first few chapters again experimenting as I went and have not looked back since. –  JW01 Jul 14 '11 at 22:27
@SimpleCoder: JavaScript (these days) is usually compiled into an intermediate form and executed with a virtual machine, but you'd be hard-pressed to say it isn't a scripting language. –  configurator Jul 15 '11 at 0:15

18 Answers 18

Sweet! I was about to suggest migrating this to Programmers, and here it is. Please, please, please learn some programming. Even if, at the very minimum, you only learn a little bit of the lingo and a few of the base concepts, the impact will be profound. This is because you'll be able to "talk the talk" when you do hire a programmer.

I cannot fully express how frustrating it is to work with a Designer who doesn't want to learn any of that "programming crap". Please don't call my career focus "crap" for a start (not that you did, but others have), and more to the point, if we're going to work well together you should have some concept of what you're asking for. Even if your skills are rusty, or you never actually generate a large scale program for deployment, even a little bit of extra knowledge goes a long way.

Additionally, having some background will make it much easier to interview developers. You'll develop a much better "bullshit meter" as to whether or not what you're being told sounds reasonable.

-- Edit --

I realized I didn't actually address your Language question. Python is a fantastic starting place in my opinion. I highly suggest Learn Python the Hard Way. It progresses nicely from the very simple to the fairly advanced, and Python is a wonderful language to work with. The indentation-as-syntax requirement may take a bit to fully appreciate, but I find that it enforces good, clean coding practices and reduces the number of bounding / grouping characters around functions. It's got decent library support, a great community, and some nice features.

Agreed, and I find the same goes for web developer programmers. You should learn as much as you can about what goes into proper design. I may not have the creative skill to create really cool designs, but I am very well studied on the technical points of visual gestalt, balance, color theory, and typography (and many other things I've accumulated over the years). Any programmer that wants to do web dev as a business (or be more than moderately successful) should know these things. –  Jordan Jul 15 '11 at 6:43

O'Reilly's main line of books (the "Animal Books") are very technical and not (usually) well suited for beginners. Don't get me wrong; they are my absolute favorite (I've lost count of how many I have). If you are just beginning a programming language, I'd recommend the Head First series, which is ironically published by O'Reilly. They try to ease you into the language while keeping technical jargon to a minimum, and introducing it only when that topic is being covered. For Python, try: http://www.amazon.com/Head-First-Python-Paul-Barry/dp/1449382673



It will tie in nicely with what you already know and you can start as small as you like. Dealing with the DOM directly is horrible so find a framework that looks good and work with that until your skill and confidence builds. If you come from a Wordpress or Joomla background you will probably have one baked into all your sites already.

You can develop it with nothing more than a text editor and a browser, and every browser these days make debugging Javascript a breeze. You even have options for some server-side development once you feel you're up for it.

Of course the real challenges of a programmers life are dealing with your team, your manager, and your clients but there's no way to ease into that ;P

Dealing with the DOM directly is not horrible. Dealing with browser inconsistencies and bugs/quirks directly is horrible. Please do not confuse the two. The DOM is really nice in standards compliant browsers. –  Raynos Jul 15 '11 at 6:04
Former designer turned programmer here. JavaScript is an excellent choice because you do not need anything other than a browser to get started with it, and it's very forgiving. –  Graham Jul 15 '11 at 14:10

Insightful approach:

  1. Just do it (plug in a simple process here an get this little job done).
  2. Decide if you want to go back for a round 2.

Should you start? Oh, absolutely. You'll never know if you have an aptitude for this or get any enjoyment out of it until you give it a try. Now, just how far down the rabbit hole you go depends on just how much aptitude or enjoyment you discover -- but as others have mentioned, and you yourself suggested, you don't need to get to a point where you're cranking out professional-grade code for this to be worth your while.

One thing I would recommend against, however, is starting by tweaking other peoples' code; I'd call that more of an intermediate/advanced approach than a beginner's. Unless you're dealing with something that is meticulously documented and has remarkably clear logic, you're liable to get bloody intimidated in a hurry. Mature real-world code is often a mad, sprawling beastie, filled with inelegant (but necessary) hacks and design decisions that owed more to haste and convenience than sound engineering principles. Start with your own stuff. When a piece of code is presented to you as "THIS is how it's done!", pay attention; but otherwise, find your footing before you head into other peoples' work.

(Caveat: Copy-n-pasting snippets of other peoples' code off of Google to solve a common problem? Totally cool. As long as you understand how the snippet in question works.)

Is Python a good starting point? Sure, why not? Not familiar with it myself, but it's mature, has a sizable fanbase user community, and apparently has a number of features to recommend it. Seems as good a place to begin as any.

So jump on in. And if you find it too frustrating and/or tedious, the piano lessons and volunteer work will still be waiting for you.


What I do when I want to learn something new is learn the basic functions of the language and then I start creating a program (Whatever program comes to my mind at that time).

The program is never easy so I start learning more because when I'm stuck, which happens a lot, I start digging the documentation and forums. One time I made a program that was using twitter to turn off my computer. You do not need o'reilly books or whatever. Just go to youtube or online tutorials and you'll find your way.But in my opinion the best thing you can do is set targets.


Getting to the level of being able to do basic useful things in code really does not take that long. Its a learning curve of a couple weeks (if that) before you start being able to do some simple things, but once things start working it can be an absolute joy. I think you are just getting worried about learning the syntax, but that is really the easiest part. It takes years and years to become an expert, but I think you are way overestimating how long it takes to see some tangible benefits. We all have to start somewhere. I would not give up on it so soon.


There are at least three ways approach this question. If your instinct is to "turn back now and just pretend programming never existed", do it. There is little point in becoming a programmer if you do not wish to be one.

If you see a real need to continue, you may start by doing what you are already doing. Dig into existing, functional sites, and make modifications. (You may wish to do this on a development version or copy of the site to avoid rendering a production site unusable.) There is great value and potential motivation in improving real products that provide real value.

A third way to approach the issue is to use programming tutorials. There are a multitude of useful guides online and in books that can teach you practical programming skills in a matter of days or weeks.

Just choose the method that feels right to you, and expand your knowledge at every opportunity.


"hey wouldn't it be great if I could just plug in a simple process here an get this little job done." ... That is exactly why I am a programmer. Thinking you would just get lost in a universe of syntax (nice euphemism, btw) is definitely defeatist.

There are some traits I think every good programmer has:

  • Desire
    If you are interested in programming, keep digging into how things work and start customizing what is already there. If that exercise keeps you digging for more, then you know you have desire.

  • Discipline
    Learn standard practices, patterns, MVC - if you can discipline yourself to follow these standards, then you will have another necessary skill.

  • Aggressive
    Don't sit in your comfort zones. Stretch out, push yourself, learn a new technology.

Most of all, be honest with yourself. It is better now to reason this out with yourself than to get 5 years down the road and it's been nothing but hell for you. Someone once asked me who the best DBA was that I know. I said, "the guy who realized he didn't have the discipline to be a DBA." The same holds true for programmers.


I guess it comes down to: How far can you go before you get lost? I assume you've mastered a basic "Hello, world" application (or the web equivalent), so where is it you're getting stuck?

There are some fundamentals of programming you'll always need to understand:

  • control flow
  • iteration
  • sequences of statements

If you are reading other people's code to modify it, that might not be the best way to jump in, depending on where that code came from. If it makes heavy use of many libraries and separate pieces, you'll get lost very quickly.

You say that your goal is to make "little processes that get the job done" - the learning curve to this is probably not as steep as you fear, but it will take some effort.


If your trade is web design, learn some PHP. You already know if you prefer to learn from books or bit-by-bit through tutorials. (I'm assuming, since you have a web-literate job.)

It'll be useful, (relatively) easy, and make Wordpress and Joomla more comprehensible.

Whatever you pick though, at least give programming a go. The worst case scenario: you stretch your brain a bit and reaffirm your choice of career.


Make an "applet". You don't have to make the next Microsoft Word, or the next Facebook, or even the next Angry Birds, as your first project, and conversely "Hello World" and other conceptual demonstration programs get old fast. Make Pong. Make a Rolodex app. Make a personal homepage, claiming your little corner of the Web. Do something that's been done before, your way.

In doing so, you'll get your feet wet in the language of your choice. You'll get a handle on the flow of development; design something, code it, run the program, and see your new thing work, then design an addition. By doing something that's been done before, you'll hopefully come to understand the decisions behind the design of the pre-existing app. And, perhaps most importantly, you'll have fun!


if you are self-conscious just remember - it's a very big club. You are not alone, and everyone starts as a newbie. IDC if you are 89 years old, it's never too late to pick up some computer skills. And you already are well along, talking about PHP and JavaScript & all. Man, you got skills! Keep goin!


There are books, computer languages and web resources designed to teach programming to grade school children. Start there, and have some fun first.


Go for it - if you're good as a designer and you add some progamming chops, you'll be far more valuable.

Starting with Python is a double edged sword: on one hand, it's an 'easy' language - easy to make something work, takes care of a lot of the 'dirty work' for you, and it has a rich set of libraries 'out of the box'.

OTOH, it's an interpreted scripting language and IMO you'll never learn what programming is really about with Python, and you're also likely to develop bad habits and laziness that will be difficult to overcome should you decide to move on to something deeper and more powerful, for example C# or Java or C++. Also, Python isn't the best language for web development either, and with your background you'd probably want that.

I'd say Ruby with Rails might be a better choice for you, or maybe start getting serious with JavaScript, which works on the page and has a syntax very similar to C# and Java.

Of course, as a hard-core programmer myself, I'd tell you to dive in and learn C++ or Pascal - in a certain sense true compiled languages are easier to learn - the compiler helps you learn the language.



In the words of Douglas Adams - "Don't panic".

Learning to program is more of learning a way of thinking;

You learn how to take a problem and break it up into logical parts. You then learn how to define each part in a programming language and then you define the behavor and interaction of the parts.

No matter which language you start with, you first learn the basics: How to write a function, variables, ifs, loops, structures, strings, (classes if the language is object oriented,) and etc.

No one remembers the entire API of any language of by heart. In fact the likelihood that someone even used (or knew) every part of the API of any real language is neglectable. - That is what intellisense (auto-completion) and Google are for. As to the actual language syntax, it is usually pretty basic.

I do recommend taking a basic programming course to help ease you into the process, however the basics shouldn't worry you, especially if you've already done some script refactoring.

I would disagree about no one knowing all the syntax. Syntax is easy to remember. Being able to remember all the libraries and their functions is much harder for languages like Java and C#. –  FrustratedWithFormsDesigner Jul 14 '11 at 20:39

Either Javascript or Flex. Both of them are easier to learn by designers.

  1. Learn basic HTML & CSS (although as a designer you may well already know enough)
  2. Learn to use jquery based javascript to add some simple interaction to the pages.
    • Use the examples in the jquery documentation
    • Read and try to understand answers to simple questions with the jquery tag on stackoverflow.com. Post comments on questions and answers if you think you should be able to understand by can't.
    • Use the developer tools in google chrome.
  3. Watch Crockford on Javascript (although this might be more aimed at people who already program in other languages)
  4. When you need to do something server side, learn node.js